Saltar a contenido

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

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
  • Active Directory client
    • Hostname: WIN10VPN
    • IP Address: 10.27.34.80

Initial OS Agent Deployment

Para ejercitar este escenario, desplegaremos un Impact OS Agent utilizando credenciales conocidas en el host del cliente.

  1. Lanzar Network IG RPT para obtener información sobre el host cliente de Active Directory.

Network IG RPT Welcome

  1. Click en Next.

Network IG RPT Discovery Method

  1. Click en Next.

Network IG RPT IP Version

  1. Click en Next.

Network IG RPT IP Range Selection

  1. Reemplazar el rango de red con la dirección del host cliente de AD: 10.27.34.80 y hacer click en Next.

Network IG RPT Scan Type

  1. Click en Next.

Network IG RPT Additional Settings

  1. Click en Finish.
  2. Esperar a que Network IG RPT complete la recopilación de información del host cliente de AD.
  3. 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.

Install Agent Using SMB Parameters

  1. Completar los siguientes parámetros del módulo:

  2. USER: impact

  3. PASSWORD: EzPassword1234

  4. Click en OK para lanzar el módulo.

  5. Esto debería desplegar un OS Agent en el host (con privilegios de SYSTEM).

  6. Hacer click derecho en el nuevo OS Agent y seleccionar Get Username.

Get Current Username - SYSTEM

  1. Hacer click derecho en el OS Agent desplegado y lanzar Mimikatz para recolectar credenciales del host.

Mimikatz

  • 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.

Mimikatz Harvested Identities

Move to Logged on Domain User Process

  1. Hacer click derecho en el agente nuevamente y lanzar Get Process List.

  2. Buscar el pid del proceso explorer.exe, que estaría ejecutándose en el contexto del usuario que ha iniciado sesión.

  3. 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).

Get Process List

  1. 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.

  2. 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).

Agent Process Injector

  1. Ingresar el PID del proceso explorer.exe y hacer click en OK.

  2. Un nuevo OS Agent (no privilegiado) será desplegado, ejecutándose en el contexto del usuario que ha iniciado sesión.

  3. Hacer click derecho en el nuevo OS

Agent y seleccionar Get Username.

Get Current User Name - Logged on user

  1. Podemos capturar una captura de pantalla de la sesión iniciada, haciendo click derecho nuevamente en el OS Agent y seleccionando Get screenshot.

Get Screenshot

Information Gathering on Domain

  1. 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.

  1. Hacer click derecho en el agente y lanzar un PowerShell Shell.
  2. 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).

PowerShell Shell - Get Domain

  1. Vamos a inspeccionar el dominio.
  2. Configurar el agente OS del usuario que ha iniciado sesión como fuente haciendo click derecho en el agente y seleccionando Set as source.
  3. 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.

Windows Domain IG Welcome

  1. Click en Next.

Windows Domain IG Domain Name

  1. Ingresar el nombre del dominio (acme.corp) y hacer click en Next.

Windows Domain IG Authentication Type

  1. Click en Next.

  2. Use Integrated Windows Authentication aprovechará las credenciales del usuario que ha iniciado sesión (asociado al proceso donde se ejecuta el OS Agent).

Windows Domain IG Modules Selection

  1. Click en Finish.

  2. El módulo generará varios submódulos para realizar las tareas enumeradas anteriormente. Ver los resultados en la salida/log de cada submódulo.

Windows Domain IG Results

Kerberoast Attacks

  1. 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.
  2. Lanzar nuevamente el Windows Domain IG Wizard.

Windows Domain IG Welcome

  1. Click en Next.

Windows Domain IG Domain Name

  1. Ingresar el nombre del dominio (acme.corp) y hacer click en Next.

Windows Domain IG Authentication Type

  1. Seleccionar Use Validated Identities y hacer click en Next.

Windows Domain IG Identity Selection

  1. Seleccionar el botón de puntos suspensivos () para seleccionar la identidad obtenida anteriormente.

Windows Domain IG Select Validated Identity

  1. Ir al grupo Identities - Windows NTLM, seleccionar la identidad del usuario de dominio ruth.lane, y hacer click en OK.
  2. Click en Next.

Windows Domain IG - Enumerate User Accounts with SPNs - Modules Selection

  1. Desmarcar todas las opciones y dejar solo Enumerate User Accounts with SPNs y hacer click en Next.

Windows Domain IG - Enumerate User Accounts with SPNs - Modules Parameters

  1. Click en el botón de puntos suspensivos () para proporcionar el nombre del archivo donde se almacenará cualquier ticket recuperado.

Windows Domain IG - Enumerate User Accounts with SPNs - TGT File Selection

  1. Ingresar el nombre del archivo para extraer la información del ticket (por ejemplo, ticket.tgt) y hacer click en Save.

Windows Domain IG - Enumerate User Accounts with SPNs - Modules Parameters

  1. Marcar la opción para intentar descifrar cualquier ticket recuperado y hacer click en Finish.
  2. El módulo Enumerate User Accounts with SPNs encontrará una cuenta de usuario con un SPN.

Windows Domain IG - Enumerate User Accounts with SPNs

  1. 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.

Windows Domain IG - Enumerate User Accounts with SPNs - Password cracking

  1. El usuario/contraseña descifrado se almacena como una nueva identidad en el grupo Identities - Others.

Windows Domain IG - Enumerate User Accounts with SPNs - Cracked Password identity

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

  1. 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.
  2. Lanzar nuevamente el Windows Domain IG Wizard.

Windows Domain IG Welcome

  1. Click en Next.

Windows Domain IG Domain Name

  1. Ingresar el nombre del dominio (acme.corp) y hacer click en Next.

Windows Domain IG Authentication Type

  1. Seleccionar Use Validated Identities y hacer click en Next.

Windows Domain IG Identity Selection

  1. Seleccionar el botón de puntos suspensivos () para seleccionar la identidad obtenida anteriormente.

Windows Domain IG Select Validated Identity

  1. Ir al grupo Identities - Windows NTLM, seleccionar la identidad del usuario de dominio ruth.lane, y hacer click en OK.
  2. Click en Next.

Windows Domain IG - Enumerate User Accounts without Kerberos preauthentication - Modules Selection

  1. 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.

Windows Domain IG - Enumerate User Accounts without Kerberos preauthentication - Modules Parameters

  1. Click en el botón de puntos suspensivos () para proporcionar el nombre del archivo donde se almacenará cualquier ticket recuperado.

Windows Domain IG - Enumerate User Accounts without Kerberos preauthentication - TGT File Selection

  1. Ingresar el nombre del archivo para extraer la información del ticket (por ejemplo, preauth_ticket.tgt) y hacer click en Save.

Windows Domain IG - Enumerate User Accounts without Kerberos preauthentication - Modules Parameters

  1. Marcar la opción para intentar descifrar cualquier ticket recuperado y hacer click en Finish.
  2. El módulo Enumerate User Accounts without Kerberos preauthentication encontrará una cuenta de usuario sin pre-autenticación Kerberos.

Windows Domain IG - Enumerate User Accounts without Kerberos preauthentication

  1. 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.

Windows Domain IG - Enumerate User Accounts without Kerberos preauthentication - Password cracking

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.

  1. En la vista de Network, abrir la entidad localhost, hacer click derecho en localagent y configurarlo como fuente, para que los siguientes pasos se ejecuten desde la máquina local donde se está ejecutando Core Impact.
  2. 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.
  3. 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 host ADDC descubierto.
  4. 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.

Install Agent using WMI - Identity parameter selection

  1. Click en OK para lanzar el módulo.

Install Agent using WMI Install Agent using WMI - Deployed OS Agent

  1. 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 host ADDC.

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.

Windows Secrets Dump (L) Windows Secrets Dump (L) - Harvested Identities

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).

  1. 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 host ADDC, ejecutando:

    $domain = Get-ADDomain$domain.DomainSID.value
    

PowerShell Shell - Get Domain SID

  1. Ahora podemos hacer click derecho en la identidad krbtgt y usarla para crear un Kerberos Golden Ticket para suplantar a otra cuenta de dominio.

Create Kerberos Golden Ticket

  1. Completar los siguientes parámetros del módulo:

  2. USERNAME: paul.compton

  3. DOMAIN: acme.corp (obtenido previamente en la sección Information gathering on domain)
  4. DOMAIN SID (completar con el valor obtenido arriba)

Create Kerberos Golden Ticket - Module Parameters

  1. Click en OK.

El módulo habrá creado una nueva entidad de identidad de golden ticket para el usuario de dominio paul.compton.

Create Kerberos Golden Ticket - New Identity

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.