انتقل إلى المحتوى الرئيسي

إعداد مجموعة البيانات

تعتمد جودة النماذج المضبوطة بشكل كامل على جودة بيانات التدريب. تتضمن AuroraSOC مسارًا شاملاً لإعداد البيانات يقوم بتنزيل مجموعات بيانات الأمن السيبراني العامة، وتحويلها إلى تنسيق ضبط دقيق خاضع للإشراف، وإنشاء تقسيمات المجال لكل وكيل.

لماذا هذه الخطوة مهمة؟

يتطلب الضبط الدقيق لنموذج اللغة الآلاف من أزواج (المطالبة والاستجابة) التي توضح السلوك الدقيق الذي تريده. لن تقوم بيانات الأسئلة والأجوبة العامة المتعلقة بالأمن السيبراني بتعليم النموذج كيفية إنتاج عمليات استخراج IOC منظمة أو تنبيهات الخريطة لتقنيات MITRE ATT&CK. يحل خط الأنابيب هذا عن طريق:

  1. تنزيل المصادر الموثوقة — MITRE ATT&CK، MITRE CAR، قواعد Sigma، Atomic Red Team
  2. تحويل البيانات الأولية إلى محادثات — تصبح كل نقطة بيانات بمثابة دردشة للنظام/المستخدم/المساعد
  3. إضافة مطالبات نظام خاصة بـ SOC — يتضمن كل مثال تدريبي مطالبات شخصية الوكيل
  4. التقسيم حسب المجال — ملفات JSONL منفصلة لتخصص كل وكيل
  5. تعليق البيانات الوصفية — المجال والمصدر وعلامات الصعوبة للتصفية والتحليل

مصادر البيانات

يتم تنزيل المسار من هذه المصادر العامة والمرخصة مجانًا:

مصدرما يحتويهرخصةلماذا يتم استخدامه
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_analysisSecurityAnalyst
threat_huntingThreatHunter، EndpointBehavior
malware_analysisMalwareAnalyst
incident_responseIncidentResponder
network_securityNetworkSecurity، NetworkAnalyzer
cps_securityCPSecurity
threat_intelligenceثريتإنتل
digital_forensicsمحلل الطب الشرعي
web_securityأمن الويب
cloud_securityCloudSecurity
vulnerability_managementThreatIntel
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"
}

إرشادات للبيانات المخصصة

  1. استخدم مطالبات نظام الوكيل الفعلية من aurorasoc/agents/prompts.py — وهذا يضمن أن يتعلم النموذج كيفية الاستجابة في سياق شخصية الوكيل الصحيحة.

  2. قم بتضمين سيناريوهات متنوعة — لا تتدرب على نوع واحد فقط من التنبيهات. غطاء:

    • الإيجابيات الحقيقية (الهجمات الحقيقية)
    • الإيجابيات الكاذبة (نشاط حميد يبدو مشبوهًا)
    • حالات الحافة (التنبيهات الغامضة التي تحتاج إلى سياق)
  3. تنسيق استجابات المساعد بشكل متسق — استخدم مخرجات منظمة مع رؤوس Markdown، وقوائم التعداد النقطي، وكتل التعليمات البرمجية. سوف يتعلم النموذج هذا التنسيق.

  4. ** تحديد مستويات الصعوبة ** — basic، intermediate، advanced. وهذا يساعد في تعلم المنهج الدراسي إذا تدربت على مراحل.

  5. ** قم بتضمين تعيينات 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}')
"

الخطوات التالية

مع إعداد بيانات التدريب الخاصة بك:

  1. تدريب وحدة معالجة الرسومات المحلية — تدرب على أجهزتك الخاصة
  2. تدريب عامل الميناء — تدريب قابل للتكرار في حاويات
  3. تدريب Google Colab — وحدة معالجة رسومات سحابية مجانية