Active Directory: Post Exploitation Attacks

Francisco Canteli
8 min readApr 21, 2021

--

Introducción

Actualmente, Active Directory es una de las tecnologías más utilizadas en todas las empresas del mundo, desde pequeñas y medianas empresas hasta grandes corporaciones. Debido a esto, se vuelve indispensable conocer cómo es su funcionamiento, cuáles son las fallas de seguridad mas comunes que podremos encontrar y como podremos mitigarlas.

¿Qué es Active Directory?

Active Directory es una herramienta perteneciente a la empresa de Microsoft que proporciona servicios de directorio normalmente en una red LAN. Active Directory es capaz de proporcionar un servicio ubicado en uno o varios servidores capaz de crear objetos como usuarios, equipos o grupos para administrar las credenciales durante el inicio de sesión de los equipos que se conectan a una red. Pero no solamente sirve para esto, ya que también podremos administrar las políticas de absolutamente toda la red en la que se encuentre este servidor.

Conceptos importantes de Active Directory

  • Dominio: Un dominio es un conjunto de ordenadores conectados a una red los cuales cuentan con un equipo servidor para administrar las cuentas de usuario y credenciales de la red.
  • Objeto: Un objeto es el nombre genérico que utilizamos para referirnos cualquier componente dentro de un directorio. Ej. Usuarios, Recursos o Servicios.
  • Unidad organizativa (OU): Una OU es un contenedor de objetos como impresoras, usuarios, grupos etc., organizados mediante subconjuntos.
  • Árbol: Un árbol es un conjunto de dominios, los cuales dependen de una raíz común y están organizados en una determinada jerarquía.
  • Bosque: El bosque es el nivel más alto de la jerarquía de la organización, este estará compuesto por uno o más árboles.

Ataques de Post Explotación en AD

User Object Attributes

El objetivo de este ataque es poder comenzar a enumerar los atributos de los usuarios de Active Directory. A la hora de enumerar los usuarios podremos encontrar los siguientes atributos relevantes:

  • adminCount: Tiene como valor ‘1’ si el usuario fue miembro de un grupo administrador.
  • pwdLastSet: Contiene la fecha y hora de la última vez que se cambió la clave.
  • badPwdCount: Cantidad de veces que el usuario se intentó loguear usando una clave incorrecta.
  • MemberOf: Grupos a los que pertenece el usuario.
  • Description: Campo libre en donde el usuario puede poner información relevante sobre el usuario.

Para poder mitigar este tipo de ataque deberemos tomar las siguientes medidas:

  • Revisar la descripción de los usuarios manualmente.
  • Extraer todas las descripciones de los usuarios y revisarlas.
  • Configurar un usuario como con la clave en la descripción y monitorear los eventos de este usuario.

Network Share

El objetivo de este ataque consiste en enumerar los directorios compartidos que se puedan encontrar en la red. A la hora de enumerar los recursos que se encuentren en los directorios compartidos podremos encontrar los siguientes como los más relevantes:

  • .ps1: ConvertTo-SecureString, SqlConnection, LdapConnection, NetworkCrendential
  • .vbs: strDomain, strPassword
  • .sql: Trusted_Connection, Integrated Security, Connect
  • .txt: pwd, pass, password

Para poder mitigar este tipo de ataque deberemos tomar las siguientes medidas:

  • Monitorear el tráfico.
  • Identificar gran cantidad de conexiones SMB en poco tiempo.
  • Identificar archivos recientemente creados y la cantidad de veces que fueron abiertos.

Password Spraying

“Un usuario tiene una clave, pero una clave la pueden usar muchos usuarios”

Password Spraying es una técnica la cual consiste en intentar “adivinar” la contraseña de una cuenta. Si obtenemos la directiva de claves y tenemos un número reducido de claves para probar, podemos realizar un ataque de fuerza bruta con la clave evitando que se bloqueen los usuarios.

Para poder mitigar este tipo de ataque deberemos tomar las siguientes medidas:

  • Monitorear la autenticación.
  • Habilitar y configurar correctamente la autenticación multifactor (MFA).
  • Hacer cumplir el uso de contraseñas seguras.

Pass the Hash

Este ataque utiliza una técnica en la cual una atacante captura credenciales de inicio de sesión en un sistema y luego se utilizan esas credenciales capturadas para realizar la autenticación en otros equipos en la red.

El ataque Pass-the-Hash utiliza una técnica la cual consiste en el robo y reutilización de credenciales. Este ataque se divide en dos etapas:

Primero, un atacante debe obtener acceso administrativo local en al menos una computadora.

Segundo, el atacante intenta aumentar el acceso a otras computadoras en la red mediante:

  • Robar una o más credenciales de autenticación (nombre de usuario y contraseña o hash de contraseña perteneciente a otras cuentas) de la computadora comprometida.
  • Reutilizando las credenciales robadas para acceder a otros sistemas y servicios informáticos.

Para poder mitigar este tipo de ataque deberemos tomar las siguientes medidas:

  • Instalar y configurar LAPS.
  • Restringir y proteger las cuentas de dominio que tienen privilegios de administrador local.
  • Restringir y proteger las cuentas de administrador locales.

Token Impersonation

Token Impersonation es una técnica que puede usar como administrador local para suplantar a otro usuario que inició sesión en un sistema. Esto es muy útil en escenarios en los que se cuenta con permisos de administrador local en una máquina y desea hacerse pasar por otro usuario conectado, por ejemplo, un administrador de dominio.

