Los ID de eventos de seguridad de Windows que importan
Referencia práctica de los ID de eventos de Windows que conviene recopilar y alertar: inicios de sesión, errores, Kerberos, cuentas, persistencia y manipulación.
Windows registra cientos de ID de evento. Unas pocas decenas responden a casi todas las preguntas de una investigación. Esta referencia enumera esos eventos, qué significa cada uno, los campos que importan y los errores que confunden a los analistas. Complementa la línea base de directiva de auditoría y Sysmon, que explica qué subcategorías de auditoría activar. Aquí el foco está en leer y aprovechar lo que producen.
Salvo que se indique lo contrario, los eventos están en el registro Security. Los eventos de controladores de dominio van marcados con DC.
Tipos de inicio de sesión
El evento 4624 (y el 4625) incluye un Logon Type que indica cómo inició sesión alguien. Apréndelos antes que nada:
| Tipo | Nombre | Causa típica |
|---|---|---|
| 2 | Interactive | Inicio de sesión en consola, incluido RunAs |
| 3 | Network | Recurso compartido SMB, WinRM, ejecución remota al estilo PsExec, la mayoría de la administración remota |
| 4 | Batch | Tarea programada |
| 5 | Service | Servicio iniciado con una cuenta |
| 7 | Unlock | Desbloqueo de la estación de trabajo |
| 8 | NetworkCleartext | Credenciales enviadas en claro al servidor, por ejemplo con la autenticación básica de IIS |
| 9 | NewCredentials | runas /netonly; la identidad local no cambia, se usan credenciales nuevas en la red |
| 10 | RemoteInteractive | RDP |
| 11 | CachedInteractive | Inicio de sesión de dominio con credenciales en caché, sin DC accesible |
Los inicios de sesión de tipo 3 de cuentas de administración en estaciones de trabajo, los de tipo 10 en servidores desde equipos que no son de administración y los de tipo 9 en cualquier lugar fuera de las estaciones de administración merecen una segunda mirada.
Autenticación y sesiones
| ID | Significado | Campos que leer |
|---|---|---|
| 4624 | Inicio de sesión correcto | Logon Type, Account, Source Network Address, Workstation, Authentication Package, Elevated Token, Logon ID |
| 4625 | Inicio de sesión fallido | Status y Sub Status, Logon Type, dirección de origen |
| 4634 / 4647 | Cierre de sesión / cierre iniciado por el usuario | Logon ID para relacionarlo con el 4624 |
| 4648 | Inicio de sesión con credenciales explícitas | Proceso, servidor de destino, cuenta usada |
| 4672 | Privilegios especiales asignados al nuevo inicio de sesión | Sesión equivalente a administrador; Logon ID |
| 4740 | Cuenta bloqueada (DC) | Caller Computer Name: de dónde vinieron los intentos fallidos |
| 4767 | Cuenta desbloqueada | Quién la desbloqueó |
| 4778 / 4779 | Sesión reconectada / desconectada | RDP o cambio rápido de usuario, nombre y dirección del cliente |
Relaciona el 4624 y el 4672 por Logon ID: así ves qué inicios de sesión fueron privilegiados. Un Authentication Package NTLM con Package Name NTLM V1 no debería existir en una red moderna. Audítalo y elimínalo como parte de tu trabajo de restricción de NTLM.
Para el 4625, el Sub Status te dice el motivo:
| Sub Status | Significado |
|---|---|
| 0xC0000064 | La cuenta no existe |
| 0xC000006A | Contraseña incorrecta |
| 0xC0000234 | Cuenta bloqueada |
| 0xC0000072 | Cuenta deshabilitada |
| 0xC0000193 | Cuenta caducada |
| 0xC0000071 | Contraseña caducada |
| 0xC0000224 | La contraseña debe cambiarse en el siguiente inicio de sesión |
| 0xC000006F / 0xC0000070 | Fuera del horario de inicio de sesión / restricción de estación de trabajo |
| 0xC000015B | Tipo de inicio de sesión no concedido (asignación de derechos de usuario) |
Muchos errores 0xC0000064 desde un mismo origen significan que alguien está adivinando nombres de cuenta. Muchos errores 0xC000006A en cuentas distintas desde un mismo origen significan password spraying. Los 0xC000015B repetidos de cuentas de administración en estaciones de trabajo suelen ser tus restricciones por niveles funcionando según lo previsto.
Controladores de dominio: Kerberos y NTLM
| ID | Significado | Qué buscar |
|---|---|---|
| 4768 | TGT de Kerberos solicitado | Pre-Authentication Type 0: la cuenta no requiere autenticación previa (vulnerable a AS-REP roasting) |
| 4769 | Vale de servicio de Kerberos solicitado | Ticket Encryption Type 0x17 (RC4) para cuentas de servicio que admiten AES: patrón de Kerberoasting |
| 4771 | Error en la autenticación previa de Kerberos | Código de error 0x18 contraseña incorrecta, 0x12 cuenta deshabilitada/bloqueada/caducada, 0x17 contraseña caducada, 0x25 desfase de reloj |
| 4776 | Validación de credenciales NTLM | Error 0xC000006A / 0xC0000064; en un servidor miembro, significa que se usó una cuenta local |
Tipos de cifrado en 4768/4769: 0x11 es AES128, 0x12 es AES256, 0x17 es RC4. A medida que los dominios abandonan RC4, cualquier vale 0x17 que quede señala cuentas o servicios que hay que corregir. En Windows Server 2019 y posteriores, y en Server 2016 desde la actualización acumulativa de enero de 2025, los eventos 4768 y 4769 incluyen además MSDS-SupportedEncryptionTypes, Available Keys, Advertized Etypes (lo que ofreció el cliente) y Session Encryption Type. Estos campos muestran si una cuenta o un cliente puede usar AES antes de que deshabilites RC4.
Cambios en el directorio y en las cuentas
| ID | Significado |
|---|---|
| 4720 / 4726 | Cuenta de usuario creada / eliminada |
| 4722 / 4725 | Cuenta de usuario habilitada / deshabilitada |
| 4723 / 4724 | Intento de cambio de contraseña por el usuario / restablecimiento de contraseña por otra persona |
| 4738 | Cuenta de usuario modificada (marcas UAC, cambios relacionados con SPN, la contraseña nunca caduca) |
| 4728 / 4729 | Miembro agregado a / quitado de un grupo de seguridad global |
| 4732 / 4733 | Miembro agregado a / quitado de un grupo de seguridad local o local de dominio |
| 4756 / 4757 | Miembro agregado a / quitado de un grupo de seguridad universal |
| 4741 / 4742 | Cuenta de equipo creada / modificada (DC) |
| 4794 | Intento de establecer la contraseña del administrador de DSRM (DC) |
| 5136 | Objeto del directorio modificado (DC, requiere Directory Service Changes y SACL) |
| 4662 | Operación realizada sobre un objeto del directorio (DC, requiere Directory Service Access y SACL) |
| 4798 / 4799 | Enumeración de la pertenencia a grupos locales (reconocimiento, ruidoso) |
Alerta sobre el 4728, el 4732 y el 4756 cuando el grupo sea privilegiado: Domain Admins, Enterprise Admins, Administrators, Account Operators, Backup Operators, DnsAdmins, Group Policy Creator Owners y tus propios grupos de Tier 0.
DCSync aparece como un 4662 en un DC cuyas propiedades incluyen los GUID de los derechos de replicación 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 (Get-Changes) y 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 (Get-Changes-All), solicitados por una cuenta que no es un controlador de dominio.
Ejecución y persistencia
| ID | Registro | Significado |
|---|---|---|
| 4688 | Security | Proceso creado (habilita la captura de la línea de comandos) |
| 4697 | Security | Servicio instalado (subcategoría Security System Extension) |
| 7045 | System | Servicio instalado (Service Control Manager, se registra siempre) |
| 7040 | System | Tipo de inicio del servicio modificado |
| 4698 / 4702 | Security | Tarea programada creada / actualizada |
| 4699 / 4700 / 4701 | Security | Tarea programada eliminada / habilitada / deshabilitada |
| 106 / 140 / 141 | Microsoft-Windows-TaskScheduler/Operational | Tarea registrada / actualizada / eliminada (el registro suele estar deshabilitado de forma predeterminada; habilítalo) |
| 4657 | Security | Valor del registro modificado (solo con una SACL en la clave) |
| 5140 | Security | Acceso a un recurso compartido de red (subcategoría File Share) |
El XML de la tarea en el 4698 incluye el comando que ejecuta: léelo, no te limites a contar eventos. Para un detalle a nivel de proceso más allá del 4688, consulta despliegue y ajuste de Sysmon.
Manipulación y cambios de directiva
| ID | Registro | Significado |
|---|---|---|
| 1102 | Security | Registro de seguridad borrado |
| 104 | System | Otro registro de eventos borrado |
| 4719 | Security | Directiva de auditoría del sistema modificada |
| 4616 | Security | Hora del sistema modificada |
| 4907 | Security | Configuración de auditoría (SACL) de un objeto modificada |
| 5001 | Microsoft-Windows-Windows Defender/Operational | Protección en tiempo real deshabilitada |
| 5007 | Microsoft-Windows-Windows Defender/Operational | Configuración de Defender modificada (incluidas las exclusiones) |
| 5013 | Microsoft-Windows-Windows Defender/Operational | La protección contra alteraciones bloqueó un cambio |
| 1116 / 1117 | Microsoft-Windows-Windows Defender/Operational | Malware detectado / acción realizada |
Todos estos deberían ser raros. El 1102, el 104 y el 4719 fuera de una ventana de cambios son indicadores sólidos por sí solos. Los eventos de Defender se tratan con más detalle en endurecimiento de Microsoft Defender Antivirus.
Acceso remoto y PowerShell
| ID | Registro | Significado |
|---|---|---|
| 1149 | Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational | Autenticación de red RDP correcta, con dirección de origen |
| 21 / 24 / 25 | Microsoft-Windows-TerminalServices-LocalSessionManager/Operational | Inicio de sesión / desconexión / reconexión de una sesión RDP |
| 4104 | Microsoft-Windows-PowerShell/Operational | Bloque de script registrado |
| 400 | Windows PowerShell | Motor iniciado, con versión del host y del motor |
RDP deja rastro en tres lugares (Security 4624 de tipo 10, 1149 y 21). Si falta uno, aún tienes los otros. Endurece el propio servicio con la guía de endurecimiento de RDP. Para patrones de búsqueda en PowerShell, consulta detección de PowerShell malicioso.
Consultar los eventos
Get-WinEvent con una tabla hash de filtro es rápido, porque el filtrado se hace en el servicio de registro de eventos:
# Inicios de sesión fallidos en las últimas 24 horas, agrupados por cuenta, origen y motivo
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4625; StartTime = (Get-Date).AddDays(-1) } |
ForEach-Object {
$d = @{}; ([xml]$_.ToXml()).Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
[pscustomobject]@{ Account = $d.TargetUserName; Source = $d.IpAddress; SubStatus = $d.SubStatus }
} | Group-Object Account, Source, SubStatus | Sort-Object Count -Descending | Select-Object -First 20 Count, NamePara filtrar por campos de datos del evento, usa XPath:
# Inicios de sesión RDP
Get-WinEvent -LogName Security -MaxEvents 50 `
-FilterXPath "*[System[EventID=4624] and EventData[Data[@Name='LogonType']='10']]"
# Vales de servicio RC4 en un DC
Get-WinEvent -LogName Security -MaxEvents 100 `
-FilterXPath "*[System[EventID=4769] and EventData[Data[@Name='TicketEncryptionType']='0x17']]"Las consultas locales sirven para investigar y probar. Para la detección, envía estos eventos a un almacén central con Windows Event Forwarding o con un agente.
Qué se rompe
- Los eventos que faltan suelen significar que la subcategoría está desactivada, que el registro se sobrescribió o que falta una SACL.
auditpol /get /category:*muestra la directiva efectiva. - Volumen: el 4624, el 4634, el 4688, el 4769 y el 5140 tienen mucho volumen en servidores y DC. Recopílalos, pero alerta sobre agregados y anomalías, no sobre eventos individuales.
- Campos mal interpretados: el 4624 en un servidor refleja la visión del servidor; la dirección de origen puede ser un NAT, un proxy o estar vacía en inicios de sesión locales. El 4740 aparece en los controladores de dominio, no en el cliente.
- Mensajes localizados: extrae los campos del XML del evento, no del texto del mensaje, que cambia con el idioma del sistema operativo.
Verificación
En una máquina de prueba y en un DC de prueba, genera algunos eventos y confirma que se registran y se reenvían: un inicio de sesión fallido con una contraseña incorrecta (4625, 0xC000006A), un usuario de prueba agregado a un grupo de prueba (4732 o 4728), una tarea programada creada con Register-ScheduledTask (4698) y un servicio creado con New-Service (7045, 4697). Elimina después los objetos de prueba. Si un evento no aparece, corrige la directiva de auditoría antes de construir detecciones sobre él. Encontrarás más sobre la cadena de registro en la página temática de auditoría y registro.
Lista de comprobación
- Todos los analistas conocen los tipos de inicio de sesión y los códigos de subestado del 4625
- Subcategorías de auditoría y SACL implantadas para que cada evento de la lista pueda producirse
- Alertas sobre 1102, 104, 4719, 7045/4697, cambios en grupos privilegiados y Defender 5001/5013
- Supervisión de Kerberos en los DC: vales RC4, autenticación previa deshabilitada, picos de 4771
- Detección de DCSync mediante los GUID de replicación del 4662 desde cuentas que no son DC
- Registro Task Scheduler Operational habilitado; registros de RDP recopilados
- Las consultas analizan los campos XML del evento, no los mensajes representados
- Eventos de prueba generados y confirmados de principio a fin tras cada cambio de directiva
Preguntas frecuentes
¿Por qué no veo algunos de estos eventos en mis equipos?
La mayoría de los eventos del registro de seguridad solo aparecen cuando está habilitada la subcategoría correspondiente de la directiva de auditoría avanzada, y algunos necesitan además una entrada de auditoría (SACL) en el objeto, como una clave del registro o la raíz del dominio. Comprueba la directiva efectiva con auditpol /get /category:* y compárala con la línea base antes de suponer que no ha pasado nada.
¿Sobre qué eventos debería alertar primero?
Empieza por eventos raros y de alta señal: registro de seguridad borrado (1102), otros registros borrados (104), servicios nuevos (7045 y 4697), incorporaciones a grupos privilegiados (4728, 4732, 4756 para grupos de administración), protección de Defender deshabilitada (5001) y derechos de replicación usados por cuentas que no son DC (4662). Se producen rara vez y casi siempre merecen una revisión.
¿Basta el evento 4625 para detectar password spraying?
Es la señal principal, pero hay que agregarla. El spraying aparece como muchas cuentas distintas que fallan desde un mismo origen con el subestado de contraseña incorrecta, repartidas en el tiempo para evitar bloqueos. En los controladores de dominio, vigila también el 4771 con el código de error 0x18 y el 4776 con 0xC000006A, porque el intento puede usar Kerberos o NTLM en lugar de un inicio de sesión interactivo.
Los ID de eventos de seguridad de Windows que importan