
Sistema di rilevamento delle minacce basato su grafi che utilizza il confronto di vettori di grafi inesatti per confrontare i grafi delle minacce con i grafi di attacco derivati da CTI per il giudizio automatico di dannosità e il punteggio delle minacce.
Questo progetto è un modulo centrale del sistema ProHunter, progettato principalmente per eseguire la valutazione di minaccia sui threat graph campionati dal modulo PPG. L'idea principale di questo metodo è che utilizza un graph vector matching approssimato per calcolare la similarità vettoriale tra i threat graph e gli attack query graph generati dal CTI, producendo punteggi di minaccia per la valutazione. Il framework è illustrato di seguito.
Nota: Questo progetto funge da modulo di rilevamento a valle di PPG, ovvero la Rappresentazione & il Matching degli Attacchi. Per il flusso di lavoro completo, inclusi l'archiviazione dei grafi di provenienza e il campionamento dei threat graph, fare riferimento prima al modulo PPG.
Versione Python: 3.7.12
# Clone the repository
git clone https://github.com/xueboQiu/ProHunter
cd ProHunter
# Install dependencies
pip install -r requirements.txt
Visualizza i threat graph campionati dal modulo PPG.
Uso:
Posiziona i dati dei threat graph nella directory del dataset corrispondente:
dataset/darpa_cadets/sgs_demo/sce041214_E5A15412-68E0-FD54-A068-DD6114FD9040_2.txt # The case provided for visualization
Prepara il file di mapping (ad es. names.json), che può essere generato automaticamente eseguendo dataset_preprocess.py (vedi il flusso di lavoro del Modulo di Rilevamento delle Minacce)
Modifica i percorsi del dataset in subgraph_vision.py ed esegui lo script di visualizzazione:
python subgraph_vision.py
Specifica il dataset corrispondente nello script. Il programma leggerà e visualizzerà automaticamente i dati dei sottografi dalla directory sgs_demo.
Esempio di risultato della visualizzazione:
Posiziona i file scaricati nella directory del progetto seguendo questa struttura:
datasets/darpa_{dataset_name}/raws/xx.json
python preprocess/dataset_preprocess.py # Extract triple information from raw datasets:
Questo genera i file di tuple in:
datasets/darpa_{dataset_name}/tuples/xx.txt
python preprocess/parse_trace.py
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=False
Nota: Parametri aggiuntivi (ad es. epoch, learning rate) sono disponibili nella funzione parse_args() in util.py.
python pretrain_gmpt_cl.py --mode={dataset_name} --eval=True
Il modello caricherà i parametri da models/{dataset_name}/best.pth.
Il progetto fornisce campioni preprocessati del dataset CADETS per test immediati:
# 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
Esempio di risultati della valutazione:
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
| Dataset | File di log | Piattaforma | Link di download |
|---|
| 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 |