Saltar al contenido

Logs de eventos de Windows: los Event ID que un analista debe conocer de memoria

    Logs de eventos de Windows:

    los Event ID que un analista debe conocer de memoria

    Serie Blue Team  |  unfantasmaenelsistema.com

    Antes de instalar Sysmon, antes de montar un SIEM y antes de pagar por un EDR, todo equipo Windows ya está escribiendo un diario de lo que ocurre dentro de él. El registro de eventos de Windows lleva décadas ahí, viene activado de serie y no cuesta nada. El problema no es que falte información: es que hay demasiada, mal repartida entre canales, con nombres crípticos y con la mitad de lo interesante apagado por defecto.

    Este artículo es un mapa práctico de ese registro nativo: qué canales existen, qué auditoría hay que encender para que aparezcan los eventos que importan, y un catálogo comentado de los Event ID que un analista de SOC acaba reconociendo de memoria. Es el complemento natural del artículo de Sysmon —que añade telemetría por encima— y el paso previo a centralizarlo todo en Wazuh u otro SIEM.

    Qué aprenderás en este artículo

    Cómo se organiza el registro de eventos por canales y para qué sirve cada uno · Qué auditoría avanzada hay que habilitar por GPO (y por qué muchos Event ID no salen de fábrica) · El catálogo de Event ID imprescindibles: logon, cuentas, grupos, Kerberos, servicios, PowerShell · Los Logon Type del 4624/4625 y qué significa cada número · Cómo priorizar entre el ruido y cómo consultar el log con wevtutil y Get-WinEvent

    1. Cómo se organiza el registro de eventos

    El registro de eventos de Windows no es un fichero único, sino un conjunto de canales independientes. Los clásicos —los que existen desde Windows NT— son tres: Security (auditoría de seguridad: inicios de sesión, uso de privilegios, acceso a objetos), System (arranque, servicios, controladores, hardware) y Application (lo que registran los programas). A partir de Windows Vista se añadieron cientos de canales operativos específicos bajo Registros de aplicaciones y servicios > Microsoft > Windows.

    El canal Security es especial: solo la Autoridad de seguridad local (LSA) puede escribir en él, cada entrada lleva un identificador de tarea de auditoría y su tamaño y retención suelen estar infradimensionados de fábrica. En un servidor ocupado, un canal Security de 20 MB puede rotar en minutos y borrar la evidencia antes de que nadie la mire.

    CanalRuta / nombreQué contiene
    SecuritySecurityLogon/logoff, gestión de cuentas y grupos, Kerberos/NTLM, uso de privilegios, acceso a objetos, cambios de política de auditoría
    SystemSystemInicio y parada de servicios (7034/7036/7045), controladores, errores de hardware, apagados
    ApplicationApplicationErrores y avisos de aplicaciones, Windows Error Reporting, instaladores
    PowerShellMicrosoft-Windows-PowerShell/OperationalScript Block Logging (4104), inicio de módulos (4103), transcripción
    WMIMicrosoft-Windows-WMI-Activity/OperationalConsultas y suscripciones permanentes de WMI (persistencia y ejecución)
    Task SchedulerMicrosoft-Windows-TaskScheduler/OperationalRegistro, borrado, activación y ejecución de tareas programadas
    WinRMMicrosoft-Windows-WinRM/OperationalSesiones de administración remota (WinRM/PSRemoting)
    Windows DefenderMicrosoft-Windows-Windows Defender/OperationalDetecciones (1116/1117), exclusiones añadidas (5007), protección desactivada
    SysmonMicrosoft-Windows-Sysmon/OperationalTelemetría de Sysmon si está instalado (ver artículo dedicado)

    Sube el tamaño de los canales antes de necesitarlos

    Security: 512 MB – 1 GB en servidores y controladores de dominio; 128-256 MB en puestos · PowerShell/Operational, TaskScheduler/Operational y WinRM/Operational: al menos 64-128 MB · Se ajusta por GPO en Configuración del equipo > Directivas > Plantillas administrativas > Componentes de Windows > Servicio de registro de eventos, o con wevtutil sl <canal> /ms:<bytes>

    2. Habilitar la auditoría: sin esto, el catálogo no aparece

    La instalación por defecto de Windows audita muy poco. Para que los Event ID interesantes empiecen a generarse hay que activar la directiva de auditoría avanzada (Advanced Audit Policy Configuration), disponible por GPO en Configuración del equipo > Directivas > Configuración de Windows > Configuración de seguridad > Configuración de directiva de auditoría avanzada. Es preferible a la directiva de auditoría básica y no conviene mezclarlas.

    Subcategoría de auditoríaHabilita eventos comoRecomendación
    Inicio de sesión / Logon4624, 4625, 4648Correcto y erróneo
    Cierre de sesión / Logoff4634, 4647Correcto
    Otros eventos de inicio de sesión4778, 4779 (RDP reconexión)Correcto
    Administración de cuentas de usuario4720, 4722, 4723, 4724, 4725, 4726, 4738Correcto y erróneo
    Administración de grupos de seguridad4728, 4732, 4756, 4735Correcto
    Servicio de autenticación Kerberos4768, 4771Correcto y erróneo
    Operaciones de vale de servicio Kerberos4769Correcto y erróneo
    Creación de procesos4688Correcto (+ activar línea de comandos, ver 2.1)
    Cambios de la directiva de auditoría4719, 1102Correcto y erróneo
    Recurso compartido de archivos / recurso compartido detallado5140, 5142, 5144, 5145Correcto (ojo al volumen)
    Otros eventos del sistema7045 (System), instalación de serviciosCorrecto

    2.1 Dos ajustes que casi todo el mundo olvida

    El Event ID 4688 (creación de proceso) por sí solo dice qué se ejecutó, pero no con qué argumentos. La línea de comandos es donde vive la mitad de la actividad maliciosa (parámetros de PowerShell codificados, rutas de scripts, IP de destino). Hay que activarla aparte:

    REM GPO: Config. del equipo > Plantillas administrativas > Sistema >
    REM   Auditar creacion de procesos > Incluir linea de comandos en...
    REM Equivale a esta clave:
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" ^
        /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f
     
    REM PowerShell Script Block Logging (genera Event ID 4104):
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" ^
        /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

    Comprueba lo que realmente se está auditando

    auditpol /get /category:* muestra la configuración efectiva en el equipo, que no siempre coincide con la GPO que crees haber aplicado · Un GPO de auditoría avanzada mal combinado con auditoría básica puede dejar subcategorías sin efecto: activa ‘Forzar la configuración de subcategorías…’ en la directiva · Tras cambiar la política, genera un evento de prueba (un logon fallido a propósito) y verifica que aparece

    3. El catálogo: Event ID que hay que conocer de memoria

    3.1 Autenticación y sesiones

    Event IDCanalSignificado y por qué importa
    4624SecurityInicio de sesión correcto. El campo clave es el Logon Type (ver 3.2) y el ‘New Logon’ con el usuario y el SID
    4625SecurityInicio de sesión fallido. Picos = fuerza bruta o password spraying; el Substatus indica el motivo exacto
    4634 / 4647SecurityCierre de sesión (4647 es el logoff iniciado por el usuario). Sirve para calcular duración de sesión
    4648SecurityInicio de sesión con credenciales explícitas (runas, ‘ejecutar como otro usuario’): frecuente en movimiento lateral
    4672SecuritySe asignan privilegios especiales (SeDebugPrivilege, SeTcbPrivilege…) a un inicio de sesión: cuenta administrativa o con poder
    4776SecurityEl DC valida credenciales por NTLM. Uso de NTLM donde debería haber solo Kerberos = señal a investigar
    4778 / 4779SecuritySesión RDP reconectada / desconectada, con nombre de equipo y dirección de origen

    3.2 Logon Type: el número que lo cambia todo

    En el 4624 y el 4625, el Logon Type indica cómo se autenticó la sesión. Interpretar mal este campo es el error más común al empezar. Los valores que aparecen a diario:

    TypeNombreCuándo se ve
    2InteractiveSesión local en el teclado del equipo (o KVM). Un Type 2 remoto es anómalo
    3NetworkAcceso a recursos compartidos, sesiones SMB, autenticación a IIS. El más frecuente en servidores
    4BatchTareas programadas ejecutándose con credenciales almacenadas
    5ServiceArranque de un servicio con su cuenta configurada
    7UnlockDesbloqueo de una estación ya iniciada
    8NetworkCleartextCredenciales enviadas en claro por la red (IIS Basic Auth): revisar siempre
    9NewCredentialsrunas /netonly: la sesión usa otras credenciales solo para la red. Habitual en herramientas de pentest
    10RemoteInteractiveRDP / Terminal Services. El origen debería estar en tu rango de administración
    11CachedInteractiveLogon con credenciales en caché (portátil sin línea con el DC)

    Combinaciones que merecen una alerta

    Type 10 (RDP) hacia un controlador de dominio desde una IP que no es la de los saltos de administración · Type 3 de una cuenta de servicio o de equipo hacia muchos hosts en poco tiempo (barrido lateral) · Type 9 (NewCredentials) en un puesto de usuario normal: casi nadie usa runas /netonly de forma legítima · 4625 con Substatus 0xC0000064 (usuario no existe) en ráfaga = enumeración de cuentas

    3.3 Gestión de cuentas y grupos

    Event IDAcciónNota para el analista
    4720Cuenta de usuario creadaFuera de la ventana de altas de RRHH o de IT = sospechoso
    4722 / 4725 / 4726Cuenta habilitada / deshabilitada / borradaEl borrado rápido tras un alta puede indicar limpieza de una cuenta de puerta trasera
    4723 / 4724Cambio de contraseña (propio) / restablecimiento (por un admin)4724 sobre cuentas privilegiadas hay que correlacionarlo con un ticket
    4738Cuenta de usuario modificadaCambios en UAC flags: p. ej. ‘no requiere preautenticación Kerberos’ habilita AS-REP roasting
    4728 / 4732 / 4756Miembro añadido a grupo global / local / universal de seguridad4732 a Administradores locales y 4728/4756 a Domain/Enterprise Admins son eventos de máxima prioridad
    4735 / 4737 / 4755Grupo de seguridad modificadoCambios en el alcance o en los permisos del propio grupo
    4740Cuenta bloqueadaEl ‘Caller Computer Name’ dice desde dónde vinieron los intentos fallidos

    3.4 Kerberos (en los controladores de dominio)

    Event IDMomento del flujoSeñal de interés
    4768Se emite un TGT (AS-REQ/AS-REP)Ticket Encryption Type 0x17 (RC4) donde se espera 0x12 (AES); avalancha desde un host = posible AS-REP roasting
    4769Se emite un vale de servicio (TGS)Type 0x17 + muchos SPN distintos pedidos por una sola cuenta en segundos = Kerberoasting
    4771Fallo de preautenticación KerberosEquivalente Kerberos del 4625: fuerza bruta contra el DC; el Failure Code precisa el motivo
    4770Vale de servicio renovadoContexto de sesiones largas

    El detalle de estos eventos y su detección se desarrolla en el artículo dedicado a Kerberoasting y AS-REP roasting. Aquí basta con saber que el 4769 con cifrado RC4 es la firma que se vigila.

    3.5 Persistencia, ejecución y recursos compartidos

    Event IDCanalQué detecta
    4688SecurityCreación de proceso. Con la línea de comandos activada, la base para cazar LOLBins y scripts codificados
    4697SecurityUn servicio se instala vía SCM (con auditoría de ‘Cambios de sistema de seguridad’)
    7045SystemUn servicio nuevo se instala en el sistema. PsExec, muchos C2 y el movimiento lateral dejan este rastro
    4698 / 4699 / 4702SecurityTarea programada creada / borrada / actualizada, con el XML de la acción en el propio evento
    4104PowerShell/OperationalBloque de script de PowerShell registrado entero: incluso ofuscado, se queda grabado. Nivel Warning = sospechoso para Windows
    4103PowerShell/OperationalRegistro de canalización y de módulos de PowerShell
    5140 / 5145SecurityAcceso a un recurso compartido de red / comprobación detallada de permisos por fichero. 5145 sobre C$ o ADMIN$ = admin remoto
    5140 a IPC$SecurityConexiones a IPC$ desde muchos orígenes: enumeración remota (sesiones nulas, consultas SAMR/LSARPC)

    3.6 Antiforense: cuando alguien borra el rastro

    Event IDCanalSignificado
    1102SecurityEl log de seguridad se ha borrado. Casi nunca es legítimo: alerta inmediata y de máxima prioridad
    104SystemUn log (System, Application u otro) se ha borrado
    4719SecurityLa directiva de auditoría del sistema se ha cambiado: alguien puede estar apagando la vigilancia
    1100SecurityEl servicio de registro de eventos se ha detenido (también ocurre en un apagado normal: contexto)
    7036 (Event Log)SystemCambios de estado del servicio de registro fuera de un reinicio

    Estos cuatro deberían despertarte de noche

    1102 (borrado del log de seguridad) y 104 (borrado de otros logs) · 4719 (cambio de la política de auditoría) sin ticket de cambio asociado · 4728 / 4732 / 4756 hacia grupos de administración de dominio · 4720 seguido en minutos de 4732 y de un 4726: alta, elevación y borrado de una cuenta efímera

    4. Ruido, prioridad y cómo no ahogarse

    Un controlador de dominio genera millones de 4624/4634/4769 al día que son puro funcionamiento normal. Intentar mirarlos todos es imposible y contraproducente. La estrategia que funciona:

    • Filtra por identidad y por contexto, no por Event ID a secas. Un 4624 Type 3 no dice nada; un 4624 Type 10 de una cuenta de Domain Admin a las 3 de la madrugada, sí
    • Listas de lo raro, no listas de lo malo. Define qué cuentas usan RDP, desde qué hosts salta la administración, qué procesos padre son normales; alerta sobre lo que se sale de ahí
    • Correlación temporal. 4625 x50 seguido de un 4624 correcto desde la misma IP = fuerza bruta con éxito. Los eventos sueltos engañan; las secuencias no
    • Cuentas de equipo y de servicio son el punto ciego. Se ignoran por ruidosas y es justo donde se esconde el movimiento lateral: trátalas como identidades de primera
    • Prioriza retención larga para 4624/4625, 4688, 4720-4756, 4768/4769, 7045, 4104 y 1102; el resto puede caducar antes

    Reenvía los eventos fuera del equipo (WEF)

    Windows Event Forwarding es nativo, sin agente: los equipos (source) envían por WinRM a un colector · Suscripciones ‘iniciadas por el origen’ (source-initiated) + una GPO que apunte al colector escalan a miles de endpoints · Ventaja de seguridad: lo reenviado en tiempo casi real ya está a salvo aunque luego alguien lance un 1102 en el equipo de origen · El colector se convierte después en la fuente que consume el SIEM (Wazuh, Splunk, Sentinel…)

    5. Consultar el log desde la línea de comandos

    El Visor de eventos vale para mirar un equipo puntual. Para cazar en serio se usan wevtutil (nativo, rápido, ideal para scripts y equipos remotos) y Get-WinEvent de PowerShell (más potente para filtrar y dar formato). La clave del rendimiento en Get-WinEvent es -FilterHashtable: filtra en el motor del log, no en memoria después.

    REM --- wevtutil ---
    REM Ultimos 20 logon fallidos, formato texto
    wevtutil qe Security /q:"*[System[(EventID=4625)]]" /c:20 /rd:true /f:text
     
    REM Exportar el canal Security de un equipo remoto a un .evtx
    wevtutil epl Security C:\ir\dc01-security.evtx /r:DC01
     
    REM Ver tamano y configuracion de retencion de un canal
    wevtutil gl Security
    # --- PowerShell / Get-WinEvent ---
    # Logon interactivos y RDP (Type 2 y 10) de las ultimas 24 h
    $f = @{ LogName='Security'; Id=4624; StartTime=(Get-Date).AddDays(-1) }
    Get-WinEvent -FilterHashtable $f |
      Where-Object { $_.Properties[8].Value -in 2,10 } |
      Select-Object TimeCreated,
        @{n='User'; e={$_.Properties[5].Value}},
        @{n='LogonType'; e={$_.Properties[8].Value}},
        @{n='Source'; e={$_.Properties[18].Value}}
     
    # Caza: creacion de servicios (7045) en toda una lista de equipos
    $f = @{ LogName='System'; Id=7045; StartTime=(Get-Date).AddDays(-7) }
    Get-WinEvent -FilterHashtable $f -ComputerName (Get-Content .\hosts.txt) |
      Select-Object MachineName, TimeCreated,
        @{n='Service'; e={$_.Properties[0].Value}},
        @{n='ImagePath'; e={$_.Properties[1].Value}}
     
    # PowerShell Script Block sospechoso (4104 con nivel Warning)
    Get-WinEvent -FilterHashtable @{
      LogName='Microsoft-Windows-PowerShell/Operational'; Id=4104; Level=3 } |
      Select-Object TimeCreated, @{n='Script'; e={$_.Properties[2].Value}}

    El índice de Properties depende del evento

    Los ejemplos usan Properties[n] por rapidez, pero ese índice cambia según el Event ID y a veces entre versiones de Windows · Para scripts que van a durar, usa $_.ToXml() y navega el XML por nombre de campo (Data Name=…) en lugar de por posición · Comprueba siempre contra un evento real de tu entorno antes de confiar en un parser

    6. Buenas prácticas

    • Despliega la directiva de auditoría avanzada por GPO desde una plantilla contrastada (la baseline de seguridad de Microsoft, o la guía de auditoría de Malware Archaeology) y ajústala a tu entorno
    • Activa la línea de comandos en el 4688 y el Script Block Logging de PowerShell el primer día
    • Sube el tamaño de los canales Security, PowerShell/Operational, TaskScheduler/Operational y WinRM/Operational antes de que un incidente los haga rotar
    • Reenvía todo con WEF a un colector y desde ahí al SIEM; no dependas de que el .evtx siga en el equipo
    • Documenta tu línea base: quién usa RDP, desde dónde, qué relaciones padre-hijo son normales
    • Combina el log nativo con Sysmon: el nativo te da identidad y política; Sysmon te da hashes, red por proceso e inyección. Se complementan
    • Prueba tus reglas con emulación de adversario (Atomic Red Team) en un laboratorio aislado

    Uso responsable de la auditoría de Windows

    Habilita la auditoría solo en sistemas de tu organización o de tu laboratorio, con la cobertura legal y la política interna correspondientes · La monitorización de la actividad del personal está sujeta a normativa laboral y de protección de datos: informa según exija tu jurisdicción y limita la recogida a fines de seguridad · Las pruebas de emulación (Atomic Red Team, Caldera) deben ejecutarse en máquinas aisladas, nunca contra sistemas de terceros

    Referencias

    learn.microsoft.com/windows/security/threat-protection/auditing/advanced-security-auditing — Auditoría avanzada · learn.microsoft.com/windows-server/identity/ad-ds/plan/appendix-l-events-to-monitor — Lista oficial de eventos a vigilar · ultimatewindowssecurity.com/securitylog/encyclopedia — Enciclopedia del Security Log (referencia de cada Event ID) · github.com/Yamato-Security/EnableWindowsLogSettings — Scripts para activar la auditoría recomendada · malwarearchaeology.com — ‘Windows Logging Cheat Sheet’, guía práctica de qué auditar · github.com/redcanaryco/atomic-red-team — Pruebas de detección en laboratorio

    Conclusión

    El registro de eventos de Windows es la fuente de detección más barata que existe: ya está instalada y solo hay que encenderla bien. Con la auditoría avanzada configurada, la línea de comandos en el 4688 y el Script Block Logging de PowerShell, un equipo pasa de contar poco a contar casi todo lo que un analista necesita para reconstruir un incidente.

    El trabajo no es memorizar cientos de números, sino un puñado: los logon y sus Type, la gestión de cuentas y grupos privilegiados, Kerberos en el DC, la instalación de servicios y tareas, y el borrado del propio log. Con ese catálogo en la cabeza, wevtutil y Get-WinEvent en las manos, y todo reenviado por WEF a un sitio seguro, ya tienes el 80% de un SOC funcionando sin gastar un euro en licencias.

    Practica esto en el laboratorio guiado de GhostAcademy

    GhostAcademy dedica una guía completa al análisis de Event Logs de Windows, con el catálogo de Event ID crítico y ejercicios prácticos de detección sobre logs reales.

    Abrir la guía de Event Logs de Windows →

    unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

    Resumen de privacidad

    Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.