Extracción de contraseñas de cuentas de servicio con Kerberoasting
Aug 31, 2022
En nuestra publicación sobre reconocimiento de LDAP, exploramos cómo un atacante puede realizar reconocimiento para descubrir cuentas de servicio a las que apuntar en un dominio de Active Directory (AD). Ahora veamos una forma en que un atacante puede comprometer esas cuentas y explotar sus privilegios: Kerberoasting. Esta técnica es especialmente alarmante porque no requiere privilegios de administrador en el dominio, es muy fácil de realizar y prácticamente indetectable.
Contenido relacionado seleccionado:
Kerberoasting: Visión general
Kerberoasting es un ataque que abusa de una característica del protocolo Kerberos para recolectar hashes de contraseñas de cuentas de usuario de Active Directory: Cualquier usuario de dominio autenticado puede solicitar tickets de servicio para una cuenta especificando su Nombre Principal de Servicio (SPN), y el servicio de concesión de tickets (TGS) en el controlador de dominio devolverá un ticket que está cifrado utilizando el hash NTLM de la contraseña de la cuenta.
Contenido relacionado seleccionado:
Por lo tanto, una vez que un adversario ha descubierto SPNs de cuentas de servicio utilizando una táctica como LDAP reconnaissance, pueden recopilar tickets para todas esas cuentas. Al llevar esos datos fuera de línea, pueden realizar un ataque de fuerza bruta para descifrar la contraseña en texto plano de cada cuenta de servicio, sin ningún riesgo de detección o bloqueo de cuentas.
Solo se necesitan unos minutos para que un atacante obtenga acceso a un dominio, recolecte tickets y comience el proceso de cracking. A partir de ahí, es solo cuestión de tiempo hasta que hayan comprometido una o más cuentas de servicio, las cuales pueden usar para robar o cifrar datos sensibles o causar otros daños.
Los adversarios se centran en las cuentas de servicio por varias razones. En primer lugar, estas cuentas a menudo tienen privilegios mucho más extensos que otras cuentas de usuario de AD, por lo que comprometerlas otorga al atacante más acceso. Además, las contraseñas de las cuentas de servicio rara vez cambian, por lo que es probable que el adversario mantenga el acceso durante mucho tiempo. Para entender los tipos de acceso que se pueden obtener utilizando Kerberoasting, mire la lista de SPNs de Active Directory mantenida por Sean Metcalf.
Kerberoasting: Cómo funciona
Paso 1. Obtenga los SPN de las cuentas de servicio.
. Existen muchas formas de obtener estos SPNs, incluyendo:
- Consultas de PowerShell y reconocimiento LDAP
- Módulo de Active Directory para PowerShell
- Script GetUserSPNs en el Kerberoast toolkit
- Comando Get-NetUser de PowerSploit
Paso 2. Solicite tickets de servicio para los SPN de la cuenta de servicio.
Simplemente ejecute un par de líneas de PowerShell, y se devolverá y almacenará en memoria un ticket de servicio a su sistema.
Add-Type –AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken –ArgumentList ‘MSSQLSvc/jefflab-sql02.jefflab.local:1433’
Paso 3. Extraer tickets de servicio utilizando Mimikatz.
Mimikatz extraerá tickets locales y los guardará en disco para descifrado offline. Simplemente instale Mimikatz y emita un único comando:
Paso 4. Romper los tickets.
Los tickets de Kerberos están cifrados con la contraseña de la cuenta de servicio asociada con el SPN especificado en la solicitud del ticket. Las herramientas de Kerberoasting proporcionan un script de Python para descifrar los tickets y proporcionar sus contraseñas en texto claro ejecutando un diccionario de hashes de contraseñas contra ellos. Puede requerir algo de configuración para asegurarse de tener el entorno requerido para ejecutar el script, pero este blog cubre esos detalles.
Alternativamente, puede recopilar tickets de Kerberos utilizando el script GetUserSPNs y descifrarlos con la herramienta de recuperación de contraseñas Hashcat.
Protección contra ataques de Kerberoasting
La mitigación principal para los ataques de Kerberoasting es asegurarse de que todas las cuentas de servicio utilicen contraseñas largas y complejas que sean más difíciles de descifrar, y cambiarlas regularmente para minimizar el tiempo que la cuenta podría ser utilizada por un adversario que logra descifrar una contraseña. El uso de cuentas de servicio administradas por grupo es una mejor práctica para asignar contraseñas aleatorias y complejas que se pueden rotar automáticamente.
Dado que los adversarios descifran los tickets de forma offline, el proceso no genera tráfico de red, lo que hace que esa parte del ataque sea indetectable. Pero puedes detectar los pasos anteriores mediante el monitoreo de Active Directory con una solución de seguridad sólida. En particular, las cuentas de servicio normalmente se utilizan desde los mismos sistemas de las mismas maneras, así que presta atención a las solicitudes de autenticación anómalas. Además, monitorea los picos en las solicitudes de tickets de servicio.
Finalmente, los especialistas en seguridad también recomiendan deshabilitar el cifrado basado en RC4. De lo contrario, incluso si una cuenta de usuario admite cifrado AES, un atacante puede solicitar un ticket cifrado con RC4, el cual es más fácil de descifrar que uno creado usando cifrado AES.
Compartir en
Aprende más
Acerca del autor
Jeff Warren
Director de Producto
Jeff Warren supervisa el portafolio de productos de Netwrix, aportando más de una década de experiencia en gestión y desarrollo de productos enfocados en la seguridad. Antes de unirse a Netwrix, Jeff lideró la organización de productos en Stealthbits Technologies, donde utilizó su experiencia como ingeniero de software para desarrollar soluciones de seguridad innovadoras y escalables para empresas. Con un enfoque práctico y un talento para resolver desafíos de seguridad complejos, Jeff se centra en construir soluciones prácticas que funcionen. Tiene un BS en Sistemas de Información de la Universidad de Delaware.
Aprende más sobre este tema
Ejemplo de Análisis de Riesgos: Cómo Evaluar los Riesgos
El Triángulo de la CIA y su Aplicación en el Mundo Real
Crear usuarios de AD en masa y enviar sus credenciales por correo electrónico usando PowerShell
Cómo agregar y eliminar grupos de AD y objetos en grupos con PowerShell
Atributos de Active Directory: Último inicio de sesión