
このプロジェクトはProHunterシステムのコアモジュールであり、主にPPGモジュールからサンプリングされた脅威グラフに対して悪性判定を実行するために設計されています。この手法の主なアイデアは、非厳密グラフベクトルマッチングを用いて、脅威グラフとCTIから生成された攻撃クエリグラフとの間のベクトル類似度を計算し、判定のための脅威スコアを生成することです。フレームワークを以下に示します。
注意: このプロジェクトはPPGの下流検知モジュール、すなわちAttack Representation & Matching(攻撃表現&マッチング)として機能します。プロvenanceグラフの保存や脅威グラフのサンプリングを含む完全なワークフローについては、先に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
注意: 追加のパラメータ(例:エポック数、学習率)はutil.pyのparse_args()関数で確認できます。
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 |