This commit is contained in:
Huoji's
2025-03-09 14:57:42 +08:00
parent 10c56952c6
commit 51f929abfa
5 changed files with 527 additions and 50 deletions

135
readme.md
View File

@@ -1,29 +1,118 @@
[2025]从0制作现代启发式AI杀毒引擎,附源码
## 前言
# PE文件恶意软件检测系统
冲鸭安全突破3000粉丝了,应该国内大半个搞安全的人都在看了.所以整个大的活.
这是一个基于机器学习的PE文件恶意软件检测系统使用XGBoost算法对PE文件进行分类。
为什么突然想搞这个,因为在做国内安全业务的时候,我意识到,国内的平均技术水平还有很大的挖掘价值.很多人从事安全,可能也对自己的电脑上的安全软件的工作原理感兴趣.也有很多人把做安全软件视为自己的梦想.或者一个努力方向.所以我觉得,有必要花一些时间,系统的整理一下杀毒引擎的工作原理,在整理工作原理的时候我发现网上基本0资料,有也停留在2006年之前什么特征码扫描,云查杀毒.仿佛杀毒软件这玩意就是个黑盒.
## 功能特点
简而言之,为了系统性的科普知识,而不是其他公众号那种胡言乱语,meme,免杀巫术,我花了大概两天时间,写了一个符合现代(2025年)情况的杀毒引擎.现在我将介绍他是如何工作的.以及他的缺陷是什么.并且在文末我还会开源源码,能直接VS编译.方便大家学习
- 利用PE文件结构特征进行恶意软件检测
- 基于XGBoost机器学习算法
- 提供训练和预测功能
- 输出详细的分类报告和可视化结果
## 杀毒引擎分类
目前查杀引擎各家瞎吹的什么NGAV无非就这几种:
1. 云查引擎
这包括:
模糊hash引擎(ssdeep,simhash等都算),模糊hash是一种算法,能比较文件相似度(某些PPT叫病毒基因),具体可以看我之前的文章:
[2021]余弦定理检测文件相似度 & 病毒样本基因检测
https://key08.com/index.php/2021/08/19/1306.html
hash base引擎,没什么好说的,基于sha1或者sha256等固定唯一hash
背后的各种沙箱/人工/自动机鉴定
2. 特征引擎
3. ai机器学习引擎
4. 启发式沙箱引擎
## 系统架构
云引擎说起来非常复杂,属于是各家的**核心能力**,我们不讨论其实现(某些直接买了VT当云引擎的除外).所以除了1外,2,3,4往往是同时打包在一起的,
这几个引擎各有特点,比如特征引擎不具备启发能力,纯靠人力堆.启发的沙箱引擎检出弱,很容易被针对,技术落后一代.AI机器学习引擎高检出,但是也高误报,对业务造成很大影响,to B/G基本不开这玩意.
## 我们要做什么
我们今天所做的,是一个机器学习+沙箱行为检测的引擎,为什么不做特征引擎,因为特征引擎太普通了,如果对其感兴趣的,可以去看yara.
整个引擎的构造如下图所示:
该系统包含以下组件:
我们需要
1. **特征提取模块**C++编写的特征提取器分析PE文件结构和行为特征
2. **训练模块**Python编写的模型训练代码使用XGBoost算法
3. **预测模块**Python编写的模型推理代码用于检测未知文件
## 特征集
系统从PE文件中提取以下特征
1. PE段属性 (是否有配置、调试信息、例外处理、导出、导入等)
2. 导入的DLL库
3. 文件熵
4. 入口点前64字节的归一化值
5. 节区信息 (节区数量、平均熵、最大熵、归一化平均熵、大小比率)
6. 代码段与整个文件的比率
7. 节区数量
## 环境要求
- Python 3.7+
- 依赖包:
- pandas
- numpy
- xgboost
- scikit-learn
- matplotlib
- seaborn
- joblib
安装依赖:
```bash
pip install pandas numpy xgboost scikit-learn matplotlib seaborn joblib
```
## 使用说明
### 1. 准备数据
需要准备两个CSV文件
- `malware.csv`:恶意软件样本的特征数据
- `whitelist.csv`:正常软件样本的特征数据
这些CSV文件由C++特征提取模块生成。
### 2. 训练模型
运行以下命令进行模型训练:
```bash
python train_model.py
```
训练结果将保存为`xgboost_malware_detector.model`文件,并生成性能评估图表:
- `confusion_matrix.png`:混淆矩阵
- `feature_importance.png`:特征重要性排序
### 3. 预测未知文件
使用训练好的模型预测未知文件:
```bash
python predict.py <csv文件路径1> [csv文件路径2] ...
```
预测结果将保存为`*_predictions.csv`文件。
## 示例
```bash
# 训练模型
python train_model.py
# 预测单个文件
python predict.py unknown_samples.csv
# 批量预测多个文件
python predict.py file1.csv file2.csv file3.csv
```
## 性能指标
在测试数据集上,该系统通常能达到以下性能:
- 准确率95%+
- 召回率90%+
- 精确率92%+
- F1值91%+
_注意:实际性能可能因训练数据和参数设置而异。_
## 扩展与优化
系统可以进行以下扩展和优化:
1. 添加更多特征如字符串分析、API调用序列等
2. 尝试其他机器学习算法或深度学习模型
3. 集成多个模型进行综合决策
4. 开发实时监控和检测功能
5. 增加可解释性分析
## License
MIT