w12scan
w12scan es un motor de descubrimiento de activos de red. A través de una interfaz WEB, se envían tareas y w12scan agrupa automáticamente los activos relacionados para facilitar su análisis y uso. w12scan también es mi proyecto de fin de carrera.
w12scan se divide en una parte WEB (para mostrar datos) y una parte Cliente (para buscar datos de activos relacionados).
Aquí está el código abierto de la parte WEB. La parte Cliente se encuentra en https://github.com/boy-hack/w12scan-client
Un video para conocer W12SCAN

Filosofía de diseño
Basado en python3 + django + elasticsearch + redis (deduplicación + middleware de comunicación entre web y cliente). Se utiliza la API WEB para agregar objetivos de escaneo. Una vez completado el escaneo, los resultados se muestran en la parte WEB.

Características
Parte WEB
- Potente sintaxis de búsqueda
- Mediante la sintaxis de búsqueda se pueden buscar CMS, nombres de servicios, títulos, países, regiones, etc., para encontrar rápidamente objetivos relevantes.
- title=“abc” # buscar en el título
- header=“abc” # buscar en las cabeceras HTTP
- body=“123” # buscar en el cuerpo
- url = “*.baidu.com” # buscar subdominios de baidu.com,
* es un comodín
- ip = ‘1.1.1.1’ # buscar IP, soporta CIDR
'192.168.1.0/24' y búsqueda con comodín '192.168.1.*'
- port = ‘80’ # buscar puerto
- app = ’nginx’ # buscar componente
- country = ‘cn’ # buscar país
- service = ‘mysql’ # buscar servicio
- bug = 'xx' # buscar una vulnerabilidad existente
- Configuración personalizada de activos
- Definiendo dominios o activos IP relacionados con una empresa, w12scan encontrará automáticamente los activos correspondientes. Al navegar por esos activos, una marca visible indicará su pertenencia.
- Asociación automática
- Al entrar en los detalles de un objetivo, si es una IP, se asociarán automáticamente todos los dominios en esa IP y todos los dominios en el mismo segmento C. Si el objetivo es un dominio, se asociarán automáticamente sitios vecinos, segmento C y subdominios.
- Gestión de múltiples nodos
- La parte WEB comprueba el estado de los nodos cada pocos minutos. Puedes ver la cantidad de escaneos de cada nodo y sus registros de escaneo.
- Tareas RESTful
- Se proporciona una interfaz para agregar tareas. Puedes hacerlo desde la WEB o integrar esta interfaz en cualquier software.
Parte de escaneo (Cliente)
- Verificación de PoC oportuna
- Mediante la integración con la API de airbug, se invocan en línea los scripts de PoC más recientes. airbug garantiza la actualización oportuna de vulnerabilidades. También puedes bifurcar el proyecto airbug y añadir tus propias reglas de PoC.
- Ataques de verificación
- El escáner incorpora servicios comunes de verificación de vulnerabilidades. Cada sitio escaneado es evaluado por estos servicios y los resultados se devuelven a la parte WEB de w12scan para su visualización.
- Escaneo e identificación
- El escaneo de puertos utiliza masscan, la identificación de puertos usa nmap, el reconocimiento de aplicaciones web emplea wappalyzer y una versión simplificada de w11scan (reconocimiento de huellas digitales).
- Distribución sencilla
- Esto se consideró desde el diseño de la arquitectura del programa. El escáner solo recibe tareas y los resultados finales solo interactúan con la parte WEB, por lo que la distribución es muy sencilla: basta con ejecutar el escáner en otra máquina. Se puede distribuir con Docker y también es fácil de integrar con el servicio Celery.
Instalación
Despliegue con un solo clic basado en Docker
mkdir ~/w12scan-data/db # Este directorio guarda los resultados de almacenamiento de w12scan
mkdir ~/w12scan-data/data # Este directorio guarda los resultados de almacenamiento de ES
git clone https://github.com/boy-hack/w12scan
cd w12scan
docker-compose up -d
Después de esperar un tiempo, accede a http://127.0.0.1:8000
Usuario y contraseña por defecto boyhack:boyhack
Almacenamiento de datos
- Puedes modificar
docker-compose.yml buscando ~/w12scan-data/db o ~/w12scan-data/data para cambiar la ubicación de almacenamiento.
Problemas relacionados
- Para mantener una alta disponibilidad, prepara al menos un servidor con 8 GB de RAM y 4 núcleos de CPU para las pruebas (ES consume mucha memoria). Si el servidor no cumple estos requisitos, puedes añadir
- "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" al archivo de Docker de ES para especificar la memoria, pero esto no garantiza alta disponibilidad.
- En Windows, ten en cuenta el problema de formato de los archivos
.sh https://github.com/boy-hack/w12scan/issues/12 (gracias a @Hotsunrize).
- P: ¿Cómo desplegar de forma distribuida? R: Esquema de despliegue
- P: ¿El número de búsquedas es 0 después del inicio? R: Es necesario añadir objetivos de escaneo.
- No busques mientras escaneas. Elasticsearch analiza y segmenta los datos al insertarlos (lo que reduce el rendimiento). Si buscas en ese momento, podrías obtener un error 503. Se recomienda buscar después de que el escaneo haya finalizado. (En el futuro se solucionará mediante migración de datos).
Enlaces relacionados
Legal
Este programa se utiliza principalmente para recopilar datos de red con fines de análisis e investigación. Antes de usar este programa, cumple con las leyes locales aplicables.