
نظام كشف تهديدات قائم على الرسوم البيانية يستخدم مطابقة متجهات الرسوم البيانية غير الدقيقة لمقارنة رسوم التهديدات مع رسوم استعلام الهجمات المشتقة من CTI لإصدار حكم آلي على الأنشطة الخبيثة وتقييم مستوى التهديد.
هذه الوحدة هي مكوّن أساسي من نظام ProHunter، مصممة بشكل أساسي لإجراء حكم على الخبيث تجاه الرسوم البيانية للتهديدات التي يتم أخذ عينات منها من وحدة PPG. الفكرة الرئيسية لهذه الطريقة هي استخدام مطابقة متجهات الرسوم البيانية غير الدقيقة لحساب التشابه المتجهي بين الرسوم البيانية للتهديدات والرسوم البيانية لاستعلامات الهجوم المولّدة من CTI، مما ينتج درجات تهديد للحكم. يوضَّح الإطار كما يلي.
ملاحظة: يعمل هذا المشروع كوحدة الكشف النهائية (downstream) لـ PPG، أي تمثيل الهجوم والمطابقة. للحصول على سير العمل الكامل بما في ذلك تخزين الرسم البياني للأثر وأخذ عينات الرسم البياني للتهديد، يرجى الرجوع إلى وحدة PPG أولاً.
إصدار Python: 3.7.12
# Clone the repository
git clone https://github.com/xueboQiu/ProHunter
cd ProHunter
# Install dependencies
pip install -r requirements.txt
تصور الرسوم البيانية للتهديدات التي تم أخذ عينات منها بواسطة وحدة PPG.
الاستخدام:
ضع بيانات الرسم البياني للتهديد في دليل مجموعة البيانات المقابل:
dataset/darpa_cadets/sgs_demo/sce041214_E5A15412-68E0-FD54-A068-DD6114FD9040_2.txt # The case provided for visualization
جهّز ملف التعيين (مثل names.json)، والذي يمكن إنشاؤه تلقائيًا عن طريق تشغيل dataset_preprocess.py (انظر سير عمل وحدة كشف التهديدات)
عدّل مسارات مجموعة البيانات في subgraph_vision.py، ثم شغّل البرنامج النصي للتصور:
python subgraph_vision.py
حدد مجموعة البيانات المقابلة في البرنامج النصي. سيقرأ البرنامج تلقائيًا بيانات الرسم البياني الفرعي من دليل sgs_demo ويعرضها.
مثال على نتيجة التصور:
ضع الملفات التي تم تنزيلها في دليل المشروع وفقًا للهيكل التالي:
datasets/darpa_{dataset_name}/raws/xx.json
python preprocess/dataset_preprocess.py # Extract triple information from raw datasets:
يؤدي ذلك إلى إنشاء ملفات الثلاثيات (tuple) في:
datasets/darpa_{dataset_name}/tuples/xx.txt
python preprocess/parse_trace.py
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=False
ملاحظة: يمكن العثور على معلمات إضافية (مثل عدد العصور epoch، معدل التعلم) في دالة parse_args() في util.py.
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=True
سيقوم النموذج بتحميل معاملات النموذج من models/{dataset_name}/best.pth.
يوفر المشروع عينات من مجموعة بيانات CADETS المعالجة مسبقًا للاختبار الفوري:
# Direct evaluation (using pre-trained model)
python pretrain_gmpt_cl.py --mode=cadets --eval=True
# Re-train the model
python pretrain_gmpt_cl.py --mode=cadets --eval=False
python pretrain_gmpt_cl.py --mode=cadets --eval=True
مثال على نتائج التقييم:
ProHunter/
├── dataset/
│ └── darpa_cadets/ # Example dataset
│ ├── raws/ # Raw dataset files
│ ├── sgs_demo/
│ ├── test/
│ ├── train/
│ ├── tuples/ # Extracted tuples
│ ├── edge_type_map.json
│ ├── names.json # UUID to name mapping
│ ├── node_type_map.json
│ └── types.json # UUID to type mapping
├── models/
│ └── {dataset_name}/
│ └── best.pth # Trained model parameters
├── preprocess/ # Data preprocessing scripts
├── subgraph/
├── batch.py
├── darpa_loader.py # DARPA data loader
├── darpa_model.py
├── dataloader.py # Data loading utilities
├── graph_matching.py
├── pretrain_gmpt_cl.py # Main training & evaluation script
├── splitters.py
├── util.py # Utility functions & arguments
├── requirements.txt # Dependencies
└── readme.md
| مجموعة البيانات | ملفات السجلات | المنصة | رابط التنزيل |
|---|
| E3-Cadets | ta1-cadets-e3-official-1.json.{0-4} | FreeBSD | DARPA E3 |
| E3-Theia | ta1-theia-e3-official-6r.json.{0-12} | Linux | DARPA E3 |
| E3-Trace | ta1-trace-e3-official.json.{0-203} | Linux | DARPA E3 |
| E5-Theia | ta1-theia-1-e5-official-2.bin.{27-31} | Linux | DARPA E5 |
| E5-Clearscope2_1 | ta1-clearscope-2-e5-official-1.bin.{15-20} | Android | DARPA E5 |
| E5-Clearscope2_2 | ta1-clearscope-2-e5-official-1.bin.{24-33} | Android | DARPA E5 |
| OPTC | benign/20-23Sep19/AIA-201-225/{*} | Windows | OpTC |