
Этот проект является основным модулем системы ProHunter, предназначенным для оценки вредоносности графов угроз, полученных из модуля PPG. Основная идея этого метода заключается в использовании неточного векторного сопоставления графов для вычисления векторной схожести между графами угроз и графами атакующих запросов, сгенерированными из CTI, с формированием оценки угрозы для принятия решения. Структура системы показана ниже.
Примечание: Этот проект выступает в качестве последующего модуля обнаружения для PPG, т.е. модуля представления атак и сопоставления (Attack Representation & Matching). Полный рабочий процесс, включая хранение графа происхождения данных и выборку графов угроз, описан в модуле 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:
Это создаст файлы кортежей в:
datasets/darpa_{dataset_name}/tuples/xx.txt
python preprocess/parse_trace.py
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=False
Примечание: Дополнительные параметры (например, количество эпох, скорость обучения) можно найти в функции 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 |