Active Directory Attacks
Introduction
Esta unidad presentará varias técnicas (y los módulos de Core Impact asociados) comúnmente utilizados en el contexto de ataques a Active Directory, donde se recolectan cuentas de dominio y se utilizan para moverse a través de la red e intentar obtener más información y cuentas con privilegios adicionales.
NOTA Los entornos de demostración contienen una implementación simplificada de Active Directory, con un número mínimo de hosts. La configuración del entorno también está simplificada para ilustrar varios módulos de Core Impact. Por ejemplo, la longitud/complexidad de las contraseñas de las cuentas es simple para permitir el cracking en un tiempo limitado. En entornos reales, estos pasos se realizarían en múltiples hosts y el cracking de contraseñas podría requerir mucho más tiempo (o incluso no ser factible utilizando una workstation).
Features
- Impersonate domain user
- Perform domain information gathering
- Kerberoast attacks
- AS-REPRoasting attacks
- Ntds.dit Password Extraction
- Kerberos Golden Tickets
Highlighted Modules
- Network Information Gathering RPT
- Install Agent using SMB
- Install Agent using WMI
- Agent Process Injector
- Mimikatz
- PowerShell Shell
- Windows Domain IG Wizard
- Enumerate User Accounts with SPNs
- Enumerate User Accounts without Kerberos preauthentication
- Windows Secrets Dump (L)
- Create Kerberos Golden Ticket
References
- Kerberoasting
- AS-REPRoasting
- stealthbits' Attack Catalog - Ntds.dit Password Extraction
- Kerberos Golden Tickets.
Walkthrough
Introduction
Este escenario asumirá una brecha en el cliente de Active Directory, es decir, de alguna manera hemos obtenido un punto de apoyo en la red del dominio (por ejemplo, a través de un exploit remoto al host del cliente, un ataque del lado del cliente dirigido al usuario del host del cliente, obteniendo credenciales de un host previamente comprometido, realizando un ataque de diccionario sobre credenciales débiles a través de verificadores de identidad, etc.).
Hosts
- Active Directory Domain Controller
- Hostname:
WIN2019DC
- IP Address:
10.27.34.88
- Hostname:
- Active Directory client
- Hostname:
WIN10VPN
- IP Address:
10.27.34.80
- Hostname:
Initial OS Agent Deployment
Para ejercitar este escenario, desplegaremos un Impact OS Agent utilizando credenciales conocidas en el host del cliente.
- Lanzar Network IG RPT para obtener información sobre el host cliente de Active Directory.
- Click en Next.
- Click en Next.
- Click en Next.
- Reemplazar el rango de red con la dirección del host cliente de AD:
10.27.34.80
y hacer click en Next.
- Click en Next.
- Click en Finish.
- Esperar a que Network IG RPT complete la recopilación de información del host cliente de AD.
- En la vista de Modules, ir a la carpeta 10-Post Exploitation > Agents, seleccionar el módulo
Install agent using SMB
y arrastrarlo y soltarlo en el host cliente de AD.
-
Completar los siguientes parámetros del módulo:
-
USER:
impact
-
PASSWORD:
EzPassword1234
-
Click en OK para lanzar el módulo.
-
Esto debería desplegar un OS Agent en el host (con privilegios de SYSTEM).
-
Hacer click derecho en el nuevo OS Agent y seleccionar
Get Username
.
- Hacer click derecho en el OS Agent desplegado y lanzar
Mimikatz
para recolectar credenciales del host.
- Mimikatz ha capturado credenciales de un usuario de dominio que ha iniciado sesión en el host,
ruth.lane
. - Esta credencial se almacena como una entidad de identidad en el workspace para ser utilizada como parámetro en módulos adicionales. Ver Identities - Windows NTLM en la vista de entidades.
Move to Logged on Domain User Process
-
Hacer click derecho en el agente nuevamente y lanzar
Get Process List
. -
Buscar el pid del proceso
explorer.exe
, que estaría ejecutándose en el contexto del usuario que ha iniciado sesión. - El Module log soporta la búsqueda de texto mediante la tecla rápida
Ctrl-F
(seleccionar el panel primero haciendo click en cualquier fila del log).
-
Con el OS Agent en el host cliente de AD seleccionado, regresar a la vista de Modules, y desde la carpeta 10-Post Exploitation > Agents hacer doble click en el módulo
Agent Process Injector
. -
Agent Process Injector
es un módulo local, es decir, un módulo que se ejecuta en el OS Agent actualmente seleccionado en la vista de entidades, o el agente fuente actual si no hay un OS Agent seleccionado actualmente. Debido a que queremos ejecutar el módulo en el host cliente de AD, debemos seleccionar el agente asociado o haberlo configurado previamente como agente fuente en el workspace (haciendo click derecho en el OS agent y seleccionando Set as source).
-
Ingresar el PID del proceso
explorer.exe
y hacer click en OK. -
Un nuevo OS Agent (no privilegiado) será desplegado, ejecutándose en el contexto del usuario que ha iniciado sesión.
-
Hacer click derecho en el nuevo OS
Agent y seleccionar Get Username
.
- Podemos capturar una captura de pantalla de la sesión iniciada, haciendo click derecho nuevamente en el OS Agent y seleccionando
Get screenshot
.
Information Gathering on Domain
- Ahora obtendremos el nombre del dominio al que está conectado el host.
NOTA
El nombre del dominio también se mostró como parte del volcado de Mimikatz, pero el objetivo es mostrar algunas capacidades del OS Agent como el PowerShell Shell
.
- Hacer click derecho en el agente y lanzar un
PowerShell Shell
. - Ejecutar el comando:
(Get-WmiObject Win32_ComputerSystem).Domain
NOTA
El PowerShell Shell
carga las librerías de .NET y PowerShell en el contexto del proceso OS Agent, lo que significa que no se genera ningún proceso de PowerShell (powershell.exe
) (que puede ser detectado por algunos HIPS).
- Vamos a inspeccionar el dominio.
- Configurar el agente OS del usuario que ha iniciado sesión como fuente haciendo click derecho en el agente y seleccionando
Set as source
. - En la vista de Modules, ir a la categoría Information Gathering y lanzar el módulo
Windows Domain IG Wizard
.
NOTA También puedes buscar el módulo usando la barra de búsqueda de la vista de Modules. El walkthrough muestra el descubrimiento del módulo a través de las categorías, para que el usuario pueda ubicar características/acciones adicionales a realizar en el futuro.
- Click en Next.
- Ingresar el nombre del dominio (
acme.corp
) y hacer click en Next.
-
Click en Next.
-
Use Integrated Windows Authentication aprovechará las credenciales del usuario que ha iniciado sesión (asociado al proceso donde se ejecuta el OS Agent).
-
Click en Finish.
-
El módulo generará varios submódulos para realizar las tareas enumeradas anteriormente. Ver los resultados en la salida/log de cada submódulo.
Kerberoast Attacks
- Con la identidad de dominio previamente recolectada (para
ruth.lane
), también podemos intentar encontrar servicios de dominio que estén utilizando cuentas de usuario, que pueden ser susceptibles a un ataque Kerberoast, donde se podría descifrar la contraseña de una cuenta de usuario potencialmente débil. - Lanzar nuevamente el
Windows Domain IG Wizard
.
- Click en Next.
- Ingresar el nombre del dominio (
acme.corp
) y hacer click en Next.
- Seleccionar Use Validated Identities y hacer click en Next.
- Seleccionar el botón de puntos suspensivos (…) para seleccionar la identidad obtenida anteriormente.
- Ir al grupo Identities - Windows NTLM, seleccionar la identidad del usuario de dominio
ruth.lane
, y hacer click en OK. - Click en Next.
- Desmarcar todas las opciones y dejar solo Enumerate User Accounts with SPNs y hacer click en Next.
- Click en el botón de puntos suspensivos (…) para proporcionar el nombre del archivo donde se almacenará cualquier ticket recuperado.
- Ingresar el nombre del archivo para extraer la información del ticket (por ejemplo,
ticket.tgt
) y hacer click en Save.
- Marcar la opción para intentar descifrar cualquier ticket recuperado y hacer click en Finish.
- El módulo
Enumerate User Accounts with SPNs
encontrará una cuenta de usuario con un SPN.
- Luego, se lanzará el módulo
Password cracking using John The Ripper
para intentar descifrar la contraseña.
PRECAUCIÓN
Dependiendo de la longitud y complejidad de la contraseña, esto puede llevar mucho tiempo, por lo que este paso es opcional y puede ser lanzado manualmente en una etapa posterior, haciendo referencia al archivo de ticket (.tgt
) recuperado.
- El usuario/contraseña descifrado se almacena como una nueva identidad en el grupo Identities - Others.
NOTA La credencial obtenida a través del ataque Kerberoast se va a aprovechar más adelante, en la sección Compromising Active Directory Domain Controller.
AS-REPRoasting Attacks
- De manera similar, también puedes usar el
Windows Domain IG Wizard
para enumerar usuarios configurados sin pre-autenticación Kerberos, e intentar realizar un ataque AS-REPRoasting. - Lanzar nuevamente el
Windows Domain IG Wizard
.
- Click en Next.
- Ingresar el nombre del dominio (
acme.corp
) y hacer click en Next.
- Seleccionar Use Validated Identities y hacer click en Next.
- Seleccionar el botón de puntos suspensivos (…) para seleccionar la identidad obtenida anteriormente.
- Ir al grupo Identities - Windows NTLM, seleccionar la identidad del usuario de dominio
ruth.lane
, y hacer click en OK. - Click en Next.
- Desmarcar todas las opciones y dejar solo Enumerate User Accounts without Kerberos preauthentication y hacer click en Next.
NOTA Ten en cuenta que la enumeración de cuentas de usuario con SPNs y cuentas de usuario sin pre-autenticación Kerberos podría haberse lanzado al mismo tiempo, aunque hemos lanzado cada uno de forma individual para mostrar el ataque asociado por separado.
- Click en el botón de puntos suspensivos (…) para proporcionar el nombre del archivo donde se almacenará cualquier ticket recuperado.
- Ingresar el nombre del archivo para extraer la información del ticket (por ejemplo,
preauth_ticket.tgt
) y hacer click en Save.
- Marcar la opción para intentar descifrar cualquier ticket recuperado y hacer click en Finish.
- El módulo
Enumerate User Accounts without Kerberos preauthentication
encontrará una cuenta de usuario sin pre-autenticación Kerberos.
- Luego, se lanzará el módulo
Password cracking using John The Ripper
para intentar descifrar la contraseña.
NOTA
Dependiendo de la longitud y complejidad de la contraseña, esto puede llevar mucho tiempo, por lo que este paso es opcional y puede ser lanzado manualmente en una etapa posterior, haciendo referencia al archivo de ticket (.tgt
) recuperado.
Compromising Active Directory Domain Controller
La cuenta de servicio de usuario que previamente desciframos a través del ataque Kerberoast, puede estar configurada con privilegios adicionales requeridos por la aplicación asociada. En este entorno de ejemplo reducido, la cuenta está configurada con privilegios de administrador local en el host del servidor de Active Directory. Por lo tanto, podemos intentar aprovechar el usuario y la contraseña descifrados para desplegar un OS Agent en ese host.
- En la vista de Network, abrir la entidad
localhost
, hacer click derecho enlocalagent
y configurarlo como fuente, para que los siguientes pasos se ejecuten desde la máquina local donde se está ejecutando Core Impact. - Repetir los pasos para ejecutar
Network Information Gathering
RPT (en la sección Initial OS Agent deployment), pero ahora en el host del servidor de AD, con la dirección IP:10.27.34.88
. - En la vista de Modules, buscar el módulo:
Install Agent using WMI
en la carpeta 10-Post Exploitation > Agents, y arrastrarlo y soltarlo en la entidad del hostADDC
descubierto. - Seleccionar el parámetro IDENTITY y luego hacer click en el botón de puntos suspensivos (...) para seleccionar la identidad del
mssql_svc
, y hacer click en OK.
- Click en OK para lanzar el módulo.
- En la vista de Modules, buscar el módulo
Windows Secrets Dump (L)
y arrastrarlo y soltarlo en el OS Agent recién desplegado en el hostADDC
.
NOTA
Este módulo recuperará y almacenará identidades para todos los usuarios del dominio, por lo que asegúrate de considerar si deseas utilizar el parámetro COMMIT IDENTITIES
en un entorno de Active Directory grande.
Kerberos Golden Tickets
Entre las identidades recuperadas encontradas en el host ADDC
, está krbtgt
, que es la cuenta de servicio de distribución de claves de Active Directory, y que se puede utilizar para falsificar Kerberos Ticket Granting Tickets (TGTs).
-
Para crear un Kerberos Golden Ticket, necesitamos el SID del dominio, que es un parámetro requerido para el módulo. Podemos obtener el valor a través de un
PowerShell Shell
en el OS Agent en el hostADDC
, ejecutando:$domain = Get-ADDomain$domain.DomainSID.value
- Ahora podemos hacer click derecho en la identidad
krbtgt
y usarla para crear un Kerberos Golden Ticket para suplantar a otra cuenta de dominio.
-
Completar los siguientes parámetros del módulo:
-
USERNAME:
paul.compton
- DOMAIN:
acme.corp
(obtenido previamente en la sección Information gathering on domain) - DOMAIN SID (completar con el valor obtenido arriba)
- Click en OK.
El módulo habrá creado una nueva entidad de identidad de golden ticket para el usuario de dominio paul.compton
.
Para fines de ilustración, supongamos que el usuario paul.compton
es una cuenta de Domain Administrator, esta identidad ahora se puede utilizar para autenticar y moverse por el resto del dominio, desplegando y controlando OS Agents en otros hosts de la red.