TiamCow/PE_Static_Malware_Analyzer
GitHub: TiamCow/PE_Static_Malware_Analyzer
一款基于 Python 的 Windows PE 文件静态恶意软件分析器,结合 YARA 规则、启发式检查与随机森林模型,无需执行即可对文件进行恶意性判定。
Stars: 0 | Forks: 0
# PE 静态恶意软件分析器
这是一个基于 Python 的静态恶意软件分析工具,专为 Windows 可移植执行体 (PE) 文件设计。该项目通过提取 PE 特征,应用 YARA 规则和启发式检查,并使用随机森林模型将文件分类为恶意或合法文件,且整个过程无需执行被分析的文件。
## 概述
本项目专注于针对 Windows PE 文件(如 `.exe`、`.dll`、`.sys` 和 `.bin`)的静态恶意软件分析。分析器会读取 PE 文件的结构,提取与安全相关的指标,并结合多种检测方法以得出最终结论。
其目标是通过在安全的环境下识别可疑文件(无需运行它们),从而支持恶意软件的初步筛选和防御性安全分析。
## 功能
- 提取 PE 头、节区、导入表、导出表、资源以及元数据
- 计算文件的 MD5、SHA-1 和 SHA-256 哈希值
- 计算节区和资源的香农熵
- 使用 YARA 规则检测可疑的 PE 特征
- 识别启发式指标,例如:
- 无导入表
- 高熵值 / 加壳文件
- RWX 节区
- 进程注入 API
- 反调试 API
- 文件枚举行为
- 使用随机森林模型对 PE 文件进行分类
- 通过 GUI 扫描单个文件或整个文件夹
- 导出 PDF、CSV 和 JSON 格式的报告
- 通过将检测到的恶意文件移动到隔离文件夹中来对其进行隔离
## 检测工作流
```
Input PE File
|
v
Static Feature Extraction
|
+-- File hashes
+-- PE headers
+-- Sections and entropy
+-- Imports and exports
+-- Resources
|
v
Hybrid Detection Engine
|
+-- YARA rules
+-- Heuristic checks
+-- Random Forest model
|
v
Final Verdict: CLEAN / SUSPICIOUS / MALWARE
```
最终结论基于混合决策引擎。该工具不仅依赖机器学习,还结合了 YARA 匹配和启发式标记,以提高检测的可靠性。
## 截图
### 系统架构

### 扫描结果

### PDF 报告

### 隔离工作流

### 模型训练结果

## 项目结构
```
PE_Static_Extractor/
├── core/
│ ├── hash_utils.py # File hash calculation
│ ├── math_utils.py # Shannon entropy calculation
│ └── pe_analyzer.py # PE feature extraction
├── models/ # Trained Random Forest model files
├── reports/ # Generated reports
├── screenshots/ # README images
├── samples/ # Local test samples
├── Quarantine_Vault/ # Quarantined files
├── main_gui.py # GUI application
├── train_model.py # Model training script
├── rules.yar # YARA detection rules
└── MalwareData.csv # Training dataset
```
## 技术栈
- Python
- pefile
- yara-python
- scikit-learn
- pandas
- NumPy
- joblib
- customtkinter
- fpdf
## 安装说明
创建并激活虚拟环境:
```
python -m venv .venv
.venv\Scripts\activate
```
安装必要的软件包:
```
pip install pefile yara-python scikit-learn pandas numpy joblib customtkinter fpdf
```
## 训练模型
运行:
```
python train_model.py
```
该脚本会使用 `MalwareData.csv` 训练一个随机森林分类器,并保存:
```
models/rf_malware_model.pkl
models/model_features.pkl
```
## 运行应用程序
启动 GUI:
```
python main_gui.py
```
GUI 支持:
- 扫描单个 PE 文件
- 扫描文件夹
- 查看扫描结果
- 导出 PDF/CSV/JSON 报告
- 隔离检测到的恶意文件
## YARA 规则
内置的 `rules.yar` 文件可检测可疑的 PE 模式,例如:
- 无导入表的 PE 文件
- 同时具有写和执行权限的节区
- 高熵值文件
- 已知的加壳器相关节区名,如 `.vmp`、`.themida` 和 `.aspack`
## 输出
生成的文件保存在:
```
reports/
```
报告格式:
- PDF 摘要报告
- 用于数据集风格分析的 CSV 导出文件
- 针对每个扫描文件的详细 JSON 报告
## 安全提示
本项目仅供教育和防御性安全研究使用。
请勿将真实的恶意软件样本上传到公开代码库。务必仅在隔离的实验室或虚拟机中分析可疑文件。
推荐的安全实践:
- 请勿在宿主系统上执行可疑文件。
- 切勿将恶意软件样本存入 GitHub 代码库中。
- 使用 VM 或隔离环境进行测试。
- 切勿将生成的报告、样本和隔离文件纳入版本控制。
## 局限性
- 该工具仅执行静态分析,无法观察运行时行为。
- 检测质量取决于训练数据集和提取的特征。
- 启发式规则可能会产生误报,或遗漏新型的规避技术。
- 目前的实现仅专注于 Windows PE 文件。
## 未来改进
- 使用沙箱环境添加动态分析
- 提取字符串、操作码和控制流特征
- 测试其他模型,如 XGBoost 或 LightGBM
- 提高 YARA 规则覆盖率
- 与 SIEM 或 SOC 工作流集成
## 免责声明
本工具仅供学习及防御性恶意软件分析实践使用。作者不对本项目的滥用行为承担责任。
标签:Apex, DAST, DNS 反向解析, Python, Windows PE, YARA, 云安全监控, 云资产可视化, 恶意软件分析, 无后门, 机器学习, 逆向工具, 静态分析