Lightweight Vulnerability Scanner for Resourced-constrained Organizations

Network Vulnerability Scanner Automation

This project provides a automated system for discovering network hosts, scanning for open ports, assessing vulnerabilities using OpenVAS (GVM), and displaying results in a web dashboard. It supports manual, Docker-based, and virtual machine deployment.


Project Structure

project/
├── Host_Discovery/
│   ├── networkdiscovery.py
│   ├── portscanner.py
├── Vulnerability_Scanner/
│   ├── createTargets.py
│   ├── taskmaker.py
│   ├── starttask.py
│   ├── getreports.py
│   ├── generate_reports.py
├── WebApp/
│   ├── webapp.py
├── data/                # Stores active_hosts.csv, scan results, reports
├── scheduler.py         # Python task scheduler
├── docker-compose.yml   # For OpenVAS container
├── install_docker.sh    # Setup script for Docker on Ubuntu
├── setup_manual.sh      # Installs system and Python dependencies

Setup (Manual, Ubuntu Linux)

1. Run the Setup Script

chmod +x setup_manual.sh
sudo ./setup_manual.sh

2. Activate the Virtual Environment

source venv/bin/activate

Setup (Docker)

1. Install Docker

chmod +x install_docker.sh
./install_docker.sh

2. Start OpenVAS Container

cd openvas-docker
sudo docker compose up -d

3. Check Logs

docker compose logs -f openvas

You should see GVMD is running and Healthchecks completed with no issues.


Automation (Python Scheduler)

Run the Scheduler

sudo ./venv/bin/python scheduler.py

This does the following:

  • Every hour:
    • Runs networkdiscovery.py
    • Then portscanner.py if hosts were found
  • Every 11 hours:
    • Runs OpenVAS scan scripts (createTargets.py to generate_reports.py)

Web Dashboard

After scans, run:

cd WebApp
./venv/bin/python webapp.py

Then go to:

http://localhost:8050

Tabs include:

  • Overview (timeline, port stats, IP tracking)
  • Vulnerability Analysis (interactive treemap)
  • Port Heatmap (binary heatmap)

Requirements

  • Ubuntu 22.04+ or 24.04
  • Python 3.8+
  • Docker Engine & Compose

Author

Jose Emmanuel Rodriguez Rios