إعداد مجموعة البيانات
تعتمد جودة النماذج المضبوطة بشكل كامل على جودة بيانات التدريب. تتضمن AuroraSOC مسارًا شاملاً لإعداد البيانات يقوم بتنزيل مجموعات بيانات الأمن السيبراني العامة، وتحويلها إلى تنسيق ضبط دقيق خاضع للإشراف، وإنشاء تقسيمات المجال لكل وكيل.
لماذا هذه الخطوة مهمة؟
يتطلب الضبط الدقيق لنموذج اللغة الآلاف من أزواج (المطالبة والاستجابة) التي توضح السلوك الدقيق الذي تريده. لن تقوم بيانات الأسئلة والأجوبة العامة المتعلقة بالأمن السيبراني بتعليم النموذج كيفية إنتاج عمليات استخراج IOC منظمة أو تنبيهات الخريطة لتقنيات MITRE ATT&CK. يحل خط الأنابيب هذا عن طريق:
- تنزيل المصادر الموثوقة — MITRE ATT&CK، MITRE CAR، قواعد Sigma، Atomic Red Team
- تحويل البيانات الأولية إلى محادثات — تصبح كل نقطة بيانات بمثابة دردشة للنظام/المستخدم/المساعد
- إضافة مطالبات نظام خاصة بـ SOC — يتضمن كل مثال تدريبي مطالبات شخصية الوكيل
- التقسيم حسب المجال — ملفات JSONL منفصلة لتخصص كل وكيل
- تعليق البيانات الوصفية — المجال والمصدر وعلامات الصعوبة للتصفية والتحليل
مصادر البيانات
يتم تنزيل المسار من هذه المصادر العامة والمرخصة مجانًا:
| مصدر | ما يحتويه | رخصة | لماذا يتم استخدامه |
|---|---|---|---|
| MITRE ATT&CK | تقنيات الخصم والتكتيكات والإجراءات | أباتشي 2.0 | يعلم رسم خرائط ATT&CK وتحديد التقنية |
| سيارة ميتري | مستودع التحليلات السيبرانية - قواعد الكشف | أباتشي 2.0 | يعلم هندسة الكشف وإنشاء التحليلات |
| قواعد سيجما | قواعد الكشف عن SIEM العامة | LGPL-2.1 | يعلم تحليل السجل، وأنماط إنشاء التنبيه |
| الفريق الأحمر الذري | اختبارات مضاهاة الخصم لكل تقنية | معهد ماساتشوستس للتكنولوجيا | يعلم محاكاة الهجوم وتفاصيل التقنية |
| تغذية NVD CVE | قاعدة بيانات نقاط الضعف (CVEs الأخيرة) | المجال العام | يعلم تحليل نقاط الضعف، وسجل CVSS |
| أفضل 10 OWASP | المخاطر الأمنية لتطبيقات الويب | CC-BY-SA-4.0 | يعلم تحليل أمن الويب |
تشغيل خط الأنابيب
بداية سريعة
# Using Make (recommended)
make train-data
# Or directly
python training/scripts/prepare_datasets.py
خيارات سطر الأوامر
python training/scripts/prepare_datasets.py [OPTIONS]
Options:
--skip-download Skip downloading (use cached raw files)
--skip-domains Skip per-agent domain splitting
--output-dir DIR Output directory (default: training/data)
--min-samples N Minimum samples per domain before augmentation
ماذا يحدث
يمر خط الأنابيب بأربع مراحل:
المرحلة 1: تنزيل المصادر الأولية
تنزيل كافة مجموعات البيانات إلى training/data/raw/:
training/data/raw/
├── mitre_attack/
│ └── enterprise-attack.json # Full ATT&CK knowledge base
├── mitre_car/
│ └── car-analytics.json # CAR detection analytics
├── sigma_rules/
│ └── sigma-rules-master.zip # 3000+ Sigma rules
├── atomic_red_team/
│ └── atomic-red-team-master.zip # 800+ atomic tests
├── nvd_cve_recent/
│ └── nvd-recent.json # Recent CVE entries
└── owasp_top10/
└── owasp-top10.md # OWASP Top 10 2021
إذا كانت الملفات موجودة بالفعل، فسيتم تخطيها (عملية غير فعالة).
المرحلة الثانية: الاستخراج والتحويل
يتم تحليل كل مصدر وتحويله إلى عينات تدريب منظمة:
- تقنيات MITRE ATT&CK → أسئلة حول تحديد كل تقنية وكشفها والتخفيف من آثارها
- تحليلات MITRE CAR → سيناريوهات هندسة الكشف (بالنظر إلى مصدر البيانات هذا، اكتب قاعدة اكتشاف)
- قواعد سيجما → مهام تحليل السجل (بالنظر إلى هذا السجل، هل يتم تفعيل قاعدة سيجما هذه؟)
- اختبارات الفريق الأحمر الذري → أسئلة وأجوبة لمحاكاة الهجوم (ما الذي سيولده هذا الاختبار؟ كيف يمكن اكتشافه؟)
- إدخالات مكافحة التطرف العنيف → مهام تقييم الثغرات الأمنية (تحليل الخطورة والتأثير والمعالجة)
المرحلة 3: التنسيق كدردشة
يتم تحويل كل عينة إلى تنسيق الدردشة Granite 4:
{
"messages": [
{
"role": "system",
"content": "You are the AuroraSOC Security Analyst. Analyze security alerts, extract IOCs..."
},
{
"role": "user",
"content": "Analyze this technique: T1059.001 (PowerShell). What artifacts..."
},
{
"role": "assistant",
"content": "## Analysis: T1059.001 — PowerShell Command and Scripting Interpreter\n\n**Tactic:** Execution\n**Severity:** High\n\n### Key Artifacts:\n- Event ID 4104 (Script Block Logging)..."
}
],
"domain": "security_analysis",
"source": "mitre_attack",
"difficulty": "intermediate"
}
يقابل حقل domain مجالات المسؤولية في وقت تشغيل AuroraSOC. ما زالت بعض أدوات التدريب القديمة تحتفظ بتسميات قديمة داخليًا، لكن الأسطول التشغيلي الحالي يجمع المجالات على النحو التالي:
| اِختِصاص | الوكلاء المعينون |
|---|---|
security_analysis | SecurityAnalyst |
threat_hunting | ThreatHunter، EndpointBehavior |
malware_analysis | MalwareAnalyst |
incident_response | IncidentResponder |
network_security | NetworkSecurity، NetworkAnalyzer |
cps_security | CPSecurity |
threat_intelligence | ثريتإنتل |
digital_forensics | محلل الطب الشرعي |
web_security | أمن الويب |
cloud_security | CloudSecurity |
vulnerability_management | ThreatIntel |
orchestration | منسق |
المرحلة 4: التقسيم حسب المجال
يقوم المسار بإنشاء ملفات JSONL خاصة بالمجال عن طريق التصفية في الحقل domain:
training/data/
├── soc_train.jsonl # All samples (for generic model)
├── soc_eval.jsonl # Held-out evaluation samples
└── domain/
├── security_analysis.jsonl # Alert analysis & IOC extraction
├── threat_hunting.jsonl # Hunting hypotheses & behavioral analysis
├── malware_analysis.jsonl # YARA, sandbox, behavioral signatures
├── incident_response.jsonl # Playbooks, containment, recovery
├── network_security.jsonl # Flow analysis, DDoS, DNS tunneling
├── cps_security.jsonl # ICS/OT, Modbus, IEC 62443
├── threat_intelligence.jsonl # APT tracking, STIX/TAXII
├── digital_forensics.jsonl # Disk/memory/network forensics
├── web_security.jsonl # OWASP, SQLi, XSS
├── cloud_security.jsonl # AWS/Azure/GCP misconfiguration
├── vulnerability_management.jsonl # CVE analysis, CVSS
└── orchestration.jsonl # Multi-agent routing scenarios
إضافة بيانات التدريب المخصصة
يمكنك استكمال مجموعات البيانات العامة ببيانات SOC الخاصة بك. قم بإنشاء ملف JSONL حيث يتبع كل سطر هذا التنسيق:
{
"messages": [
{"role": "system", "content": "Your agent system prompt here"},
{"role": "user", "content": "The user's security question or alert"},
{"role": "assistant", "content": "The ideal response from the agent"}
],
"domain": "security_analysis",
"source": "custom",
"difficulty": "intermediate"
}
إرشادات للبيانات المخصصة
-
استخدم مطالبات نظام الوكيل الفعلية من
aurorasoc/agents/prompts.py— وهذا يضمن أن يتعلم النموذج كيفية الاستجابة في سياق شخصية الوكيل الصحيحة. -
قم بتضمين سيناريوهات متنوعة — لا تتدرب على نوع واحد فقط من التنبيهات. غطاء:
- الإيجابيات الحقيقية (الهجمات الحقيقية)
- الإيجابيات الكاذبة (نشاط حميد يبدو مشبوهًا)
- حالات الحافة (التنبيهات الغامضة التي تحتاج إلى سياق)
-
تنسيق استجابات المساعد بشكل متسق — استخدم مخرجات منظمة مع رؤوس Markdown، وقوائم التعداد النقطي، وكتل التعليمات البرمجية. سوف يتعلم النموذج هذا التنسيق.
-
** تحديد مستويات الصعوبة ** —
basic،intermediate،advanced. وهذا يساعد في تعلم المنهج الدراسي إذا تدربت على مراحل. -
** قم بتضمين تعيينات MITRE ATT&CK ** حيثما كان ذلك مناسبًا - من المتوقع أن يقوم الوكلاء بتعيين النتائج وفقًا للتقنيات.
دمج البيانات المخصصة
قم بإلحاق بياناتك المخصصة بملف التدريب الرئيسي:
cat your_custom_data.jsonl >> training/data/soc_train.jsonl
أو للبيانات الخاصة بالمجال:
cat your_custom_alerts.jsonl >> training/data/domain/security_analysis.jsonl
ثم أعد تشغيل التدريب — لا يلزم تكرار خطوة الإعداد.
التحقق من صحة البيانات
للتحقق من تنسيق بيانات التدريب الخاصة بك بشكل صحيح:
# Count samples
wc -l training/data/soc_train.jsonl
# Validate JSON format
python -c "
import json
with open('training/data/soc_train.jsonl') as f:
for i, line in enumerate(f):
try:
d = json.loads(line)
assert 'messages' in d, f'Line {i}: missing messages'
assert len(d['messages']) >= 2, f'Line {i}: need at least 2 messages'
except Exception as e:
print(f'Error on line {i}: {e}')
break
else:
print(f'All {i+1} samples valid')
"
# Check domain distribution
python -c "
import json
from collections import Counter
domains = Counter()
with open('training/data/soc_train.jsonl') as f:
for line in f:
d = json.loads(line)
domains[d.get('domain', 'unknown')] += 1
for domain, count in sorted(domains.items(), key=lambda x: -x[1]):
print(f' {domain}: {count}')
"
الخطوات التالية
مع إعداد بيانات التدريب الخاصة بك:
- تدريب وحدة معالجة الرسومات المحلية — تدرب على أجهزتك الخاصة
- تدريب عامل الميناء — تدريب قابل للتكرار في حاويات
- تدريب Google Colab — وحدة معالجة رسومات سحابية مجانية