MaciejKrupa-1/openvas-vulnerability-scanner
GitHub: MaciejKrupa-1/openvas-vulnerability-scanner
Stars: 0 | Forks: 0
# Skaner podatności GVM/OpenVAS z automatycznym raportowaniem
Projekt realizowany w ramach przedmiotu **Bezpieczeństwo Systemów i Oprogramowania (BSO)** na Politechnice Warszawskiej (WEiTI).
**Autorzy:** Maciej Krupa, Wojciech Sondej
## Opis
## Funkcjonalności
- Automatyczne skanowanie sieci z użyciem OpenVAS (`Full and fast`)
- Generowanie raportu PDF z podatnościami posortowanymi według CVSS
- Dwa tryby raportu: **OGÓLNY** i **SZCZEGÓŁOWY**
- Filtrowanie podatności według minimalnego poziomu CVSS
- Wysyłanie raportu e-mailem przez SMTP
- Harmonogram skanowania co 24h (opcjonalnie)
- Konfiguracja przez plik `.env`
## Struktura projektu
GVM-SCANNER/
├── config/
│ ├── .env.example # Szablon konfiguracji (bez danych wrażliwych)
│ └── .env # Konfiguracja lokalna — NIE jest w repo
├── controller/
│ ├── Dockerfile
│ ├── main.py # Główna pętla — skan, raport, e-mail, scheduler
│ ├── scanner.py # Komunikacja z GVM przez Unix socket
│ ├── report.py # Parsowanie XML i generowanie PDF (reportlab)
│ ├── mailer.py # Wysyłanie e-mail przez SMTP
│ └── requirements.txt
├── reports/ # Wygenerowane raporty PDF (nie są w repo)
├── compose.yaml # Docker Compose — Greenbone Community Edition
├── docker-compose.dev.yml # Docker Compose — kontroler skanera
└── install.sh # Skrypt instalacyjny i konfiguracyjny
## Wymagania
- Docker
- Docker Compose
- Uruchomiony stos Greenbone Community Edition (`compose.yaml`)
## Uruchomienie
Skrypt przeprowadzi przez konfigurację krok po kroku:
- adres e-mail odbiorcy
- zakres sieci do skanowania (domyślnie wykrywany automatycznie)
- harmonogram skanowania (jednorazowo / co 24h)
- typ raportu (OGÓLNY / SZCZEGÓŁOWY)
- minimalny poziom CVSS (domyślnie 7.0)
- hasło do Greenbone
## Konfiguracja
Konfiguracja odbywa się przez plik `config/.env`. Szablon dostępny w `config/.env.example`:
NETWORK=192.168.1.0/24
GVM_PASSWORD=
EMAIL=odbiorca@example.com
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SCHEDULE=TAK
REPORT=OGÓLNY
MIN_SEVERITY=7.0
LOGIN=user_1
## Raport PDF
Raport zawiera:
- podsumowanie podatności według poziomu (CRITICAL / HIGH / MEDIUM / LOW)
- szczegóły każdej podatności: host, port, opis, rozwiązanie, referencje CVE
- w trybie SZCZEGÓŁOWYM: typ rozwiązania, wpływ, systemy dotknięte, QoD, wynik detekcji
Poziomy CVSS:
| Poziom | CVSS |
|----------|------------|
| CRITICAL | ≥ 9.0 |
| HIGH | 7.0 – 8.9 |
| MEDIUM | 4.0 – 6.9 |
| LOW | < 4.0 |
## Użyte technologie
- Python 3.11
- GVM/OpenVAS (Greenbone Community Edition)
- Docker, Docker Compose
- `python-gvm` — komunikacja z GVM przez Unix socket
- `reportlab` — generowanie PDF
- `apscheduler` — harmonogram skanowania
- `python-dotenv` — konfiguracja przez `.env`
- `smtplib` — wysyłanie e-mail przez SMTP