Muhammad-Umer-NSC/Malwelyzer

GitHub: Muhammad-Umer-NSC/Malwelyzer

一款面向初学者的 Windows 静态恶意软件分析工具包,集成 YARA 扫描、VirusTotal 查询与 PE 分析,一条命令即可生成完整的暗色主题分析报告。

Stars: 0 | Forks: 0

# Malwelyzer # 🔍 静态恶意软件分析工具包 ![Python](https://img.shields.io/badge/Python-3.10%2B-blue?style=flat-square&logo=python) ![平台](https://img.shields.io/badge/Platform-Windows-0078D6?style=flat-square&logo=windows) ![许可证](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![依赖库](https://img.shields.io/badge/Libraries-Auto--Installed-brightgreen?style=flat-square) ## 📸 功能简介 只需运行一条命令,即可获取任何文件的完整静态分析报告——包括可执行文件、DLL 或二进制文件——其中包括: - **文件元数据** —— 大小、时间戳、魔术字节 - **加密哈希值** —— MD5、SHA1、SHA256、SHA512 - **熵值分析** —— 检测加壳或加密文件 - **文件类型检测** —— 通过 TrID 和 Detect-It-Easy 实现 - **字符串提取** —— 通过 Sysinternals strings.exe 和 FLOSS(包括混淆字符串) - **可疑字符串检测** —— 标记危险的 API、PowerShell、注册表键、编码命令等 - **PE 文件分析** —— 节区、导入表、导出表、编译时间、TLS 回调、附加数据 - **YARA 扫描** —— 内置涵盖勒索软件、RAT、网银木马、释放器、Rootkit、蠕虫、间谍软件和加壳程序的规则 - **VirusTotal 集成** —— 自动哈希查询,并带有回退到文件上传的功能 - **网络指标** —— 提取硬编码的 IP、URL、域名和电子邮件地址 - **恶意软件分类** —— 对最可能的恶意软件类型进行评分、识别并提供证据 - **HTML 报告** —— 保存一份精美的暗色主题报告,可在任何浏览器中打开 - **JSON 报告** —— 所有发现结果的机器可读输出 ## ⚡ 三步完成设置 ### 第一步 —— 下载外部工具 您需要四个工具。分别下载每一个,并将 `.exe` 文件放在您指定的目录中: | 工具 | 功能 | 下载 | |------|-------------|---------| | **TrID** | 识别文件类型 | [mark0.net/soft-trid-e.html](https://mark0.net/soft-trid-e.html) | | **Detect-It-Easy (diec)** | 检测加壳程序、编译器、文件类型 | [github.com/horsicq/DIE-engine](https://github.com/horsicq/DIE-engine/releases) | | **Strings** | 提取 ASCII 和 Unicode 字符串 | [learn.microsoft.com/sysinternals](https://learn.microsoft.com/en-us/sysinternals/downloads/strings) | | **FLOSS** | 还原混淆/编码的字符串 | [github.com/mandiant/flare-floss](https://github.com/mandiant/flare-floss/releases) | ### 第二步 —— 在脚本中编辑工具路径 打开 `malwelyzer.py` 并在顶部附近找到此代码块: ``` TOOL_PATHS = { "trid" : r"C:\Tools\trid\trid.exe", "die" : r"C:\Tools\die\diec.exe", "strings": r"C:\Tools\strings\strings.exe", "floss" : r"C:\Tools\floss\floss.exe", } ``` 将每个路径替换为您放置 `.exe` 文件的位置。每个字符串前面的 `r` 很重要——请保留它。 ### 第三步 —— 添加您的 VirusTotal API 密钥 *(可选但强烈推荐)* 在 [virustotal.com/gui/join-us](https://www.virustotal.com/gui/join-us) 获取一个**免费**的 API 密钥,然后将其粘贴到此处: ``` VIRUSTOTAL_API_KEY = "your_key_here" ``` 如果您跳过此步,其他所有功能仍然可以正常运行——VirusTotal 的结果只会显示“未配置”消息。 ## 🚀 运行方式 ``` python malwelyzer.py suspicious.exe ``` 就是这样。该脚本会在首次运行时自动安装任何缺失的 Python 依赖库,然后执行完整的分析。 **生成的输出文件示例:** ``` suspicious_analysis.json ← full machine-readable report suspicious_report.html ← open this in your browser ``` ## 🛠️ 所有命令行选项 ``` python malwelyzer.py [options] ``` | 标志 | 描述 | |------|-------------| | `--output FILE` / `-o FILE` | JSON 报告的自定义路径 | | `--html FILE` | HTML 报告的自定义路径 | | `--no-floss` | 跳过 FLOSS 字符串还原(对大文件运行更快) | | `--no-pe` | 跳过 PE 结构分析 | | `--no-yara` | 跳过 YARA 规则扫描 | | `--no-vt` | 跳过 VirusTotal 查询 | | `--strings-only` | 仅转储所有提取的字符串并退出 | | `--show-all-strings` | 将每个提取的字符串打印到终端 | **示例:** ``` # 基础扫描 python malwelyzer.py malware.exe # 跳过 VirusTotal(更快、离线) python malwelyzer.py sample.dll --no-vt # 将报告保存到指定位置 python malwelyzer.py ransomware.bin --output C:\Reports\result.json --html C:\Reports\result.html # 仅快速 string dump python malwelyzer.py unknown.exe --strings-only # 跳过 FLOSS 的完全扫描(处理大型文件快得多) python malwelyzer.py bigfile.exe --no-floss ``` ## 📦 Python 依赖库 所有的 Python 依赖库都会在您首次运行脚本时**自动安装**。您无需手动安装任何内容。 | 依赖库 | 用途 | 是否必需 | |---------|---------|---------| | `rich` | 美观的终端表格和彩色输出 | 自动安装 | | `colorama` | Windows 终端颜色支持 | 自动安装 | | `pefile` | PE 文件结构解析 | 自动安装 | | `yara-python` | YARA 规则扫描引擎 | 自动安装 | | `requests` | VirusTotal API 调用 | 自动安装 | 如果自动安装因任何原因失败,您可以手动安装它们: ``` pip install rich colorama pefile yara-python requests ``` ## 📊 HTML 报告样式展示 HTML 报告是一个独立的暗色主题页面,您可以在任何浏览器中打开它。它包括: - 显示文件名、大小、SHA256、MD5 和判定徽章(MALWARE / SUSPICIOUS / CLEAN)的页眉 - 威胁评分进度条 - 每个分析部分都以有组织、颜色分明的表格呈现 - VirusTotal 引擎检测结果表,带有可点击的完整 VT 报告链接 - 恶意软件类型分类,包含置信度条形图和证据列表 查看时无需网络连接——它只是一个单独的 `.html` 文件。 ## 🔍 哪些内容会被判定为可疑 该脚本会自动标记以下内容: **可疑的 Windows API** ``` VirtualAlloc, WriteProcessMemory, CreateRemoteThread, SetWindowsHookEx, GetAsyncKeyState, URLDownloadToFile, IsDebuggerPresent, NtQueryInformationProcess, LoadLibrary ... ``` **可疑的字符串模式** ``` powershell, cmd.exe, wscript, mshta, rundll32, regsvr32, schtasks, bcdedit, vssadmin, base64, xor, .onion, HKEY_LOCAL_MACHINE\...\Run, autorun.inf, pastebin.com ... ``` **网络指标** - 硬编码的 IP 地址 - HTTP/HTTPS URL - 域名(.com、.net、.onion、.ru 等) - 电子邮件地址 ## 🎯 内置 YARA 规则 | 规则 | 检测目标 | |------|---------| | `Ransomware_Keywords` | 加密字符串、比特币、勒索信 | | `RAT_Keywords` | 键盘记录、网络摄像头、反向 shell、远程管理 | | `Banker_Keywords` | 凭据盗窃、表单抓取、银行术语 | | `Dropper_Keywords` | 下载并执行模式 | | `Rootkit_Keywords` | 内核钩子、SSDT、DKOM、进程隐藏 | | `Worm_Keywords` | 自我传播、SMB、自动运行 | | `Spyware_Keywords` | 剪贴板、浏览器历史记录、活动监控 | | `Packer_Signs` | UPX、Themida、VMProtect、MPRESS、ASPack | ## 🔒 VirusTotal 行为机制 该脚本能妥善处理所有 VirusTotal 场景: 1. **优先进行哈希查询** —— 立即通过 SHA256 进行检查,如果文件已知则无需上传 2. **自动上传回退机制** —— 如果未找到哈希值,则自动上传文件 3. **轮询直至完成** —— 等待最多 60 秒直到分析完成 4. **清晰的失败消息** —— 每种错误情况都有明确、易读的提示: ``` Could not retrieve VirusTotal results: No API key configured. Could not retrieve VirusTotal results: Invalid API key. Could not retrieve VirusTotal results: API rate limit reached. Try again later. Could not retrieve VirusTotal results: No internet connection. Could not retrieve VirusTotal results: File too large (X MB > 32 MB free-tier limit). Could not retrieve VirusTotal results: Analysis did not complete in time. ``` ## 📁 推荐的文件夹布局 ``` C:\MalwareAnalysis\ │ ├── analyze.py ← this script │ ├── trid\ │ ├── trid.exe │ └── TrIDDefs.TRD ← required definitions file │ ├── die\ │ ├── diec.exe │ └── db\ ← required database folder │ ├── strings\ │ └── strings.exe │ └── floss\ └── floss.exe ``` ## ⚠️ 免责声明 本工具仅用于**恶意软件研究、数字取证和教育教学目的**。请始终在与主网络断开连接的**隔离环境**(虚拟机、沙箱)中分析可疑文件。作者不对任何滥用行为负责。 ## 📄 许可证 MIT 许可证 —— 可自由使用、修改和分发。
标签:Ask搜索, DAST, HTML报告, PE文件分析, Python, VirusTotal, YARA, 云安全监控, 云资产可视化, 加密算法, 勒索软件, 哈希计算, 威胁情报, 字符串提取, 开发者工具, 恶意软件分析, 文件类型识别, 无后门, 木马检测, 熵分析, 网络安全, 网络指标提取, 自动化分析, 跨站脚本, 逆向工具, 隐私保护, 静态分析