satyamFA/Satyam-PE-Entropy-Analyzer

GitHub: satyamFA/Satyam-PE-Entropy-Analyzer

基于香农熵分析与 VirusTotal 威胁情报的静态恶意软件检测工具,用于快速识别加壳或加密的可疑 PE 文件。

Stars: 1 | Forks: 0

# 🔍 PE 熵分析器 **基于香农熵分析 + VirusTotal 威胁情报的静态恶意软件检测** ![Python](https://img.shields.io/badge/Python-3.8+-blue?style=for-the-badge&logo=python) ![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge) ![VirusTotal](https://img.shields.io/badge/VirusTotal-Integrated-brightgreen?style=for-the-badge) ![Status](https://img.shields.io/badge/Status-Active-success?style=for-the-badge) *能够检测出杀毒引擎遗漏的加壳和加密恶意软件——耗时不到 1 秒。*
## 📋 目录 - [功能介绍](#-what-it-does) - [特性](#-features) - [工作原理](#-how-it-works) - [安装说明](#-installation) - [使用方法](#-usage) - [示例输出](#-example-output) - [风险等级](#-risk-levels) - [项目结构](#-project-structure) - [免责声明](#-disclaimer) ## 🎯 功能介绍 当你收到一个可疑的 `.exe` 文件时,你的杀毒软件可能无法捕获它——特别是当恶意软件被**加壳**或**加密**以隐藏其真实内容时。 本工具采用了不同的方法:它不寻找已知的签名,而是测量**文件内部字节的随机程度**。加壳/加密的恶意软件具有极高的随机性(熵)。而正常的代码则没有。 然后,它通过 VirusTotal 将文件的 SHA-256 指纹与 **72 款以上的杀毒引擎**进行交叉比对——只需一个命令即可完成。 ## ✨ 特性 | 特性 | 描述 | |--------|-------------| | 🧮 **香农熵** | 计算 PE 各节的随机性 | | 🛡️ **VirusTotal 查询** | 通过 SHA-256 哈希自动查询 72 款以上的杀毒引擎 | | 📊 **熵值图表** | 每个文件生成带有颜色编码的 PNG 条形图 | | 📄 **JSON 报告** | 将完整的机器可读输出保存到磁盘 | | ⚡ **批量模式** | 递归扫描整个文件夹 | | 🔴 **风险评分** | 自动进行 CLEAN → CRITICAL 的分类 | | 💪 **错误处理** | 优雅地处理格式错误或损坏的 PE 文件 | ## 🔬 工作原理 ### 第 1 步 — 香农熵 每个 PE 文件(`.exe`、`.dll`)都被划分为多个节(section),例如 `.text`(代码)和 `.rsrc`(资源)。 该工具读取每个节的原始字节并应用**香农熵公式**: ``` H = -∑ p(x) × log₂(p(x)) ``` - **低熵(约 3–5)** = 可读的、结构化的代码 → 正常 ✅ - **高熵(约 7–8)** = 扰乱的、压缩的字节 → 可疑 ⚠️ ### 第 2 步 — VirusTotal 哈希校验 该工具计算文件的 **SHA-256 哈希**,并将其发送到 VirusTotal 的 API。几秒钟内,你就能看到 72 款杀毒引擎中有多少将该文件标记为恶意。 ### 第 3 步 — 报告生成 结果保存为: - 一张 **PNG 图表**,展示每个节的熵值,并按风险等级进行颜色编码 - 一份 **JSON 报告**,包含完整的技术细节以及 VirusTotal 的响应 ## 🚀 安装说明 ### 1. 下载文件 点击绿色的 **Code** 按钮 → **Download ZIP** → 解压到一个文件夹 ### 2. 安装依赖项 在该文件夹中打开命令提示符或 PowerShell 并运行: ``` pip install -r requirements.txt ``` ### 3. 设置 VirusTotal API 密钥 1. 在 [virustotal.com](https://www.virustotal.com) 创建一个免费账户 2. 进入你的个人资料 → **API Key** 3. 复制你的密钥 4. 在项目文件夹中创建一个名为 `.env` 的文件: ``` VT_API_KEY=paste_your_key_here ``` ## 💻 使用方法 ### 分析单个文件 ``` python pe-entropy.py C:\Windows\System32\notepad.exe ``` ### 扫描整个文件夹 ``` python pe-entropy.py C:\Users\Desktop\suspicious_files\ ``` 输出文件将自动保存到 `evidence/` 文件夹。 ## 📊 示例输出 ``` Analyzing: C:\Windows\System32\notepad.exe Looking up hash on VirusTotal... ============================================================ FILE : notepad.exe SHA-256 : 84b484fd3636f2ca3e468d2821d97aacde8a143a2724a3ae65f48a33ca2fd258 VERDICT : 🟡 MEDIUM Entropy : avg=3.1951 max=6.968 Sections: 8 VT : ✅ 0 / 72 engines flagged this file ============================================================ Section Entropy Risk Raw Size -------------------------------------------------- .text 6.2333 LOW 159744 fothk 0.0159 CLEAN 4096 .rdata 5.5588 LOW 45056 .data 1.6240 CLEAN 4096 .pdata 3.3012 CLEAN 8192 .didat 0.2524 CLEAN 4096 .rsrc 6.9680 MEDIUM 126976 .reloc 1.6070 CLEAN 4096 Chart saved → evidence\notepad_entropy.png Report saved → evidence\notepad_report.json ``` ## 🎯 风险等级 | 熵值 | 标签 | 含义 | 操作建议 | |---------|-------|---------|--------| | 0.0 – 5.5 | 🟢 **CLEAN** | 正常代码 | 安全 | | 5.5 – 6.5 | 🟡 **LOW** | 轻度压缩 | 予以关注 | | 6.5 – 7.0 | 🟡 **MEDIUM** | 中度压缩 | 进行调查 | | 7.0 – 7.2 | 🟠 **HIGH** | 强烈压缩 | 隔离处理 | | ≥ 7.2 | 🔴 **CRITICAL** | 已加壳 / 加密 | 极大可能为恶意软件 | ## 📁 项目结构 ``` PE-Entropy-Analyzer/ │ ├── pe-entropy.py ← Main script ├── requirements.txt ← Python dependencies ├── .env.example ← API key template (rename to .env) ├── .gitignore ← Keeps secrets out of GitHub ├── README.md ← This file │ └── evidence/ ← Auto-created output folder ├── notepad_report.json └── notepad_entropy.png ``` ## ⚠️ 免责声明 本工具仅供**授权的安全研究**使用。 请仅分析你拥有或已获得明确授权进行测试的文件。 未经授权分析第三方系统可能触犯法律。 ## 📜 许可证 MIT 许可证 — 可自由使用、修改和分发。
为安全社区用 ❤️ 打造

⭐ 如果这对你有帮助,请考虑给本仓库点个 Star!
标签:API 测试, Ask搜索, DNS 反向解析, JSON报告, PE文件分析, Python, VirusTotal, 二进制分析, 云安全监控, 云安全运维, 加壳检测, 加密恶意软件, 可执行文件分析, 哈希查询, 威胁情报, 开发者工具, 批处理扫描, 无后门, 杀毒引擎, 网络信息收集, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 隐私保护, 静态分析, 风险评分, 香农熵