Remarque : les images Docker seront publiées dans les semaines à venir.
Spidex est un scanner de reconnaissance continue, qui donne la priorité à la preuve de l'exposition du réseau. Il effectue une analyse orientée port à grande échelle et collecte des informations sur chaque appareil connecté à Internet.
Le moteur se charge d’analyser massivement les adresses IP reçues en arguments. Il collecte des informations publiques sur chaque cible, telles que : les ports ouverts, la localisation géographique, les technologies web et les bannières.
Stocke également un rapport pour chaque cycle d'analyse, contenant : l'heure d'exécution, les appareils trouvés et la date de début/fin.
La mise en œuvre de threads et de files d'attente augmente les performances lors de l'analyse. De cette manière, les requêtes sont envoyées en parallèle et le temps d’exécution de chaque cycle est considérablement réduit. Il a actuellement une limite de 450/500 threads.
options:
-h, --help show this help message and exit
-r RANGE, --range RANGE
Start IPv4 address
-t THREADS, --threads THREADS
Number of threads [Default: 50]
-f, FILE, --file File path with IPv4 ranges
-ti TIMEOUT, --timeout TIMEOUT
Socket timeout [Default: 0.5]
-p, --top-ports Scan only 20 most used ports
-a, --all-ports Scan 1000 most used ports
-c CUSTOM [CUSTOM ...], --custom-ports CUSTOM [CUSTOM ...]
Scan custom ports directly from terminal
-l, --logs Add a log file, useful in debugging
Analysez uniquement une seule plage d'adresses IPv4 avec les ports les plus utilisés par défaut :
python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports
Analyser à partir d'un fichier texte avec plusieurs plages d'adresses IPv4 et un délai d'expiration du socket de quelques secondes :
python3 engine.py -m ranges.csv -t 200 -ti 5 --all-ports
Scanner avec CIDR, ports personnalisés et option de journaux :
python3 engine.py -r 192.168.0.0/255 -t 350 -C 80 21 22 --logs
Il s'agit d'une application Flask, qui permet de stocker et d'effectuer toute opération sur les résultats envoyés par le moteur de recherche. Il utilise MongoDB comme base de données, c'est idéal car les données ne sont pas structurées.
Méthode | Itinéraire | Description |
---|---|---|
POSTE | api/soumettre/appareil | Soumettre un seul résultat |
OBTENIR | API/appareils | Obtenez tous les résultats |
OBTENIR | API/appareil/IP | Obtenez un résultat unique par adresse IP |
SUPPRIMER | api/supprimer/appareil/ip | Supprimer un |
POSTE | API/soumettre/rapport | Soumettre un rapport d'analyse |
OBTENIR | API/rapports | Obtenez tous les rapports |
Le déploiement des deux composants est effectué avec Docker, pour une installation plus facile et pour éviter de contaminer l'environnement avec des dépendances. Vous pouvez télécharger les images depuis DockerHub.
Pour un déploiement de base, définissez les variables d'environnement pour chaque image, dans les fichiers Docker Compose
MONGO_INITDB_ROOT_USERNAME: USERNAME
MONGO_INITDB_ROOT_PASSWORD: PASSWORD
DB_SERVER_NAME: MONGODB_SERVER
DB_USERNAME: MONGODB_USER
DB_PASSWORD: MONGODB_PASSWORD
SERVER_ADDRESS: API_SERVER
L'intégration d'Elasticsearch et Kibana permet de disposer d'une interface graphique pour visualiser et manipuler les données de manière efficace.
Actuellement, le projet ne dispose pas de moyen d'insérer automatiquement des données. Mais vous pouvez utiliser des outils tels que : Mongo-to-elastic-dump, et générer des graphiques intéressants sur votre machine locale après un cycle d'analyse complet.
Si vous avez des idées ou des fonctionnalités futures, n'hésitez pas à participer pour continuer à faire de ce projet un projet formidable.
Ce projet est réalisé uniquement à des fins de tests éducatifs et éthiques. L'utilisation de ce logiciel pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Les développeurs n'assument aucune responsabilité et ne sont pas responsables de toute mauvaise utilisation ou dommage causé par ce programme.
Apache2.0