
AD Miner هي أداة تدقيق لـ Active Directory تستخدم استعلامات Cypher لتحليل البيانات من قاعدة البيانات البيانية #Bloodhound بهدف كشف نقاط الضعف الأمنية.
ميزات التقرير القائم على الويب:
تصنيف قائم على المخاطر لنقاط الضعف في Active Directory، بالإضافة إلى مسارات تخفيف شاملة.
شريط بحث وعناصر تحكم مصممة بعناية لتحديد أكثر التهيئات الخاطئة خطورة.
يمكنك أيضًا ملاحظة المؤشرات بمرور الوقت للمساعدة في قياس كفاءة التخفيف.
تم إنشاء AD Miner في البداية بواسطة Forvis Mazars ويتم صيانته بواسطة فريق تدقيق الأمن السيبراني والاستشارات في Grant Thornton.
لتشغيل AD Miner، يجب أولاً أن يكون لديك قاعدة بيانات neo4j تحتوي على كائنات Active Directory:
[!CAUTION] نوصي بشدة باستخدام BloodHound Automation، حيث يقوم بتثبيت إضافة Graph Data Science من Neo4j، والتي:
- تحسن بشكل كبير وقت الحساب والأداء العام.
- تتيح استخدام المسار الأذكى بدلاً من دالة Neo4j المضمنة shortestPath() (أي المسارات التي يسهل استغلالها بدلاً من أقل عدد من القفزات العقدية).
لإعداد بيئة BloodHound الخاصة بك (بما في ذلك الواجهة الرسومية وقاعدة بيانات Neo4j)، يوصى بشدة باستخدام BloodHound Automation بسبب تكامله السلس مع إضافة Graph Data Science. على الرغم من أنه لا بأس من استخدام تثبيت BloodHound CE الافتراضي، فكن على علم أنك ستفوت فوائد GDS (مثل: إيجاد مسارات أكثر ذكاءً، سرعة تنفيذ محسنة، إلخ).
بشكل افتراضي، ينشئ BloodHound قاعدة بيانات neo4j يمكن الوصول إليها على المنفذ 7687.
أسهل طريقة هي تنفيذ الأمر التالي باستخدام pipx:
pipx install 'git+https://github.com/AD-Security/AD_Miner.git'
ADMiner متاح أيضًا على بعض توزيعات Linux:
pacman -S ad-minernix-env -iA nixos.ad-minerصورة Docker متاحة للبناء. قم ببناء الصورة بالأمر التالي:
docker build -t ad-miner .
لتشغيل هذا على Windows باستخدام بيانات BloodHound Community Edition، استخدم الأوامر أدناه:
docker run -v ${PWD}:/tmp ad-miner AD-miner -b bolt://host.docker.internal:7687 -u neo4j -p mypassword -cf YOUR_PREFIX
لتشغيل هذا على Linux باستخدام بيانات BloodHound Community Edition، استخدم الأوامر أدناه:
docker run -v ${PWD}:/tmp --network host ad-miner AD-miner -b bolt://localhost:7687 -u neo4j -p mypassword -cf YOUR_PREFIX
لاحظ أن تثبيت وحدة التخزين باستخدام -v أمر بالغ الأهمية للحصول على مخرجات البيانات. يفترض هذا أن خادم BHCE يعمل على مضيف Docker بالإعدادات الافتراضية.
قم بتشغيل الأداة:
AD-miner [-h] [-b BOLT] [-u USERNAME] [-p PASSWORD] [-e EXTRACT_DATE] [-r RENEWAL_PASSWORD] [-a] [-c] [-l LEVEL] -cf CACHE_PREFIX [-ch NB_CHUNKS] [-co NB_CORES] [--rdp] [--evolution EVOLUTION] [--cluster CLUSTER]
مثال:
AD-miner -cf My_Report -u neo4j -p mypassword
يتم إنشاء ملفات التخزين المؤقت (cache) عند اكتمال كل طلب Neo4j. تتيح لك هذه الميزة إيقاف AD Miner مؤقتًا أو إيقاف تشغيله في أي نقطة أثناء عملية التشغيل دون فقدان النتائج المحسوبة سابقًا. لاستخدام التخزين المؤقت، استخدم المعامل -c. يتم تخزين ملفات التخزين المؤقت في مجلد cache_neo4j في المستودع الحالي لديك. لكي يتم استخدام التخزين المؤقت، يجب أن يتطابق اسم التقرير مع بادئة اسم ملف التخزين المؤقت:
AD-miner -c -cf My_Report -u neo4j -p mypassword
للتعامل بشكل أفضل مع مجموعات البيانات الكبيرة، من الممكن تمكين تعدد الخيوط وكذلك استخدام مجموعة من قواعد بيانات neo4j، كما هو موضح في المثال التالي (حيث يتعامل الخادم server1 مع 32 خيطًا ويتعامل الخادم server2 مع 16):
AD-miner -c -cf My_Report -b bolt://server1:7687 -u neo4j -p mypassword --cluster server1:7687:32,server2:7687:16
إذا كانت سياسة تجديد كلمة المرور معروفة، فيمكنك تحديدها باستخدام المعامل -r لضمان توافق ضوابط تجديد كلمة المرور مع إعدادات بيئتك (الافتراضي هو 90 يومًا). على سبيل المثال، إذا كانت سياسة كلمة المرور مضبوطة على 180 يومًا، يمكنك استخدام ما يلي:
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180
[!TIP] كلمة المرور الافتراضية لقاعدة بيانات neo4j الخاصة بـ Bloodhound CE هي
bloodhoundcommunityeditionأوneo5jإذا كنت تستخدم BloodHound Automation
الخيارات:
-h, --help يعرض رسالة المساعدة هذه ويخرج
-b BOLT, --bolt BOLT اتصال Neo4j bolt (الافتراضي: bolt://127.0.0.1:7687)
-u USERNAME, --username USERNAME
اسم مستخدم Neo4j (الافتراضي: neo4j)
-p PASSWORD, --password PASSWORD
كلمة مرور Neo4j (الافتراضي: bloodhoundcommunityedition)
-e EXTRACT_DATE, --extract_date EXTRACT_DATE
تاريخ الاستخراج (مثال: 20220131). الافتراضي: آخر تاريخ تسجيل دخول
-r RENEWAL_PASSWORD, --renewal_password RENEWAL_PASSWORD
سياسة تجديد كلمة المرور بالأيام. الافتراضي: 90
-c, --cache استخدام ملف محلي لبيانات neo4j
-l LEVEL, --level LEVEL
المستوى التكراري لاستعلامات المسار
-cf CACHE_PREFIX, --cache_prefix CACHE_PREFIX
ملف التخزين المؤقت للاستخدام (في حالة وجود ملفات تخزين مؤقت لعدة شركات)
--gpo_low تنفيذ استعلام أسرع ولكن غير كامل لـ GPO (أسرع من الاستعلام العادي)
-ch NB_CHUNKS, --nb_chunks NB_CHUNKS
عدد الأجزاء لطلبات Neo4j المتوازية. الافتراضي: 20 * عدد وحدات المعالجة المركزية
-co NB_CORES, --nb_cores NB_CORES
عدد الأنوية لطلبات Neo4j المتوازية. الافتراضي: عدد وحدات المعالجة المركزية
--rdp تضمين الحافة CanRDP في الرسوم البيانية
--evolution EVOLUTION
التطور بمرور الوقت: موقع ملفات بيانات json. مثال: '../../tests/'
--cluster CLUSTER عُقد المجموعة لتشغيل استعلامات Neo4j المتوازية. مثال: host1:port1:nCore1,host2:port2:nCore2,...
في صفحات الرسم البياني، يمكنك النقر بزر الماوس الأيمن على عُقد الرسم البياني لتجميعها أو لفتح المجموعة.
إذا كان لديك تقارير AD-Miner متعددة بمرور الوقت، يمكنك بسهولة تتبع التطور باستخدام المعامل --evolution: كل تقرير AD-Miner يقوم بإنشاء ملف بيانات JSON إلى جانب ملف index.html. كل ما عليك فعله هو جمع ملفات JSON المختلفة هذه في مجلد واحد وتحديد المسار إلى هذا المجلد بعد المعامل --evolution.
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180 --evolution evolution_folder/
يظهر تبويب "التطور بمرور الوقت" في الصفحة الرئيسية، ويوفر رسومًا بيانية للتطور لكل فئة (الأذونات، كلمات المرور، Kerberos، ومتفرقات).
كما يتوفر تطور مفصل لكل عنصر تحكم، ويمكن الوصول إليه عبر زر "إظهار التطور" لكل فئة. يتوفر مقياس لوغاريتمي لتسليط الضوء بشكل أفضل على الاختلافات الدقيقة بمرور الوقت.
يستطيع AD Miner حساب المسارات بناءً على قابليتها الفعلية للاستغلال. في الواقع، أحيانًا يكون أقصر مسار صعب الاستغلال (هنا بسبب ExecuteDCOM قبل HasSession).
بينما يوجد مسار أطول ولكنه أبسط (هنا باستخدام MemberOf و AdminTo بدلاً من ExecuteDCOM).
يقوم AD Miner تلقائيًا بالتبديل إلى وضع المسار الأذكى عندما تكون قاعدة بيانات neo4j لديك مثبتة عليها إضافة Graph Data Science (https://neo4j.com/docs/graph-data-science/current/).
أسهل طريقة لتثبيت هذه الإضافة هي تعريف متغير بيئة في حاوية neo4j الخاصة بك: NEO4J_PLUGINS=["graph-data-science"] (يتم تثبيتها افتراضيًا مع BloodHound Automation).
حاليًا، تستخدم 10 عناصر تحكم تغطية الرسم البياني الكاملة وتحسين المسارات الأذكى للتحليل.
فيما يلي قائمة بعناصر التحكم التي تم تنفيذها بالفعل في AD Miner:
اطلع على كيفية المساهمة هنا.
| الفئة | الوصف | الفئة | الوصف |
|---|
| Kerberos | حسابات قابلة لـ AS-REP Roast | متفرقات | أجهزة كمبيوتر بنظام تشغيل قديم | |
| Kerberos | حسابات قابلة لـ Kerberoast | متفرقات | حسابات خاملة | |
| Kerberos | تفويض Kerberos المقيد | متفرقات | المستوى الوظيفي للمجال | |
| Kerberos | Kerberos RBCD ضد أجهزة الكمبيوتر | متفرقات | أجهزة كمبيوتر شبحية | |
| Kerberos | تفويضات Kerberos غير المقيدة | متفرقات | مجموعات بدون أي عضو | |
| Kerberos | كلمة مرور KRBTGT قديمة | متفرقات | وحدات تنظيمية (OUs) بدون أي عضو | |
| Kerberos | بيانات اعتماد الظل على الحسابات المميزة | متفرقات | بيانات اعتماد الظل على وحدات تحكم المجال | |
| Kerberos | بيانات اعتماد الظل على الحسابات العادية | متفرقات | PrimaryGroupID غير متوقع | |
| كلمات المرور | الوصول إلى كلمات مرور LAPS | متفرقات | FGPP للمستخدمين | |
| كلمات المرور | أجهزة كمبيوتر بدون LAPS | الأذونات | شذوذ في قوائم التحكم بالوصول (ACL) | |
| كلمات المرور | كائنات يمكنها قراءة كلمات مرور GMSA للمسؤولين | الأذونات | نقاط اختناق في مسارات الهجوم | |
| كلمات المرور | تجاوز متطلبات كلمة المرور | الأذونات | أجهزة كمبيوتر تدير أجهزة كمبيوتر أخرى | |
| كلمات المرور | مستخدمون لديهم كلمات مرور نصية واضحة | الأذونات | مسارات عبر المجال إلى مسؤول المجال | |
| كلمات المرور | مستخدمون بكلمات مرور قديمة | الأذونات | حسابات الضيوف | |
| كلمات المرور | مستخدمون بدون انتهاء صلاحية كلمة المرور | الأذونات | وصول غير كافٍ إلى امتيازات DCSync | |
| الأذونات | إعدادات AdminCount غير كافية | الأذونات | امتيازات تعديل GPO غير كافية | |
| الأذونات | عدد غير كاف من مسؤولي المجال | الأذونات | حسابات أجهزة ذات امتيازات غير كافية | |
| الأذونات | حسابات أجهزة ذات امتيازات غير كافية | الأذونات | امتيازات مسؤول محلي غير Tier 0 على ADCS | |
| الأذونات | كائنات بها تاريخ SID | الأذونات | مسارات إلى مسؤولي DNS | |
| الأذونات | مسارات إلى مسؤولي المجال | الأذونات | مسارات إلى مجموعات المشغلين | |
| الأذونات | مسارات إلى الوحدات التنظيمية (OU) | الأذونات | مسارات إلى الخوادم | |
| الأذونات | مسارات إلى حاوية AdminSDHolder | الأذونات | مجموعة "الوصول المتوافق مع Pre-Windows 2000" | |
| الأذونات | حساب مميز خارج مجموعة المستخدمين المحميين | الأذونات | وصول RDP (أجهزة كمبيوتر) | |
| الأذونات | وصول RDP (مستخدمون) | الأذونات | انتهاك Tier-0 (جلسات) | |
| الأذونات | مستخدمون لديهم امتيازات قوية عبر المجالات | الأذونات | مستخدمون بامتيازات مسؤول محلي |
| الفئة | الوصف | الفئة | الوصف |
|---|
| متفرقات Entra ID | حسابات Azure خاملة | Entra ID MS Graph | وحدات تحكم مباشرة لـ MS Graph | |
| كلمات مرور Entra ID | امتيازات إعادة تعيين كلمة مرور Entra ID | Entra ID MS Graph | حسابات Entra ID غير متزامنة محليًا | |
| كلمات مرور Entra ID | تغيير غير متماسك لآخر كلمة مرور | Entra ID MS Graph | حسابات متزامنة مع حساب توأم معطل | |
| أذونات Entra ID | الوصول إلى أدوار Entra ID المميزة | أذونات Entra ID | حسابات مميزة على كل من المحلي و Azure | |
| أذونات Entra ID | مسار عبر المحلي/Entra ID إلى Tier-0 | أذونات Entra ID | مستخدمون قد يكونون مرتبطين بـ AADConnect | |
| أذونات Entra ID | مستخدمي Entra ID لديهم مسار إلى أهداف عالية القيمة |