OmniScan - Scanneur de vulnérabilités complet
OmniScan est un scanneur de vulnérabilités léger et multi-moteur basé sur Python, conçu pour les opérations Red Team et la recherche en sécurité. Il intègre non seulement le moteur Nuclei Lite léger et le moteur Afrog, mais offre également des fonctionnalités puissantes de collecte d'actifs et de gestion des résultats.
Caractéristiques principales
1. Support multi-moteur
- Moteur Nuclei Lite (intégré) :
- Logique principale Nuclei implémentée nativement en Python, sans dépendance à Go.
- Sécurité renforcée : utilise
simpleeval au lieu de eval et exécute les expressions DSL dans un environnement sandboxé pour empêcher l'exécution de code malveillant par des modèles.
- Génération intelligente de variables : identifie et remplit automatiquement les variables de modèle non définies (par exemple
{{lang-file}} -> etc/passwd), prenant en charge le fuzzing intelligent.
- Compatibilité approfondie :
- Prend en charge la grande majorité des fonctions Helper Nuclei (y compris
hmac, gzip, reverse, rand_base, etc.).
- Prend en charge le contrôle logique
flow et req-condition.
- Prend en charge la persistance de session
cookie-reuse et le contrôle des redirections redirects.
- Filtrage intelligent des faux positifs :
- Smart FP Reduction : pour les pages 200 OK, identifie et filtre intelligemment les faux positifs qui ne correspondent qu'au code d'état mais pas aux mots-clés (Strict Mode Heuristic).
- Reconnaissance WAF : identifie automatiquement les pages d'interception WAF (403/429) pour éviter les faux positifs.
- Détection des interactions OOB (améliorée) :
- Client
Interactsh intégré, gère automatiquement les vulnérabilités sans réponse directe (comme Blind RCE, SSRF).
- Correlation ID : génère un ID de corrélation unique pour chaque requête, associant précisément les interactions OOB, éliminant complètement les faux positifs.
- Attente adaptative : ajuste intelligemment le temps d'attente de détection OOB, équilibrant rapidité et précision.
- Moteur Afrog : intègre le scanneur Afrog pour des capacités de détection de vulnérabilités supplémentaires.
- Moteur officiel Nuclei : permet d'appeler le binaire Nuclei installé sur le système pour lancer des scans.
- Moteur XRay : permet d'appeler XRay pour des scans Web.
2. Système de plugins (Nouveau)
- Extension par plugins Python : permet aux utilisateurs d'écrire des scripts Python comme plugins de scan pour traiter des logiques complexes.
- Progression visuelle : barre de progression
tqdm intégrée, affichant en temps réel la progression de chaque plugin sur chaque cible.
- Simple à utiliser : il suffit d'hériter de la classe
BasePlugin et d'implémenter la méthode check(url).
- Intégration transparente : les résultats des plugins sont automatiquement intégrés dans le rapport global, gérés de manière unifiée avec les résultats Nuclei.
- Scan ciblé : permet de spécifier un ou plusieurs fichiers de plugins pour des tests spécialisés.
- Exemples de plugins :
git_config.py : détection de fuite .git/config
spring_boot.py : détection de Spring Boot Actuator
ds_store.py : détection de fuite .DS_Store
phpinfo.py : détection de page phpinfo()
backup_files.py : détection de fichiers de sauvegarde courants (.bak, .zip, etc.)
swagger_ui.py : détection de documentation Swagger UI
3. Collecte d'actifs
- Recherche FOFA : intègre l'API FOFA, prend en charge la recherche par syntaxe pour collecter des actifs en lot (par exemple
country="CN").
- Recherche Shodan : intègre l'API Shodan, prend en charge la recherche par mot-clé.
- Cible unique : permet de spécifier directement une seule URL pour un scan rapide.
- Chargement local de cibles : charge une liste d'URL depuis un fichier texte.
- Détection de survie intelligente : effectue automatiquement une détection HTTP de survie avant le scan, filtrant les cibles invalides.
- Normalisation des URL : complète automatiquement le protocole (http/https) et déduplique.
- Utilise les frameworks Python
asyncio et aiohttp.
- Optimisation mémoire (NOUVEAU) :
- Lazy Loading : les fichiers de modèles sont chargés à la demande, sans nécessité de charger tous les fichiers en une seule fois.
- Traitement par lots : prend en charge le scan par lots de dizaines de millions de modèles POC (5000 par lot par défaut), résolvant complètement les problèmes de débordement mémoire (OOM) lors des scans à grande échelle.
- Libération automatique de la mémoire : libère la mémoire automatiquement après chaque lot.
- Surveillance de progression en temps réel : affiche la progression détaillée des lots et le pourcentage.
- Système LogFilter : masque automatiquement les erreurs non critiques comme "Illegal cookie name", gardant la sortie propre.
5. Gestion des résultats
- Sauvegarde en temps réel :
- Chaque vulnérabilité détectée est immédiatement écrite dans la base de données SQLite et le fichier CSV, empêchant la perte de données en cas d'interruption.
- Après chaque scan de cible, un résumé statistique est automatiquement rafraîchi.
- Rapports multi-formats : génère en temps réel des rapports de scan aux formats JSON, CSV et HTML.
- Base de données SQLite : base de données SQLite intégrée, déduplique automatiquement les résultats (basé sur ID de modèle + cible + URL).
- Résumé détaillé :
- Pendant le scan, affiche en temps réel un résumé des vulnérabilités par cible (incluant les découvertes du lot en cours et le total cumulé).
- La barre de progression affiche en temps réel le nombre global cumulé de vulnérabilités trouvées.
- Après le scan, fournit des statistiques globales des vulnérabilités.
6. Détection d'interactions OOB (hors bande)
- Détection en boucle fermée entièrement automatique : gère automatiquement les vulnérabilités sans réponse directe comme Blind RCE, SSRF, Blind SQLi.
- Client Interactsh intégré :
- Télécharge et gère automatiquement le binaire
interactsh-client. (J'ai déjà téléchargé interactsh-client.zip, vous pouvez le décompresser directement dans ce répertoire.)
- Obtient automatiquement l'URL du payload OOB (par exemple
xxx.oast.pro).
- Surveille en temps réel les journaux d'interaction DNS/HTTP/SMTP.
- Zéro configuration : le scanneur remplace automatiquement
{{interactsh-url}} dans les modèles par le payload obtenu en temps réel.
Démarrage rapide
Prérequis
- Python 3.8+
- Linux / macOS / Windows
Installation
-
Cloner le dépôt :
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
-
Installer les dépendances :
pip3 install -r requirements.txt
-
Configurer les outils (optionnel) :
- Si vous utilisez
Afrog ou XRay, assurez-vous que les exécutables correspondants se trouvent dans le répertoire racine du projet ou dans le PATH système.
- Configurez
config.yml (optionnel) pour définir les clés API et les paramètres de scan.
Exemples d'utilisation
1. Scan d'une cible unique
Scanner une seule URL :
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
2. Collecte d'actifs et scan (FOFA)
Rechercher des actifs via FOFA et les scanner avec le moteur Nuclei Lite :
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/