Los tokens son una clave temporal que le permite acceder al sistema y la red sin tener que proporcionar credenciales cada vez que accede a un archivo. Existen dos tipos de Tokens:

  • Los tokens delegados se crean para inicios de sesión “interactivos”, como iniciar sesión en la máquina o conectarse a ella a través de Escritorio remoto.
  • Los tokens de suplantación son para sesiones “no interactivas”, como adjuntar una unidad de red o un script de inicio de sesión de dominio.

La mejor protección contra el Token Impersonation es limitar los accesos de las cuentas únicamente a los sus niveles correspondientes. Por Ej. Las cuentas de Domain / Enterprise Admins únicamente deben poder ingresar a los Domain Controllers. También es muy importante restringir y controlar los administradores locales que existen en las máquinas, ya que, sin permisos de administrador local, este ataque no podría ser realizado.

DCSync Attack

Este ataque consiste en utilizar el comando DCSync dentro de Mimikatz que permite simular el comportamiento del controlador de dominio (DC), es decir, permite al atacante simular ser un controlador de dominio y solicitar a otros DC los datos de la contraseña del usuario.

Los atacantes deben comprometer una cuenta con los derechos para realizar la replicación de dominio.

Una vez que se obtienen los privilegios adecuados, se aprovecha el comando Mimikatz DCSync para recuperar los hashes de contraseña de la cuenta de Active Directory.

Una vez obtenido, el atacante puede crear tickets Kerberos falsificados para acceder a cualquier recurso conectado a Active Directory

La mejor protección contra un ataque DCSync es controlar los permisos de dominio responsables de permitir que las cuentas repliquen los cambios. Inevitablemente, algunos usuarios tendrán este derecho y deberían estar protegidos.

Funcionamiento de Kerberos en Active Directory

En Active Directory la autenticación se realiza a través de Kerberos y este es un protocolo que se basa en proporcionar a los usuarios tickets que estos presentan ante los diferentes recursos de la red para verificar sus permisos. En el protocolo de Kerberos existen 3 elementos de infraestructura principales:

  • La máquina cliente, donde se encuentra el usuario que quiere acceder al servicio.
  • La máquina que ofrece el servicio, es decir, el sistema al que el usuario quiere acceder.
  • El Key Distribution Center (KDC), que es un servidor central que se encarga de autenticar a los usuarios y de repartir entre estos los tickets para que se puedan identificar contra las máquinas con los servicios. En el caso de un directorio activo el KDC está instalado en el controlador de dominio o Domain Controller (DC).

Por otro lado, existen 2 tipos de tickets que un usuario debe poseer para poder acceder a los servicios del dominio:

  • Los Service Tickets (ST) que se utilizan para identificarse contra los servicios
  • Los Ticket Granting Ticket (TGT) que sirven para autenticarse contra el servidor Kerberos y obtener los ST para los diferentes servicios.
Secuencia de mensajes para realizar proceso de autenticación de Kerberos

Kerberoasting

El Kerberoasting trata de usar los Service Tickets para crackear las contraseñas de los usuarios offline.

Los Service Tickets vienen cifrados con el hash NTLM de la cuenta de dominio a la que está ligada el servicio, por lo que si un usuario solicita un ST de un servicio que está ligado a un usuario, una vez obtenido el ST se lo puede llevar a otra máquina e intentar crackear la contraseña del usuario, que por lo general suele tener contar con bastantes privilegios en el dominio, o al menos en la máquina en la que se ejecuta el servicio.

La mejor protección contra un ataque de Kerberoasting es garantizar que las cuentas de servicio que usan Kerberos con valores SPN tengan contraseñas largas y complejas. También, si es posible, esas contraseñas deben ser rotadas regularmente.

Para detectar el ataque en progreso, se debe controlar el uso anormal de la cuenta. Las cuentas de servicio tradicionalmente deben usarse desde los mismos sistemas de la misma manera, por lo que es posible detectar anomalías de autenticación. Además, puede supervisar las solicitudes de tickets de servicio en Active Directory para buscar picos en esas solicitudes.

Golden and Silver Ticket

El objetivo del ataque del Golden Ticket es construir un TGT, para lo cual se necesita el hash de la cuenta krbtgt, ya que es el que se usa para cifrar dicho ticket. Una vez obtenido este hash es posible construir un TGT con la caducidad que se desee, y lo más importante, con los permisos que uno quiera, consiguiendo incluso privilegio de administrador de dominio.

Se debe tener en cuenta que la validez de un TGT depende de 2 cosas, la caducidad especificada y el hash NTLM con el que está cifrado (el de la contraseña de la cuenta krbtgt), por tanto, mientras el tiempo de vida no venza o se cambie la contraseña de la cuenta krbtgt, el ticket seguirá siendo válido independientemente de si expira la contraseña del usuario que se suplanta.

El concepto del Silver Ticket es similar, solo que esta vez el ticket que se construye es un ST y para ello lo que se requiere es el hash NTLM de la cuenta de dominio asociada al servicio al que se quiere acceder.

Para evitar el uso de Golden Tickets de larga duración la medida que se debe tomar es resetear periódicamente la contraseña de la cuenta krbtgt en todos los controladores de dominio

La contraseña debe ser reseteada 2 veces, debido a que, por temas de usabilidad, los tickets que utilicen como clave de cifrado el hash NTLM de la contraseña de krbtgt previa a la actual todavía serán considerados como válidos.

Referencias

--

--

No responses yet