genrex-bot/malyze
GitHub: genrex-bot/malyze
一款纯静态的本地恶意软件分诊 CLI 工具,支持多种文件格式的自动化风险分析与报告生成,全程不执行文件、不联网上传。
Stars: 0 | Forks: 0
# Malyze — 静态恶意软件分诊工具




一款 Python CLI 工具,能够分析任何上传的文件,识别其类型,
并生成一份本地报告,解释**它是哪种文件**以及
**它可能造成什么危害**——这一切完全基于静态分析
(绝不执行——你的机器始终安全)。
## 它能做什么
1. **识别文件类型**,通过 magic bytes(PE, ELF, APK, PDF, Office
文档, 脚本, 压缩包等)
2. **计算哈希值** (MD5/SHA1/SHA256) —— 可用于与
VirusTotal 或其他威胁情报源进行交叉核对,而无需上传文件。
3. **计算熵值** —— 高熵值通常意味着内容被加壳/加密/混淆,
这是一种经典的恶意软件规避技术。
4. **提取字符串** 并扫描可疑指标:URL、IP、
危险的 API 名称、shell/PowerShell 混淆模式等。
5. **运行特定类型的深度分析**:
- **PE (EXE/DLL):** 节区及各节区熵值(加壳检测)、
导入表、可疑的 Windows API 使用、数字签名检查
- **ELF (Linux 二进制文件):** 符号、可疑的系统调用 (ptrace, setuid,
LD_PRELOAD 等)、stripped/静态链接检查
- **APK (Android):** 危险权限(短信、通讯录、相机、滥用
无障碍服务等)、可疑的 classes.dex API 使用 (DexClassLoader、
反射、root 检查、native 库)
- **PDF:** 内嵌 JavaScript、自动动作 (OpenAction/Launch)、嵌入
文件、可疑的 URI —— 甚至包括压缩对象流内部的内容
- **Office (docx/xlsx/pptx):** VBA 宏检测、远程模板注入、
内嵌 OLE 对象
- **脚本 (.js/.ps1/.vbs/.bat/.sh/.py):** 混淆模式、超长的 base64
blob、异常的行长度
6. **评估风险** 通过一个透明、可解释的启发式引擎,
并给出一个结论:`MINIMAL` / `LOW` / `MEDIUM` / `HIGH` / `CRITICAL`,
同时提供得出该评分的确切原因。
7. **生成本地报告** 以 `.txt`、`.json` 和/或 `.html` 格式 —— 任何数据都不会
离开你的机器。
## 设置
### 1. 克隆仓库
```
git clone https://github.com/genrex-bot/malyze.git
cd malyze
```
### 2. 环境设置(虚拟环境)
强烈建议在虚拟环境中运行此工具,以便
依赖项与你的系统 Python 保持隔离。
**Linux / macOS:**
```
python3 -m venv venv
source venv/bin/activate
```
**Windows (命令提示符):**
```
python -m venv venv
venv\Scripts\activate.bat
```
**Windows (PowerShell):**
```
python -m venv venv
venv\Scripts\Activate.ps1
```
如果设置成功,你的命令行提示符开头将会显示 `(venv)`。
如果之后想退出虚拟环境,只需运行:
```
deactivate
```
### 3. 安装依赖
在激活的虚拟环境中:
```
pip install -r requirements.txt
```
你还需要在操作系统层面安装 `libmagic`,以实现最准确的
文件类型检测:
- **Linux/macOS:** 通常已经预装;在 Debian/Ubuntu 上使用:`sudo apt-get install libmagic1`
- **Windows:** 请安装适配 Windows 的构建版本:`pip install python-magic-bin`
(仅当普通的 `python-magic` 出现导入错误时才需要)
如果完全缺失 `libmagic`,该工具依然可以工作 —— 它只会
退回到其内置的签名表进行文件类型检测。
## 用法
```
python3 malyze [--out OUTPUT_DIR] [--format txt|json|html|all]
```
在 Windows 上,如果你的系统配置如此,请使用 `python` 而不是
`python3`:
```
python malyze
```
(在 Linux/macOS 上,你还可以直接运行 `./malyze <文件>`,因为
它是可执行文件并包含 shebang 行。)
示例:
```
# 分析一个 APK,在 ./malyze_reports/ 中获取全部 3 种报告格式
python3 malyze suspicious_app.apk
# 分析一个可疑的 EXE,仅在一个自定义文件夹中获取 HTML 报告
python3 malyze malware_sample.exe --out ~/Desktop/scans --format html
```
## 使用内置的样本进行测试
`samples/` 文件夹中包含了一些合成的(无害但在结构上
看起来“很可疑”)测试文件,以便你能立即看到工具的实际运行效果:
```
python3 malyze samples/fake_app.apk # flags dangerous permissions + suspicious APIs
python3 malyze samples/suspicious.pdf # flags embedded JavaScript + auto-action
python3 malyze samples/dropper.ps1 # flags obfuscation + base64 payload patterns
python3 malyze samples/benign.txt # comes back clean (MINIMAL risk)
```
## 输出示例
针对内置的 `fake_app.apk` 样本运行该工具,输出如下所示:
```
$ python3 malyze samples/fake_app.apk --format txt
[*] Analyzing: samples/fake_app.apk
[*] SHA256: 6109b5f1bb813e84584dd58dab4da62dab36b136d88a5a1a6c25bfda90bcc43b
[*] Detected type: ZIP-based archive (application/vnd.android.package-archive) -> category: apk
[*] Entropy: 4.9956 (normal)
[*] Running specialized analyzer: apk
[*] Risk verdict: MEDIUM (score 18)
[+] Report(s) written:
malyze_reports/fake_app_report.txt
```
而生成的报告(`fake_app_report.txt`)会通过完整的推理过程拆解结论:
```
======================================================================
MALYZE - STATIC MALWARE TRIAGE REPORT
======================================================================
File: fake_app.apk
Size: 1462 bytes
Detected type: ZIP-based archive (application/vnd.android.package-archive)
SHA256: 6109b5f1bb813e84584dd58dab4da62dab36b136d88a5a1a6c25bfda90bcc43b
Entropy: 4.9956 (normal)
----------------------------------------------------------------------
RISK VERDICT: MEDIUM (score: 18)
----------------------------------------------------------------------
Reasons:
- Suspicious keywords/commands found: /system/bin/su, DexClassLoader,
Runtime.exec, TelephonyManager, sendTextMessage
- Dangerous permissions requested: CAMERA, READ_CONTACTS, SEND_SMS
----------------------------------------------------------------------
TYPE-SPECIFIC ANALYSIS
----------------------------------------------------------------------
{
"permissions": ["android.permission.CAMERA", "android.permission.READ_CONTACTS",
"android.permission.SEND_SMS"],
"suspicious_dex_api_hits": ["/system/bin/su", "DexClassLoader", "Runtime.exec",
"TelephonyManager", "sendTextMessage"]
}
======================================================================
```
`.html` 格式会将相同的数据渲染为一份带有颜色标记且可共享的报告。
## 风险评分的运作方式
每个分析器都会提供“发现项”(例如 `dangerous_permissions`、
`pdf_javascript`、`packed_pe`)。每个发现项都有一个权重(见
`core/risk.py`)。加权总和会映射到一个结论区间。报告会展示
每一个原因——没有任何东西是黑盒。
| 评分 | 结论 |
|-------|---------|
| 0 | MINIMAL / 无指标 |
| 1–13 | LOW |
| 14–27 | MEDIUM |
| 28–44 | HIGH |
| 45+ | CRITICAL |
## 重要局限性(请务必阅读)
- **这是基于启发式的静态分析,并非确定性的结论。** 一份干净的
结果不能保证文件是安全的,而被标记的结果也
不能保证文件就是恶意的(合法的安装程序/游戏通常会被加壳,
并使用一些同样会被标记的 API)。
- **没有动态/沙箱执行** —— 这是出于对你的安全考虑而特意设计的。它
无法捕获只有在运行时才会暴露的恶意软件(例如逻辑炸弹、
延时触发的载荷、无文件攻击)。
- 它是一个学习/分诊工具,不能替代真正的 AV/EDR 产品或
合适的沙箱(例如 Cuckoo, ANY.RUN,通过哈希值进行 VirusTotal 查询),当你
需要一个高置信度的结论时,应使用那些专业工具。
- 无论此工具报告的结果如何,对于任何真正未知/不受信任的文件都应
谨慎对待——即使结论显示为干净,
也不要在主力机器上打开或运行它。
## 项目结构
```
malyze/
├── malyze # CLI entry point / orchestrator (run as: python3 malyze )
├── core/
│ ├── hashing.py # MD5/SHA1/SHA256
│ ├── entropy.py # Shannon entropy + verdict
│ ├── strings_scan.py # string extraction + indicator regexes
│ ├── filetype.py # magic-byte detection + category classifier
│ ├── risk.py # weighted scoring engine
│ └── report.py # txt/json/html report writers
├── analyzers/
│ ├── pe_analyzer.py # Windows EXE/DLL
│ ├── elf_analyzer.py # Linux binaries
│ ├── apk_analyzer.py # Android APK
│ ├── pdf_analyzer.py # PDF
│ ├── office_analyzer.py # docx/xlsx/pptx
│ └── script_analyzer.py # JS/PS1/VBS/BAT/SH/PY
├── samples/ # synthetic test files (safe, not real malware)
└── requirements.txt
```
## 扩展功能
添加新文件类型只需:编写一个新的 `analyzers/x_analyzer.py`,让它
返回 `(result_dict, findings_dict)`,在 `malyze` 脚本的
`ANALYZER_MAP` 中注册它,并将任何新的加权规则添加到 `core/risk.py` 中即可。
标签:DAST, Python, 云安全监控, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 逆向工具, 静态分析