
APT-Hunter es una herramienta de caza de amenazas (Threat Hunting) para registros de eventos de Windows, creada con mentalidad de equipo púrpura (purple team) para detectar movimientos de APT ocultos en el mar de registros de eventos de Windows, con el fin de reducir el tiempo para descubrir actividad sospechosa.
Búsqueda de amenazas en registros de eventos de Windows, creada con una mentalidad de equipo púrpura.
APT-Hunter es una herramienta de búsqueda de amenazas para registros de eventos de Windows. Utiliza reglas de detección predefinidas y estadísticas de registros para exponer actividad de APT oculta en grandes volúmenes de eventos, reduciendo el tiempo necesario para descubrir comportamiento sospechoso. Es especialmente eficaz para evaluaciones de compromiso.
Los resultados se escriben como una línea de tiempo que se puede analizar directamente en Excel, Timeline Explorer, Timesketch y herramientas similares, o explorar en el panel web integrado con triaje opcional mediante LLM local.
Descarga los binarios compilados desde la página de Releases, o ejecuta desde el código fuente (Python 3.8+):
git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
-p acepta un directorio o un único archivo. Añade -web para abrir el panel cuando finalice el análisis.





Ejecuta python3 APT-Hunter.py -h para ver la lista completa. Opciones principales:
| Opción | Descripción |
|---|---|
-p, --path | Archivo o carpeta de registros a analizar |
-o, --out | Nombre / directorio de salida |
-start, -end | Restringir la línea de tiempo (formato ISO) |
-tz | Zona horaria (local o p. ej. Asia/Dubai) |
-cores | Núcleos de CPU a usar (por defecto: la mitad de los disponibles) |
-hunt, -huntfile, -eid | Buscar por cadena/regex, archivo de regex o Event ID |
-sigma, -rules | Buscar con reglas Sigma convertidas a JSON |
-o365hunt, -o365rules, -o365raw | Búsqueda en registros de auditoría de Office 365 |
-procexec, -logon, -objaccess, -allreport | Informes adicionales |
-web, -webview, -webhost, -webport | Iniciar el panel web |
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context | Análisis con LLM local |
Analizar una carpeta de archivos EVTX (los tipos de registro se detectan automáticamente):
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
Centrarse en un intervalo de tiempo:
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56
Buscar con una cadena, una regex o un archivo de regex:
python3 APT-Hunter.py -hunt "psexec" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile "(psexec|psexesvc)" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile huntfile.txt -p /opt/wineventlogs/ -o Project2
Buscar con reglas Sigma:
python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2
Obtener las últimas reglas de Sigma convertidas para APT-Hunter (escribe rules.json):
./Get_Latest_Sigma_Rules.sh
Explora un informe generado en el navegador: filtrado, gráficos, línea de tiempo de incidentes y exportación de informes de IR.
python3 run_webapp.py <Output>/<Output>_Report.xlsx # o pasa el directorio de salida
python3 APT-Hunter.py -p <logs> -o <Output> -web # analiza y luego abre el panel
python3 APT-Hunter.py -webview <Output> # abre un informe existente
Aceptar un hallazgo de triaje lo fija a la línea de tiempo de incidentes junto con su evidencia, adjuntada como sub-eventos plegables: se sitúan bajo el hallazgo en la tabla en lugar de intercalarse con todo lo demás, y se mantienen fuera de los gráficos de la línea de tiempo para que los gráficos sigan siendo legibles. Eliminar un hallazgo elimina también sus sub-eventos.
El servidor se enlaza a 0.0.0.0:5000 por defecto. Usa --host / --port (o -webhost / -webport) para cambiarlo, por ejemplo --host 127.0.0.1 para mantenerlo local. Los hallazgos revisados y la línea de tiempo se conservan cuando se reconstruye la caché del informe.