Muhammad-Umer-NSC/Malwelyzer
GitHub: Muhammad-Umer-NSC/Malwelyzer
一款面向初学者的 Windows 静态恶意软件分析工具包,集成 YARA 扫描、VirusTotal 查询与 PE 分析,一条命令即可生成完整的暗色主题分析报告。
Stars: 0 | Forks: 0
# Malwelyzer
# 🔍 静态恶意软件分析工具包




## 📸 功能简介
只需运行一条命令,即可获取任何文件的完整静态分析报告——包括可执行文件、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, 云安全监控, 云资产可视化, 加密算法, 勒索软件, 哈希计算, 威胁情报, 字符串提取, 开发者工具, 恶意软件分析, 文件类型识别, 无后门, 木马检测, 熵分析, 网络安全, 网络指标提取, 自动化分析, 跨站脚本, 逆向工具, 隐私保护, 静态分析