• Stars
    star
    121
  • Rank 284,759 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Distributed Network Vulnerability Scanner

Prowler

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

Capabilities

  • Scan a network (a particular subnet or a list of IP addresses) for all IP addresses associated with active network devices
  • Determine the type of devices using fingerprinting
  • Determine if there are any open ports on the device
  • Associate the ports with common services
  • Test devices against a dictionary of factory default and common credentials
  • Notify users of security vulnerabilities through an dashboard. Dashboard tour

Planned Capabilities

  • Greater variety of vulnerability assessment capabilities (webapp etc.)
  • Select wordlist based on fingerprint

Hardware

  • Raspberry Pi Cluster HAT (with 4 * Pi Zero W)
  • Raspberry Pi 3
  • Networking device

cluster

Software Stack

  • Raspbian Stretch (Controller Pi)
  • Raspbian Stretch Lite (Worker Pi Zero)
  • Note: For ease of setup, use the images provided by Cluster Hat! Instructions
  • Python 3 (not tested on Python 2)
  • Python packages see requirements.txt
  • Ansible for managing the cluster as a whole (/playbooks)

Key Python Packages:

  • dispy (website) is the star of the show. It allows allows us to create a job queue that will be processed by the worker nodes.
  • python-libnmap is the python wrapper around nmap, an open source network scanner. It allows us to scan for open ports on devices.
  • paramiko is a python wrapper around SSH. We use it to probe SSH on devices to test for common credentials.
  • eel is used for the web dashboard (seperate repository, here)
  • rabbitmq (website) is used to pass the results from the cluster to the eel server that is serving the dashboard page.

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

  • shutdown.yml and reboot.yml self-explanatory
  • clone_repos.yml clone prowler and dispy repositories (required!) on the worker nodes
  • setup_node.yml installs all required packages on the worker nodes. Does not clone the repositories!

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

  • To run ssh command on multiple devices, install pssh and pssh -h pssh-hosts -l username -A -i "command"
  • To create the cluster (in compute.py): cluster = dispy.JobCluster(compute, nodes='pi0_ip', ip_addr='pi3_ip')
  • Check connectivity: ansible all -m ping or ping p1.local -c 1 && ping p2.local -c 1 && ping p3.local -c 1 && ping p4.local -c 1
  • Temperature Check: /opt/vc/bin/vcgencmd measure_temp && pssh -h workers -l pi -A -i "/opt/vc/bin/vcgencmd measure_temp" | grep temp
  • rpimonitor (how to install):

more random graphs

Contributors:

  • Faith See
  • Wong Chi Seng
  • Timothy Liu

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

More Repositories

1

asitop

Perf monitoring CLI tool for Apple Silicon
Python
2,866
star
2

ai-lab

All-in-one AI container for rapid prototyping
JavaScript
432
star
3

tf-metal-experiments

TensorFlow Metal Backend on Apple Silicon Experiments (just for fun)
Jupyter Notebook
265
star
4

text-emotion-classification

Archived - not answering issues
Jupyter Notebook
200
star
5

m1-cpu-benchmarks

Jupyter Notebook
44
star
6

SmartBin

Spring 2018 - 10.009 Digital World 1D Project
Python
42
star
7

pycon-sg19-tensorflow-tutorial

PyCon SG 2019 Tutorial: Optimizing TensorFlow Performance
Jupyter Notebook
25
star
8

t2t-tuner

Convenient Text-to-Text Training for Transformers
Jupyter Notebook
19
star
9

depsep-conv-benchmarks

Code for Depth-wise Separable Convolutions: Performance Investigations
Jupyter Notebook
19
star
10

fake-news-chrome-extension

Chrome Extension to help fight Online Misinformation
JavaScript
16
star
11

onprem-gpu-cluster-setup

On-prem GPU Cluster Setup
Shell
8
star
12

rhh-2017-crowd-tracking

Red Hat Hackathon Singapore 2017 - Camera-based Crowd Tracking Solution
Python
8
star
13

transformers-benchmarking

just for fun
Jupyter Notebook
8
star
14

shortcuts

Painless curl | bash installs. Not that you should!
Shell
7
star
15

awesome-tf2-implementations

List of official/unofficial TF2 implementations of models
7
star
16

hyperconverged-private-cloud-guide

A guide to building a hyper-converged private cloud on commodity hardware
6
star
17

prowler-dashboard

Dashboard for Prowler
HTML
6
star
18

fake-news-web-api

Backend endpoint for the Fake News Chrome Extension
Python
5
star
19

milair-dataset

Military Aircraft Image Dataset
5
star
20

nbvscode

VS Code in Jupyter
Python
3
star
21

50.012-dask-network-project

50.012: Networks Project (2019)
Jupyter Notebook
2
star
22

paraphrase-metrics

ACL 2022 paper "Towards Better Characterization of Paraphrases"
Jupyter Notebook
2
star
23

xfmers

Quickly initialize bespoke Transformers
Python
2
star
24

t5-fp16-surgery

T5 FP16 Surgery
Jupyter Notebook
2
star
25

simple-knowledge-graph

Some simple knowledge graph experiments
Jupyter Notebook
2
star
26

atomic-orbitals

Jupyter Notebook
1
star
27

sg-rainmap-predictor

SG Rain Areas Prediction
Jupyter Notebook
1
star
28

NVStatsRecorder

Python-based NVIDIA GPU Stats Recorder
Python
1
star
29

libsutd

Singapore University of Technical Difficulty
Python
1
star
30

hoax-images

Dataset of images commonly used for online hoaxes
1
star
31

tf-pipeline-model-parallel

TensorFlow Pipeline Model Parallel Experiments
Python
1
star
32

endgame

If we find something it's the endgame (also, Avengers yay)
HTML
1
star
33

pbs-demo-sutd

PBS Demo for SUTD HPC
Python
1
star
34

cyber-range-automation

Cyber-range Automation
Python
1
star
35

reverse-image-search

Reverse Image Search (Database)
Jupyter Notebook
1
star
36

serverless-transformers

Serve HuggingFace Transformer models via Cloud Run
Python
1
star
37

Cayenne-PlantMonitor

ESP8266 Plant Monitor using Cayenne
C++
1
star
38

dnn_animations

Animations for explaining DNN layers
1
star
39

sg-rainmap-dataset

Singapore Rain Areas Dataset crawled from NEA
Jupyter Notebook
1
star
40

browser-trafficgen

Realistic browser-based traffic generation with Python
Python
1
star