Versión actual: v4.0.0 desarrollada por @alechilczenko
Nota: Las imágenes de Docker se publicarán en las próximas semanas.
Spidex es un escáner de reconocimiento continuo, que da prioridad a demostrar la exposición de la red. Realiza un escaneo orientado a puertos en gran escala y almacena información de cada dispositivo conectado a Internet.
El motor de búsqueda se encarga de analizar masivamente las direcciones IP recibidas como argumentos. Recopila información pública sobre cada objetivo, como por ejemplo: puertos abiertos, ubicación geográfica, tecnologías web y banners.
También almacena un informe por cada ciclo de escaneo, que contiene: Tiempo de ejecución, dispositivos encontrados y fecha de inicio / final.
La implementación de hilos y colas aumenta el rendimiento durante la exploración. De este modo, las peticiones se envían en paralelo y el tiempo de ejecución de cada ciclo se reduce considerablemente. Actualmente cuenta con un límite de 450/500 hilos.
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
Escanear sólo un rango de direcciones IPv4 con los puertos más usados por defecto:
python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports
Escanear desde un archivo de texto con rangos de direcciones IPv4, 200 hilos y un tiempo de espera por socket de 5 segundos:
python3 engine.py -m ranges.csv -t 200 -ti 5 --all-ports
Escanear con CIDR, puertos personalizados y opción de registros:
python3 engine.py -r 192.168.0.0/255 -t 350 -C 80 21 22 --logs
Consiste en una aplicación Flask, que permite almacenar y realizar cualquier operación sobre los resultados enviados por el motor de búsqueda. Utiliza MongoDB como base de datos, es ideal porque los datos no están estructurados.
Método | Ruta | Descripción |
---|---|---|
POST | api/submit/device | Envía un resultado |
GET | api/devices | Obtiene todos los resultados |
GET | api/device/ip | Obtiene un resultado por IP |
DELETE | api/delete/device/ip | Elimina un resultado |
POST | api/submit/report | Envia el reporte de escaneo |
GET | api/reports | Obtiene todos los reportes |
El despliegue de ambos componentes se realiza con Docker, para facilitar la instalación y evitar contaminar el entorno con dependencias. Puedes descargar las imágenes desde DockerHub.
Para un despliegue básico, establezca las variables de entorno para cada imagen, en los archivos de Docker Compose e inicie los contenedores en el siguiente orden:
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
La integración de Elasticsearch y Kibana permite disponer de una interfaz gráfica para visualizar y manipular los datos de manera eficiente.
Sin embargo, actualmente el proyecto no cuenta con funciones para insertar datos en Elasticsearch de forma automática. Pero se pueden utilizar herramientas como: Mongo-to-elastic-dump y generar algunos gráficos interesantes en su máquina local, después de completar el ciclo de exploración.
Si tienes ideas o futuras mejoras, no dudes en participar para seguir haciendo genial este proyecto.
Este proyecto está hecho sólo con fines educativos y de prueba ética. El uso de este software para atacar objetivos sin el consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final obedecer todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no son responsables de cualquier mal uso o daño causado por este programa.