
Détection des menaces internes basée sur des graphes utilisant des modèles GCN-BiLSTM et d'attention sur les ensembles de données CMU CERT. Comprend le prétraitement des données, l'extraction de caractéristiques et des points de contrôle pré-entraînés pour la recherche en détection d'anomalies.
Ce dépôt contient la préparation des données, l'extraction de caractéristiques et des modèles basés sur les graphes (GCN-NN, GCN-BiLSTM et GCN-BiLSTM+Attention pour signaux implicites+explicites) pour la détection de menaces internes à l'aide du jeu de données CMU CERT Insider Threat Test (R5.2, R6.2).
.
│ environment.yml
│ requirements.txt
│ tree.txt
│
├── data/
│ ├── original/
│ │ ├── r5_data/
│ │ └── r6_data/
│ ├── preprocessed/
│ │ ├── r5_data/
│ │ └── r6_data/
│ ├── r5.2-used-model/
│ └── r6.2_used_model/
│
├── notebook/
│ │ 01_feature_extraction.ipynb
│ │ 02_GCN-LSTM.ipynb
│ │ 03_GCN.ipynb
│ │ 04_GCN_Implicit_Explicit.ipynb
│ │ r5_data_preparation.ipynb
│ │ r6_data_preparation.ipynb
│ │ email_http_divider.ipynb
│
└── script/
│ get_feature.py
│ process_feature.py
└── __pycache__/
L'arborescence complète et profonde (incluant tous les
.pklet points de contrôle) peut être conservée danstree.txtafin de garder ce README concis.
Cloner le dépôt
git clone https://github.com/votre-utilisateur/votre-repo.git
cd votre-repo
Créer l'environnement Conda
conda env create -f environment.yml
L'activer
conda activate <nom_env>
Remplacez <nom_env> par la valeur indiquée sous name: dans environment.yml.
(Optionnel) Installation uniquement via pip
pip install -r requirements.txt
Télécharger le jeu de données CMU CERT Insider Threat Test (R5.2 et R6.2) depuis :
https://kilthub.cmu.edu/articles/dataset/Insider_Threat_Test_Dataset/12841247
Placer les données brutes sous :
data/original/r5_data/
data/original/r6_data/
Exécutez les notebooks de préparation pour créer les fichiers de session plus petits et les CSV/PKL canoniques.
R5.2
notebook/r5_data_preparation.ipynb
R6.2
notebook/r6_data_preparation.ipynb
Sorties attendues pour R5.2 (exemples) :
r5_small_device_session.pkl
r5_small_file_session.pkl
r5_small_email_session.pkl
r5_small_http_session.pkl
r5_small_sessoion_data.pkl
r5_small_session_log_df.pkl
Sorties attendues pour R6.2 (incluent) :
r6_2_small_device_session.pkl
r6_2_small_file_session.pkl
r6_2_small_email_session.pkl
r6_2_small_http_session.pkl
r6_2_small_session_log_df.pkl
r6_2_user_df_pc.csv
Les sorties sont enregistrées dans :
data/preprocessed/r5_data/
data/preprocessed/r6_data/
Exécutez :
notebook/01_feature_extraction.ipynb
Sorties :
log_activity_code.pkl
device_activity_code.pkl
file_activity_code.pkl
email_activity_code.pkl
http_activity_code.pkl
Ce notebook génère également des listes/masques de graphes, par exemple :
data/preprocessed/r6_data/r6_graph_list_feature_corrected_range_corrected.pkl
GCN-BiLSTM (Explicite)
notebook/02_GCN-LSTM.ipynb
GCN-NN (Explicite)
notebook/03_GCN.ipynb
GCN-BiLSTM + Attention (Implicite + Explicite)
notebook/04_GCN_Implicit_Explicit.ipynb
Les points de contrôle pré-entraînés et les artefacts ROC se trouvent dans :
data/r5.2-used-model/
data/r6.2_used_model/
Chaque sous-dossier contient :
*.pth # model weights
roc_curve_data_*.npz # saved ROC curve data
roc_curves*.png # ROC plots