lehasaS/Malware-Analysis-and-Detection
GitHub: lehasaS/Malware-Analysis-and-Detection
基于卷积神经网络的恶意软件分类检测研究项目,通过将 PE 文件转换为图像实现自动化的恶意样本识别。
Stars: 1 | Forks: 1
# 恶意软件分析与检测
## 引言
鉴于当今不断变化的安全形势,恶意软件研究是一个非常动态的领域。针对病毒、蠕虫、木马等恶意软件的安全防护需要持续的改进甚至新颖的方法来提高对此类软件的检测能力。目前人们已经实现了几种提出的机制,但通常严重缺乏自动化能力。这促使研究人员多年来致力于探索利用机器学习(如深度学习)领域的实现方案。在本项目中,实现了两个卷积神经网络,以研究在深度和超参数存在差异的情况下它们的检测准确率。
### 初步说明
本代码仓库在名为 `samples.7z` 的受密码保护的压缩包中包含真实的 Windows 可移植可执行 (PE) 恶意软件样本,密码为 "infected"。对于因处理不当样本而可能造成的任何损害,我概不负责。特此警告!压缩包中共有 4000 个样本,你可以使用以下命令来解压它们:
```
7z x samples.7z -pinfected
```
### 论文
本项目的论文撰写内容可以在 这里 找到,该文章首先介绍了贯穿该项目的各种概念,并逐步深入到本代码仓库中所做的实验。
### 数据处理
`scripts` 目录中提供了用 bash 和 Python 编写的脚本,用于将恶意软件二进制文件转换为图像,并将图像划分为训练集、验证集和测试集。提供了 [imauto.sh](https://github.com/lehasaS/Malware-Analysis-and-Detection/blob/master/scripts/imauto.sh) 用于自动化转换,提供了 [split.sh](https://github.com/lehasaS/Malware-Analysis-and-Detection/blob/master/scripts/split.sh) 用于自动化划分数据集。
### 运行程序
#### 使用 make
如果你希望使用它来运行程序,这里提供了一个 [Makefile](https://github.com/lehasaS/Malware-Analysis-and-Detection/blob/master/Makefile)。请注意,调用 make 会为你创建一个 Python 环境(假设你当前没有),并且还会安装 `requirements.txt` 文件中指定的必要依赖包。文件中提供了训练、测试和清理命令,可以通过以下方式执行:
```
make
```
#### 使用命令行
你需要首先安装运行该程序所需的必要依赖包,这可以通过以下命令来完成:
```
pip install -r requirements.txt
```
然后,你可以执行以下命令来训练或测试模型:
```
python CNN_Malware_Train_Test.py
```
其中 flag 必须为以下之一:
- --train(用于训练模型,要求在根目录下有一个 train_output 目录,用于保存所有生成的文件,包括模型的 state dict)
- --test(用于测试模型,要求在根目录下有一个 test_output 目录,用于保存所有生成的文件)
其中 model_name 必须为以下之一:
- Model_One
- Model_Two
### 超参数调优
如果你希望自己进行操作,超参数调优是在 weights and biases 平台上进行的。这里提供了 [CNN_Malware_Hyperparameter_Study.ipynb](https://github.com/lehasaS/Malware-Analysis-and-Detection/blob/master/CNN_Malware_Hyperparameter_Study.ipynb) notebook。
标签:二进制图像化, 人工智能, 卷积神经网络, 应用安全, 深度学习, 用户模式Hook绕过, 逆向工具