Un Golden Ticket en Active Directory es un Ticket Granting Ticket (TGT) generado de manera fraudulenta que permite a un atacante obtener acceso completo a todos los recursos del dominio sin necesidad de conocer la contraseña de una cuenta privilegiada. Se aprovecha del hecho de que los TGT son generados y cifrados por la cuenta krbtgt del dominio.

Cuando un atacante compromete un controlador de dominio, puede extraer el hash NTLM de la cuenta krbtgt mediante técnicas como DCSync. Con este hash, el atacante puede crear un Golden Ticket utilizando herramientas como Mimikatz. Este ticket le otorga acceso ilimitado al dominio con privilegios de Domain Admin, permitiendo la ejecución de cualquier acción sin ser detectado fácilmente.

El Golden Ticket permite:

  • Acceso total a los recursos del dominio.
  • Creación de cuentas falsas o acceso a cuentas privilegiadas.
  • Persistencia en la red, ya que el ticket puede configurarse con largos periodos de validez.

Para mostrar como podemos generar un Golden Ticket desde una máquina Kali en el siguiente ejemplo partiremos de que ya hemos conseguido establecer una sesión Evil-WinRM y realizar con éxito un ataque Dcsync y por tanto ya tenemos acceso a los hashes de la base de datos del directorio Activo.

Para poder generar un Golde Ticket necesitaremos extraer la siguiente información:

Paso 1 – Extraer el sid del dominio


lookupsid.py megabank.corp/jsmith@<IP DC VÍCTIMA>

Paso 2 – Obtener el hash de la cuenta Administrator

secretsdump.py ‘megabank.corp/jsmith@192.168.56.110’ -just-dc-user Administrator

Paso 3 – Compartir el directorio en el que tengamos el archivo Invoke-Mimikatz.ps1

Paso 4 – Ejecutar mimikatz

Paso 5 – Extraer el hash de la cuenta krbtgt

Paso 6 – Generamos el archivo .tck que será nuestro Golden Tiket

Paso 7 – Nos descargamos el ticket a nuestra máquina Kali con el siguiente comando:

Paso 8 – Ahora necesitamos convertir el ticket al formato ccache

Establecer la persistencia usando el ticket convertido

Ahora Para que el ticket convertido se pueda usar en tu sesión actual, necesitas exportar la variable de de entorno KRB5CCNAME, que señala a tu archivo ccache:

Ahora ejecutamos klist para comprobar el ticket persistente

Utilizar las herramientas de Impacket con el ticket

Con el ticket cargado en tu sesión Kali, ahora puedes usar las herramientas de Impacket como psexec.py o wmiexec.py sin necesidad de proporcionar credenciales adicionales.

Usar psexec.py con el ticket cargado:

Cosas que podemos hacer

Conectar a un sistema remoto usando psexec.py

Este comando te permite ejecutar comandos remotamente en un sistema con privilegios de Domain Admin.

  • El parámetro -k indica que estás usando Kerberos.
  • -no-pass indica que no necesitas proporcionar la contraseña porque estás usando el ticket.

Una vez conectado, tendrás una shell con privilegios de administrador en el sistema remoto. Puedes ejecutar comandos como:

2. Ejecutar comandos remotos usando wmiexec.py

Este comando es similar a psexec, pero usa WMI (Windows Management Instrumentation) para ejecutar comandos en sistemas remotos:

Ejemplo de ejecución de un comando remoto:

Esto ejecutará ipconfig /all en el sistema remoto y devolverá la salida en tu consola.

3. Acceder a un sistema de archivos remoto con smbexec.py

Puedes usar smbexec.py para ejecutar comandos en un sistema remoto o para navegar por el sistema de archivos compartido usando SMB.

Al ejecutar este comando, obtendrás acceso a una shell interactiva para ejecutar comandos remotos o explorar el sistema de archivos de la máquina objetivo.

4. Listar las sesiones activas en un servidor con netview.py

Puedes usar netview.py para listar las sesiones activas y los recursos compartidos en un servidor o red.

Esto te permitirá ver qué usuarios están conectados al servidor, qué recursos compartidos existen y más información de red relevante.

5. Extraer hashes de contraseñas usando secretsdump.py

Puedes extraer los hashes de contraseñas de una máquina remota utilizando secretsdump.py para comprometer más cuentas o moverte lateralmente en la red.

Este comando extraerá los hashes de las contraseñas de todas las cuentas en el controlador de dominio. Esto te dará aún más acceso a otras cuentas y sistemas.

6. Enumerar usuarios y grupos de Active Directory usando GetUserSPNs.py

Si estás buscando vulnerabilidades de Kerberoasting, puedes enumerar los SPNs (Service Principal Names) asociados con usuarios del dominio para intentar realizar ataques de Kerberos ticket.

Este comando listará todos los SPNs y te permitirá identificar cuentas de servicio que pueden ser vulnerables a Kerberoasting.

7. Buscar información de Active Directory con lookupsid.py

Puedes buscar información de las cuentas de Active Directory, como los SIDs (Security Identifiers), usando lookupsid.py.

Esto te proporcionará información detallada sobre las cuentas y sus SIDs en el controlador de dominio.

8. Obtener un listado de máquinas en el dominio con findDelegation.py

Este script te permite buscar delegaciones de Kerberos en el dominio, lo cual puede ser útil para identificar sistemas que tengan delegación habilitada y puedan ser utilizados para moverse lateralmente.

Esto te dará un listado de los sistemas que están configurados para delegación de Kerberos y pueden ser potenciales puntos de compromiso.

9. Transferir archivos con smbclient.py

Puedes utilizar smbclient.py para interactuar con los recursos compartidos de una máquina en el dominio, listar directorios y transferir archivos.

Conectar a un recurso compartido:

Una vez conectado, puedes listar los archivos compartidos:

Y descargar o cargar archivos usando get y put:

Leave a Reply

Your email address will not be published. Required fields are marked *