sehamothman/AI-Malware-Detector
GitHub: sehamothman/AI-Malware-Detector
一个基于随机森林的静态恶意软件检测项目,用于演示AI在安全分析中的应用。
Stars: 0 | Forks: 0
# 🛡️ 用于恶意软件检测的机器学习(静态分析)💻
## ✨ 项目概述
本项目构建了一个使用**随机森林**的**模型**,通过分析可执行文件(*无需运行它们!*)来检测恶意软件。我们专注于**静态分析** – 检查文件特征和结构。
由于访问大型外部数据集存在挑战,本项目使用一个**小型、自定义收集的数据集**(包含良性和模拟可疑文件)来演示一个稳健的概念验证。这展示了人工智能驱动的静态恶意软件检测的核心方法。
## 🚀 工作原理与关键特性
我们的AI通过查看文件的独特"指纹"(特征)而非其行为来识别恶意软件。
* **静态检测:** 安全快速的分析,无需执行。
* **AI驱动:** 使用随机森林模型进行智能模式识别。
* **可控的数据处理:** 使用受控的、自定义的数据集演示特征提取和模型训练。
## 📊 数据集:自定义样本
对于本项目,我们使用了一个自定义数据集,包含:
* **良性样本:** 常见的Windows可执行文件(例如,`notepad.exe`、`calc.exe`)。
* **可疑样本:** 无害的 `eicar.com` 测试文件(用于模拟可疑的可执行文件)。
使用 `pefile` 库从这些文件中提取特征。这种方法允许在不需要大型外部恶意软件数据集的情况下,对静态分析流程进行自包含的演示。
## 🛠️ 快速设置指南
几个步骤即可运行此项目!
### 1. 准备系统 💻
* **Python (推荐 3.10/3.11):** [Python 官网](https://www.python.org/downloads/) (请添加到 PATH!)。🐍
* **7-Zip (Windows):** [7-zip.org](https://www.7-zip.org/download.html) (一般用途,虽然对于这个小数据集并非严格必需)。
* **Visual C++ 可再发行组件 (x64):** [Microsoft Learn](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-visual-cpp-redistribution?view=msvc-170)。安装并重启。
* **磁盘空间:** 几GB的可用空间对于此自定义数据集已足够。💾
### 2. 获取代码并设置环境 📂
```
# 克隆此 repo
git clone [https://github.com/U210709718/AI-Agents-for-malware-analysis-and-detection.git](https://github.com/U210709718/AI-Agents-for-malware-analysis-and-detection.git)
cd AI-Agents-for-malware-analysis-and-detection
# 设置 virtual environment 和 安装 libraries
py -m venv .venv
.\.venv\Scripts\activate # Windows
pip install -r requirements.txt # (You'll create this file)
```
### 3. 准备自定义数据并提取特征 🔬
1. **创建数据文件夹:**
```
mkdir -p data/my_test_data/benign_samples
mkdir -p data/my_test_data/suspicious_samples
```
2. **收集样本:**
* **良性:** 将 `notepad.exe`、`calc.exe`、`mspaint.exe` 从 `C:\Windows\System32\` 复制到 `data/my_test_data/benign_samples/`。
* **可疑:** 在 `data/my_test_data/suspicious_samples/` 中手动创建 `eicar.com`。
* 打开记事本,准确粘贴 `X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*`。
* 另存为 `eicar.com`,类型选择"所有文件 (\*.\*)"。(你的杀毒软件可能会将其隔离;如有需要,请恢复它。)
3. **提取特征:**
此步骤使用 `custom_feature_extractor.py` 从你的样本中获取数值特征。
* 确保 `custom_feature_extractor.py`(来自 `src/`)位于 `src/` 目录下。
* 在你的虚拟环境激活状态下,从项目根目录(`AI-Agents-for-malware-analysis-and-detection/`)运行:
```
py src/custom_feature_extractor.py
```
这将在 `data/my_test_data/` 目录下创建 `extracted_features.csv`。
### 4. 运行检测器! ▶️
特征提取完成后:
```
cd src
py malware_detector.py
```
此脚本会加载你的 `extracted_features.csv`,对特征进行缩放,训练一个**随机森林模型**,评估它,并将训练好的模型(`.pkl` 文件)保存到 `models/` 目录。
*(在这个小数据集上的训练速度非常快!)*
## 📈 结果
*(此部分来自 `malware_detector.py` 的输出。由于数据集非常小,某些指标可能是 0.0 或 1.0,并且关于 y_test 中单一标签的 `UserWarning` 是预期且正常的。)*
随机森林模型在自定义测试集上取得了以下性能:
* **准确率:** 1.0000
* **精确率:** 1.0000
* **召回率:** 1.0000
* **F1分数:** 1.0000
**混淆矩阵:**
```
[[2 0 ]
[0 1]]
```
## 🎥 视频演示: (https://youtu.be/bZv6dZoknXk)
## 用户界面
使用Python语言的streamlit,以下是分析结果的屏幕截图:


## 💡 未来增强
* **整合大型数据集:** 一旦可以访问,调整项目以处理和训练更大的、真实世界的数据集(如 EMBER 2018),并利用内存高效加载(例如,`np.memmap`)。
* **实时PE文件分析:** 实现一个模块,从任何新的PE文件中提取特征,并使用训练好的模型进行实时预测。
* **更多机器学习模型:** 探索其他机器学习算法(例如,梯度提升、SVM、简单神经网络)。
* **使模型能够预测未来风险
标签:AI安全应用, AI驱动安全, Apex, DAST, Kubernetes, pefile库, Python开发, URL发现, 云安全监控, 人工智能, 可执行文件分析, 安全检测, 恶意软件分析, 恶意软件识别, 教育项目, 机器学习, 机器学习模型, 检测模型, 模式识别, 特征提取, 用户模式Hook绕过, 网络安全, 课程项目, 逆向工具, 随机森林算法, 隐私保护, 静态分析, 静态分析技术, 静态恶意软件检测