prowler

Distributed Network Vulnerability Scanner

View on GitHub

Prowler

Distributed Network Vulnerability Scanner

Prowler is a Network Vulnerability Scanner implemented on a Raspberry Pi Cluster, first developed during Singapore Infosec Community Hackathon - HackSmith v1.0.

Black Hat Aresenal 2018 License: MIT

dashboard

Why did we build Prowler?

Often, security breaches are not due to hackers breaking through layers of tough security. They happen because someone didn’t change their default passwords.

The Mirai botnet case exploited under-secured IoT devices via easily guessable factory default (or popular) login credentials. This incident, along with many other copycat attempts, led our team wanted to propose a solution to aid users in securing their increasingly connected world.

Enterprises, NGOs and individuals can make use of such a system to catch common security lapses before a security breach occurs.

Terminals and shit

Capabilities

Planned Capabilities

Hardware

cluster

Software Stack

Key Python Packages:

Ansible Playbooks

For the playbooks to work, ansible must be installed (sudo pip3 install ansible). Configure the IP addresses of the nodes at /etc/ansible/hosts. WARNING: Your mileage may vary as these were only tested on my setup

logos

Deploying Prowler

  1. Clone the git repository: git clone https://github.com/tlkh/prowler.git
  2. Install dependencies by running sudo pip3 install -r requirements.txt on the controller Pi
  3. Run ansible-playbook playbooks/setup_node.yml to install the required packages on worker nodes.
  4. Clone the prowler and dispy repositories to the worker nodes using ansible-playbook playbooks/clone_repos.yml
  5. Run clusterhat on on the controller Pi to ensure that all Pi Zeros are powered up.
  6. Run python3 cluster.py on the controller Pi to start Prowler

To edit the range of IP addresses being scanned, edit the following lines in cluster.py:

test_range = []

    for i in range(0, 1):
    
        for j in range(100, 200):
        
            test_range.append("172.22." + str(i) + "." + str(j))

Old Demos

Useful Snippets

more random graphs

Contributors:

ABSOLUTELY NO WARRANTY WHATSOEVER! Feel free to submit issues though.