Una cuenta de Active Directory que se relockea tras “Desbloquear” y “Restablecer contraseña” casi siempre delata credenciales antiguas en algún dispositivo o servicio. Esta guía te lleva de la mano para localizar el DC y el equipo/proceso origen y eliminar la causa de raíz.
Resumen y conclusión del caso
Resumen de la pregunta: Una cuenta de usuario permanece bloqueada a pesar de múltiples intentos de desbloqueo y de restablecer la contraseña. ¿Cómo diagnosticar y resolver el bloqueo recurrente?
Conclusión del caso: El origen eran credenciales antiguas aún usadas desde un equipo viejo del usuario. Al corregir esa asociación (eliminar/actualizar credenciales guardadas en ese equipo), el problema quedó resuelto.
Cómo funciona el bloqueo de cuentas en AD (lo justo para diagnosticar)
- Account Lockout se activa cuando el usuario supera el umbral de intentos fallidos definido por la directiva (p. ej., 5 intentos/15 minutos).
- El evento 4740 se registra en el DC que procesó el intento que superó el umbral.
- Kerberos y NTLM suelen dejar trazas previas (4771 y 4776) con la IP/host origen.
- Cambiar la contraseña no detiene un proceso que siga probando la contraseña antigua desde cualquier equipo o servicio. Primero hay que encontrar y corregir ese origen.
Diagnóstico recomendado (paso a paso)
Preparar auditorías en los Controladores de Dominio
Habilita auditoría en los DC para capturar de forma fiable el 4740 y los eventos previos de autenticación fallida.
Audit clásico
- Audit Account Logon Events – Failure
- Audit Account Management – Success y Failure
- Audit Logon Events – Failure
Advanced Audit Policy (recomendado)
- Logon/Logoff:
- Audit Account Lockout – Failure
- Audit Logon – Failure
- Audit Kerberos Authentication Service – Failure
- Audit Credential Validation – Failure
- Account Management:
- Audit User Account Management – Success y Failure
Forzar actualización y verificar
gpupdate /force
auditpol /get /category:*
Sugestión adicional para asegurar consistencia:
repadmin /replsummary
gpresult /r
Identificar el DC que registró el bloqueo
- Usa LockoutStatus.exe (herramienta de Microsoft) para el usuario afectado. Te muestra en qué DC se ha producido el bloqueo y la hora.
- Alternativa con PowerShell: localiza el PDC Emulator y consulta los atributos claves.
# DC PDC Emulator (útil para correlación)
(Get-ADDomain).PDCEmulator
Algunos atributos del usuario (no todos replican entre DCs al instante)
Get-ADUser USUARIO -Properties LockedOut,LastBadPasswordAttempt,BadPwdCount,lockoutTime |
Select-Object LockedOut,LastBadPasswordAttempt,BadPwdCount,lockoutTime
Revisar eventos de seguridad en el DC implicado
En el DC donde se produjo el 4740, filtra por los eventos clave. Empieza por el 4740 y examina los 4771/4776 cercanos en el tiempo.
[System[(EventID=4771 or EventID=4776 or EventID=4740)]] and *[EventData[Data and (Data='USUARIO')]]
Qué buscar:
- 4740 (Account lockout): marca el instante del bloqueo.
- 4771 (Kerberos): revisa Client Address (IP origen). Errores típicos:
0x18
(preautenticación fallida/contraseña incorrecta). - 4776 (NTLM): revisa Source Workstation. Error típico:
0xC000006A
(contraseña incorrecta).
Determinar el origen (equipo o proceso)
Con la IP o nombre de host del 4771/4776:
- Conéctate al equipo origen.
- Revisa credenciales almacenadas, servicios y tareas que puedan estar intentando autenticarse en segundo plano.
- Si no es evidente, habilita en el cliente auditoría de Logon Failures (4625) para identificar el proceso/LogonType.
# Búsqueda rápida de eventos relevantes en un DC concreto
$User = "USUARIO"
$DC = "DC-NOMBRE"
$Filter = @{LogName="Security"; ID=4740,4771,4776}
Get-WinEvent -ComputerName $DC -FilterHashtable $Filter |
Where-Object { $_.Message -match $User } |
Select-Object TimeCreated,Id,ProviderName,Message |
Sort-Object TimeCreated -Descending
Remediación en el equipo origen
En el equipo que sigue intentando autenticarse con la contraseña antigua, aplica esta lista:
Administrador de credenciales (Credential Manager)
- Abre Administrador de credenciales (credenciales de Windows y genéricas).
- Elimina credenciales del dominio o del servidor afectado.
:: Inventario rápido
cmdkey /list
:: Eliminar credenciales específicas (ejemplos)
cmdkey /delete:SERVER\recurso
cmdkey /delete:TERMSRV/servidor-rdp
:: UI clásica de credenciales almacenadas
rundll32.exe keymgr.dll,KRShowKeyMgr
Unidades de red mapeadas y conexiones persistentes
- Revisa y actualiza mapeos que usen el usuario afectado.
net use
net use Z: \\SERVIDOR\RECURSO /user:DOMINIO\USUARIO *
net use * /delete
Tareas programadas y servicios
- Actualiza credenciales en tareas programadas y en Log On As de los servicios.
# Servicios configurados para iniciar como el usuario
Get-WmiObject Win32Service | Where-Object {$.StartName -match "DOMINIO\\USUARIO"} |
Select-Object Name, DisplayName, StartName, State
Tareas programadas que ejecutan como el usuario
Get-ScheduledTask | Where-Object {\$*.Principal.UserId -match "DOMINIO\USUARIO"} |
Select-Object TaskName, TaskPath, State, @{n="RunAs";e={\$*.Principal.UserId}}
Aplicaciones que guardan credenciales
- Clientes de correo, OneDrive/SharePoint, herramientas de sincronización, navegadores (credenciales HTTP/NTLM), agentes de copias de seguridad, VPN, software de impresión, etc.
RDP y sesiones persistentes
- Borra credenciales de RDP guardadas y perfiles de Conexión a Escritorio remoto.
cmdkey /delete:TERMSRV/servidor-rdp
Perfiles en equipos antiguos o ya retirados
- Si el equipo aún está encendido en una red secundaria o laboratorio, puede seguir emitiendo intentos. Cierra sesión, elimina el perfil o desconéctalo de la red.
Registro adicional en el cliente (opcional)
- Habilita auditoría 4625 (Logon Failure) y revisa Logon Type, Process Name y IP de destino para identificar el ejecutable concreto.
Kerberos: purgar tickets tras un cambio de contraseña
klist
klist sessions
klist purge
Importante: Restablecer la contraseña no evita que el usuario vuelva a bloquearse si algún proceso/servicio sigue probando la contraseña antigua desde cualquier dispositivo.
Lista de comprobación rápida
- Habilita auditorías en DCs →
gpupdate /force
y validaauditpol
. - Localiza el DC de bloqueo (LockoutStatus.exe).
- Revisa 4740, 4771, 4776 → extrae IP/host origen.
- En el host origen, elimina/actualiza credenciales, tareas y servicios.
- Purgea tickets/credenciales, cierra sesión o reinicia el equipo.
- Desbloquea la cuenta y verifica que no reaparecen 4740.
Tablas de referencia rápida
Eventos clave y campos a revisar
Evento | Componente | Qué indica | Campos críticos |
---|---|---|---|
4740 | Account Management | La cuenta fue bloqueada (umbral de intentos alcanzado). | Account Name, Caller Computer Name, TimeCreated |
4771 | Kerberos | Preautenticación fallida u otros errores Kerberos. | Client Address (IP), Failure Code (0x18), Account Name |
4776 | NTLM | Validación de credenciales via NTLM fallida. | Source Workstation, Error Code (0xC000006A), Account Name |
4625 | Logon (cliente) | Intento de inicio de sesión fallido en el equipo cliente/servidor. | Logon Type, Process Name, Target Server |
Códigos de error típicos
Código | Origen | Significado usual | Acción |
---|---|---|---|
0x18 | Kerberos (4771) | Preautenticación fallida; contraseña incorrecta. | Actualizar/eliminar credenciales antiguas. |
0xC000006A | NTLM (4776) | Contraseña incorrecta. | Revisar origen (Source Workstation) y credenciales. |
Posibles orígenes con credenciales guardadas
Ubicación | Ejemplos | Cómo remediar |
---|---|---|
Administrador de credenciales | Credenciales de Windows, genéricas, RDP | Eliminar entradas antiguas (cmdkey /list /delete) |
Unidades mapeadas / shares | net use persistente | Quitar y volver a mapear con la nueva contraseña |
Servicios y tareas | Agentes de backup, impresoras, scripts | Actualizar “Log On As” / credenciales de tarea |
Aplicaciones | Outlook/OneDrive/Sync/VPN/Navegadores | Reiniciar sesión y guardar la nueva contraseña |
Dispositivos antiguos | PC retirado, VM olvidada, NAS | Desconectar, deshabilitar o actualizar credenciales |
Móvil corporativo | Correo (ActiveSync), apps MDM | Forzar reautenticación, borrar cachés |
Guías y comandos útiles para acelerar la investigación
Filtrar eventos por usuario en todos los DCs (PowerShell)
$User = "USUARIO"
$DCs = (Get-ADDomainController -Filter *).HostName
$Ids = 4740,4771,4776
\$results = foreach (\$dc in \$DCs) {
try {
Get-WinEvent -ComputerName \$dc -FilterHashtable @{LogName='Security'; ID=\$Ids} -ErrorAction Stop |
Where-Object { $\_.Message -match \$User } |
Select-Object @{n='DC';e={\$dc}}, Id, TimeCreated, Message
} catch { }
}
\$results | Sort-Object TimeCreated -Descending | Format-Table -AutoSize
Mapear IP a nombre de host (DHCP/NetBIOS)
# Con DHCP (servidor Windows)
Get-DhcpServerv4Lease -IPAddress 10.1.2.3 | Select-Object IPAddress, HostName, ClientId
NetBIOS/SMB rápido desde CMD
nbtstat -A 10.1.2.3
Comprobar latencia/replicación y hora
repadmin /replsummary
w32tm /query /status
w32tm /query /peers
Comandos de auditoría granular
auditpol /set /subcategory:"Account Lockout" /failure:enable
auditpol /set /subcategory:"Credential Validation" /failure:enable
auditpol /set /subcategory:"Kerberos Authentication Service" /failure:enable
Buenas prácticas para evitar bloqueos recurrentes
- Proceso de cambio de contraseña: Comunica al usuario que cierre sesión en todos los dispositivos, reinicie apps que guarden credenciales y, si es posible, reinicie el equipo tras el cambio.
- Políticas diferenciadas (FGPP): Usa Fine-Grained Password Policies para aplicar umbrales y ventanas de observación razonables en grupos de alto riesgo.
- Minimiza el uso de cuentas de usuario en servicios/tareas: Prefiere Managed Service Accounts cuando sea posible.
- Inventario y visibilidad: Mantén un registro de qué equipos y apps usan credenciales de cada cuenta sensible.
- Sincronización horaria (NTP): Evita desfases que compliquen el análisis de eventos y la validez de tickets Kerberos.
- Supervisión continua: Centraliza los eventos 4740/4771/4776 en tu SIEM para detectar patrones.
Preguntas frecuentes (FAQ)
He restablecido la contraseña y el usuario sigue bloqueándose, ¿por qué?
Porque algún proceso/servicio en algún dispositivo continúa intentando la contraseña antigua. Hasta que no elimines/actualices esa credencial, volverá a generar fallos y provocará nuevos 4740.
El 4771 muestra una IP privada tras un NAT, ¿cómo identifico el host real?
Consulta registros de DHCP para la subred, mapea dirección MAC/lease a nombre de host, y valida con nbtstat -A <IP>
. Si la petición viene a través de un proxy o balanceador, revisa sus logs.
No tengo LockoutStatus.exe, ¿qué alternativa uso?
Usa el script de PowerShell mostrado arriba para consultar simultáneamente todos los DCs por los eventos 4740/4771/4776 e identificar el DC y la hora del bloqueo.
Veo 4625 en un servidor de archivos, ¿me sirve?
Sí: el 4625 en el servidor de destino revela el Logon Type y, a veces, el proceso que dispara la autenticación (p. ej., un servicio). Cruza esa información con el 4740/4771/4776 del DC.
¿Puede la replicación lenta causar confusión?
Sí. Si los DCs no replican con normalidad, el recuento de contraseñas erróneas y los atributos de cuenta pueden verse desfasados, dificultando el análisis. Valida repadmin /replsummary
.
El campo “Source Workstation” está vacío en 4776, ¿es normal?
Puede ocurrir según el origen y la ruta de autenticación. Recurre entonces a las trazas Kerberos 4771, los 4625 en el destino, y los registros de infraestructura (DHCP/VPN/Proxy).
¿Cuándo purgar tickets Kerberos?
Tras cambios de contraseña o cuando sospeches de tickets obsoletos. Ejecuta klist purge
en el cliente y haz que el usuario inicie sesión de nuevo.
Ejemplo real resumido (del problema a la solución)
- El usuario “USUARIO” se bloquea repetidamente.
- Habilito auditorías avanzadas y fuerzo
gpupdate /force
en los DCs. - Con LockoutStatus.exe detecto que el 4740 lo registró DC-02.
- En el visor de eventos de DC-02, veo 4771 (cód. 0x18) y 4776 (cód. 0xC000006A) segundos antes, ambos apuntando a PC-VIEJO.
- Accedo a PC-VIEJO: encuentro credenciales obsoletas en el Administrador de credenciales y una tarea programada que ejecutaba con el usuario.
- Elimino credenciales, actualizo la tarea, purgo tickets (
klist purge
), reinicio el equipo. - Desbloqueo la cuenta. Monitoreo: no vuelven a aparecer 4740. Incidente cerrado.
Factores adicionales si el problema persiste
- Replicación de AD y latencia entre DCs.
- Desfase horario (NTP) entre clientes y DCs.
- Cuentas usadas en múltiples dispositivos (móvil personal, VMs, NAS, impresoras, scripts).
- Rutas de autenticación no triviales (VPN, proxys, jump hosts) que ocultan el origen; apóyate en sus logs.
Resultado esperado
Una vez identificados y corregidos todos los orígenes que intentaban autenticarse con la contraseña antigua, la cuenta deja de bloquearse. Mantén la auditoría activa y una ventana de observación de eventos de unos días para confirmar que no reaparecen 4740.
Apéndice: plantillas listas para copiar
Filtro XML para el Visor de eventos (DC)
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4771 or EventID=4776 or EventID=4740)]]
and
*[EventData[Data and (Data='USUARIO')]]
</Select>
</Query>
</QueryList>
Checklist imprimible
- ✔ Auditorías en DCs (Account Lockout, Kerberos, Credential Validation, Logon)
- ✔
gpupdate /force
yauditpol /get /category:*
en DC - ✔ DC del bloqueo (LockoutStatus o script)
- ✔ 4740/4771/4776 correlacionados → IP/host origen
- ✔ Limpiar credenciales (Administrador de credenciales,
cmdkey
) - ✔ Revisar services.msc, tareas (
Get-ScheduledTask
) - ✔ Unidades mapeadas (
net use
), RDP (cmdkey /delete:TERMSRV/<host>
) - ✔
klist purge
, cerrar sesión/reiniciar - ✔ Desbloquear la cuenta y monitorizar 4740
En una línea: los bloqueos reincidentes de cuentas AD se resuelven al identificar qué equipo o proceso sigue usando contraseñas antiguas y al limpiar esas credenciales en su origen. Las auditorías correctas y una metodología clara te llevan al foco en minutos, no horas.