Qué es
Esta técnica busca cuentas de usuario con un SPN registrado en el dominio. Descarta las que no sirven y deja las que sí valen: contraseña vieja y privilegios altos. El atacante termina con una lista corta de objetivos antes del Kerberoasting.
Cómo funciona
Un SPN en una cuenta de usuario significa que el KDC entrega un ticket TGS cifrado con el hash de esa cuenta. Cualquier usuario autenticado del dominio lee el atributo servicePrincipalName por LDAP, sin permisos especiales.
Las cuentas de equipo también tienen SPN, pero su contraseña es larga, aleatoria y la gestiona la máquina: no se descifra. Solo las cuentas de usuario sirven como objetivo.
Dos datos ordenan la lista. El atributo pwdLastSet dice hace cuánto no cambia la contraseña. La pertenencia a grupos dice cuánto acceso da la cuenta. Una cuenta de servicio en un grupo privilegiado con contraseña de años es el objetivo. El resto es ruido.
Comandos
Enumerar cuentas de usuario con SPN, en remoto, con Impacket:
GetUserSPNs.py <DOMAIN>/<USER>:<PASSWORD> -dc-ip <IP>Lo mismo desde una sesión ya autenticada, con PowerView, mostrando los datos que priorizan el objetivo:
Get-DomainUser -SPN | Select-Object samaccountname,serviceprincipalname,pwdlastset,memberofCon el módulo de Active Directory nativo de Windows:
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName,PasswordLastSet,MemberOfCon una consulta LDAP cruda, filtrando cuentas de usuario y excluyendo equipos:
ldapsearch -x -H ldap://<IP> -D "<USER>@<DOMAIN>" -w <PASSWORD> -b "<BASE_DN>" "(&(objectClass=user)(servicePrincipalName=*)(!(objectClass=computer)))" samAccountName servicePrincipalName pwdLastSetRecolectar el dominio con el ingestor de BloodHound:
bloodhound-python -u <USER> -p <PASSWORD> -d <DOMAIN> -ns <IP> -c AllBloodHound marca estas cuentas en el grafo. Su consulta integrada las lista y muestra si están sobre una ruta hacia privilegios más altos.
Cómo defenderse
Pasa las cuentas de servicio a gMSA y quita los SPN que ya nadie usa: la lista de objetivos se queda casi vacía.