NoaMatout/Malware_Analyzer

GitHub: NoaMatout/Malware_Analyzer

一款命令行恶意软件分析工具,通过 VirusTotal v3 API 对可疑文件进行哈希优先查询并生成 Markdown 报告,支持脚本化批量筛查。

Stars: 0 | Forks: 0

# Malware Analyzer 这是一款命令行工具,针对给定文件查询 VirusTotal v3 API,并生成一份可读的 Markdown 报告:综合判定、检测到威胁的引擎以及威胁分类。 专为日常可疑文件的分类筛查而写——适合那种需要快速、频繁进行的检查,并希望可以将其归档或附加到工单中。 ## 工作原理 文件首先在**本地进行哈希处理**,然后通过其 SHA-256 在 VirusTotal 上进行搜索。如果该样本已被收录(目前流通的绝大多数恶意软件都是这种情况),只需一次请求即可生成报告,无需传输文件的任何字节。 只有在 hash 未知且显式使用 `--upload` 参数时才会进行上传。 这是刻意为之:**任何提交给 VirusTotal 的文件都会被社区访问**。出于习惯而上传的内部文档无异于数据泄露。 ``` fichier │ SHA-256 local │ GET /files/{sha256} │ ┌─────┴─────┐ connu inconnu │ │ │ --upload ? ── non ──▶ arrêt, rien n'est transmis │ │ oui │ POST /files │ │ │ sondage /analyses/{id} │ │ └─────┬──────┘ │ rapport Markdown ``` ## 安装 ``` git clone https://github.com/NoaMatout/Malware_Analyzer.git cd Malware_Analyzer pip install -r requirements.txt ``` 需要 VirusTotal 的 API 密钥,可在账户设置中免费获取: ``` export VT_API_KEY="votre_cle" # Linux / macOS $env:VT_API_KEY = "votre_cle" # PowerShell ``` 密钥从环境变量中读取,绝不会在屏幕上明文索要,也不会写入磁盘。 ## 用法 ``` # VirusTotal 已知文件 — 无需传输 python malware_analyzer.py suspect.exe # 如果 hash 未知,则允许提交 python malware_analyzer.py suspect.exe --upload # 选择报告目标 python malware_analyzer.py suspect.exe -o rapports/incident-4821.md ``` ### 选项 | 选项 | 作用 | |---|---| | `-o`, `--output` | 报告路径(默认:`rapport-virustotal.md`) | | `-t`, `--template` | 自定义 Jinja2 模板 | | `--upload` | 如果文件 hash 未知,允许上传该文件 | ### 退出码 | 退出码 | 含义 | |---:|---| | `0` | 未检测到威胁 | | `1` | 文件被标记为恶意或可疑 | | `2` | 错误(缺少密钥、超出配额、找不到文件) | 这些退出码使得该工具支持脚本化运行——例如在一个存放已隔离附件的目录中进行遍历: ``` for f in /quarantaine/*; do python malware_analyzer.py "$f" -o "rapports/$(basename "$f").md" \ || echo "À examiner : $f" done ``` ## 报告示例 针对 WannaCry 样本生成的完整报告可在 [`docs/exemple-rapport.md`](docs/exemple-rapport.md) 中查看——72 款引擎中有 61 款将其归类为恶意。 ## 自定义报告 渲染由 [`templates/report.md.j2`](templates/report.md.j2) 控制。 模板中可使用的变量: | 变量 | 内容 | |---|---| | `name` | 与样本相关的最常见名称 | | `sha256`, `size`, `file_type` | 文件特征 | | `threat_label` | 综合分类(例如:`ransomware.wannacry`) | | `stats` | 各类别的判定分布 | | `reputation`, `votes` | 社区信誉和投票 | | `detections` | 检测到威胁的引擎(排除保持沉默的引擎) | ## 获取测试样本 本仓库**刻意不包含任何恶意二进制文件**。为了验证该工具是否有效,使用 EICAR 测试文件就足够了:它是无害的,但会被所有杀毒软件识别。 ``` printf '%s' 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.com python malware_analyzer.py eicar.com ``` 您的杀毒软件很可能会在文件创建时立即将其隔离——这是预期行为。 ## 限制 - 公共 API 限制为**每分钟 4 次请求**,每天 500 次请求。 - 对于超过 32 MB 的文件,上传将使用专用 endpoint(自动处理)。 - VirusTotal 的判定是一系列线索的集合,而非确凿证据。对于传播范围较小的二进制文件或自行编译的程序,经常会出现误报。 ## 许可证 MIT — 参见 [LICENSE](LICENSE)。
标签:DAST, Python, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 网络调试, 自动化, 逆向工具