Escáner de vulnerabilidades web multi-herramienta (inspirado en RapidScan) con:
- 19 comprobaciones con herramientas externas orquestadas en paralelo:
nmap,nikto,sqlmap,wafw00f,whatweb,dnsrecon,gobuster,xsstrike,sslscan,lbd— incluye familia SSL (Heartbleed, FREAK, POODLE, CCS Injection, Logjam), BSQLi, Shellshock, Slowloris acotado, detección de balanceador de carga y más. - 7 checks propios (sin dependencias externas): métodos HTTP, clickjacking, HSTS, CORS, banner del servidor, cookies sin
Securey OCSP stapling. - Análisis con IA (Ollama): resumen ejecutivo, puntuación de riesgo 0–100, detección de falsos positivos y plan de remediación priorizado. Sin Ollama disponible, degrada a un análisis local basado en reglas.
- Modo adaptativo (
--ai-adaptive): la IA decide el lote de reconocimiento inicial y el siguiente lote según la evidencia. - Heurística estilo mindmap AD (OCD): árbol de decisión
data/ad_paths.jsonque activa rutas de ataque según los hallazgos y las traduce en plan accionable (run/skip/observe). - Reportes TXT / JSON / HTML autocontenidos (sin dependencias web; exportación a PDF opcional vía CDN).
- Python 3.8+ (solo stdlib en runtime; no requiere dependencias de terceros).
- Opcional: Ollama en
http://localhost:11434para el análisis con IA. - Las herramientas externas se detectan automáticamente; los checks que no pueden ejecutarse se marcan como skipped y el escáner continúa.
sudo apt install nmap nikto sqlmap wafw00f whatweb dnsrecon gobuster xsstrike sslscan lbd -yDesde el árbol fuente (sin instalar):
python3 skadi.py scan example.comComo paquete:
pip install .
skadi scan example.com# Escaneo completo (por defecto)
python3 skadi.py scan example.com
# Con análisis de IA (Ollama; degrada a reglas locales si no está disponible)
python3 skadi.py scan example.com --ai
# Modo adaptativo: la IA decide los lotes de herramientas según la evidencia
python3 skadi.py scan example.com --ai-adaptive
# Sesión interactiva de preguntas sobre el análisis (después de --ai)
python3 skadi.py scan example.com --ai --ask
# Listar comprobaciones disponibles
python3 skadi.py list-checks
# Solo determinados checks
python3 skadi.py scan example.com --checks nmap_ports,clickjacking
# Configurar salida y formato
python3 skadi.py scan example.com -o ./reportes -f all # txt+json+html
python3 skadi.py scan example.com -o ./reportes -f html| Flag | Descripción |
|---|---|
target |
Dominio, IP o IP:puerto objetivo |
-o, --output |
Directorio para los reportes (default: output) |
-f, --format |
txt, json, html o all (default: all) |
-q, --quiet |
Menos salida en consola |
--skip-ping |
Omitir la verificación de conectividad previa |
--threads N |
Hilos concurrentes (default: 5) |
--checks ID1,ID2 |
Ejecutar solo los checks indicados |
--ai |
Análisis post-scan con IA |
--ai-adaptive |
Escaneo adaptativo guiado por IA |
--ask |
Chat interactivo sobre el análisis |
--model |
Modelo Ollama (default: llama3.1) |
--ollama-url |
URL del servidor Ollama (default: http://localhost:11434) |
--lang |
es o en (default: es) |
Orden de precedencia: flags CLI > variables de entorno SKADI_* > archivo JSON.
- Copia
skadi_config.example.jsonaskadi_config.json(directorio de trabajo) o~/.config/skadi/config.json(o defineSKADI_CONFIGcon la ruta). - Variables de entorno equivalentes:
SKADI_OLLAMA_URL,SKADI_OLLAMA_MODEL,SKADI_THREADS,SKADI_OUTPUT_DIR,SKADI_REPORT_FORMAT,SKADI_LANG,SKADI_TOOL_TIMEOUT,SKADI_QUIET,SKADI_SKIP_PING. - La heurística AD lee
data/ad_paths.json; se puede apuntar a otro archivo conSKADI_AD_PATHS. - Timeout por herramienta: global vía
SKADI_TOOL_TIMEOUT(default 300s); una tool puede declarar su propiotimeoutentools/tool_defs.py(slowloris_checkusa 360s con--script-timeout 150s).
pip install pytest
python3 -m pytest tests/ -qskadi.py CLI principal
modules/scanner.py Orquestación de tools + checks HTTP + modo adaptativo
modules/ai_agent.py Cliente Ollama, análisis por reglas, detección de FPs
modules/heuristics.py Motor de decisión AD (mindmap OCD)
modules/reporter.py Reportes TXT / JSON / HTML
modules/config.py Config central (JSON + env + CLI)
tools/tool_defs.py Definiciones de tools, keywords y negative_keywords
data/ad_paths.json Rutas de decisión AD (configurables)
tests/ Suite pytest (49 tests)
El escáner evalúa marcadores negativos (negative_keywords por tool + lista universal de CLI) antes que los positivos: salidas de error/uso, "do not appear to be injectable", "NOT VULNERABLE", ausencia de WAF, transferencias de zona fallidas, etc. no marcan vulnerable=True. El análisis de IA aplica además sus propias reglas de FP y solo calcula la puntuación de riesgo sobre los hallazgos reales.
git clone https://github.com/heindall92/skadi.git
cd skadi
python3 -m pytest tests/ -q # 49 tests
python3 skadi.py --version # 1.3.0MIT © 2026 Yoandy Ramirez Delgado (heindall92). Ver el archivo LICENSE.
