OmniScan: Scanner di Vulnerabilità Completo
OmniScan è uno scanner di vulnerabilità leggero e multi-motore basato su Python, progettato per operazioni Red Team e ricerca sulla sicurezza. Integra non solo il motore Nuclei Lite e il motore Afrog, ma offre anche potenti funzionalità di raccolta asset e gestione dei risultati.
Caratteristiche Principali
1. Supporto Multi-motore
- Motore Nuclei Lite (Integrato):
- Logica principale Nuclei implementata nativamente in Python, senza dipendenza da ambiente Go.
- Miglioramenti di Sicurezza: Utilizza
simpleeval al posto di eval ed esegue le espressioni DSL in un ambiente sandbox per prevenire l'esecuzione di codice da template malevoli.
- Generazione Intelligente di Variabili: Riconosce e riempie automaticamente le variabili non definite dei template (es.
{{lang-file}} -> etc/passwd), supporta Fuzzing intelligente.
- Compatibilità Profonda:
- Supporta la maggior parte delle funzioni Helper di Nuclei (incluse
hmac, gzip, reverse, rand_base, ecc.).
- Supporta il controllo logico
flow e req-condition.
- Supporta la persistenza della sessione
cookie-reuse e il controllo dei reindirizzamenti redirects.
- Filtraggio Intelligente dei Falsi Positivi:
- Riduzione Intelligente dei FP: Per le pagine 200 OK, riconosce e filtra intelligentemente i falsi positivi che corrispondono solo al codice di stato ma non a parole chiave (Strict Mode Heuristic).
- Riconoscimento WAF: Riconosce automaticamente le pagine di blocco WAF come 403/429, evitando falsi positivi.
- Rilevamento Interazioni OOB (Migliorato):
- Client
Interactsh integrato, gestisce automaticamente le vulnerabilità senza risposta diretta (es. Blind RCE, SSRF).
- ID di Correlazione: Genera un ID di correlazione univoco per ogni richiesta, abbina con precisione le interazioni OOB, eliminando completamente i falsi positivi.
- Attesa Adattativa: Regola intelligentemente il tempo di attesa per il rilevamento OOB, bilanciando velocità e accuratezza.
- Motore Afrog: Integra lo scanner Afrog per capacità di rilevamento vulnerabilità aggiuntive.
- Motore Ufficiale Nuclei: Supporta la chiamata al binario Nuclei installato nel sistema per la scansione.
- Motore XRay: Supporta la chiamata a XRay per scansioni Web.
2. Sistema di Plugin (Nuovo)
- Estensione Plugin Python: Permette agli utenti di scrivere script Python come plugin di scansione per gestire logiche complesse.
- Avanzamento Visivo: Barra di avanzamento
tqdm integrata, mostra in tempo reale l'avanzamento di ogni plugin su ogni target.
- Semplice da Usare: Basta ereditare dalla classe
BasePlugin e implementare il metodo check(url).
- Integrazione Senza Soluzione di Continuità: I risultati dei plugin confluiscono automaticamente nel report totale, gestiti insieme ai risultati di Nuclei.
- Scansione Mirata: Supporta la specifica di uno o più file plugin per rilevamenti specializzati.
- Esempi di Plugin:
git_config.py: Rileva esposizione di .git/config
spring_boot.py: Rileva Spring Boot Actuator
ds_store.py: Rileva esposizione di .DS_Store
phpinfo.py: Rileva pagina phpinfo()
backup_files.py: Rileva file di backup comuni (.bak, .zip, ecc.)
swagger_ui.py: Rileva documentazione Swagger UI
3. Raccolta Asset
- Ricerca FOFA: Integra API FOFA, supporta ricerca batch di asset per sintassi (es.
country="CN").
- Ricerca Shodan: Integra API Shodan, supporta ricerca di asset per parole chiave.
- Singolo Target: Supporta la scansione rapida di un singolo URL specificato direttamente.
- Caricamento Target Locali: Supporta il caricamento batch di elenchi URL da file di testo.
- Rilevamento di Vitalità Intelligente: Esegue automaticamente il rilevamento HTTP di vitalità prima della scansione, filtrando i target non validi.
- Normalizzazione URL: Completa automaticamente il protocollo URL (http/https) e rimuove i duplicati.
4. Architettura Asincrona ad Alte Prestazioni e Supporto per Template Massivi
- Utilizza framework Python
asyncio e aiohttp.
- Ottimizzazione della Memoria (NUOVO):
- Lazy Loading: I file template vengono caricati su richiesta, senza bisogno di caricare tutti i file in una volta.
- Elaborazione Batch: Supporta la scansione batch di template POC su scala di decine di milioni (default 5000 per batch), risolvendo completamente il problema di overflow della memoria (OOM) durante scansioni su larga scala.
- Rilascio Automatico della Memoria: Rilascia automaticamente la memoria dopo il completamento di ogni batch.
- Monitoraggio dell'Avanzamento in Tempo Reale: Mostra l'avanzamento dettagliato del batch e la percentuale.
- Sistema LogFilter: Nasconde automaticamente errori non critici come "Illegal cookie name", mantenendo l'output pulito.
5. Gestione dei Risultati
- Salvataggio dei Risultati in Tempo Reale:
- Scrive immediatamente ogni vulnerabilità scoperta in database SQLite e file CSV, prevenendo la perdita di dati in caso di interruzione del programma.
- Dopo il completamento della scansione di ogni target, aggiorna automaticamente le statistiche di riepilogo.
- Report in Più Formati: Genera in tempo reale report di scansione nei formati JSON, CSV e HTML.
- Database SQLite: Database SQLite integrato che deduplica automaticamente i risultati della scansione (basato su ID template + target + URL).
- Riepilogo Dettagliato:
- Durante la scansione, output in tempo reale del riepilogo delle vulnerabilità per ogni target (inclusi i risultati della scansione corrente del batch e il totale cumulativo).
- Barra di avanzamento mostra in tempo reale il numero totale globale di vulnerabilità scoperte.
- Al termine della scansione, fornisce statistiche globali sulle vulnerabilità.
6. Rilevamento Interazioni OOB (Out-of-Band)
- Rilevamento a Ciclo Chiuso Completamente Automatico: Gestisce automaticamente vulnerabilità senza risposta diretta come Blind RCE, SSRF, Blind SQLi.
- Client Interactsh Integrato:
- Scarica e gestisce automaticamente il binario
interactsh-client. (Ho già caricato interactsh-client.zip, puoi decomprimerlo direttamente in questa directory)
- Ottiene automaticamente l'URL del payload OOB (es.
xxx.oast.pro).
- Monitora in tempo reale i log delle interazioni DNS/HTTP/SMTP.
- Zero Configurazione: Lo scanner sostituisce automaticamente
{{interactsh-url}} nei template con il payload ottenuto in tempo reale.
Avvio Rapido
Requisiti di Sistema
- Python 3.8+
- Linux / macOS / Windows
Installazione
-
Clona il repository:
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
-
Installa le dipendenze:
pip3 install -r requirements.txt
-
Configura gli strumenti (Opzionale):
- Se usi
Afrog o XRay, assicurati che i rispettivi eseguibili siano nella directory principale del progetto o nel PATH di sistema.
- Configura
config.yml (Opzionale) per impostare le chiavi API e i parametri di scansione.
Esempi di Utilizzo
1. Scansione Singolo Target
Scansiona un singolo URL:
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
2. Raccolta Asset e Scansione (FOFA)
Cerca asset da FOFA e scansiona con il motore Nuclei Lite:
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/
3. Scansione Batch Locale
Leggi i target da urls.txt e scansiona:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/cve/