Cómo extraer Hashes de contraseñas de un dominio en Active Directory (Windows)

Es muy común durante las pruebas de penetración en las que se ha logrado el acceso al administrador del dominio, extraer los hashes de contraseña de todos los usuarios del dominio para el análisis y descifrado fuera de línea.

Estos hashes se almacenan en un archivo de base de datos en el controlador de dominio (NTDS.DIT) con información adicional, como membresías de grupos y usuarios.

El archivo NTDS.DIT ​​se usa constantemente por el sistema operativo y, por lo tanto, no se puede copiar directamente a otra ubicación para extraer información. Este archivo se puede encontrar en la siguiente ubicación de Windows:

Existen varias técnicas que se pueden usar para extraer este archivo o la información que se almacena en él, sin embargo, en la mayoría de ellos se utiliza uno de estos métodos:

  1. Servicios de replicación de controladores de dominio
  2. Binarios nativos de Windows
  3. WMI

Mimikatz

Mimikatz tiene una característica (dcsync) que utiliza el Servicio de Replicación de Directorio (DRS) para recuperar los hashes de contraseña del archivo NTDS.DIT.

Esta técnica elimina la necesidad de autenticarse directamente con el controlador de dominio, ya que puede ejecutarse desde cualquier sistema que sea parte del dominio desde el contexto del administrador del dominio.

Por lo tanto, es la técnica estándar para equipos ya que es menos escandaloso.

Al especificar el nombre de usuario del dominio con el parámetro /user, Mimikatz puede extraer toda la información de la cuenta de este usuario en particular, incluyendo su hash de contraseña.

Alternativamente, la ejecución de Mimikatz directamente en los hashes de contraseña del controlador de dominio se puede recuperar a través del proceso lsass.exe .

Los hashes de contraseña de los usuarios del dominio serán recuperados exitosamente.

Empire

PowerShell Empire tiene dos módulos que pueden recuperar hashes de dominio a través del ataque DCSync. Ambos módulos deben ejecutarse desde la perspectiva del administrador del dominio y están utilizando los servicios de replicación de Microsoft.

Estos módulos se basan en el script Invoke-Mimikatz de PowerShell para ejecutar los comandos de Mimikatz relacionados con DCSync. El siguiente módulo extraerá los hashes del dominio en un formato similar al de la salida del comando hashdump de Metasploit.

El módulo DCSync requiere que se especifique un usuario para extraer toda la información de la cuenta.

Obtendrás la siguiente información:

Nishang

Nishang es un framework de PowerShell que permite a los investigadores de seguridad y a los pentester realizar operaciones ofensivas contra los sistemas. El script Copy-VSS se puede usar para extraer automáticamente los archivos requeridos: NTDS.DIT, SAM y SYSTEM.

Los archivos se extraerán en el directorio de trabajo actual o en cualquier otra carpeta que se especifique.

Alternativamente, el script puede ejecutarse desde una sesión de Meterpreter existente cargando la extensión de PowerShell.

También es posible establecer una sesión directa de PowerShell con el comando powershell_shell para extraer los archivos una vez que el script se haya importado a la sesión de Meterpreter existente.

PowerSploit

PowerSploit contiene un script de PowerShell que utiliza el servicio de instantáneas de volumen para crear un nuevo volumen que podría utilizarse para la extracción de archivos.

De manera alternativa, puede ejecutarse desde una sesión de Meterpreter existente cargando la extensión de PowerShell.

Los archivos pueden copiarse desde el nuevo volumen a una ruta de destino con el comando copy.

Invoke-DCSync

Invoke – DCSync es un script de PowerShell que fue desarrollado por Nick Landers y aprovecha PowerView, Invoke-ReflectivePEInjection y un contenedor DLL de PowerKatz para recuperar hashes con el método Mimikatz de DCSync. Ejecutar directamente la función generará la siguiente salida:

Los resultados se formatearán en cuatro tablas: Dominio, Usuario, RID y Hash. Sin embargo, al ejecutar Invoke-DCSync con el parámetro -PWDumpFormat se recuperarán los hashes con el formato:  user:id:lm:ntlm:::

Invoke-DCSync Metasploit

La misma salida se puede lograr ejecutando el script desde una sesión de Meterpreter existente.

Esto se logran con PWDumpFormat:

Invoke-DCSync - Metasploit PWDump Format

ntdsutil

ntdsutil es una herramienta de línea de comandos que forma parte del ecosistema del controlador de dominio y su propósito es permitir a los administradores acceder y administrar la base de datos de Windows Active Directory.

Sin embargo, los hackers éticos y los analistas de seguridad pueden aprovecharse de él para tomar una instantánea del archivo ntds.dit existente, este se puede copiar en una nueva ubicación para el análisis fuera de línea y la extracción de hashes de contraseñas.

ntdsutil

Este generará dos nuevas carpetas: Active Directory y Registry. El archivo NTDS.DIT se guardará en Active Directory y los archivos SAM y SYSTEM se guardarán en la carpeta de Registro.

ntdsutil - ntds

DiskShadow

DiskShadow es un binario firmado por Microsoft que se usa para ayudar a los administradores con las operaciones relacionadas con el Volume Shadow Copy Service (VSS).

Originalmente, bohops escribieron sobre este binario en su blog.

Este binario tiene dos modos interactivo y script, por lo que se puede usar un archivo de script que contendrá todos los comandos necesarios para automatizar el proceso de extracción de NTDS.DIT.

El archivo del script puede contener las siguientes líneas para crear una nueva instantánea de volumen, montar una nueva unidad, ejecutar el comando de copia y eliminar la instantánea de volumen.

Debes tener en cuenta que el binario DiskShadow debe ejecutarse desde la ruta C:\Windows\System32. Si se invoca desde otra ruta, el script no se ejecutará correctamente.

diskshadow

Cuando ejecutes el siguiente comando directamente desde el intérprete, se enumerarán todas las instantáneas de volumen disponibles del sistema.

diskshadow - Retrieve Shadow Copies

La sección del registro The SYSTEM también debe copiarse, ya que contiene la clave para descifrar el contenido del archivo NTDS.

diskshadow - Copy system from Registry

WMI

Sean Metcalf demostró en su blog que es posible extraer remotamente los archivos NTDS.DIT y SYSTEM a través de WMI. Esta técnica utiliza el binario vssadmin para crear la instantánea de volumen.

WMI - Create Volume Shadow Copy

Luego debes ejecutar el comando copy de forma remota para extraer el archivo NTDS.DIT ​​de la instantánea de volumen en otro directorio del sistema de destino.

WMI - Copy NTDS File

Lo mismo se aplica para el archivo SYSTEM.

WMI - Copy System File

Los archivos extraídos pueden transferirse desde el controlador de dominio a otro sistema Windows para descargar los hashes de contraseña de dominio.

WMI - Transfer Files via Copy

En lugar de credenciales, si se generó un ticket dorado, lo puedes usar para la autenticación con el controlador de dominio a través de Kerberos.

vssadmin

La instantánea de volumen es una utilidad de línea de comandos de Windows que permite a los administradores realizar copias de seguridad de computadoras, volúmenes y archivos incluso si están en uso por el sistema operativo.

Volume Shadow Copy se ejecuta como un servicio y requiere que el sistema de archivos esté formateado como NTFS, todos los sistemas operativos modernos están predeterminados en ese formato.

Desde un indicador de comandos de Windows, si ejecutas lo siguiente crearás una instantánea de la unidad C: en orden para que los archivos a los que normalmente no tiene acceso el usuario se copien en otra ubicación (carpeta local, carpeta de red o medio extraíble).

vssadmin - Create Volume Shadow Copy

Dado que todos los archivos en la unidad C: se han copiado en otra ubicación (HarddiskVolumeShadowCopy1), el sistema operativo no los utiliza directamente y, por lo tanto, puedes acceder a ellos y copiarlos en otra ubicación.

El comando copy copiará los archivos NTDS.DIT y SYSTEM a una nueva carpeta creada en la unidad local llamada ShadowCopy.

Copy Files from Volume Shadow Copy

Estos archivos deben copiarse desde el controlador de dominio a otro host para su posterior procesamiento.

ShadowCopy - Files

vssown

Al igual que la herramienta vssadmin, Tim Tomes desarrolló vssown, que es un script de visual basic que te permite crear y eliminar instantáneas de volúmenes, correr ejecutables arbitrarios desde una instantánea sin montar e iniciar y, detener el servicio de instantáneas de volúmenes.

vssown - Volume Shadow Copy

Los archivos requeridos se pueden copiar con el comando copy.

vssown - Volume Shadow Copy

Metasploit

El framework Metasploit tiene un módulo que se autentica directamente con el controlador de dominio a través del servicio de bloque de mensajes del servidor (SMB), crea una instantánea de volumen de la unidad del sistema y descarga copias de la sección NTDS.DIT y SYSTEM en los directorios Metasploit.

Estos archivos los puedes usar con otras herramientas como impacket que pueden realizar la extracción de hashes de contraseña de active directory.

Metasploit - NTDS Module

También hay un módulo de explotación posterior que se puede vincular a una sesión de Meterpreter existente para recuperar los hashes de dominio a través del método ntdsutil.

Metasploit - Domain Hashdump

Opcionalmente, si hay una sesión de Meterpreter existente en el controlador de dominio, se puede usar el comando hashdump. Sin embargo, este método no se considera seguro ya que podría bloquear el controlador de dominio.

Metasploit - Hashdump on DC

fgdump

El fgdump es un antiguo archivo ejecutable que puede extraer LanMan y NTLM hashes de contraseñas. Puede ejecutarse de forma local o remota si se han adquirido credenciales de administrador local.

Durante la ejecución, fgdump intentará desactivar el antivirus que podría ejecutarse en el sistema y, si tiene éxito, escribirá todos los datos en dos archivos.

Si existe un antivirus o una solución de punto final, fgdump no se debe usar como un método para extraer los hash de contraseña para evitar la detección, ya que la mayoría de las compañías de antivirus, como Windows Defender de Microsoft, lo detectan.

fgdump - Domain Controller

Los hashes de contraseña los puedes recuperar examinando el contenido del archivo .pwdump.

NTDS Extraction

Impacket es una colección de scripts de Python que se pueden usar para realizar varias tareas, incluida la extracción de contenidos del archivo NTDS. El módulo impacket-secretsdump requiere el SYSTEM y el archivo de base de datos NTDS.

impacket - Extract NTDS Contents

Además, impacket puede recuperar los hashes de la contraseña del dominio de forma remota desde el archivo NTDS.DIT mediante el uso de la cuenta de la computadora y el hash para la autenticación.

impacket - Extract NTDS Contents Remotely

Como una solución alternativa a impacket, el binario NTDSDumpEx puede extraer los hashes de la contraseña del dominio de un host de Windows.

NTDSDumpEx

También hay un shell script llamado adXtract que puede exportar los hashes de nombre de usuario y contraseña a un formato que pueden usar los crackers de contraseñas comunes como John the Ripper y Hashcat.

adXtract

El Script escribirá toda la información en varios archivos bajo el nombre del proyecto y, cuando finalice el descifrado del archivo de base de datos NTDS, se exportará la lista de usuarios y los hashes de contraseña a la consola.

El script te proporcionará una amplia información sobre los usuarios del dominio, como se puede ver a continuación.

adXtract - List of Users

Los hashes de contraseña se te presentarán en el siguiente formato.

adXtract - Password Hashes