مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

[ WalkTh ] كيف نعمل Enumeration للـ Active Directory بالتفصيل الجزء الثاني | Enumerating Active Directory

3b0-0d3b0-0d is verified member.

{ || مشرف قسم CTF || }
.:: طاقم المشرفين ::.

السمعة:

aab8209b616e6e146df6ceaf7bda48d5.png

راح نركز على الامور هاي بهاد الروم

1. ليش بنعمل Enumeration
2. حقن بيانات الدخول Credential Injection
3. عمل Enumeration من خلال الـ MMC
4. عمل Enumeration من خلال الـ CMD
4. عمل Enumeration من خلال الـ PowerShell
5. عمل Enumeration من خلال الـ Bloodhound







ليش بنعمل Enumeration



أول ما نحصل على Active Directory credentials وبنقدر نتحقق منها على الشبكة هاد الاشي بفتحلنا عالم جديد من الصلاحيات! بنقدر نبدأ نعمل enum عن تفاصيل مثل إعداد وهيكل الـ Active Directory مع وصول كامل معمول ( authenticate ) حتى لو كان وصول بصلاحيات منخفضة ( low-privileged )

خلال مشاركتنا باختبارات الاختراق red team بنقدر غالبًا نرفع صلاحياتنا أو ( lateral movement ) عشان نوصل لصلاحيات ونقدر نحقق أهدافنا

بأغلب الحالات الـ enumeration والـ exploitation بكونوا مترابطين او متشابكين بشكل كبير بعد ما نعمل exploit لمسار الهجوم اللي بينه الـ enum بنعمل enum مرة ثانية من هاد الـ privileged position زي ما هو موضح بالرسم البياني


ddd4bddb2db2285c3e42eef4c35b6211.png

عشان نتصل بالشبكه ... إذا كنت بتستخدم الـ 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 اللي ممكن نستخدمها للوصول الأولي

1723277888193.webp

هاي المجموعة من البيانات رح توفرلنا وصول RDP و SSH لـ THMJMP1.za.tryhackme.com

1723277961163.webp


1723278082235.webp



هاي الـ 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
لو طلع صح المفروض بعطينا الـ IP الخاص بالدومين

الـ 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

1723672473262.webp

الـ 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 :

1723717153601.webp

هذا الأمر بطلعلنا قائمة بكل حسابات المستخدمين بالـ AD هاي المعلومة ممكن تساعدنا نعرف حجم الـ domain اللي بنشتغل عليه ونخطط لهجمات لاحقة

وبامكاننا ايضا نعرض تفاصيل مستخدم محدد , بنستخدم نفس الامر مع اضافه اسم المستخدم


1723717209462.webp


بهاي الطريقة بنقدر نعرف معلومات مثل وقت آخر مرة تغير فيها الباسورد إذا كان الحساب نشط أو لا ولمتى بستمر الحساب شغال...
ملاحظة : لو المستخدم عضو بعدد قليل من groups الـ AD بتقدر تشوف كل الـ groups اللي هو عضو فيها لكن إذا كان عضو بأكثر من 10 ـ groups غالباً الأمر ما رح يعرضهم كلهم


2. المجموعات (Groups)

بنقدر نستخدم أمر net عشان نعرض كل الـ groups اللي بالـ domain باستخدام الخيار groups :

1723717089797.webp

هاد بساعدنا نحدد الـ groups اللي ممكن نستهدفها عشان ننفذ هدف معين , بنقدر كمان نعرض تفاصيل أكثر عن group معين مثل الأعضاء اللي فيها :


1723717411201.webp

3. سياسة كلمات المرور (Password Policy)


بنقدر نستخدم أمر net عشان نعرض سياسة كلمات المرور للـ domain باستخدام الخيار accounts :

1723721476485.webp


هاي الطريقة بتعطينا معلومات مثل :
1. زمن تاريخ كلمات المرور المحفوظة
2. عدد المحاولات الخاطئة قبل ما يتسكر الحساب
3. أقل طول لكلمة المرور
4. عمر كلمة المرور الأقصى قبل ما تحتاج للتتغير

