Skip to content

yym68686/APT-Malware-Classification

Repository files navigation

 ╔═╗ ╔═╗ ╔╦╗      ╔╦╗ ╔═╗ ╦   ╦ ╦ ╔═╗ ╦═╗ ╔═╗      ╔═╗ ╦   ╔═╗ ╔═╗ ╔═╗ ╦ ╔═╗ ╦ ╔═╗ ╔═╗ ╔╦╗ ╦ ╔═╗ ╔╗╔
 ╠═╣ ╠═╝  ║       ║║║ ╠═╣ ║   ║║║ ╠═╣ ╠╦╝ ║╣       ║   ║   ╠═╣ ╚═╗ ╚═╗ ║ ╠╣  ║ ║   ╠═╣  ║  ║ ║ ║ ║║║
 ╩ ╩ ╩    ╩       ╩ ╩ ╩ ╩ ╩═╝ ╚╩╝ ╩ ╩ ╩╚═ ╚═╝      ╚═╝ ╩═╝ ╩ ╩ ╚═╝ ╚═╝ ╩ ╚   ╩ ╚═╝ ╩ ╩  ╩  ╩ ╚═╝ ╝╚╝

前言

利用 tf-idfxgboost 对恶意样本的 API 调用序列进行数据分析,形成机器学习模型,自动判定恶意样本所属 APT 组织。

数据集

全部数据集都在 Cuckoo Report.zip 里面,以各 APT 组织分类,各 APT 组织的分析报告从 VirusTotal 获取。由于 VirusTotal api 有限制,所以考虑我的另外一个项目 基于 sha256 使用 selenium 爬取 Virustotal 获得文件类型与行为特征文件

项目目录说明

APT_MALWARE_CLASSIFICATION
│  All_Windows_API.json   # 所有 windows api
│  Cuckoo Report.zip      # 所有从 VirusTotal 爬取的行为特征文件
│  feature_engineering.py # 将行为特征文件转化为 pkl 文件
│  overview.csv           # 恶意样本对应的 sha256
│  README.md
│  test.py
│  xgboost_model.py       # 训练程序
│
└─API Sequence            # 所有 pkl 文件

训练步骤

将数据集转化为 pkl 文件。

python feature_engineering.py

运行后将自动创建 API Sequence 文件夹,生成 pkl 文件。开始训练:

python xgboost_model.py

采用五折交叉验证方法对模型进行评估,对于部分 APT 组织的聚类结果如表所示。

APT Group precision recall F1-score 报告数
APT1 0.87 0.90 0.89 252
APT29 0.97 0.80 0.88 128
APT30 0.90 0.88 0.89 149
Dark Hotel 0.84 0.86 0.85 196
Gorgon Group 0.93 0.97 0.95 208
Winnti 0.92 0.91 0.91 162

About

自动判定恶意样本所属 APT 组织

Resources

Stars

Watchers

Forks

Languages