Active Directory: Explotando Relaciones de Confianza I

Continuamos con los posts sobre Red Teaming, y tras el post sobre cómo explotar Certificate Templates mal configuradas, hoy hablaremos sobre los Forest, las relaciones de confianza que se establecen entre los distintos dominios y como abusar de ellas para pivotar y obtener acceso a otros dominios.

Conceptos Básicos

Primero definamos algunos conceptos.

Relación de Confianza

Una relación de confianza permite a usuarios de un dominio autenticarse y acceder a los recursos de otro dominio.

Proceso de Autenticación entre Dominios

  • Los dos dominios (A y B) usan una clave de confianza compartida (un TGT inter-dominios).
  • Cuando un usuario del dominio A intenta acceder a un recurso del dominio B, el KDC (Key Distribution Center) A genera un ticket (TGT, Ticket Granting Ticket) de referencia que apunta al KDC B.
  • Este TGT es cifrado usando la clave compartida.
  • El dominio B recibe el TGT, lo descifra usando esa clave compartida y comprueba si el usuario es merecedor de tener acceso o no.
Tipos de Relaciones de Confianza
 
 Hay tres tipos de relaciones de confianza:
  • Doble: El dominio A confia en B y viceversa. Los usuarios de ambos dominios pueden autenticarse en el otro.
  • De entrada (inbound): El otro dominio confía en nosotros. Por lo que los usuarios de nuestro dominio se pueden autenticar y acceder a los recursos del otro.
  • De salida (outbound): Confiamos en el otro dominio. Por lo que los usuarios del otro dominio se pueden autenticar y acceder a los recursos del nuestro.

También podemos distinguir entre las relaciones de confianza según su transitividad: transitiva (si A confía en B y B en C, entonces A confía en C) y no transitiva (si A confía en B y B en C, no implica que A confíe en C)

Bosques
 
Los bosques son conjuntos de dominios del Active Directory que tienen relaciones de confianza entre ellos. Si el dominio google.com confía en hackinglethani.com, tendríamos un bosque formado por esos los arboles de esos dos dominios, que contendrían el dominio y sus subdominios:
 
Active Directory: Explotando Relaciones de Confianza I

Algo interesante a tener en cuenta es que cuando un hijo se añade al bosque, automáticamente crea una relación de confianza doble y transitiva con su padre.

Esto quiere decir que si tenemos privilegios de Domain Admin en dev.hackinglethani.com, también podemos obtener privilegios de Domain Admin en hackinglethani.com mediante un ticket TGT especial que tiene un atributo llamado «SID History». 

Para ello, tan solo tenemos que crear un Golden Ticket en el que indiquemos el SID del dominio padre. Veamos como hacerlo.

Golden Ticket a Dominio Padre - Como explotar relaciones de confianza dobles.

Los Silver, Golden y Diamond tickets requerirían de un post entero solo para hablar de ellos, pero vamos a resumirlo para que sea sencillo de entender y podamos realizar el ataque.

Golden Ticket

Un Golden ticket es un Ticket Granting Ticket (TGT) firmado por la cuenta de dominio de kerberos. Con este ticket podemos impersonar cualquier usuario, y pedir cualquier servicio, en cualquier máquina del dominio. Para ello necesitamos la clave de kerberos, la cual podemos obtener mediante un ataque DCSync.

DCSync

Un ataque DCSync sería digno de otro post. Pero en resumidas cuentas, es un ataque en el que se replica el protocolo MS-DRSR para replicar la información del Active Directory, incluyendo los hashes de las contraseñas. En principio solo lo pueden hacer los Domain Admins, pero en este escenario somos Domain Admin del dominio hijo así que podemos hacerlo.

 

Primero utilizaré PowerSploit, concretamente el comando Get-DomainGroup de PowerView, para obtener el SID del grupo de Domain Admins de mi actual dominio. También podemos obtener el SID del dominio padre si le indicamos ese dominio en -Domain (lo necesitaremos más adelante).

Active Directory: Explotando Relaciones de Confianza I

A continuación necesitamos la password de Kerberos, la cual podemos obtener haciendo un dcsync, que podemos hacer ya que estamos asumiendo que tenemos privilegios de Domain Admin en nuestro actual dominio. En Cobalt Strike, podemos hacerlo mediante el comando:

dcsync dev.domain.com DEV\krbtgt

Al obtener la clave aes256 de kerberos, la podemos utilizar con mimikatz para generar nuestro propio ticket TGT firmado por kerberos: un golden ticket. Esto es algo que podemos hacer offline, desde nuestro ordenador windows atacante.

Expliquemos los parámetros:
  • /sid es el identificador de seguridad de nuestro actual dominio.
  • /sids es el identificador de seguridad del dominio padre.
  • /startoffset configura el tiempo de inicio del ticket a 10 minutos antes del momento actual.
  • /endin le da un tiempo de validez al ticket de 600 minutos.
  • /renewmax indica el tiempo máximo que puede durar el ticket si se renueva.
Ya tenemos el ticket, ahora podemos usarlo para autenticarnos y acceder a los recursos del dominio padre. Para ello podemos crear una sesión de sacrificio y después utilizar el ticket que hemos creado con mimikatz. En Cobalt Strike podemos hacerlo usando los comandos make_token y kerberos_ticket_use.

Hasta aquí el ataque. Podría explicar directamente los ataques que existen a relaciones de confianza de entrada y de salida, pero lo voy a dejar para el post de la semana que viene, para que este tipo de posts tan densos no sean muy largos y se puedan entender mejor.

Si te ha gustado, no olvides suscribirte a mi canal de telegram para poder obtener una notificación cada vez que publique una nueva entrada.

Lethani.

5/5 - (64 votos)

1 comentario en «Active Directory: Explotando Relaciones de Confianza I»

Deja un comentario