






السمعة:
- إنضم17 يونيو 2023
- المشاركات 515
- الحلول 10
- مستوى التفاعل 1,106
- النقاط 93

راح نركز على الامور هاي بهاد الروم
1. ليش بنعمل Enumeration
2. حقن بيانات الدخول Credential Injection
3. عمل Enumeration من خلال الـ MMC
4. عمل Enumeration من خلال الـ CMD
4. عمل Enumeration من خلال الـ PowerShell
5. عمل Enumeration من خلال الـ Bloodhound
التحديات من TryHackMe | Enumerating Active Directory
ليش بنعمل Enumeration
أول ما نحصل على Active Directory credentials وبنقدر نتحقق منها على الشبكة هاد الاشي بفتحلنا عالم جديد من الصلاحيات! بنقدر نبدأ نعمل enum عن تفاصيل مثل إعداد وهيكل الـ Active Directory مع وصول كامل معمول ( authenticate ) حتى لو كان وصول بصلاحيات منخفضة ( low-privileged )
خلال مشاركتنا باختبارات الاختراق red team بنقدر غالبًا نرفع صلاحياتنا أو ( lateral movement ) عشان نوصل لصلاحيات ونقدر نحقق أهدافنا
بأغلب الحالات الـ enumeration والـ exploitation بكونوا مترابطين او متشابكين بشكل كبير بعد ما نعمل exploit لمسار الهجوم اللي بينه الـ enum بنعمل enum مرة ثانية من هاد الـ privileged position زي ما هو موضح بالرسم البياني

