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 匹配和启发式标记,以提高检测的可靠性。 ## 截图 ### 系统架构 ![System Architecture](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/17f5693fb6025502.png) ### 扫描结果 ![Scan Results](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2b5cbdea7d025506.png) ### PDF 报告 ![PDF Report](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4d1f81fe08025512.png) ### 隔离工作流 ![Quarantine Workflow](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/31e7fe0173025517.png) ### 模型训练结果 ![Model Training Result](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ab5a44b9de025521.png) ## 项目结构 ``` 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, 云安全监控, 云资产可视化, 恶意软件分析, 无后门, 机器学习, 逆向工具, 静态分析