Skip to main content

winlog-hunter

PyPI licencia tests

Analizador de logs de Windows para blue team. Lee eventos de Security, System, Sysmon y PowerShell, detecta actividad sospechosa con 21 reglas y genera un informe con cada hallazgo mapeado a MITRE ATT&CK. Las reglas también están en formato Sigma para usarlas en cualquier SIEM.

Informe de winlog-hunter con logs de ataques reales

Instalación

Necesitas Python 3.9 o superior.

python -m pip install winlog-hunter

No tiene dependencias obligatorias. En Linux o macOS, para leer ficheros .evtx instala también el extra: python3 -m pip install "winlog-hunter[evtx]" (en Windows no hace falta: usa wevtutil, que viene con el sistema).

Para actualizar a la última versión: python -m pip install --upgrade winlog-hunter. Para comprobar que funciona: winlog-hunter --version.

¿Windows dice que no reconoce winlog-hunter? Algunas instalaciones de Python no ponen su carpeta Scripts en el PATH. Usa python -m winlog_hunter (con guion bajo), por ejemplo python -m winlog_hunter equipo: funciona igual y, de paso, añade esa carpeta al PATH de tu usuario. Desde la siguiente consola que abras, winlog-hunter funcionará directamente.

Uso

1. Abre PowerShell como administrador (sin administrador funciona, pero se omite el log Security).

2. Analiza tu equipo:

winlog-hunter equipo

Exporta los logs de las últimas 24 horas, los analiza y abre el informe en el navegador. Se guarda en Documentos\winlog-hunter con la fecha en el nombre.

Para analizar más tiempo: winlog-hunter equipo --horas 72. Todas las opciones: winlog-hunter equipo --help.

La primera vez, prepara el equipo para que Windows guarde todos los eventos que usan las reglas.

Comandos

winlog-hunter -h                # lista de comandos y ejemplos
winlog-hunter <comando> -h      # todas las opciones de un comando, p. ej. winlog-hunter equipo -h
Comando Qué hace Administrador
winlog-hunter equipo Analiza los logs de este equipo y abre el informe Recomendado
winlog-hunter analyze <ficheros> Analiza .evtx, .xml o .json exportados de cualquier equipo No
winlog-hunter rules Lista las 21 reglas de detección No
winlog-hunter auditoria --activar Activa los eventos de Windows que usan las reglas Sí
winlog-hunter sysmon --instalar Instala Sysmon con la configuración de winlog-hunter Sí
winlog-hunter programar Programa el análisis diario del equipo Sí
winlog-hunter desinstalar Deshace todos los cambios en el equipo Sí
winlog-hunter --version Muestra la versión instalada No

Detecciones

ID Detección Eventos MITRE ATT&CK
WLH-001 Fuerza bruta (muchos fallos, misma cuenta y origen) 4625 T1110.001
WLH-002 Password spraying (un origen, muchas cuentas) 4625 T1110.003
WLH-003 Inicio de sesión correcto justo después de una fuerza bruta 4625 → 4624 T1110, T1078
WLH-004 Movimiento lateral (misma cuenta en varios equipos) 4624 tipo 3/10 T1021
WLH-005 Registro de eventos borrado 1102, 104 T1685.005
WLH-006 Servicio nuevo; alta si es PsExec o ejecuta algo sospechoso 7045 T1543.003, T1569.002
WLH-007 Tarea programada; alta si lanza PowerShell, scripts o rutas raras 4698 T1053.005
WLH-008 Cuenta de usuario creada 4720 T1136
WLH-009 Alta en grupo privilegiado (por SID, vale en cualquier idioma) 4728, 4732, 4756 T1098
WLH-010 PowerShell sospechoso; decodifica -EncodedCommand Sysmon 1, 4688 T1059.001
WLH-011 LOLBins: certutil, mshta, rundll32, regsvr32, bitsadmin, wmic Sysmon 1, 4688 T1218, T1105, T1197, T1047
WLH-012 Office (Word, Excel, Outlook...) lanzando una shell Sysmon 1, 4688 T1566.001, T1204.002
WLH-013 Acceso a la memoria de LSASS (Mimikatz, procdump...) Sysmon 10 T1003.001
WLH-014 Comandos de volcado: comsvcs MiniDump, ntdsutil, reg save SAM Sysmon 1, 4688 T1003.001-.003
WLH-015 DCSync: replicación de AD pedida por un usuario 4662 T1003.006
WLH-016 Kerberoasting: tickets de servicio RC4 4769 T1558.003
WLH-017 Ejecución remota por SMB: PsExec, svcctl, atsvc, copia a ADMIN$ 5145 T1021.002, T1569.002
WLH-018 Shell lanzada por WMI o WinRM (wmiexec, Invoke-Command) Sysmon 1, 4688 T1047, T1021.006
WLH-019 Persistencia en el registro: Run, Winlogon, IFEO, COM, LSA, SAM Sysmon 13 T1547, T1546
WLH-020 Persistencia con suscripciones WMI Sysmon 19-21 T1546.003
WLH-021 Script de PowerShell malicioso: volcado de LSASS, AMSI, inyección 4104 T1059.001, T1003.001

Para reducir falsos positivos, la severidad depende del contexto: un servicio o una tarea normales salen como baja, y uno que ejecuta powershell -enc sale como alta. Los ataques en ráfaga (500 intentos de contraseña) se agrupan en un único hallazgo.

Resultados con ataques reales

winlog-hunter se ha probado con EVTX-ATTACK-SAMPLES: 278 ficheros .evtx grabados en laboratorio mientras se ejecutaban ataques reales, organizados por táctica.

Táctica Ficheros Detectados
Credential Access 39 14
Lateral Movement 47 13
Persistence 22 12
Execution 34 7
Herramientas de pruebas automatizadas 8 5
Privilege Escalation 66 3
Defense Evasion 36 2
Discovery 11 1
Command and Control 6 0
Otros 9 1
Total 278 58

No se cuentan los ficheros en los que solo salta registro borrado, porque el autor vació los logs antes de grabar cada ataque.

Los puntos débiles son claros: la escalada de privilegios (bypass de UAC, tokens, servicios vulnerables) y la evasión de defensas. Casi todos esos ataques necesitan reglas de Sysmon 7 (carga de DLL), 8 (hilos remotos) y 11 (ficheros creados), que aún no están implementadas.

Preparar el equipo (recomendado)

Windows no guarda por defecto muchos de los eventos que usan las reglas. Dos comandos, en PowerShell como administrador, lo dejan listo:

winlog-hunter auditoria --activar
winlog-hunter sysmon --instalar

Auditoría de Windows

winlog-hunter auditoria --activar activa:

  • La auditoría de creación de procesos (4688) con la línea de comandos, de tareas programadas (4698), de cuentas (4720), de grupos (4728, 4732) y de inicios de sesión correctos y fallidos (4624, 4625).
  • El Script Block Logging de PowerShell (4104), que necesita la regla WLH-021.
  • Un tamaño mayor para los registros Security (128 MB), PowerShell (64 MB) y Sysmon (128 MB), para que quepan 24 horas de eventos.

Antes de cambiar nada guarda la configuración original, y winlog-hunter auditoria --restaurar la deja como estaba. winlog-hunter auditoria --estado muestra qué está activado. Usa los GUID de las subcategorías de auditoría, así que funciona con Windows en cualquier idioma.

Sysmon

Sin Sysmon, Windows no registra los procesos que se ejecutan, los accesos a LSASS ni los cambios en el registro, así que 9 de las 21 reglas no tienen datos. Sysmon es gratuito y de Microsoft. En PowerShell como administrador:

winlog-hunter sysmon --instalar

Descarga Sysmon de la web oficial de Microsoft, comprueba que está firmado por Microsoft y lo instala con una configuración pensada para winlog-hunter. Esa configuración registra los procesos, los accesos a LSASS, los cambios en claves de persistencia y WMI, y filtra el ruido para que el log ocupe poco. Al instalarlo se acepta la licencia de Sysinternals.

winlog-hunter sysmon --estado        # comprobar que está instalado
winlog-hunter sysmon --actualizar    # aplicar la configuración de una versión nueva de winlog-hunter
winlog-hunter sysmon --desinstalar   # quitarlo

winlog-hunter equipo incluye Sysmon y PowerShell en cuanto existen.

Cómo sacar los logs de un equipo Windows manualmente

Para analizar otro equipo, o un log concreto, expórtalo y pásaselo a winlog-hunter:

# 1. Exportar los logs (Security requiere administrador)
wevtutil epl Security C:\temp\Security.evtx
wevtutil epl System C:\temp\System.evtx

# 2. Analizarlos y guardar el informe
winlog-hunter analyze C:\temp\Security.evtx C:\temp\System.evtx -o informe.html

El formato del informe se elige por la extensión: .html, .md o .json. También acepta .xml de wevtutil qe y JSON de Winlogbeat o de un SIEM. En Linux/macOS, para leer .evtx instala antes python3 -m pip install "winlog-hunter[evtx]".

Análisis automático diario del propio equipo (Windows)

Para que el informe se genere solo cada día, en PowerShell como administrador:

winlog-hunter programar                 # cada día a las 09:00
winlog-hunter programar --hora 21:30    # a otra hora
winlog-hunter programar --ahora         # lanzarlo ya, sin esperar
winlog-hunter programar --estado        # comprobar que existe
winlog-hunter programar --quitar        # eliminarlo
  • Si hay algún hallazgo crítico, aparece un aviso en pantalla con el resumen y la ruta del informe. Con --avisar-desde high también avisa de los de severidad alta.
  • Los informes se guardan en Documentos\winlog-hunter y los de más de 30 días se borran solos.
  • ejecuciones.log, en la misma carpeta, guarda un resumen de cada ejecución.
  • Si el equipo está apagado a la hora programada, se ejecuta al encenderlo.
  • Al actualizar winlog-hunter con pip, la tarea usa la versión nueva sin volver a programarla.

Reglas Sigma

La carpeta sigma/ del repositorio tiene las 21 detecciones en formato Sigma, validadas con sigma check. Se convierten a la consulta de tu SIEM (Splunk, Elastic, Microsoft Sentinel, QRadar...):

git clone https://github.com/BV-cs0/winlog-hunter.git
python -m pip install sigma-cli
sigma plugin install splunk
sigma convert -t splunk -p windows-audit -p splunk_windows winlog-hunter/sigma/

Seguridad del propio analizador

Los logs pueden contener datos controlados por un atacante (nombres de usuario, líneas de comandos, nombres de tareas), así que la herramienta los trata como entrada hostil:

  • HTML. Todo el contenido se escapa y el informe lleva una Content-Security-Policy que bloquea cualquier script.
  • Consola. Se eliminan los caracteres de control, para que una secuencia ANSI dentro de un log no pueda manipular la terminal.
  • XML. Se rechazan los documentos con DOCTYPE (protección frente a XXE y billion laughs).
  • Markdown. Se escapan los caracteres especiales.

Desinstalar

1. Deshaz los cambios en el equipo (PowerShell como administrador):

winlog-hunter desinstalar

Elimina la tarea programada, deja la auditoría de Windows como estaba antes de auditoria --activar, desinstala Sysmon y quita del PATH la carpeta que añadió winlog-hunter. Solo deshace lo que hizo winlog-hunter: si algo no se había activado, lo indica y lo deja como está.

  • --conservar-sysmon: no desinstala Sysmon (por ejemplo, si ya lo usabas antes).
  • --borrar-informes: borra también los informes de Documentos\winlog-hunter, que por defecto se conservan.

2. Quita el paquete:

python -m pip uninstall winlog-hunter

Estructura

src/winlog_hunter/
  parsers.py   lectura de EVTX / XML / JSON y normalización de eventos
  rules.py     las 21 reglas de detección mapeadas a MITRE ATT&CK
  report.py    informe en consola, HTML, Markdown y JSON
  local.py     análisis del propio equipo, aviso, tarea programada, auditoría, Sysmon y desinstalación
  pathfix.py   deja el comando winlog-hunter en el PATH si pip no lo hizo
  data/sysmon.xml   configuración de Sysmon para las reglas
  cli.py       comando winlog-hunter (analyze, equipo, programar, auditoria, sysmon, desinstalar, rules)
sigma/         las reglas en formato Sigma
docs/          captura del informe
samples/       datos sintéticos que usan los tests
tests/         tests automáticos

Úsalo solo con logs de equipos que tengas autorización para analizar. Licencia MIT.

Metadata

Release files for winlog-hunter 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for winlog-hunter 0.6.0
File Size Uploaded Provenance Actions
winlog_hunter-0.6.0.tar.gz 57.2 kB With provenance Details for winlog_hunter-0.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for winlog-hunter 0.6.0
File Interpreter ABI Platform Actions
winlog_hunter-0.6.0-py3-none-any.whl Python 3 none any Details for winlog_hunter-0.6.0-py3-none-any.whl

Total release size: 104.2 kB

Release files / winlog_hunter-0.6.0.tar.gz

Download URL winlog_hunter-0.6.0.tar.gz
Size 57.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c164c56e51f5b987722b2f08a3dfb70373b03c0f01604237197f4d9d7c8ce9fa
BLAKE2b-256 checksum
How to use checksums
52c01f1f9e64b9824f8f9467eca5c14ad6b707589be521912a64b2c4e8211b1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 7, 2026.

Transparency log

Release files / winlog_hunter-0.6.0-py3-none-any.whl

Download URL winlog_hunter-0.6.0-py3-none-any.whl
Size 47.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
edb5aef77a86de03da0bef5ad923eecbc23a73e769668b65c9b0be2cd4d1a554
BLAKE2b-256 checksum
How to use checksums
ec1ca0e902deafea7413e718f97d6eadd70727a77ca96939361a9701cb6c0b92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 7, 2026.

Transparency log

Security for winlog-hunter 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for winlog_hunter-0.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page