عشان نتصل بالشبكه ... إذا كنت بتستخدم الـ AttackBox المبني على الويب رح تكون متصل بالشبكة تلقائيًا بإمكانك تتحقق من هاد بتشغيل أمر ping على عنوان الـ IP للمضيف THMDC.za.tryhackme.com لكن زي ما حكينا بالجزء الاول لازم نضبط الـ DNS
شبكات Windows بتستخدم خدمة أسماء المجال (DNS) لحل أسماء المضيفين لعناوين IP
خلال هاي الشبكة، رح نستخدم DNS للمهام. لازم نضبط DNS على المضيف اللي بتشغل عليه اتصال VPN. لتضبيط DNS ، شغل الأمر التالي:
عشان نظبط الـ DNS بنستخدم امر
كود:
systemd-resolve --interface enumad --set-dns <span>$THMDCIP</span> --set-domain za.tryhackme.com
تذكر تستبدل $THMDCIP بعنوان الـ IP للـ THMDC بمخطط الشبكه ممكن تختبر إذا الـ DNS شغال بتشغيل :
كود:
nslookup thmdc.za.tryhackme.com
هذا لازم يعطيك عنوان الـ IP لمركز البيانات الخاص فيك (DC)
ملاحظة: ممكن ينضبط الـ DNS بالـ AttackBox كل حوالي 3 ساعات إذا حصل لازم تعيد تشغيل خدمة الـ systemd-resolved إذا انتهى الـ AttackBox واستكملت التحدي بوقت لاحق لازم تعيد جميع خطوات الـ DNS
عشان نتصل بالشبكه ... إذا رح تستخدم جهازك الخاص للاختراق ملف الـ OpenVPN بتلاقيه ظاهر اول ما تنضم للغرفه بتلاقيه بصفحة الوصول الخاصة فيك وبعدها اختار EnumeratingAD من خوادم VPN (تحت علامة التبويب الشبكة) ونزل ملف التكوين الخاص فيك
استخدم OpenVPN للاتصال عن طريق الامر
كود:
sudo openvpn adenumeration.ovpn
رح تشوف رسالة Initialization Sequence Completed اللي بتدل إنك الآن متصل بالشبكة بترجع لصفحة الوصول الخاصة فيك ممكن تتحقق إنك متصل بتحديث الصفحة ولازم تشوف علامة خضراء جنب Connected كمان رح يظهرلك عنوان IP الداخلي الخاص فيك
وطبعا لسا لازم تضبط الـ DNS زي ما هو موضح فوق مهم تلاحظ إنه على الرغم من عدم استخدامه مركز البيانات بحتفظ بسجلات طلبات الـ DNS إذا كنت بتستخدم جهازك هاي السجلات ممكن تتضمن اسم مضيف جهازك
طلب بيانات الاعتماد الخاصة بك
بننتقل لـ http://distributor.za.tryhackme.com/creds عشان نطلب مجموعة Active Directory credentials خاصة فينا بنضغط على زر Get Credentials وبنتلقى مجموعة credentials اللي ممكن نستخدمها للوصول الأوليهاي المجموعة من البيانات رح توفرلنا وصول RDP و SSH لـ THMJMP1.za.tryhackme.com
هاي الـ Host بستهدفها فريق الاختراق لأنها بتوفر وصول لشبكة جديدة ممكن تستخدم Remmina أو أي عميل سطح مكتب بعيد مشابه للاتصال بهاد المضيف لـ RDP تذكر تحدد النطاق za.tryhackme.com عند الاتصال
المهام 2 و 3 راح تحتاج لوصول للـ RDP
الـ SSH أسرع وممكن نستخدمه للمهام 4، 5، و 6
حقن بيانات الدخول (Credential Injection)
قبل ما نبدأ نحكي عن الأشياء اللي بتتعلق بالـ Active Directory والأدوات الخاصة فيه لازم نفهم شوي عن طرق حقن بيانات الدخول
بعملية اختراق شبكات الـ Active Directory مرات بنلاقي بيانات دخول (زي اسم المستخدم والباسورد) بدون ما نحتاج نخترق جهاز متصل بالدومين بعض الأدوات أو التقنيات بتحتاج إعدادات معينة عشان تشتغل
ويندوز مقابل لينكس بمجال الحماية
في قاعدة بتحكي : "إذا بتعرف عدوك وبتعرف حالك ما في داعي تخاف من نتائج مية معركة" - سن تزو
ممكن نوصل لنتائج كبيرة واحنا بنعمل enumeration لشبكات الـ Active Directory من جهاز Kali Linux
بس لو بدنا نروح للأعمق ونشتغل على الـ exploitation لازم نفهم ونقلد عدونا يعني لازم نستخدم جهاز ويندوز عشان نقدر نستغل الأدوات المتوفرة فيه
بالشبكة اللي بنشتغل عليها رح نستكشف أداة مدمجة بويندوز اسمها runas.exe
مرات بنلاقي بيانات دخول Active Directory لكن ما بتعرف وين تستخدمها! هون بيجي دور Runas
لما نعمل تقييم أمني ممكن نلاقي وصول للشبكة ونكتشف بيانات دخول Active Directory بس ما عننا صلاحية نعمل جهاز جديد مربوط بالدومين فـ بالتالي لازم نقدر نستخدم هاي البيانات على جهاز ويندوز بنتحكم فيه
لو عننا بيانات الدخول بصيغة <username>:<password> ممكن نستخدم Runas اللي هي أداة شرعية بـ ويندوز
عشان نحقن هاي البيانات بالذاكرة هي مثال على أمر Runas :
كود:
runas.exe /netonly /user:<domain>\<username> cmd.exe
نشرح الأوامر المستخدمة :
الـ netonly/ : بما إن الجهاز مش مربوط بالدومين بدنا نحمل بيانات الدخول لأغراض المصادقة على الشبكة فقط بدون ما نتحقق من الدومين مباشرة ( يعني مش المصادقه عن طريق الـ domain controller )
الأوامر اللي بتنفذ محلياً رح تستخدم حساب الويندوز العادي بس أي اتصال شبكي رح يستخدم الحساب اللي حددناه
الـ user/ : هون بنحدد اسم الدومين واسم المستخدم ( الأفضل استخدام الاسم الكامل للدومين )
الـ cmd.exe : هاد هو البرنامج اللي بدنا نشغله بعد ما نحقن البيانات ممكن نغيره لأي برنامج ثاني بس الأفضل نستخدم cmd.exe لأنه بسمحلنا نشغل اللي بدنا إياه باستخدام البيانات المحقونة
بعد ما نشغل الأمر رح يطلب مننا الباسورد ولأنه استخدمنا خيار netonly/ ما رح يتحقق من الباسورد مباشرة مع الدومين فـ بقبل أي كلمة مرور
لازم نتأكد بعدين إن البيانات اللي تم تحميلها على الشبكة تم تحميلها بشكل صحيح
نقطة مهمة
لو بتستخدم جهاز ويندوز تأكد إنك تشغل أول نافذة CMD كـ Administrator هاد رح يحقن الـ Administrator token بالـ CMD هاد ما بعطيك صلاحيات المسؤول على الشبكة بس بضمن إن أي أوامر محلية بتنفذ بصلاحيات المسؤول
الـ DNS دايماً مهم
لو بتستخدم جهازك الخاص للوصول للشبكة لازم نعمل إعدادات الـ DNS بشكل يدوي مرات بتكون بتنضبط تلقائي الطريقة الآمنة هي نستخدم الـ IP الخاص بالمتحكم بالدومين domain controller كخادم DNS
مثال على الأوامر اللي بنستخدمها بالـ PowerShell :
Bash:
$dnsip = "<DC IP>"
$index = Get-NetAdapter -Name 'Ethernet' | Select-Object -ExpandProperty 'ifIndex'
Set-DnsClientServerAddress -InterfaceIndex $index -ServerAddresses $dnsip
بنقدر نتأكد من ضبط الـ DNS من خلال أمر :
كود:
C:\> nslookup za.tryhackme.com
الـ SYSVOL : هاد فولدر موجود على كل الـ متحكمات الدومين وبحتوي على أشياء مهمة زي الـ GPOs وملفات سكربتات الدومين عشان نقدر نشوف محتوياته بنستخدم الأمر :
Bash:
C:\Tools>dir \\za.tryhackme.com\SYSVOL\
Volume in drive \\za.tryhackme.com\SYSVOL is Windows
Volume Serial Number is 1634-22A9
Directory of \\za.tryhackme.com\SYSVOL
02/24/2022 09:57 PM <DIR> .
02/24/2022 09:57 PM <DIR> ..
02/24/2022 09:57 PM <JUNCTION> za.tryhackme.com [C:\Windows\SYSVOL\domain]
0 File(s) 0 bytes
3 Dir(s) 51,835,408,384 bytes free
الـ IP والـ Host names :
في فرق كبير بين استخدام اسم الهوست hostname أو الـ IP بالأوامر
لو استخدمنا
1. الـ Host بعملية المصادقة رح تكون باستخدام Kerberos
2. الـ IP رح تكون باستخدام NTLM
هاي الأمور بتفرق خصوصاً بعمليات الفحص الأمني Red Team عشان تضل مخفياستخدام البيانات المحقونة
بعد ما نحقن بيانات الدخول أي اتصال شبكي بستخدم هاي البيانات
مثلاً لو فتحت MS SQL Studio من نفس نافذة الـ CMD اللي فيها البيانات المحقونة حتى لو ظهر اسم المستخدم المحلي رح يستخدم بيانات AD بالخلفية لتسجيل الدخول نفس الشيء ممكن نستخدمه لتسجيل الدخول بالتطبيقات اللي بتستخدم NTLM Authentication
أي برنامج في ويندوز بيسمح لنا نحقن بيانات الدخول في الذاكرة؟
runas.exe
أي خيار في runas بضمن استخدام البيانات المحقونة لكل الاتصالات الشبكية؟
netonly/
أي مجلد في الدومين ممكن الوصول إليه من قبل أي حساب Active Directory ويحتوي على معلومات GPO؟
SYSVOL
عند تنفيذ dir \za.tryhackme.com\SYSVOL، أي نوع مصادقة بيتم استخدامه بشكل افتراضي؟
Kerberos authentication
عمل Enumeration من خلال الـ MMC
الـ MMC هو برنامج بواجهة رسومية (GUI) بسهلك إدارة النظام وهون بنستخدمه مع أدوات إدارة الخوادم عن بعد RSAT اللي بتسمحلك بإضافة Snap-Ins بتخص الـ AD
كيف تبدأ؟
بتدخل الجهاز اللي اسمه THMJMP1 عبر RDP باستخدام معلومات الدخول اللي عطوك إياها إذا كنت بتستخدم الجهاز اللي وفرته لك TryHackMe،بنقدر نستخدم الامر التالي
كود:
xfreerdp /u:<username> /p:<password> /v:<IP_address_or_hostname>
الأدوات المطلوبة RSAT Snap-Ins مركبة جاهزة إذا كنت بتستخدم جهازك لازم تركبها بنفسك عن طريق :
1. افتح الـ Start وابحث عن Apps & Features
2. اضغط على Manage Optional Features
3. اضغط على Add a feature
4. ابحث عن RSAT واختر RSAT: Active Directory Domain Services and Lightweight Directory Tools
5. اضغط Install
تشغيل الـ MMC
عشان تشغل الـ MMC استخدم زر Start وابحث عن "run" واكتب MMC لو شغلته بشكل عادي ما بشتغل بشكل صحيح لأن جهازك مش مربوط بالدومين Domain وما بتقدر تستخدم حسابك المحلي للوصول للدومين
هون بتيجي فائدة الـ Runas اللي استخدمتها قبل لما نشغل الـ MMC من هناك بستخدم بيانات الدخول اللي وفرتها سابقًا للوصول للدوميناحضر الفيديو بالاسفل ملخص للخطوات
إضافة Snap-Ins للـ MMC
عشان تبدأ تعمل Enumeration عالـ AD ضيف الـ Snap-Ins للـ MMC :1. اضغط File -> Add/Remove Snap-in
2. اختر وأضف الثلاثة Snap-Ins الخاصة بالـ Active Directory
3. تجاهل أي أخطاء أو تحذيرات بتطلع لك
4. اضغط يمين على Active Directory Domains and Trusts واختر Change Forest واكتب za.tryhackme.com كدومين واضغط OK
5. كرر نفس الخطوة مع Active Directory Sites and Services و Active Directory Users and Computers
6. اضغط يمين على Active Directory Users and Computers من القائمة الجانبية واختار View -> Advanced Features
لو كل اشي اشتغل تمام بكون الـ MMC متصل ومفعل مع الدومين المستهدف
عمل Enumeration للـ AD
بنقدر هسا نبدأ نستكشف معلومات الـ AD :- بنشوف بنية الـ AD من خلال AD Users and Computers
- بنقدر نشوف أقسام المستخدمين حسب الوحدات التنظيمية OUs لكل قسم
- بالضغط على أي مستخدم بنقدر نشوف كل خصائصه والسمات الخاصة فيه وبنقدر نشوف لأي مجموعة بنتمي
- تقدر تشوف الأجهزة المربوطة بالدومين من خلال النقر على Servers أو Workstations
فيديو ملخص
المزايا والعيوب
المزايا :
- الواجهة الرسومية GUI بتساعدك تحصل على نظرة شاملة على بيئة الـ AD- البحث السريع عن الكائنات داخل الـ AD
- إذا كانت عندك صلاحيات كافية بتقدر تسوي تعديلات مباشرة على كائنات الـ AD مثل تغيير كلمة مرور مستخدم أو إضافة حساب لمجموعة معينة
العيوب:
- الواجهة الرسومية بتحتاج RDP للوصول للجهاز اللي بدنا ننفذ فيه المهمه- بالرغم من أن البحث عن كائنات معينة سريع إلا أن جمع الخصائص أو السمات على نطاق واسع بالـ AD ممكن ما يكون ممكن
كم عدد كائنات الكمبيوتر الموجودة في وحدة تنظيمية "الخوادم" (Servers OU)؟
2
كم عدد كائنات الكمبيوتر الموجودة في وحدة تنظيمية "محطات العمل" (Workstations OU)؟
1
كم عدد الأقسام (الوحدات التنظيمية) التي تتكون منها هذه المنظمة؟
7
كم عدد مستويات الإدارة (Admin tiers) التي تمتلكها هذه المنظمة؟
3
ما هو قيمة العلم (flag) المخزنة في خاصية الوصف (description) لحساب t0_tinus.green؟
THM{Enumerating.Via.MMC}
عمل Enumeration من خلال الـ CMD
أحياناً بنحتاج نسوي فحص سريع على الـ AD باستخدام الـ CMD
الطريقة هاي بتكون مفيدة لما ما يكون عندك وصول للنظام RDP أو إذا فريق الحمايه براقبو استخدام الـ PowerShell وتكون بدك تعمل فحص على AD باستخدام Remote Access Trojan اختصارها RAT ممكن تكون مفيدة إذا دمجت بعض الأوامر البسيطة بالـ phishing payload عشان تُحصل على معلومات مهمة تساعدك بتنفيذ الهجوم النهائي
الـ CMD عنده أمر مدمج بنقدر نستخدمه عشان نستخرج معلومات عن الـ AD الأمر هو net وهو يعتبر أداة مفيدة بنقدر من خلالها نستخرج معلومات عن الـ local system وعن الـ AD راح نحكي عن بعض الأشياء اللي بنقدر نستخرجها باستخدام هاد الأمر
ملاحظة: بالمهمه هاي لازم تستخدم THMJMP1 وما بتقدر تستخدم الـ Windows VM الخاص فيك
بعض الأشياء اللي بنقدر نستخرجها باستخدام الامر net :
1. المستخدمين (Users)
بتقدر تستخدم أمر net عشان تعرض كل المستخدمين بنطاق الـ AD باستخدام الخيار user :هذا الأمر بطلعلنا قائمة بكل حسابات المستخدمين بالـ AD هاي المعلومة ممكن تساعدنا نعرف حجم الـ domain اللي بنشتغل عليه ونخطط لهجمات لاحقة
وبامكاننا ايضا نعرض تفاصيل مستخدم محدد , بنستخدم نفس الامر مع اضافه اسم المستخدم
بهاي الطريقة بنقدر نعرف معلومات مثل وقت آخر مرة تغير فيها الباسورد إذا كان الحساب نشط أو لا ولمتى بستمر الحساب شغال...
ملاحظة : لو المستخدم عضو بعدد قليل من groups الـ AD بتقدر تشوف كل الـ groups اللي هو عضو فيها لكن إذا كان عضو بأكثر من 10 ـ groups غالباً الأمر ما رح يعرضهم كلهم
2. المجموعات (Groups)
بنقدر نستخدم أمر net عشان نعرض كل الـ groups اللي بالـ domain باستخدام الخيار groups :هاد بساعدنا نحدد الـ groups اللي ممكن نستهدفها عشان ننفذ هدف معين , بنقدر كمان نعرض تفاصيل أكثر عن group معين مثل الأعضاء اللي فيها :
3. سياسة كلمات المرور (Password Policy)
بنقدر نستخدم أمر net عشان نعرض سياسة كلمات المرور للـ domain باستخدام الخيار accounts :
هاي الطريقة بتعطينا معلومات مثل :
1. زمن تاريخ كلمات المرور المحفوظة
2. عدد المحاولات الخاطئة قبل ما يتسكر الحساب
3. أقل طول لكلمة المرور
4. عمر كلمة المرور الأقصى قبل ما تحتاج للتتغير
هاي المعلومات بتفيدنا لو حابين نخطط لهجمات مثل Password Spraying اللي هي محاولة تجربة كلمة مرور وحدة على عدة حسابات...
المميزات :
ما بتحتاج أي أدوات خارجية والأوامر هاي غالباً بتكون تحت المراقبة من فريق الأمنما تحتاج واجهة رسومية عشان تسوي الفحص
الأوامر هاي مدعومة بلغات البرمجة مثل VBScript واللغات اللي تستخدم في هجمات التصيّد
العيوب :
لازم تنفذ الأوامر من جهاز مرتبط بالنطاق (domain-joined)الأوامر ممكن ما تعرض كل المعلومات إذا المستخدم عضو بأكثر من 10 groups
بجانب مجموعة Domain Users، ما هي المجموعة الأخرى التي يعتبر aaron.harris عضوًا فيها؟
Internet Access
هل حساب الضيف (Guest) نشط؟
Nay
كم عدد الحسابات التي تكون عضوًا في مجموعة Tier 1 Admins ؟
7
ما هي مدة قفل الحساب في سياسة كلمات المرور الحالية بالدقائق؟
30
عمل Enumeration من خلال الـ PowerShell
الـ PowerShell هو النسخة المطورة من الـ Command Promptنزلته مايكروسوفت لأول مرة عام 2006
الفرق بين PowerShell والـ Command Prompt إنه الـ PowerShell بعطيك أدوات اسمها cmdlets (تنطق command-lets) وهاي الأدوات عبارة عن أكواد جاهزة بتقوم بوظائف محددة يعني مش بس بنكتب أوامر بسيطة زي اللي بالـ Command Prompt لا بنقدر نعمل اشياء معقدة اكثر باستخدام الـ cmdlets
تثبيت أدوات AD-RSAT
إذا كنت شغال على مهام زي Enumerating للـ AD لازم يكون عندك أدوات (AD-RSAT (Active Directory Remote Server Administration Tools ف هاي الأدوات بتتثبت مع الـ PowerShell وبتضيف أكتر من 50 cmdlets جاهزة وكل وحدة من هاي الأدوات بتخليك تسوي وظيفة محددة بالـ ADالانتقال من SSH لـ PowerShell
إذا كنت متصل عن طريق الـ SSH وبدك تحول لـ PowerShell كل اللي عليك تكتب الأمر : PowerShell1. استكشاف الـ Users بالـ AD
عشان نجيب معلومات عن المستخدمين بالـ AD بنستخدم أمر اسمه Get-ADUser مثلاً :
كود:
Get-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *
هنا، هذا الأمر برجع معلومات عن المستخدم اللي اسمه gordon.stevens من السيرفر اللي اسمه za.tryhackme.com وبإمكانك تحدد خصائص معينة تجيبها أو تجيب كل الخصائص باستخدام * Properties-
1-1. استكشاف الـ Users بالـ AD مع فلترة للنتائج
بإمكانك كمان تستخدم خيار Filter- لتحديد نتائج معينة من الـ Enum مثلا :
كود:
Get-ADUser -Filter 'Name -like "*stevens"' -Server za.tryhackme.com | Format-Table Name,SamAccountName -A
هذا الأمر برجعلنا كل المستخدمين اللي في بأسمائهم stevens وبعرضهم بشكل جدول مرتب
2. استكشاف الـ groups بالـ AD
إذا كنت بدك تجيب معلومات عن الـ groups مثل group الـ Administrators بتقدر تستخدم أمر Get-ADGroup :
كود:
Get-ADGroup -Identity Administrators -Server za.tryhackme.com
هاد الامر برجعلنا كل التفاصيل عن الـ group
2-1. استكشاف الـ Users اللي بالـ group
إذا بدك تشوف مين الأعضاء بـ group معين بنستخدم أمر Get-ADGroupMember :
كود:
Get-ADGroupMember -Identity Administrators -Server za.tryhackme.com
وهذا الأمر برجعلنا كل الأعضاء اللي موجودين داخل الـ group اللي اسمه Administrators
3. استكشاف الـ Objects بالـ AD
بنقدر كمان نسوي استكشاف شامل لأي Object داخل الـ AD باستخدام أمر Get-ADObject مثلاً إذا كنت بدك تشوف كل الـ Object اللي تغيرت بعد تاريخ معين :
كود:
$ChangeDate = New-Object DateTime(2022, 02, 28, 12, 00, 00)
Get-ADObject -Filter 'whenChanged -gt $ChangeDate' -includeDeletedObjects -Server za.tryhackme.com
هذا الأمر برجعلنا كل الـ Object اللي تم تعديلها بعد 28 فبراير 2022
لو بدنا نسوي هجوم Password Spraying وما بدنا يتسكرو الحسابات بنستخدم أمر Get-ADObject عشان نطلع الحسابات اللي عندها محاولات فاشلة (badPwdCount > 0) يعني بنشوف الحسابات اللي غلطوا بكتابة الباسورد أكثر من مرة وبنتجنب نجرب عليها.
بتستخدم الامر
كود:
Get-ADObject -Filter 'badPwdCount -gt 0' -Server za.tryhackme.com
هاي الطريقة بتضمنلنا إننا ما نقفل اي حساب بالغلط
4. استكشاف الـ Domains بالـ AD
عشان نجيب معلومات عن الدومين اللي شغال عليه بنستخدم أمر Get-ADDomain :
كود:
Get-ADDomain -Server za.tryhackme.com
هاد الامر برجعلنا كل التفاصيل عن الدومين اللي اسمه za.tryhackme.com
5. تعديل الـ Object بالـ AD
المميز بالـ PowerShell غير انه بتيحلنا نستكشف الـ Object لكن كمان بنقدر نعدل عليهابس هون احنا ركزنا على الاستكشاف بس
مثلاً بنقدر نغير باسورد مستخدم معين باستخدام أمر Set-ADAccountPassword :
كود:
Set-ADAccountPassword -Identity gordon.stevens -Server za.tryhackme.com -OldPassword (ConvertTo-SecureString -AsPlaintext "old" -force) -NewPassword (ConvertTo-SecureString -AsPlainText "new" -Force)
6. المميزات والعيوب
المميزات :
الـ PowerShell برجعلنا معلومات أكتر بكتير من الـ Command Promptبامكاننا نحدد السيرفر والدومين لتنفيذ الأوامر
بنقدر نكتب أوامر مخصصة ( cmdlets ) حسب احتياجاتنا
بامكاننا نعدل مباشرة على Object الـ AD مثل إعادة تعيين الباسوردات
العيوب :
الـ PowerShell بكون مراقب أكتر من قبل فرق الأمان الـ blue teams مقارنة بالـ Command Promptلازم نثبت أدوات الـ AD-RSAT أو نستخدم سكربتات ممكن تكون مكشوفة عشان نستكشف باستخدام الـ PowerShell
ما هي قيمة الـ Title لـ بيث نولان (beth.nolan) ؟
Senior
كود:
Get-ADUser -Identity beth.nolan -Server za.tryhackme.com -Properties Title
ما هي قيمة الـ DistinguishedName لـ انيتي مانينق (annette.manning) ؟
CN=annette.manning,OU=Marketing,OU=People,DC=za,DC=tryhackme,DC=com
كود:
Get-ADUser -Identity annette.manning -Server za.tryhackme.com -Properties DistinguishedName
متى تم إنشاء مجموعة المسؤولين من المستوى 2؟
2/24/2022 10:04:41 PM
كود:
Get-ADGroup -Identity "Tier 2 Admins" -Server za.tryhackme.com -Properties whenCreated
ما هي قيمة SID لمجموعة Enterprise Admins؟
S-1-5-21-3330634377-1326264276-632209373-519
كود:
Get-ADGroup -Identity "Enterprise Admins" -Server za.tryhackme.com -Properties SID
ما هي ال container المستخدمة لتخزين كائنات AD المحذوفة؟
Deleted Objects,DC=za,DC=tryhackme,DC=com
كود:
Get-ADDomain -Server za.tryhackme.com | Select-Object DeletedObjectsContainer
عمل Enumeration من خلال الـ Bloodhound
الـ Bloodhound هي أداة قوية جدًا تستخدم للتعرف على بيئة الـ AD , الأداة أول ما نزلت سنة 2016 غيرت مجال الـ Enum على الـ AD بشكل جذريبتقدرو تشوفو شرح ALSLLM
B
[ شرح ] الموضوع 'أداة Bloodhound'
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
ما هي أداة Bloodhound؟
هي أداة مفتوحة المصدر مصممة لتحليل بيئات Active directory في الشبكات بهدف اكتشاف الثغرات التي قد يستغلها المهاجم
للوصول إلى أهداف حساسة. تعتمد على مبدأ هجوم Trust Relationship Attack حيث تركز على كشف المسارات غير المتوقعة التي تسمح بتصعيد الصلاحيات من حساب عادي إلى حساب ذات صلاحيات عالية
السلام عليكم ورحمة الله وبركاته
ما هي أداة Bloodhound؟
هي أداة مفتوحة المصدر مصممة لتحليل بيئات Active directory في الشبكات بهدف اكتشاف الثغرات التي قد يستغلها المهاجم

كيف تعمل Bloodhound؟
تعمل الأداة عبر ثلاث مراحل رئيسية:
1- جمع البيانات...
1- جمع البيانات...
- Block user
- active directory bloodhound
- الردود: 4
- المنتدى: ركن الأدوات [ Cyber security Tools ]
تاريخ Bloodhound
الـ red teamers و المهاجمين كان الهم الأفضلية لدرجة إنه مايكروسوفت ضافت نسختها الخاصة من الـ Bloodhound بنظام الحماية تبعها والسبب بنجاح الـ Bloodhound هي الفكرة اللي بتحكي :"المدافعين بفكروا في قوائم، والمهاجمين بفكروا في رسوم بيانية."
الفكرة هون من الـ Bloodhound انه بتيح للمهاجمين يشوفوا بيئة الـ AD كرسومات بيانية ( كل نقطة بالرسم البياني ممكن تكون طريق يستغلوه للوصول لهدف معين ) بينما الـ Blue Team كانوا بستخدموا قوائم مثل قائمة بالادمن المسؤولين عن الـ Domain أو قائمة بكل الأجهزة اللي بالشبكة
الـ Sharphound
في ناس بتخلط بين Sharphound و Bloodhound بس مش نفس الاشي
الـ Sharphound هو الأداة اللي بتجمع المعلومات وبعدها الـ Bloodhound هو اللي بعرضها بشكل رسوم بيانية يعني ببساطة بنستخدم Sharphound أول اشي عشان نجمع بيانات وبعدين بنعرضها باستخدام الـ Bloodhound
فيه ثلاث إصدارات من الـ Sharphound :
Sharphound.ps1 - سكريبت PowerShell
Sharphound.exe - ملف تنفيذي لويندوز
AzureHound.ps1 - سكريبت PowerShell بشتغل على Azure (الخدمات السحابية من مايكروسوفت)
لما بنستخدم هاي الأدوات بهجمة ممكن تكتشف كملفات ضارة من قبل الـ Blue Team هون بنقدر نستخدم جهاز ويندوز خارج الدومين ( non-domain-joined ) عشان نقلل من فرصة الاكتشاف
تشغيل Sharphound
لما نشغل الـ Sharphound في بعض الاوامر اللي بنستخدمها معها :
كود:
Sharphound.exe --CollectionMethods <Methods> --Domain za.tryhackme.com --ExcludeDCs
الـ CollectionMethods - هون بتحدد شو نوع البيانات اللي بدك تجمعها ( الأكثر استخدامًا هو Default أو All )
الـ Domain - بتحدد الدومين اللي بدك تجمع منه البيانات
الـ ExcludeDCs - بتستخدمها عشان ما تلمس الـ Domain Controllers وتقلل من فرصة الاكتشاف
شرح استخدام Sharphound
بإمكانك تشوف كل اوامر Sharphound من هون
بنستخدم الحساب اللي الـ SSH التي أنشأناه قبل شوي , بننسخ ملف الـ Sharphound لمجلد الـ Documents على حساب المستخدم تاعنا الـ AD :
كود:
copy C:\Tools\Sharphound.exe ~\Documents\
cd ~\Documents\
بعدها بنشغل الـ Sharphound عشان نجمع بيانات باستخدام طرق الجمع All والـ Session عن طريق الامر :
كود:
SharpHound.exe --CollectionMethods All --Domain za.tryhackme.com --ExcludeDCs
بستغرق الـ Sharphound حوالي دقيقة لعمل الـ Enum لكن لو كانت المنظمه الو المجال كبير بوخذو وقت اطول
بعد ما ينتهي بنلاقي ملف ZIP بنفس المجلد الذي نفذنا فيه امر الـ Sharphound
بنتحقق من الملف :
شرح استخدام BloodHound لتحليل بيئة AD
زي ما حكينا قبل الـ BloodHound هو الواجهة الرسومية اللي بتتيحلنا نمثل البيانات التي جمعناها عن طريق الـ Sharphound ونصورها بمسارات هجوم
بنشغل Neo4j : هو نظام إدارة قواعد البيانات الرسومية
الـ BloodHound بستخدم الـ Neo4j كقاعدة بيانات ونظام رسم بياني , عشان نشغل الـ Neo4j بنستخدم الأمر :
إذا كنت بتستخدم الـ AttackBox بأمكانك بنستخدم رمز BloodHound الأحمر بالـ Dock عشان نشغله
بالحالات الثانيه تأكد من تثبيت BloodHound و Neo4j وتكوينه على جهازنا المهاجم
قبل ما نبدأ بتشغيل الـ BloodHound بنحتاج نحمل ونشغل الـ Neo4j :
كود:
neo4j console
بتظهرلنا المعلومات التاليه
بتيرمينال ثانيه بنشغل امر bloodhound --no-sandbox بعرضلنا واجهة تسجيل الدخول :
بتكون البيانات الافتراضية لقاعدة بيانات الـ Neo4j هي neo4j:neo4j بنستخدم هاي البيانات عشان نسجل دخول للـ BloodHound
بلزم نغير كلمه السر ف بنغيرها
بعدها بنسجل دخول بتطلعلنا واجهه
عشان نشوف نتائجنا بنحتاج نسحب ملف الـ ZIP من الـ Windows
أسهل طريقة هي نستخدم أمر SCP :طبعا بالتحدي هو اعطانا الملف المظغوط رابطه تحت
كود:
scp [email protected]:C:/Users/andrea.mitchell/Documents/20240817104210_BloodHound.zip .
بنسحب الملفات من الـ ZIP وبنفلته على واجهة الـ BloodHound لاستيراده , بظهر أنه بستخرج الملفات ( طبعا بالتحدي هو اعطانا الملف المظغوط ) وهاد هو رابطه
بمجرد ما يسترد كل ملفات الـ JSON بإمكاننا نبدا نستخدم الـ BloodHound عشان نكتشف مسارات الهجوم لـ Domain معين
في عده ( مسار هجوم ) بعرضها الـ BloodHound عند الضغط على الثلاثة خطوط بجانب Search for a node بظهرلنا الخيارات أول واجهه بتعرضلنا المعلومات المتعلقة بالاستيرادات الحالية
لاحظ أنه إذا قمت باستيراد تشغيل جديد لـ BloodHound ، بزيد على هاي الأعداد بشكل تراكمي
بعد ما يخلص تنزيل بنلاحظ الاعداد هاي
اذا ما كانت ظاهره بننزل تحت وبنكبس على Refresh Database Stats
1. اول اشي بنشوف الواجهه الـ Node Info
بطلعلنا معلومات كثيره عنه
المعلومات على شكل اقسام وهي كل قسم مع اهم اشي داخله :
قسم الـ Overview : بوفر معلومات ملخصة مثل عدد الجلسات النشطة اللي بمتلكها الحساب وإذا كان بإمكانه يوصل لأهداف ذات قيمة عالية
قسم الـ Node Properties : بعرض معلومات عن حساب الـ AD مثل الاسم المعروض والعنوان...
قسم الـ Extra Properties : بوفر معلومات أكثر تفصيل عن الـ AD مثل الاسم المميز وتاريخ إنشاء الحساب
قسم الـ Group Membership : بعرض معلومات عن المجموعات اللي بنتميلها الحساب
قسم الـ Local Admin Rights : بوفر معلومات عن الأجهزة المنضمة للـ domain اللي بمتلك الحساب فيها صلاحيات إدارية
قسم الـ Execution Rights : بوفر معلومات عن الصلاحيات الخاصة مثل القدرة على الاتصال عن بعد بالـ RDP لجهاز معين
قسم الـ Outbound Control Rights : يعرض معلومات حول كائنات AD التي يمتلك هذا الحساب صلاحيات لتعديل سماتها.
قسم الـ Inbound Control Rights : يوفر معلومات حول كائنات AD التي يمكن تعديل سمات هذا الحساب.
إذا بدك المعلومات بطريقه اوضح بنكبس على الرقم جمب اسم المعلومه بقسم معين
2. ثاني اشي بنشوف واجهه الـ Analysis
بنشوف قسم Domain Information
بإمكاننا نشغل استعلام Find all Domain Admins , بإمكاننا نظغط على LeftCtrl عشان نغير إعدادات عرض التسمية
مثل
قبل
النقاط ( الرموز ) تسمى nodes والخطوط تسمى edges
طيب نتعمق شوي
في حساب AD باسم المستخدم T0_TINUS.GREEN وهو عضو بمجموعة Tier 0 ADMINS لكن هاي المجموعة هي مجموعة ضمن مجموعة DOMAIN ADMINS يعني كل المستخدمين اللي هما جزء من مجموعة Tier 0 ADMINS هما فعليا Domain Admins
كيف لما نحكي عن الوراثه بالبرمجه ( نفس الفكره )
صوره بتوضح
وفي حساب AD باسم المستخدم ADMINISTRATOR اللي هو جزء من مجموعة الـ DOMAIN ADMINS
وبالتالي عننا حسابين بإمكاننا نحاول نخترقهم اذا بدنا نحصل على صلاحيات الـ Domain Admin نظرًا لأنه حساب الـ ADMINISTRATOR هو حساب built-in account بنركز على حساب المستخدم
كل object حكينا عنو قبل ممكن يكون node بالـ BloodHound وكل واحد منهم بكون اله رمز مختلف بوضح نوع الـ object
إذا بدنا نصيغ مسار للهجوم بنحتاج نشوف كل الـ edges اللي بين المكان اللي احنا فيه والصلاحيات اللي عننا والمكان اللي بدنا نوصله
بحتوي الـ BloodHound على edges مختلفه بإمكاننا نوصللها من خلال الـ filter :
تُحدث الـ edges باستمرار مع اكتشاف مسارات هجوم جديدة
طبعا بننظر للـ edges بطريقه مختلفه ك مختبري اختبارق ببنضر بنظره اننا نستغل هاي الـ edges المختلفة بالشبكة
بنشوف أبسط مسار هجوم باستخدام الـ edges الافتراضية وبعض edges الخاصة , بنشغل بحث بالـ BloodHound لاستكشاف مسار الهجوم بنظغط على رمز المسار للسماح بالبحث بالمسار
بتكون الـ node الأساسية عننا هي اسم مستخدم الـ AD الخاص فينا والـ node النهائية بنحطها مجموعة Tier 1 ADMINS لأنه هي المجموعة اللي بتمتلك صلاحيات إدارية على الخوادم
إذا لم يكن هناك مسار هجوم متاح باستخدام عوامل تصفية الـ edges المحددة بعرض BloodHound No Results Found
اوضح اشي بصير
بتم تقسيم الأنظمة والحسابات لمستويات أو طبقات Tiers مثلا :
الـ T1 اللي هي Tier 1 : بتخص الحسابات والأنظمة الأكثر أهمية مثل الـ SERVER's
الـ T2 اللي هي Tier 2 : بتخص الحسابات والأنظمة الأقل أهمية
الـ T3 اللي هي Tier 3 : بتخص أجهزة المستخدمين العادية مثل أجهزة الكمبيوتر المكتبية
بعرضلنا الـ BloodHound مسار هجوم بظهر أنه أحد حسابات الـ T1 ADMINS استخدم بيانات اعتماده لتسجيل الدخول لـ THMJMP1 الي هو workstation
حسابنا اللي هو باسم ANDRE اللي على الشمال هو جزء من مجموعة DOMAIN USERS يعني عنده كل الصلاحيات اللي مع المجموعه (حكينا فوق زي الوراثه بالبرمجه)
بنستخدم بيانات اعتماد الـ AD الخاصة فينا عشان نتصل بالـ RDP لجهاز الـ THMJMP1
بنبحث عن اي طريقه ممكن نعمل من خلالها privilege escalation وتوصلنا لصلاحيات إداريه
باستخدام الوصول الإداري بإمكاننا نستخدم تقنيات جمع البيانات مثل Mimikatz
نظرًا لأنه الـ T1 Admin له جلسه نشطة على الـ THMJMP1 فـ بيانات الاعتماد عننا بمنحنا الهاش ( NTLM ) للحساب اللي مرتبط
هاد مثال بسيط بالظروف العادية لانه ممكن تكون مسارات الهجوم معقدة وبتحتاج عدة خطوات حتى نوصل للهدف النهائي
إذا كنت مهتم بالثغرات المرتبطة بكل جزء فـ وثائق Bloodhound بتوفر دليل ممتاز
Bloodhound هي أداة قوية جداً للـ AD Enum وبوفر رؤية معمقة لبنية الـ AD للهجوم
بنية الـ AD ما بتتغير كثير بالمؤسسات الكبيرة ممكن يكون في موظفين جداد لكن البنية العامة للوحدات التنظيمية ( OUs ) والمجموعات والمستخدمين والصلاحيات بتكون ثابتة
لكن اللي بتغير باستمرار هي جلسات العمل النشطة و أحداث تسجيل الدخول
بما أن الـ Sharphound بعمل لقطة لهيكل الـ AD بوقت معين بيانات الجلسة النشطة ما بتكون دايماً دقيقة لأنه بعض المستخدمين ممكن يكونوا طلعو من جلساتهم أو مستخدمين جدد عملو جلسات جديدة هاد اشي أساسي لازم ننتبهله وعشان هيك لازم ننفذ الـ Sharphound على فترات منتظمة
طريقة جيدة هي تنفيذ الـ Sharphound باستخدام All ببداية الفحص وبعدها بننفذ Sharphound مرتين باليوم على الأقل باستخدام Session هاد بزودنا ببيانات جلسة جديدة وبضمن أنه العمليات تكون أسرع لأنها ما بتعمل Enum على بنية الـ AD بالكامل مرة ثانية , أفضل وقت لتنفيذ هاي الجلسات هو حوالي الساعة 10:00 لما المستخدمين بشربوا قهوتهم الأولى وببدو العمل (



بتقدر تمسح بيانات الجلسة القديمة بالـ Bloodhound من خلال واجهه الـ Database Info بالضغط على Clear Session Information بنعملها قبل ما نستورد اي البيانات من عمليات Sharphound الجديدة
الفوائد
بقدم واجهة رسومية للـ AD Enum
عنده القدرة على إظهار مسارات الهجوم للمعلومات المعددة بالـ AD
بيقدم رؤيه أعمق بالـ AD Object اللي عادة بتحتاج عدة استعلامات يدوية عشان نوصللها
العيوب
بتطلب تشغيل الـ Sharphound اللي بكون مزعج وغالباً يتم اكتشافه من قبل الـ AV أو الـ EDR
ما هو الأمر الذي يمكن استخدامه لتشغيل Sharphound.exe وطلب استرداد معلومات الجلسات فقط من النطاق za.tryhackme.com دون التأثير على المتحكمات بالنطاق؟
Sharphound.exe --CollectionMethods Session --Domain za.tryhackme.com --ExcludeDCs
سبق وشرحنا الامر فوق
بجانب حساب krbtgt كم عدد الحسابات الأخرى التي يمكن استهدافها باستخدام تقنية Kerberoasting؟
4
كم عدد الأجهزة التي يمتلك أعضاء مجموعة Tier 1 Admins صلاحيات إدارية عليها؟
2
بنبحث عن المجموعه من فوق
كم عدد المستخدمين الذين هم أعضاء في مجموعة Tier 2 Admins؟
15
بنبحث عن المجموعه من فوق
فحص الـ Active Directory ضروري عشان نفهم بنية الدومين ونحدد مسارات الهجوم عشان نرفع الصلاحيات أو للـ lateral movement اللي راح يكون موضوعنا
بعض تقنيات إضافية للفحص :
فحص الـ LDAP : بنستخدم بيانات اعتماد صحيحة للتواصل مع واجهة LDAP على الـ Domain Controller لفحص معلومات AD object بالدومين
فحص الـ PowerView : سكربت ضمن مشروع PowerSploit مفيد لفحص الـ AD object شبه يدوي
فحص الـ Windows Management Instrumentation (WMI) : بإمكاننا نستخدمه من خلال الـ PowerShell لفحص الـ AD عن طريق الـ provider متوفر بـ root\directory\ldap
التخفيف من المخاطر :
رصد أحداث الـ LogOn : التقنيات مثل Sharphound بتولد أحداث LogOn كثيرة وبإمكاننا نكتب قواعد عشان نرصدها إذا كانت من حسابات الغير مصرح بها
قواعد كشف للتوقيعات : كتابة قواعد لكشف الأدوات المستخدمة في فحص الـ AD
مراقبة Command Prompt وPowerShell : لمراقبة أي محاولات غير مصرح بها لفحص الـ AD
الخطوة اللي بعد هاي بننتقل لرفع الصلاحيات والـ lateral movement للوصول لمواقع مناسبة للهجمات...
الى هنا انتهينا


المرفقات
-
1723277947997.webp3.7 KB · المشاهدات: 113
-
1723711044508.webp61.1 KB · المشاهدات: 111
-
1723711146704.webp19.5 KB · المشاهدات: 110
-
1723716282311.webp36.8 KB · المشاهدات: 110
-
1723716742451.webp37.9 KB · المشاهدات: 116
-
1723922684750.webp97.8 KB · المشاهدات: 109
-
1723924944296.webp176.3 KB · المشاهدات: 111
-
1723925775273.webp176.3 KB · المشاهدات: 110
-
1723925855366.webp14.6 KB · المشاهدات: 116
-
1723925984088.webp18 KB · المشاهدات: 112
-
1723926230081.webp11.5 KB · المشاهدات: 114
-
1723926266944.webp16.6 KB · المشاهدات: 111
-
1723939346695.webp135.7 KB · المشاهدات: 110
-
1724012864010.webp120.3 KB · المشاهدات: 109
-
1724053342523.webp5.8 KB · المشاهدات: 112
-
1724053369328.webp14.6 KB · المشاهدات: 110
-
bh-session-inject-1654672411088 (2).zip124.9 KB · المشاهدات: 348
-
1724058071724.webp17 KB · المشاهدات: 114
-
download (4).webp13.9 KB · المشاهدات: 112
-
1724058156453.webp50.3 KB · المشاهدات: 110
-
1724070575967.webp6.7 KB · المشاهدات: 108
-
1724070621652.webp8.9 KB · المشاهدات: 130
التعديل الأخير: