
مختبر SOC قابل للتكرار للكشف عن CVE-2024-4577 والاستجابة له
HTSOC هو نظام مركز عمليات أمنية (SOC) مبني ذاتيًا في بيئة مختبرية. يجمع النظام بين جمع السجلات، والكشف عبر Splunk، وإدارة التنبيهات/الحالات عبر TheHive، وتحليل المؤشرات القابلة للرصد (Observables) عبر Cortex، والاستعلام عن IOC باستخدام MISP أو VirusTotal، ثم تنسيق الإشعارات عبر n8n وTelegram.
CVE-2024-4577 هو مجرد حالة استخدام (use case) للتحقق من قدرة الكشف متعدد الطبقات؛ المشروع بأكمله غير مقيد بـ CVE واحد.
يحاكي النظام عملية SOC كاملة:
flowchart LR
K[Kali أو مصدر الاختبار] --> W[Windows/XAMPP + Apache/PHP-CGI]
L[نقطة نهاية Linux] --> F[Universal Forwarder]
W --> A[سجل Apache access/error]
W --> S[Windows Security + Sysmon]
A --> F
S --> F
F --> SP[Splunk]
L --> F
SP -->|Webhook التنبيه| TH[TheHive]
TH -->|تنبيه + مؤشر قابل للرصد| N[n8n]
N --> T[Telegram]
N -->|محلل يختاره المحلل| C[Cortex]
C --> M[MISP]
C --> V[VirusTotal]
M --> N
V --> N
N --> Tالعناوين أعلاه مخصصة للمختبر فقط. عند إعادة النشر، استبدلها بمتغيرات بيئة ولا تعرض الخدمات للإنترنت.
Splunk هو مركز الكشف في النظام. تغطي عمليات البحث هجمات القوة الغاشمة على تسجيل الدخول، وتسجيل الدخول الشبكي NTLM المشبوه، وتغييرات مجموعات الصلاحيات العالية، والحركة الجانبية عبر SMB، وإنشاء خدمات Windows جديدة، وPowerShell المشفر، وحقن وسائط PHP-CGI.
يستقبل TheHive التنبيهات من Splunk، ويعرض severity/source/title، ويخزن المؤشرات القابلة للرصد، ويسمح للمحلل بتحويل التنبيه إلى حالة (case). يستقبل Cortex المؤشرات القابلة للرصد من TheHive لتشغيل المحللين. MISP وVirusTotal خياران للتحليل الموازي، وليس إلزاميًا تشغيلهما بالتتابع.
يستقبل n8n webhook من TheHive ويرسل تنبيه SOC الأولي إلى Telegram. عندما يضغط المحلل على مؤشر قابل للرصد، يعالج n8n الـ callback، ويحدد المحلل، وينشئ مهمة Cortex، وينتظر التقرير ويرسل النتيجة إلى Telegram. تساعد آليات update_id وcallback_query_id وsuppression وjob ID في تجنب التشغيل المتكرر.
توليد السجل
→ Universal Forwarder
→ بحث/ارتباط Splunk
→ تنبيه TheHive
→ n8n webhook
→ تنبيه Telegram SOC
ضغط المحلل على مؤشر قابل للرصد في Telegram
→ callback Telegram
→ رد n8n على الـ callback فورًا
→ استرجاع المؤشر القابل للرصد من TheHive
→ التحقق من نوع المؤشر والمحلل
→ إنشاء مهمة في Cortex
→ انتظار n8n واسترجاع التقرير
→ إرسال النتيجة إلى Telegram
لا يقوم n8n تلقائيًا بتشغيل جميع المؤشرات القابلة للرصد فور وصول التنبيه. يتم تشغيل المحلل فقط عندما يختاره المحلل، مما يقلل التكلفة ويقلل الإشعارات المتكررة ويحافظ على السيطرة على التحقيق.
توجد عمليات الكشف الأساسية في config/splunk/core-savedsearches.conf، مع lookup لاستبعاد الأنشطة المشروعة:
تتكون حالة الاستخدام هذه من طبقتين:
توجد بيانات تعريف القاعدة بصيغة Sigma في detections/sigma/cve-2024-4577-php-cgi-argument-injection.yml. البحث المنفذ في Splunk موجود في config/splunk/install-cve-detections.ps1.
config/
├── forwarder/ تكوين الإدخال/الإخراج لـ Windows وLinux
├── misp/ IOC محاكى للاستعلام الداخلي
├── n8n/ قالب سير عمل TheHive–Telegram–Cortex
├── splunk/ saved search وlookup وسكربت الارتباط
└── sysmon/ تكوين قياس Windows
deploy/ قالب Docker Compose بعد إزالة الأسرار
detections/
└── sigma/ بيانات تعريف القواعد المستقلة عن البائع
scripts/
├── splunk/ تحديث عمليات البحث عبر API
├── validation/ فحص الجاهزية
└── windows/ تثبيت القياس على الجهاز الهدف في المختبر
docs/ وثائق التشغيل وTelegram callback
توجد مطابقة المصدر مع النظام المباشر في جرد النظام. يوجد بيان سير عمل n8n الفعلي بعد إزالة الأسرار في config/n8n/live-workflow-manifest.json؛ ويُحتفظ بملف قالب الاستيراد الصغير منفصلاً لبناء مختبر جديد بأمان.
cp deploy/docker-compose.soc.example.yml deploy/docker-compose.yml
cp .env.example .env
# املأ الأسرار باستخدام secret manager أو ملف .env محلي.
docker compose -f deploy/docker-compose.yml config
docker compose -f deploy/docker-compose.yml up -d
docker compose -f deploy/docker-compose.yml ps
ينشر قالب Compose TheHive وCortex وMISP وCassandra وElasticsearch وMinIO وRedis ووحدات MISP. يُدار n8n حاليًا كخدمة مضيفة ويتم تكوين سير العمل في config/n8n/.
# PowerShell Administrator على Windows في المختبر
.\scripts\windows\install-lab-telemetry.ps1
# على جهاز Splunk، لا تكتب كلمة المرور في الكود المصدري
$env:SPLUNK_PASSWORD = '<local-secret>'
.\config\splunk\install-cve-detections.ps1
python .\scripts\splunk\update-correlation-searches.py
# فحص الجاهزية
.\scripts\validation\check-system-readiness.ps1
توجد تفاصيل الـ callback في docs/telegram-callback-setup.md.
يتم الاختبار بالترتيب من الأسفل إلى الأعلى:
المؤشرات المستخدمة في المختبر: MTTD من الحدث حتى اكتشاف Splunk، وMTTN من التنبيه حتى إشعار Telegram، وMTTR من استلام التنبيه حتى الفرز/إغلاق الحالة، ومعدل النتائج الإيجابية الخاطئة ومعدل التكرار.
| المكون | الدور | العنوان المرجعي |
|---|
| Kali | مصدر توليد حركة اختبار مصرح بها | 192.168.10.132 |
| Windows/XAMPP | الجهاز الهدف Apache/PHP-CGI وSysmon | 192.168.10.130:8080 |
| Splunk | الجمع والبحث والارتباط والتنبيه | 192.168.10.128 |
| TheHive | إدارة التنبيهات والحالات والمؤشرات القابلة للرصد | 192.168.10.133:9000 |
| Cortex | تشغيل المحللين | 192.168.10.133:9001 |
| MISP | مستودع IOC داخلي | 192.168.10.133:443 |
| n8n | أتمتة webhook/callback | 192.168.10.133:5678 |
| الكشف | البيانات الرئيسية | الهدف |
|---|
| هجوم القوة الغاشمة على تسجيل الدخول | Windows Event ID 4625 | محاولات تسجيل دخول فاشلة متعددة خلال نافذة زمنية |
| تسجيل دخول NTLM مشبوه | Windows Event ID 4624 | تسجيل دخول شبكي type 3 باستخدام NTLM بشكل غير طبيعي |
| تغيير مجموعة مميزة | Event ID 4732/4728/4756 | إضافة حساب إلى مجموعة صلاحيات عالية |
| حركة جانبية عبر SMB | Event ID 4624 | وصول مصدر واحد إلى عدة مضيفين بشكل غير طبيعي |
| خدمة Windows جديدة | Event ID 7045 | إنشاء خدمة جديدة خارج القائمة المسموحة |
| PowerShell مشفر | Event ID 4688 | PowerShell يستخدم -enc أو -EncodedCommand |