OmniScan – Multi-Engine Vulnerability Scanner
OmniScan ist ein leichtgewichtiger, auf Python basierender Multi-Engine-Vulnerability-Scanner, der speziell für Red-Team-Operationen und Sicherheitsforschung entwickelt wurde. Es integriert nicht nur eine leichte Nuclei-Engine (Lite) und die Afrog-Engine, sondern bietet auch leistungsstarke Asset-Sammlung und Ergebnisverwaltung.
Kernfunktionen
1. Multi-Engine-Unterstützung
- Nuclei Lite Engine (integriert):
- Basierend auf einer nativen Python-Implementierung der Nuclei-Kernlogik, ohne Abhängigkeit von einer Go-Umgebung.
- Sicherheitsverbesserung: Verwendet
simpleeval anstelle von eval und führt DSL-Ausdrücke in einer Sandbox-Umgebung aus, um die Ausführung von bösartigen Template-Codes zu verhindern.
- Intelligente Variablengenerierung: Erkennt und füllt undefinierte Template-Variablen automatisch (z. B.
{{lang-file}} -> etc/passwd), was intelligentes Fuzzing unterstützt.
- Tiefe Kompatibilität:
- Unterstützt die meisten Nuclei-Helper-Funktionen (einschließlich
hmac, gzip, reverse, rand_base usw.).
- Unterstützt
flow- und req-condition-Logiksteuerung.
- Unterstützt
cookie-reuse-Sitzungserhaltung und redirects-Umleitungssteuerung.
- Intelligente False-Positive-Filterung:
- Smart FP Reduction: Für 200-OK-Seiten werden False Positives intelligent erkannt und herausgefiltert, die nur den Statuscode, aber keine Schlüsselwörter abgleichen (Strict Mode Heuristic).
- WAF-Erkennung: Erkennt automatisch WAF-Blockierungsseiten (403/429) und vermeidet False Positives.
- OOB-Interaktionserkennung (erweitert):
- Integrierter
Interactsh-Client, der automatisch blinde Schwachstellen (wie Blind RCE, SSRF) behandelt.
- Correlation ID: Generiert eine eindeutige Korrelations-ID für jede Anfrage, um OOB-Interaktionen präzise zuzuordnen und False Positives vollständig zu vermeiden.
- Adaptives Warten: Passt die Wartezeit für die OOB-Erkennung intelligent an, um Geschwindigkeit und Genauigkeit auszugleichen.
- Afrog-Engine: Integriert den Afrog-Scanner für zusätzliche Schwachstellenerkennung.
- Offizielle Nuclei-Engine: Unterstützt den Aufruf des systemweit installierten Nuclei-Binärprogramms für Scans.
- XRay-Engine: Unterstützt den Aufruf von XRay für Web-Scans.
2. Plugin-System (Neu)
- Python-Plugin-Erweiterung: Ermöglicht Benutzern das Schreiben von Python-Skripten als Scan-Plugins zur Verarbeitung komplexer Logik.
- Visueller Fortschritt: Integrierter
tqdm-Fortschrittsbalken, der den Scan-Fortschritt jedes Plugins auf jedem Ziel in Echtzeit anzeigt.
- Einfach zu bedienen: Einfach die
BasePlugin-Klasse erben und die Methode check(url) implementieren.
- Nahtlose Integration: Plugin-Scannergebnisse fließen automatisch in den Gesamtbericht ein und werden zusammen mit den Nuclei-Ergebnissen verwaltet.
- Gezielter Scan: Unterstützt die Angabe einzelner oder mehrerer Plugin-Dateien für spezifische Prüfungen.
- Beispiel-Plugins:
git_config.py: Erkennt .git/config-Leaks
spring_boot.py: Erkennt Spring Boot Actuator
ds_store.py: Erkennt .DS_Store-Leaks
phpinfo.py: Erkennt phpinfo()-Seiten
backup_files.py: Erkennt gängige Sicherungsdateien (.bak, .zip usw.)
swagger_ui.py: Erkennt Swagger-UI-Dokumentation
3. Asset-Sammlung
- FOFA-Suche: Integrierte FOFA-API, unterstützt die Massensuche von Assets nach Syntax (z. B.
country="CN").
- Shodan-Suche: Integrierte Shodan-API, unterstützt die Suche nach Assets anhand von Schlüsselwörtern.
- Einzelziel: Unterstützt die direkte Angabe einer einzelnen URL für einen schnellen Scan.
- Lokale Zielladung: Unterstützt das Laden einer Liste von URLs aus einer Textdatei.
- Intelligente Bestandserkennung: Führt vor dem Scan automatisch eine HTTP-Bestandserkennung durch, um ungültige Ziele herauszufiltern.
- URL-Standardisierung: Ergänzt automatisch das URL-Protokoll (http/https) und entfernt Duplikate.
4. Hochleistungs-Asynchron-Architektur und massenhafte Template-Unterstützung
- Verwendet das Python
asyncio- und aiohttp-Framework.
- Speicheroptimierung (NEU):
- Lazy Loading: Template-Dateien werden bei Bedarf geladen, ohne dass alle Dateien auf einmal geladen werden müssen.
- Batch-Verarbeitung: Unterstützt den Batch-Scan von Millionen von POC-Templates (standardmäßig 5000 pro Batch), wodurch das Problem von Speicherüberläufen (OOM) bei groß angelegten Scans vollständig gelöst wird.
- Automatische Speicherbereinigung: Der Speicher wird nach jedem Batch-Scan automatisch freigegeben.
- Echtzeit-Fortschrittsüberwachung: Zeigt detaillierte Batch-Fortschritte und Prozentsätze an.
- LogFilter-System: Blendet nicht-kritische Fehler wie "Illegal cookie name" automatisch aus, um die Ausgabe sauber zu halten.
5. Ergebnisverwaltung
- Echtzeit-Ergebnisspeicherung:
- Bei jedem gefundenen Exploit wird dieser sofort in eine SQLite-Datenbank und eine CSV-Datei geschrieben, um Datenverlust bei Programmabbruch zu verhindern.
- Nach dem Scan eines Ziels wird die Zusammenfassungsstatistik automatisch aktualisiert.
- Berichte in mehreren Formaten: Erzeugt Berichte in den Formaten JSON, CSV und HTML in Echtzeit.
- SQLite-Datenbank: Integrierte SQLite-Datenbank zur automatischen Deduplizierung von Scanergebnissen (basierend auf Template-ID + Ziel + URL).
- Detaillierte Zusammenfassung:
- Während des Scans wird in Echtzeit eine Zusammenfassung der Schwachstellen für jedes Ziel ausgegeben (einschließlich der im aktuellen Batch gefundenen und der kumulierten Gesamtzahl).
- Der Fortschrittsbalken zeigt in Echtzeit die global kumulierte Gesamtzahl der gefundenen Schwachstellen an.
- Nach Abschluss des Scans wird eine globale Schwachstellenstatistik bereitgestellt.
6. OOB (Out-of-Band) Interaktionserkennung
- Vollautomatischer geschlossener Kreislauf: Behandelt automatisch blinde Schwachstellen wie Blind RCE, SSRF, Blind SQLi, die keine Antwort zurückgeben.
- Integrierter Interactsh-Client:
- Lädt automatisch die Binärdatei
interactsh-client herunter und verwaltet sie. (Ich habe interactsh-client.zip hochgeladen, du kannst es direkt in dieses Verzeichnis entpacken.)
- Holt automatisch die OOB-Payload-URL (z. B.
xxx.oast.pro).
- Überwacht DNS-/HTTP-/SMTP-Interaktionsprotokolle in Echtzeit.
- Null-Konfiguration: Der Scanner ersetzt automatisch
{{interactsh-url}} im Template durch die in Echtzeit abgerufene Payload.
Schnellstart
Systemvoraussetzungen
- Python 3.8+
- Linux / macOS / Windows
Installation
-
Repository klonen:
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
-
Abhängigkeiten installieren:
pip3 install -r requirements.txt
-
Tools konfigurieren (optional):
- Wenn du
Afrog oder XRay verwendest, stelle sicher, dass sich die entsprechenden ausführbaren Dateien im Projektstammverzeichnis oder im Systempfad befinden.
- Konfiguriere
config.yml (optional) zum Festlegen von API-Schlüsseln und Scan-Parametern.
Verwendungsbeispiele
1. Einzelziel-Scan
Scannen einer einzelnen URL:
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
2. Asset-Sammlung und Scan (FOFA)
Suche nach Assets über FOFA und Scannen mit der Nuclei Lite Engine:
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/
3. Lokaler Batch-Scan
Ziele aus urls.txt auslesen und scannen:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/cve/