
Ce projet est un module central du système ProHunter, principalement conçu pour effectuer un jugement de malveillance sur les graphes de menaces échantillonnés à partir du module PPG. L'idée principale de cette méthode est qu'elle utilise la correspondance vectorielle de graphes inexacte pour calculer la similarité vectorielle entre les graphes de menaces et les graphes de requêtes d'attaque générés à partir des CTI, produisant des scores de menace pour le jugement. Le framework est illustré ci-dessous.
Remarque : Ce projet sert de module de détection en aval de PPG, c'est-à-dire la représentation et la correspondance des attaques. Pour le workflow complet, y compris le stockage des graphes de provenance et l'échantillonnage des graphes de menaces, veuillez d'abord vous référer au module PPG.
Version Python : 3.7.12
# Clone the repository
git clone https://github.com/xueboQiu/ProHunter
cd ProHunter
# Install dependencies
pip install -r requirements.txt
Visualisez les graphes de menaces échantillonnés par le module PPG.
Utilisation :
Placez les données des graphes de menaces dans le répertoire du jeu de données correspondant :
dataset/darpa_cadets/sgs_demo/sce041214_E5A15412-68E0-FD54-A068-DD6114FD9040_2.txt # The case provided for visualization
Préparez le fichier de mappage (par ex., names.json), qui peut être généré automatiquement en exécutant dataset_preprocess.py (voir le workflow du module de détection des menaces).
Modifiez les chemins des ensembles de données dans subgraph_vision.py, puis exécutez le script de visualisation :
python subgraph_vision.py
Spécifiez l'ensemble de données correspondant dans le script. Le programme lira et visualisera automatiquement les données de sous-graphes du répertoire sgs_demo.
Exemple de résultat de visualisation :
Placez les fichiers téléchargés dans le répertoire du projet selon la structure suivante :
datasets/darpa_{dataset_name}/raws/xx.json
python preprocess/dataset_preprocess.py # Extract triple information from raw datasets:
Cela génère des fichiers de tuples à l'emplacement :
datasets/darpa_{dataset_name}/tuples/xx.txt
python preprocess/parse_trace.py
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=False
Remarque : Des paramètres supplémentaires (par ex., epoch, taux d'apprentissage) se trouvent dans la fonction parse_args() du fichier util.py.
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=True
Le modèle chargera les paramètres depuis models/{dataset_name}/best.pth.
Le projet fournit des échantillons prétraités du jeu de données CADETS pour des tests immédiats :
# 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
Exemples de résultats d'évaluation :
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
| Ensemble de données | Fichiers journaux | Plateforme | Lien de téléchargement |
|---|
| 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 |