هاي المعلومات بتفيدنا لو حابين نخطط لهجمات مثل Password Spraying اللي هي محاولة تجربة كلمة مرور وحدة على عدة حسابات...

المميزات :

ما بتحتاج أي أدوات خارجية والأوامر هاي غالباً بتكون تحت المراقبة من فريق الأمن
ما تحتاج واجهة رسومية عشان تسوي الفحص
الأوامر هاي مدعومة بلغات البرمجة مثل VBScript واللغات اللي تستخدم في هجمات التصيّد

العيوب :

لازم تنفذ الأوامر من جهاز مرتبط بالنطاق (domain-joined)
الأوامر ممكن ما تعرض كل المعلومات إذا المستخدم عضو بأكثر من 10 groups


1723721847977.webp
بجانب مجموعة Domain Users، ما هي المجموعة الأخرى التي يعتبر aaron.harris عضوًا فيها؟
Internet Access
1723721895499.webp

هل حساب الضيف (Guest) نشط؟
Nay

1723721972749.webp

كم عدد الحسابات التي تكون عضوًا في مجموعة Tier 1 Admins ؟
7
1723722144275.webp

ما هي مدة قفل الحساب في سياسة كلمات المرور الحالية بالدقائق؟
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 كل اللي عليك تكتب الأمر : PowerShell


1. استكشاف الـ Users بالـ AD

عشان نجيب معلومات عن المستخدمين بالـ AD بنستخدم أمر اسمه Get-ADUser مثلاً :

كود:
Get-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *

1723733002786.webp

هنا، هذا الأمر برجع معلومات عن المستخدم اللي اسمه 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

1723735830345.webp


هذا الأمر برجعلنا كل المستخدمين اللي في بأسمائهم stevens وبعرضهم بشكل جدول مرتب


2. استكشاف الـ groups بالـ AD

إذا كنت بدك تجيب معلومات عن الـ groups مثل group الـ Administrators بتقدر تستخدم أمر Get-ADGroup :

كود:
Get-ADGroup -Identity Administrators -Server za.tryhackme.com

1723736077752.webp


هاد الامر برجعلنا كل التفاصيل عن الـ group

2-1. استكشاف الـ Users اللي بالـ group

إذا بدك تشوف مين الأعضاء بـ group معين بنستخدم أمر Get-ADGroupMember :
كود:
Get-ADGroupMember -Identity Administrators -Server za.tryhackme.com

1723736221156.webp


وهذا الأمر برجعلنا كل الأعضاء اللي موجودين داخل الـ 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

1723738071450.webp


هذا الأمر برجعلنا كل الـ Object اللي تم تعديلها بعد 28 فبراير 2022


لو بدنا نسوي هجوم Password Spraying وما بدنا يتسكرو الحسابات بنستخدم أمر Get-ADObject عشان نطلع الحسابات اللي عندها محاولات فاشلة (badPwdCount > 0) يعني بنشوف الحسابات اللي غلطوا بكتابة الباسورد أكثر من مرة وبنتجنب نجرب عليها.

بتستخدم الامر


كود:
Get-ADObject -Filter 'badPwdCount -gt 0' -Server za.tryhackme.com

1723739541690.webp

هاي الطريقة بتضمنلنا إننا ما نقفل اي حساب بالغلط


4. استكشاف الـ Domains بالـ AD

عشان نجيب معلومات عن الدومين اللي شغال عليه بنستخدم أمر Get-ADDomain :

كود:
Get-ADDomain -Server za.tryhackme.com

1723739761776.webp


هاد الامر برجعلنا كل التفاصيل عن الدومين اللي اسمه 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

1723740365416.webp




ما هي قيمة الـ 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

1723740592341.webp



متى تم إنشاء مجموعة المسؤولين من المستوى 2؟
2/24/2022 10:04:41 PM

كود:
Get-ADGroup -Identity "Tier 2 Admins" -Server za.tryhackme.com -Properties whenCreated


1723740680586.webp




ما هي قيمة SID لمجموعة Enterprise Admins؟
S-1-5-21-3330634377-1326264276-632209373-519

كود:
 Get-ADGroup -Identity "Enterprise Admins" -Server za.tryhackme.com -Properties SID


1723746879798.webp




ما هي ال container المستخدمة لتخزين كائنات AD المحذوفة؟
Deleted Objects,DC=za,DC=tryhackme,DC=com

كود:
Get-ADDomain -Server za.tryhackme.com | Select-Object DeletedObjectsContainer

1723749715430.webp






عمل Enumeration من خلال الـ Bloodhound

الـ Bloodhound هي أداة قوية جدًا تستخدم للتعرف على بيئة الـ AD , الأداة أول ما نزلت سنة 2016 غيرت مجال الـ Enum على الـ AD بشكل جذري

بتقدرو تشوفو شرح ALSLLM


تاريخ 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\


1723887030126.webp


بعدها بنشغل الـ Sharphound عشان نجمع بيانات باستخدام طرق الجمع All والـ Session عن طريق الامر :
كود:
SharpHound.exe --CollectionMethods All --Domain za.tryhackme.com --ExcludeDCs


1723887825465.webp



بستغرق الـ Sharphound حوالي دقيقة لعمل الـ Enum لكن لو كانت المنظمه الو المجال كبير بوخذو وقت اطول
بعد ما ينتهي بنلاقي ملف ZIP بنفس المجلد الذي نفذنا فيه امر الـ Sharphound

بنتحقق من الملف :


1723888290431.webp





شرح استخدام BloodHound لتحليل بيئة AD


زي ما حكينا قبل الـ BloodHound هو الواجهة الرسومية اللي بتتيحلنا نمثل البيانات التي جمعناها عن طريق الـ Sharphound ونصورها بمسارات هجوم

بنشغل Neo4j : هو نظام إدارة قواعد البيانات الرسومية
الـ BloodHound بستخدم الـ Neo4j كقاعدة بيانات ونظام رسم بياني , عشان نشغل الـ Neo4j بنستخدم الأمر :

إذا كنت بتستخدم الـ AttackBox بأمكانك بنستخدم رمز BloodHound الأحمر بالـ Dock عشان نشغله

بالحالات الثانيه تأكد من تثبيت BloodHound و Neo4j وتكوينه على جهازنا المهاجم
قبل ما نبدأ بتشغيل الـ BloodHound بنحتاج نحمل ونشغل الـ Neo4j :


كود:
neo4j console

بتظهرلنا المعلومات التاليه

1723899279625.webp


بتيرمينال ثانيه بنشغل امر bloodhound --no-sandbox بعرضلنا واجهة تسجيل الدخول :


1723899438768.webp

بتكون البيانات الافتراضية لقاعدة بيانات الـ Neo4j هي neo4j:neo4j بنستخدم هاي البيانات عشان نسجل دخول للـ BloodHound

1723901439669.webp


بلزم نغير كلمه السر ف بنغيرها

1723901460222.webp

بعدها بنسجل دخول بتطلعلنا واجهه

1723925855366.webp


عشان نشوف نتائجنا بنحتاج نسحب ملف الـ ZIP من الـ Windows
أسهل طريقة هي نستخدم أمر SCP :طبعا بالتحدي هو اعطانا الملف المظغوط رابطه تحت

كود:
scp [email protected]:C:/Users/andrea.mitchell/Documents/20240817104210_BloodHound.zip .


1723939357670.webp


بنسحب الملفات من الـ ZIP وبنفلته على واجهة الـ BloodHound لاستيراده , بظهر أنه بستخرج الملفات ( طبعا بالتحدي هو اعطانا الملف المظغوط ) وهاد هو رابطه


بمجرد ما يسترد كل ملفات الـ JSON بإمكاننا نبدا نستخدم الـ BloodHound عشان نكتشف مسارات الهجوم لـ Domain معين

في عده ( مسار هجوم ) بعرضها الـ BloodHound عند الضغط على الثلاثة خطوط بجانب Search for a node بظهرلنا الخيارات أول واجهه بتعرضلنا المعلومات المتعلقة بالاستيرادات الحالية


1724051510647.webp

لاحظ أنه إذا قمت باستيراد تشغيل جديد لـ BloodHound ، بزيد على هاي الأعداد بشكل تراكمي


بعد ما يخلص تنزيل بنلاحظ الاعداد هاي


1724051523927.webp

اذا ما كانت ظاهره بننزل تحت وبنكبس على Refresh Database Stats
1724051752507.webp




1. اول اشي بنشوف الواجهه الـ Node Info


بنبحث عن الحساب اللي سجلنا فيه ( الـ AD ) بندور بالـ BloodHound اللي عاليسار
1724051554506.webp


بطلعلنا معلومات كثيره عنه

1724051847965.webp

المعلومات على شكل اقسام وهي كل قسم مع اهم اشي داخله :

قسم الـ Overview : بوفر معلومات ملخصة مثل عدد الجلسات النشطة اللي بمتلكها الحساب وإذا كان بإمكانه يوصل لأهداف ذات قيمة عالية


1724051999447.webp


قسم الـ Node Properties : بعرض معلومات عن حساب الـ AD مثل الاسم المعروض والعنوان...

1724052052995.webp

1724052070344.webp


قسم الـ Extra Properties : بوفر معلومات أكثر تفصيل عن الـ AD مثل الاسم المميز وتاريخ إنشاء الحساب

1724052182684.webp


قسم الـ Group Membership : بعرض معلومات عن المجموعات اللي بنتميلها الحساب

1724052215064.webp


قسم الـ Local Admin Rights : بوفر معلومات عن الأجهزة المنضمة للـ domain اللي بمتلك الحساب فيها صلاحيات إدارية

1724052354614.webp


قسم الـ Execution Rights : بوفر معلومات عن الصلاحيات الخاصة مثل القدرة على الاتصال عن بعد بالـ RDP لجهاز معين

1724052456458.webp


قسم الـ Outbound Control Rights : يعرض معلومات حول كائنات AD التي يمتلك هذا الحساب صلاحيات لتعديل سماتها.

1724052472225.webp


قسم الـ Inbound Control Rights : يوفر معلومات حول كائنات AD التي يمكن تعديل سمات هذا الحساب.

1724052496373.webp


إذا بدك المعلومات بطريقه اوضح بنكبس على الرقم جمب اسم المعلومه بقسم معين



2. ثاني اشي بنشوف واجهه الـ Analysis

1724053271951.webp

بنشوف قسم Domain Information

1724053288464.webp


بإمكاننا نشغل استعلام Find all Domain Admins , بإمكاننا نظغط على LeftCtrl عشان نغير إعدادات عرض التسمية

مثل

قبل
1724053536145.webp
بعد
1724053587581.webp



النقاط ( الرموز ) تسمى nodes والخطوط تسمى edges

طيب نتعمق شوي

في حساب AD باسم المستخدم T0_TINUS.GREEN وهو عضو بمجموعة Tier 0 ADMINS لكن هاي المجموعة هي مجموعة ضمن مجموعة DOMAIN ADMINS يعني كل المستخدمين اللي هما جزء من مجموعة Tier 0 ADMINS هما فعليا Domain Admins

كيف لما نحكي عن الوراثه بالبرمجه ( نفس الفكره )

صوره بتوضح

Screenshot 2024-08-19 110345.webp

وفي حساب AD باسم المستخدم ADMINISTRATOR اللي هو جزء من مجموعة الـ DOMAIN ADMINS
وبالتالي عننا حسابين بإمكاننا نحاول نخترقهم اذا بدنا نحصل على صلاحيات الـ Domain Admin نظرًا لأنه حساب الـ ADMINISTRATOR هو حساب built-in account بنركز على حساب المستخدم

1724056908698.webp



كل object حكينا عنو قبل ممكن يكون node بالـ BloodHound وكل واحد منهم بكون اله رمز مختلف بوضح نوع الـ object

إذا بدنا نصيغ مسار للهجوم بنحتاج نشوف كل الـ edges اللي بين المكان اللي احنا فيه والصلاحيات اللي عننا والمكان اللي بدنا نوصله

بحتوي الـ BloodHound على edges مختلفه بإمكاننا نوصللها من خلال الـ filter :
1724057399214.webp


1724057389730.webp

تُحدث الـ edges باستمرار مع اكتشاف مسارات هجوم جديدة

طبعا بننظر للـ edges بطريقه مختلفه ك مختبري اختبارق ببنضر بنظره اننا نستغل هاي الـ edges المختلفة بالشبكة

بنشوف أبسط مسار هجوم باستخدام الـ edges الافتراضية وبعض edges الخاصة , بنشغل بحث بالـ BloodHound لاستكشاف مسار الهجوم بنظغط على رمز المسار للسماح بالبحث بالمسار


بتكون الـ node الأساسية عننا هي اسم مستخدم الـ AD الخاص فينا والـ node النهائية بنحطها مجموعة Tier 1 ADMINS لأنه هي المجموعة اللي بتمتلك صلاحيات إدارية على الخوادم


إذا لم يكن هناك مسار هجوم متاح باستخدام عوامل تصفية الـ edges المحددة بعرض BloodHound No Results Found


1724058297206.webp

اوضح اشي بصير


بتم تقسيم الأنظمة والحسابات لمستويات أو طبقات Tiers مثلا :

الـ T1 اللي هي Tier 1 : بتخص الحسابات والأنظمة الأكثر أهمية مثل الـ SERVER's
الـ T2 اللي هي Tier 2 : بتخص الحسابات والأنظمة الأقل أهمية
الـ T3 اللي هي Tier 3 : بتخص أجهزة المستخدمين العادية مثل أجهزة الكمبيوتر المكتبية

بعرضلنا الـ BloodHound مسار هجوم بظهر أنه أحد حسابات الـ T1 ADMINS استخدم بيانات اعتماده لتسجيل الدخول لـ THMJMP1 الي هو workstation


1724070706092.webp

حسابنا اللي هو باسم ANDRE اللي على الشمال هو جزء من مجموعة DOMAIN USERS يعني عنده كل الصلاحيات اللي مع المجموعه (حكينا فوق زي الوراثه بالبرمجه)

1724070822454.webp
وعنده صلاحيه انه يتصل بالـ RDP لهاد الـ Host

1724077256624.webp
بامكاننا نعمل شيء مثل هاي الخطوات عشان نستغل المسار هاد :


بنستخدم بيانات اعتماد الـ 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 لما المستخدمين بشربوا قهوتهم الأولى وببدو العمل (😂 الهبده دي مش من عندي ) وحوالي الساعة 14:00 لما يرجعوا من استراحة الغداء بس قبل ما يروحوا للبيت ( عنا الله وكيلك اعملو اي وقت ما حد داري 😂:cry: مزح لا تعصبو )

بتقدر تمسح بيانات الجلسة القديمة بالـ Bloodhound من خلال واجهه الـ Database Info بالضغط على Clear Session Information بنعملها قبل ما نستورد اي البيانات من عمليات Sharphound الجديدة

1724078892905.webp

الفوائد
بقدم واجهة رسومية للـ 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

1724082288021.webp
بنعمل بحث عن الاسم بالمجموعات بنلاقيه


1724082274242.webp








كم عدد الأجهزة التي يمتلك أعضاء مجموعة Tier 1 Admins صلاحيات إدارية عليها؟
2


بنبحث عن المجموعه من فوق
1724082895935.webp
بننزل تحت بواجهه الـ node info بقسم الـ Local Admin Rights

1724082806719.webp







كم عدد المستخدمين الذين هم أعضاء في مجموعة Tier 2 Admins؟
15



بنبحث عن المجموعه من فوق
1724083043177.webp
بننزل تحت بواجهه الـ node info بقسم الـ Group Members


1724083019307.webp








فحص الـ 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 للوصول لمواقع مناسبة للهجمات...




1724084059886.webp

الى هنا انتهينا :cry:😂
 

المرفقات

  • 1723277947997.webp
    1723277947997.webp
    3.7 KB · المشاهدات: 113
  • 1723711044508.webp
    1723711044508.webp
    61.1 KB · المشاهدات: 111
  • 1723711146704.webp
    1723711146704.webp
    19.5 KB · المشاهدات: 110
  • 1723716282311.webp
    1723716282311.webp
    36.8 KB · المشاهدات: 110
  • 1723716742451.webp
    1723716742451.webp
    37.9 KB · المشاهدات: 116
  • 1723922684750.webp
    1723922684750.webp
    97.8 KB · المشاهدات: 109
  • 1723924944296.webp
    1723924944296.webp
    176.3 KB · المشاهدات: 111
  • 1723925775273.webp
    1723925775273.webp
    176.3 KB · المشاهدات: 110
  • 1723925855366.webp
    1723925855366.webp
    14.6 KB · المشاهدات: 116
  • 1723925984088.webp
    1723925984088.webp
    18 KB · المشاهدات: 112
  • 1723926230081.webp
    1723926230081.webp
    11.5 KB · المشاهدات: 114
  • 1723926266944.webp
    1723926266944.webp
    16.6 KB · المشاهدات: 111
  • 1723939346695.webp
    1723939346695.webp
    135.7 KB · المشاهدات: 110
  • 1724012864010.webp
    1724012864010.webp
    120.3 KB · المشاهدات: 109
  • 1724053342523.webp
    1724053342523.webp
    5.8 KB · المشاهدات: 112
  • 1724053369328.webp
    1724053369328.webp
    14.6 KB · المشاهدات: 110
  • bh-session-inject-1654672411088 (2).zip
    bh-session-inject-1654672411088 (2).zip
    124.9 KB · المشاهدات: 348
  • 1724058071724.webp
    1724058071724.webp
    17 KB · المشاهدات: 114
  • download (4).webp
    download (4).webp
    13.9 KB · المشاهدات: 112
  • 1724058156453.webp
    1724058156453.webp
    50.3 KB · المشاهدات: 110
  • 1724070575967.webp
    1724070575967.webp
    6.7 KB · المشاهدات: 108
  • 1724070621652.webp
    1724070621652.webp
    8.9 KB · المشاهدات: 130
التعديل الأخير:
عبود الفخم ومواضيع عبود الفخمه ما شاء الله تبارك الله موضوع رائع
بارك الله فيك عبود وجزاك الله كل خير
ننتظر جديدك دائماً يا وحش
 
عبود الفخم ومواضيع عبود الفخمه ما شاء الله تبارك الله موضوع رائع
بارك الله فيك عبود وجزاك الله كل خير
ننتظر جديدك دائماً يا وحش
يسعدك ويوفقك يارب 😍
 
  • Love
التفاعلات: STORM
الله يعطيك العافية عبود محتوى أكثر من رائع واهتمامك بالتفاصيل أعطى الموضوع درجة من الجودة رائعة جهودك مشكورة وفي ميزان حسناتك إن شاء الله.
 
aab8209b616e6e146df6ceaf7bda48d5.png

راح نركز على الامور هاي بهاد الروم

1. ليش بنعمل Enumeration
2. حقن بيانات الدخول Credential Injection
3. عمل Enumeration من خلال الـ MMC
4. عمل Enumeration من خلال الـ CMD
4. عمل Enumeration من خلال الـ PowerShell
5. عمل Enumeration من خلال الـ Bloodhound







ليش بنعمل Enumeration



أول ما نحصل على Active Directory credentials وبنقدر نتحقق منها على الشبكة هاد الاشي بفتحلنا عالم جديد من الصلاحيات! بنقدر نبدأ نعمل enum عن تفاصيل مثل إعداد وهيكل الـ Active Directory مع وصول كامل معمول ( authenticate ) حتى لو كان وصول بصلاحيات منخفضة ( low-privileged )

خلال مشاركتنا باختبارات الاختراق red team بنقدر غالبًا نرفع صلاحياتنا أو ( lateral movement ) عشان نوصل لصلاحيات ونقدر نحقق أهدافنا

بأغلب الحالات الـ enumeration والـ exploitation بكونوا مترابطين او متشابكين بشكل كبير بعد ما نعمل exploit لمسار الهجوم اللي بينه الـ enum بنعمل enum مرة ثانية من هاد الـ privileged position زي ما هو موضح بالرسم البياني


ddd4bddb2db2285c3e42eef4c35b6211.png

عشان نتصل بالشبكه ... إذا كنت بتستخدم الـ 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
لو طلع صح المفروض بعطينا الـ IP الخاص بالدومين

الـ 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













عمل 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 ممكن ما يكون ممكن














عمل 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








عمل 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 كل اللي عليك تكتب الأمر : PowerShell


1. استكشاف الـ 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






كود:
Get-ADUser -Identity beth.nolan -Server za.tryhackme.com -Properties Title







كود:
Get-ADUser -Identity annette.manning -Server za.tryhackme.com -Properties DistinguishedName






كود:
Get-ADGroup -Identity "Tier 2 Admins" -Server za.tryhackme.com -Properties whenCreated








كود:
 Get-ADGroup -Identity "Enterprise Admins" -Server za.tryhackme.com -Properties SID








كود:
Get-ADDomain -Server za.tryhackme.com | Select-Object DeletedObjectsContainer







عمل Enumeration من خلال الـ Bloodhound

الـ Bloodhound هي أداة قوية جدًا تستخدم للتعرف على بيئة الـ AD , الأداة أول ما نزلت سنة 2016 غيرت مجال الـ Enum على الـ AD بشكل جذري


تاريخ 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

مشاهدة المرفق 12590

بلزم نغير كلمه السر ف بنغيرها

مشاهدة المرفق 12591

بعدها بنسجل دخول بتطلعلنا واجهه



عشان نشوف نتائجنا بنحتاج نسحب ملف الـ 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 مشاهدة المرفق 12631



1. اول اشي بنشوف الواجهه الـ Node Info


بنبحث عن الحساب اللي سجلنا فيه ( الـ AD ) بندور بالـ BloodHound اللي عاليسار مشاهدة المرفق 12630

بطلعلنا معلومات كثيره عنه


المعلومات على شكل اقسام وهي كل قسم مع اهم اشي داخله :

قسم الـ 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 عشان نغير إعدادات عرض التسمية

مثل

قبل مشاهدة المرفق 12647 بعد مشاهدة المرفق 12648


النقاط ( الرموز ) تسمى 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 : مشاهدة المرفق 12653



تُحدث الـ 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 يعني عنده كل الصلاحيات اللي مع المجموعه (حكينا فوق زي الوراثه بالبرمجه)

وعنده صلاحيه انه يتصل بالـ RDP لهاد الـ Host

بامكاننا نعمل شيء مثل هاي الخطوات عشان نستغل المسار هاد :


بنستخدم بيانات اعتماد الـ 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 لما المستخدمين بشربوا قهوتهم الأولى وببدو العمل (😂 الهبده دي مش من عندي ) وحوالي الساعة 14:00 لما يرجعوا من استراحة الغداء بس قبل ما يروحوا للبيت ( عنا الله وكيلك اعملو اي وقت ما حد داري 😂:cry: مزح لا تعصبو )

بتقدر تمسح بيانات الجلسة القديمة بالـ Bloodhound من خلال واجهه الـ Database Info بالضغط على Clear Session Information بنعملها قبل ما نستورد اي البيانات من عمليات Sharphound الجديدة


الفوائد
بقدم واجهة رسومية للـ AD Enum
عنده القدرة على إظهار مسارات الهجوم للمعلومات المعددة بالـ AD
بيقدم رؤيه أعمق بالـ AD Object اللي عادة بتحتاج عدة استعلامات يدوية عشان نوصللها



العيوب
بتطلب تشغيل الـ Sharphound اللي بكون مزعج وغالباً يتم اكتشافه من قبل الـ AV أو الـ EDR





سبق وشرحنا الامر فوق









بنعمل بحث عن الاسم بالمجموعات بنلاقيه


مشاهدة المرفق 12681










بنبحث عن المجموعه من فوق
بننزل تحت بواجهه الـ node info بقسم الـ Local Admin Rights

مشاهدة المرفق 12683










بنبحث عن المجموعه من فوق
بننزل تحت بواجهه الـ node info بقسم الـ Group Members










فحص الـ 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 للوصول لمواقع مناسبة للهجمات...




مشاهدة المرفق 12687
الى هنا انتهينا :cry:😂
King ✨
 
الله يعطيك العافية عبود محتوى أكثر من رائع واهتمامك بالتفاصيل أعطى الموضوع درجة من الجودة رائعة جهودك مشكورة وفي ميزان حسناتك إن شاء الله.
لله يعافيك يارب :love:
حسام الغاليي 🌹
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى