محاكاة الخصم الآلية (Caldera) ضد مختبر AD للتحقق من تغطية كشف Sigma وربط النتائج بـ MITRE ATT&CK.
التحقق الآلي من الفريق البنفسجي لقواعد كشف Sigma المبنية في detection-as-code-repo، باستخدام MITRE Caldera لتنفيذ مسار هجوم متسلسل للوصول إلى بيانات الاعتماد في Active Directory ضد مختبر نطاق موجود، وخريطة حرارية من ATT&CK Navigator لتصور التغطية.
تم اختيار Caldera بدلاً من Atomic Red Team لهذا المشروع لأنه يوفر إطار عمل C2 كامل، مع وكلاء وملفات تعريف للخصوم وعمليات متسلسلة متعددة الخطوات، بدلاً من تنفيذ تقنية واحدة معزولة. وهذا يتوافق مع هدف هذا المشروع بشكل أوثق: ليس فقط "هل تم كشف هذه التقنية الواحدة"، بل "هل تنجو سلسلة هجوم واقعية ومرتبة من منظومة الكشف الحالية لدينا، من البداية إلى النهاية."
Purple-Team-Automation/
├── abilities/ Custom Caldera ability YAMLs
├── adversary-profiles/ The chained adversary profile used in the operation
├── validation/ Kibana evidence per technique + the LLMNR known-gap writeup
├── attack-navigator-heatmap.json ATT&CK Navigator layer, load at mitre-attack.github.io/attack-navigator
├── purple-team-automation-report.md Full write-up: scope, methodology, results, gap analysis
└── README.md This file
نشرت خادم Caldera مخصصًا عبر Docker Compose على جهاز افتراضي Ubuntu
منفصل (caldera-server، 192.168.18.205) على نفس شبكة المختبر
التي يوجد بها مختبر نطاق AD الحالي، مع إبقائه معزولًا عن
منظومة ELK/SIEM.
جاء Caldera v5.0.0 مع 2000 قدرة جاهزة و29 خصمًا جاهزًا
من الصندوق.
مشكلات البناء التي تتبعت جذورها على طول الطريق:
plugins/magma/dist/assets/). تتبعت ذلك إلى تركيب حجم Docker
لكامل الدليل في docker-compose.yml الذي كان يستبدل الواجهة الأمامية المترجمة في الصورة
بمصدر مضيف غير مترجم. تم الإصلاح بإزالة
تركيب الدليل الكامل.npm/nodejs بعد
بناء الصورة للحفاظ على الصورة النهائية نحيفة.localhost:8888 مضمّنًا كأساس API الخاص بها، مثبتًا
في وقت بناء Vue عبر plugins/magma/.env (VITE_CALDERA_URL)، وهو
غير متحكم به من إعداد app.frontend.api_base_url في وقت التشغيل في conf/local.yml. أصلحته بتحرير
.env إلى عنوان IP الحقيقي للجهاز الافتراضي وإعادة البناء.lvextend -l +100%FREE + resize2fs، بالإضافة إلى استعادة طبقات ذاكرة التخزين المؤقت للبناء
عبر docker system prune -a --volumes.لا يوفر Stockpile سوى قدرة أصلية لاستخراج بيانات الاعتماد
القائم على LSASS/Mimikatz (T1003.001). التقنيات الأربع التي احتجتها لهذا المشروع،
Kerberoasting وAS-REP Roasting وPassword Spraying وDCSync، جميعها
تطلبت قدرات مخصصة بنيتها حول Impacket (GetUserSPNs.py،
GetNPUsers.py، secretsdump.py) وKerbrute، لأن قدرات Kerberoasting الموجودة في Stockpile
(Rubeus، WinPwn) خاصة بـ Windows/.NET فقط
وغير متوافقة مع وكيل Sandcat القائم على Linux في هذا المختبر.
واجهت مشكلتين في البناء أثناء تأليف هذه:
plugins.stockpile.app.parsers.katz) مع
حقول source/edge/target، وليس محلل pattern عام بتعبير نمطي كما
افترضت في الأصل. تسبب هذا في
TypeError('ParserConfig.__init__()') صامت عند التحميل. نظرًا لعدم وجود محلل مدمج
لمخرجات Impacket الخام، أسقطت كتلة parsers: بالكامل
من القدرات الأربع جميعها. يتم التقاط النتائج كملفات مخرجات/تجزئة خام
والتحقق منها يدويًا مقابل Kibana (انظر /validation).nano بصمت. اكتشفت هذا
بفحص كل ملف باستخدام cat/wc -l قبل إعادة تشغيل
الحاوية.نشرت وكيل Sandcat (Linux، المجموعة red) على جهاز Kali الافتراضي
(192.168.18.70)، باستخدام اسم العملية splunkd للتمويه في OPSEC،
وأكدت أنه ظهر حيًا وموثوقًا، يعمل كـ root مع
منفذ proc/sh.
بنيت ملف تعريف الخصم AD Credential Access Chain لتسلسل
القدرات المخصصة الأربع بالترتيب الذي يحاول به المهاجم الداخلي الانتهازي
عادةً:
→ Password Spray (Kerbrute)
→ Kerberoasting (GetUserSPNs.py)
→ AS-REP Roasting (GetNPUsers.py)
→ DCSync (secretsdump.py)
تم استبعاد تسميم LLMNR/NBT-NS (T1557.001) عمدًا من
ملف تعريف Caldera. انظر validation/llmnr-known-gap.md
لمعرفة السبب، وكيف لا يزال مُدرجًا كضابط سلبي للفجوة المعروفة.
تم تأكيد كشف جميع التقنيات الأربع المنفذة مقابل قواعد Sigma في detection-as-code-repo، مع التحقق المتبادل مباشرة في Kibana. لا يزال تسميم LLMNR/NBT-NS فجوة مفتوحة وموثقة.
| التقنية | الحالة |
|---|---|
| T1110.003 – Password Spraying | 🟢 مكتشفة |
| T1558.003 – Kerberoasting | 🟢 مكتشفة |
| T1558.004 – AS-REP Roasting | 🟢 مكتشفة |
| T1003.006 – DCSync | 🟢 مكتشفة |
| T1557.001 – LLMNR/NBT-NS Poisoning | 🔴 فجوة |
التفاصيل الكاملة: validation/detection-results.md
التقرير الكامل: purple-team-automation-report.md
الخريطة الحرارية التفاعلية: attack-navigator-heatmap.json