Trabajando con el Windows Event Log
El Windows Event Log es un componente crítico tanto para defensores (SOC, admins) como para atacantes (pentesters), ya que:
-
Permite monitorear, recolectar y categorizar eventos en todos los sistemas de la red.
-
Los defensores lo usan para detectar actividad sospechosa y configurar alertas.
-
Los atacantes pueden usarlo para entender el entorno, buscar credenciales y cubrir sus rastros.
📌 Conceptos Clave
Evento (Event)
-
Es cualquier acción o suceso identificable generado por hardware o software.
-
Tipos de eventos:
-
Generados por usuario: movimiento del mouse, teclas pulsadas.
-
Generados por aplicaciones: actualizaciones, errores, consumo de memoria.
-
Generados por el sistema: encendido, carga de drivers, inicio de sesión.
-
Registro de Eventos (Event Logging)
-
Servicio de Windows que centraliza y estandariza la forma de registrar eventos.
-
Permite que aplicaciones y el sistema operativo creen y gestionen logs.
-
Inicia automáticamente al arrancar el sistema y corre bajo svchost.exe.
Ubicación de los logs
-
Por defecto:
C:\Windows\System32\winevt\logs -
Archivos con extensión
.evtx
📂 Categorías de Logs
| Categoría | Descripción |
|---|---|
| System | Eventos relacionados con Windows y sus componentes (ej. servicio falla al iniciar). |
| Security | Eventos de seguridad (inicios de sesión exitosos/fallidos, creación/eliminación de archivos). |
| Application | Eventos generados por software instalado (ej. fallo de Slack). |
| Setup | Instalación de Windows y eventos de Active Directory en controladores de dominio. |
| Forwarded Events | Logs enviados desde otros hosts de la red. |
⚠ Tipos de Eventos
| Tipo | Descripción |
|---|---|
| Error | Problema grave (ej. servicio no carga). |
| Warning | Advertencia de posible problema futuro (ej. espacio en disco bajo). |
| Information | Evento informativo sobre operación exitosa. |
| Success Audit | Acceso de seguridad auditado exitoso. |
| Failure Audit | Acceso de seguridad auditado fallido. |
Niveles de severidad
| Nivel | # | Descripción |
|---|---|---|
| Critical | 1 | Problema crítico que requiere atención inmediata. |
| Error | 2 | Problema que no requiere atención inmediata. |
| Warning | 3 | Posible problema futuro. |
| Information | 4 | Evento informativo. |
| Verbose | 5 | Mensajes de progreso o éxito detallados. |
🔍 Elementos de un Event Log
-
Log name: Nombre del registro donde se guarda el evento.
-
Event ID: Identificador único del evento.
-
Source: Aplicación o componente que genera el evento.
-
Level: Severidad del evento.
-
User: Usuario asociado al evento.
-
Computer: Nombre del equipo.
-
Task Category: Categoría del evento.
-
Event date/time: Fecha y hora del evento.
🛠 Interacción con el Event Log
1️⃣ Desde la línea de comandos: wevtutil
- Enumerar logs:
wevtutil el
- Información de un log:
wevtutil gl "Windows PowerShell"
- Estado y metadatos:
wevtutil gli "Windows PowerShell"
- Consultar últimos 5 eventos:
wevtutil qe Security /c:5 /rd:true /f:text
- Exportar log a archivo
.evtx:
wevtutil epl System C:\system_export.evtx
2️⃣ Desde PowerShell: Get-WinEvent
- Listar todos los logs:
Get-WinEvent -ListLog *
- Detalles de un log específico:
Get-WinEvent -ListLog Security
- Últimos 5 eventos:
Get-WinEvent -LogName 'Security' -MaxEvents 5 | Select-Object -ExpandProperty Message
- Filtrar por Event ID:
Get-WinEvent -FilterHashTable @{LogName='Security';ID='4625'}
- Filtrar por nivel de severidad:
Get-WinEvent -FilterHashTable @{LogName='System';Level='1'} | Select-Object -ExpandProperty Message
🧩 Ejemplo: Detectar un ataque de fuerza bruta
Pregunta:
¿Qué cuenta de usuario en el Domain Controller tiene muchos intentos fallidos de inicio de sesión (Event ID 4625) en rápida sucesión, lo que indica un posible ataque de fuerza bruta?
La bandera es el nombre de la cuenta de usuario.
1️⃣ Conectarse al Domain Controller
Para analizar los eventos, primero nos conectamos al DC (por ejemplo, vía SSH o RDP).
2️⃣ Buscar eventos de inicio de sesión fallidos
Podemos usar PowerShell para extraer los intentos fallidos:
Get-EventLog -LogName Security -InstanceId 4625 | Select-Object TimeGenerated,@{Name='AccountName';Expression={$_.ReplacementStrings[5]}}
-
LogName Security→ busca en el log de seguridad. -
InstanceId 4625→ filtra solo los eventos de inicio de sesión fallidos. -
ReplacementStrings[5]→ extrae el nombre de la cuenta afectada. -
3️⃣ Analizar los resultados
Al revisar la salida, buscamos usuarios con muchos intentos fallidos en poco tiempo. Esto es indicativo de un ataque de password brute force.
Ejemplo de salida:

⚠️ Nota: Es crucial diferenciar entre usuarios locales y cuentas de dominio. Solo las cuentas de dominio aparecerán en los eventos del Domain Controller.