
Обнаружение внутренних угроз на основе графов с использованием моделей GCN-BiLSTM и внимания на наборах данных CMU CERT. Включает предобработку данных, извлечение признаков и предобученные контрольные точки для исследований в области обнаружения аномалий.
Этот репозиторий содержит подготовку данных, извлечение признаков и графовые модели (GCN-NN, GCN-BiLSTM и GCN-BiLSTM+Attention для неявных+явных сигналов) для обнаружения угроз изнутри с использованием набора данных CMU CERT Insider Threat Test Dataset (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__/
Полное дерево (включая все файлы
.pklи контрольные точки моделей) можно сохранить вtree.txt, чтобы сделать этот README кратким.
Клонируйте репозиторий
git clone https://github.com/your-username/your-repo.git
cd your-repo
Создайте окружение Conda
conda env create -f environment.yml
Активируйте его
conda activate <env_name>
Замените <env_name> на значение под name: в environment.yml.
(Опционально) Установка только через pip
pip install -r requirements.txt
Загрузите набор данных CMU CERT Insider Threat Test Dataset (R5.2 и R6.2) с:
https://kilthub.cmu.edu/articles/dataset/Insider_Threat_Test_Dataset/12841247
Поместите исходные данные в:
data/original/r5_data/
data/original/r6_data/
Запустите блокноты подготовки для создания файлов сессий и канонических CSV/PKL.
R5.2
notebook/r5_data_preparation.ipynb
R6.2
notebook/r6_data_preparation.ipynb
Ожидаемые результаты R5.2 (примеры):
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
Ожидаемые результаты R6.2 включают:
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
Результаты сохраняются в:
data/preprocessed/r5_data/
data/preprocessed/r6_data/
Запустите:
notebook/01_feature_extraction.ipynb
Результаты:
log_activity_code.pkl
device_activity_code.pkl
file_activity_code.pkl
email_activity_code.pkl
http_activity_code.pkl
Этот блокнот также генерирует списки/маски графов, например:
data/preprocessed/r6_data/r6_graph_list_feature_corrected_range_corrected.pkl
GCN-BiLSTM (Явные сигналы)
notebook/02_GCN-LSTM.ipynb
GCN-NN (Явные сигналы)
notebook/03_GCN.ipynb
GCN-BiLSTM + Attention (Неявные + Явные сигналы)
notebook/04_GCN_Implicit_Explicit.ipynb
Предварительно обученные контрольные точки и артефакты ROC находятся в:
data/r5.2-used-model/
data/r6.2_used_model/
Каждая подпапка содержит:
*.pth # веса модели
roc_curve_data_*.npz # сохраненные данные ROC-кривых
roc_curves*.png # ROC-графики