magarsurajjj-alt/static-malware-triage-tool

GitHub: magarsurajjj-alt/static-malware-triage-tool

一款基于 Python 的静态恶意软件分诊工具,在不执行文件的前提下整合哈希查询、VT 信誉、PE 解析、熵值检测和 YARA 匹配,为 SOC 分析师生成带风险判定的自动化报告。

Stars: 0 | Forks: 0

# 静态恶意软件分诊工具 一个基于 Python 的静态分析工具,能够自动化 SOC/CTI 分析师对可疑 Windows 可执行文件进行的初步分诊 —— **全程无需执行该文件**。它将哈希计算、VirusTotal 信誉查询、字符串提取、PE 头解析、基于熵的加壳检测以及 YARA 规则匹配结合在一起,生成一份带有风险判定结果的自动化报告。 ## 为什么开发这个工具 Tier 1/2 的 SOC 分析师经常需要快速评估某个文件是否值得升级进行更深入的(动态/沙箱)分析。该工具反映了真实的分诊工作流程:快速收集静态指标、检查信誉、标记异常情况,并在文件需要在沙箱中引爆之前产生具有依据的判定结果。 ## 功能 - **哈希计算** — 计算 MD5、SHA1、SHA256,用于身份识别和信誉查询 - **VirusTotal 集成** — 仅通过哈希查询 VT(无需上传文件),获取多引擎检测结果、已知文件名和标签 - **字符串提取** — 从二进制文件中提取可读字符串,并标记 URL、IP、可疑的 Windows API 调用和注册表项引用 - **PE 头分析** — 使用 `pefile` 解析编译时间戳、节表和导入的 DLL/函数 - **熵值 / 加壳检测** — 计算每个节的熵值,以标记可能加壳或混淆的二进制文件 - **YARA 扫描** — 将文件与自定义或公共的 YARA 规则进行匹配 - **自动化判定** — 将所有发现整合为加权风险评分:`LIKELY CLEAN`(疑似正常)、`SUSPICIOUS`(可疑)或 `MALICIOUS`(恶意) - **JSON 报告** — 每次扫描都会保存为带有时间戳和哈希命名的 JSON 报告,以便记录归档 ## 技术栈 | 组件 | 库 | |---|---| | PE 解析 | [`pefile`](https://github.com/erocarrera/pefile) | | VirusTotal API | `requests` | | YARA 匹配 | `yara-python` | | 文件类型检测 | `python-magic-bin` | ## 项目结构 ``` static-malware-triage/ ├── main.py # orchestrates the full analysis pipeline ├── config.example.py # template for your VT API key (copy to config.py) ├── requirements.txt ├── modules/ │ ├── hashing.py # MD5/SHA1/SHA256 hashing │ ├── vt_lookup.py # VirusTotal hash reputation lookup │ ├── strings_analysis.py # string extraction + suspicious pattern flagging │ ├── pe_analysis.py # PE header, sections, imports │ ├── entropy.py # packing detection via section entropy │ └── yara_scan.py # YARA rule matching └── rules/ └── sample_rules.yar # example YARA rule (UPX packer detection) ``` ## 环境配置 1. 克隆仓库: git clone https://github.com/yourusername/static-malware-triage-tool.git cd static-malware-triage-tool 2. 创建虚拟环境并安装依赖项: python -m venv venv venv\Scripts\activate # Windows pip install -r requirements.txt 3. 在 [virustotal.com](https://www.virustotal.com) 获取一个免费的 VirusTotal API 密钥(Profile → API Key) 4. 复制配置模板并添加您的密钥: copy config.example.py config.py 然后编辑 `config.py`: VT_API_KEY = "your_actual_key_here" ## 用法 ``` python main.py path\to\file.exe ``` 这会在控制台打印完整的 JSON 报告,并将其保存到 `reports/.json`。 ## 示例输出 对一个合法的 Windows 系统二进制文件(`notepad.exe`)进行扫描,正确地返回了正常的判定结果: ``` { "hashes": { "sha256": "ab15a95d..." }, "virustotal": { "found": true, "malicious": 0, "suspicious": 0 }, "packing": { "likely_packed": false }, "yara_matches": [], "verdict": "LIKELY CLEAN" } ``` ### 关于分析判断的说明 在测试期间,对于一个已知正常的系统二进制文件,VirusTotal 在 `names` 字段下返回了几个不相关的历史文件名(例如 `hidden.exe`、`1.exe`)——这些只是其他用户之前的提交别名,其本身并不是妥协指标 (IoC)。在所有引擎的检测结果均为 0 的情况下,正确的分析师结论是该文件是正常的;如果没有辅助的检测数据,仅凭听起来可疑的文件名别名不足以作为升级处理的理由。该工具的评分逻辑反映了这一点——它衡量的是实际的检测/行为信号,而不是文件名历史记录。 ## 安全说明 - 该工具仅执行**静态分析**——它从不执行目标文件 - 默认情况下,仅将文件哈希发送到 VirusTotal(不上传文件) - 开发期间使用的测试样本仅限于已知正常的合法 Windows 二进制文件(`notepad.exe`、`calc.exe`)——开发机器上未下载或执行任何真实的恶意软件 - 如果要测试真实的恶意软件样本,请务必在没有网络/共享文件夹访问权限的隔离 VM 中进行——切勿在宿主机上执行 ## 未来可能的改进 - HTML/PDF 报告导出 - Streamlit 拖拽式 Web UI - 扩展的 YARA 规则集(例如来自 [Yara-Rules/rules](https://github.com/Yara-Rules/rules)) - 基于检测到的导入/行为进行 MITRE ATT&CK 技术标记 ## 作者 作为一个作品集项目开发,旨在展示实用的 SOC/CTI 分诊工作流程自动化。
标签:DAST, DNS 反向解析, PE解析, Python, YARA, 云安全监控, 云资产可视化, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 网络安全审计, 逆向工具, 静态分析