OmniScan Escáner Integral de Vulnerabilidades
OmniScan es un escáner de vulnerabilidades ligero y multi-motor basado en Python, diseñado para operaciones de red team e investigación de seguridad. No solo integra el motor ligero Nuclei Lite y el motor Afrog, sino que también proporciona potentes capacidades de recolección de activos y gestión de resultados.
Características Principales
1. Soporte Multi-Motor
- Motor Nuclei Lite (Integrado):
- Lógica central de Nuclei implementada de forma nativa en Python, sin necesidad del entorno Go.
- Seguridad Mejorada: Utiliza
simpleeval en lugar de eval y ejecuta expresiones DSL en un entorno sandbox para evitar que plantillas maliciosas ejecuten código.
- Generación Inteligente de Variables: Identifica y completa automáticamente variables de plantilla no definidas (por ejemplo,
{{lang-file}} -> etc/passwd), con soporte para fuzzing inteligente.
- Compatibilidad Profunda:
- Soporta la gran mayoría de las funciones auxiliares de Nuclei (incluyendo
hmac, gzip, reverse, rand_base, etc.).
- Soporta control de flujo
flow y req-condition.
- Soporta mantenimiento de sesión
cookie-reuse y control de redirecciones redirects.
- Filtrado Inteligente de Falsos Positivos:
- Reducción Inteligente de FP: Para páginas 200 OK, identifica y filtra de forma inteligente falsos positivos que solo coinciden con el código de estado pero no con palabras clave (Heurística de Modo Estricto).
- Identificación de WAF: Detecta automáticamente páginas de bloqueo de WAF como 403/429 para evitar falsos positivos.
- Detección de Interacción OOB (Mejorada):
- Cliente
Interactsh integrado que maneja automáticamente vulnerabilidades sin respuesta (como Blind RCE, SSRF).
- ID de Correlación: Genera un ID de correlación único para cada solicitud, emparejando con precisión las interacciones OOB para eliminar por completo los falsos positivos.
- Espera Adaptativa: Ajusta inteligentemente el tiempo de espera de detección OOB para equilibrar velocidad y precisión.
- Motor Afrog: Integra el escáner Afrog para capacidades adicionales de detección de vulnerabilidades.
- Motor Oficial de Nuclei: Soporta la invocación del binario de Nuclei instalado en el sistema para escaneo.
- Motor XRay: Soporta la invocación de XRay para escaneo web.
2. Sistema de Plugins (Nuevo)
- Extensión mediante Plugins Python: Permite a los usuarios escribir scripts Python como plugins de escaneo para manejar lógica compleja.
- Progreso Visual: Barra de progreso
tqdm incorporada que muestra en tiempo real el progreso de cada plugin en cada objetivo.
- Fácil de Usar: Solo necesita heredar la clase
BasePlugin e implementar el método check(url).
- Integración Sin Problemas: Los resultados de los plugins se integran automáticamente en el informe general, gestionados junto con los resultados de Nuclei.
- Escaneo Dirigido: Soporta la especificación de uno o varios archivos de plugin para detección especializada.
- Plugins de Ejemplo:
git_config.py: Detecta fugas de .git/config
spring_boot.py: Detecta Spring Boot Actuator
ds_store.py: Detecta fugas de .DS_Store
phpinfo.py: Detecta páginas phpinfo()
backup_files.py: Detecta archivos de copia de seguridad comunes (.bak, .zip, etc.)
swagger_ui.py: Detecta documentación Swagger UI
3. Recolección de Activos
- Búsqueda FOFA: Integra la API de FOFA, compatible con búsqueda por lotes de activos con sintaxis (por ejemplo,
country="CN").
- Búsqueda Shodan: Integra la API de Shodan, compatible con búsqueda de activos por palabra clave.
- Objetivo Único: Soporta especificar una sola URL para escaneo rápido.
- Carga de Objetivos Locales: Soporta cargar listas de URLs desde archivos de texto por lotes.
- Detección Inteligente de Disponibilidad: Realiza automáticamente detección de disponibilidad HTTP antes del escaneo, filtrando objetivos no válidos.
- Estandarización de URLs: Completa automáticamente el protocolo de URL (http/https) y elimina duplicados.
4. Arquitectura Asíncrona de Alto Rendimiento y Soporte para Plantillas Masivas
- Utiliza los frameworks
asyncio y aiohttp de Python.
- Optimización de Memoria (NUEVO):
- Carga Perezosa (Lazy Loading): Los archivos de plantilla se cargan bajo demanda, sin necesidad de cargar todos los archivos a la vez.
- Procesamiento por Lotes: Soporta escaneo por lotes de millones de plantillas POC (por defecto 5000 por lote), resolviendo por completo los problemas de desbordamiento de memoria (OOM) en escaneos a gran escala.
- Recolección Automática de Memoria: Libera memoria automáticamente después de completar cada lote.
- Monitoreo de Progreso en Tiempo Real: Muestra el progreso detallado del lote y el porcentaje.
- Sistema LogFilter: Filtra automáticamente errores no críticos como "Illegal cookie name", manteniendo la salida limpia.
5. Gestión de Resultados
- Guardado de Resultados en Tiempo Real:
- Cada vulnerabilidad encontrada se escribe inmediatamente en la base de datos SQLite y en un archivo CSV, evitando la pérdida de datos por interrupción del programa.
- Después de completar el escaneo de cada objetivo, se actualiza automáticamente el resumen estadístico.
- Informes en Múltiples Formatos: Genera informes de escaneo en formatos JSON, CSV y HTML en tiempo real.
- Base de Datos SQLite: Base de datos SQLite integrada que elimina automáticamente duplicados de los resultados (basado en ID de plantilla + objetivo + URL).
- Resumen Detallado:
- Durante el escaneo, se muestra en tiempo real un resumen de vulnerabilidades para cada objetivo (incluyendo el total de hallazgos del lote actual y el total acumulado).
- La barra de progreso muestra en tiempo real el número global acumulado de vulnerabilidades encontradas.
- Al finalizar el escaneo, se proporcionan estadísticas globales de vulnerabilidades.
6. Detección de Interacción OOB (Fuera de Banda)
- Detección Automática de Ciclo Cerrado: Maneja automáticamente vulnerabilidades sin respuesta como Blind RCE, SSRF, Blind SQLi.
- Cliente Interactsh Integrado:
- Descarga y gestiona automáticamente el binario
interactsh-client. (Ya he subido interactsh-client.zip; puedes descomprimirlo directamente en este directorio).
- Obtiene automáticamente la URL del Payload OOB (por ejemplo,
xxx.oast.pro).
- Monitorea en tiempo real los registros de interacción DNS/HTTP/SMTP.
- Cero Configuración: El escáner reemplaza automáticamente
{{interactsh-url}} en las plantillas con el Payload obtenido en tiempo real.
Inicio Rápido
Requisitos del Entorno
- Python 3.8+
- Linux / macOS / Windows
Instalación
-
Clonar el repositorio:
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
-
Instalar dependencias:
pip3 install -r requirements.txt
-
Configurar herramientas (opcional):
- Si usa
Afrog o XRay, asegúrese de que los ejecutables correspondientes estén en el directorio raíz del proyecto o en la ruta del sistema.
- Configure
config.yml (opcional) para establecer la clave API y los parámetros de escaneo.
Ejemplos de Uso
1. Escaneo de un Solo Objetivo
Escanea una única URL:
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
2. Recolección de Activos y Escaneo (FOFA)
Busca activos desde FOFA y escanea con el motor Nuclei Lite:
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/