0xAllow/mallp
GitHub: 0xAllow/mallp
MALLP 将专业恶意软件分析中的碎片化流程整合为统一的跨平台 CLI 工作流,编排多种取证工具并关联多源证据,自动生成案例报告与防御规则草案。
Stars: 1 | Forks: 0
# MALLP
**0xAllow 恶意软件分析与保护**
版本 **1.0.0** · 创建者 **[0xAllow](https://github.com/0xAllow)**
MALLP 是一个跨平台、隐私优先的命令行工具包,它将专业恶意软件分析中重复的部分整合到了一个可复现的工作流中。它专为不想在每次打开 Office 文档、PDF、脚本、二进制文件、PCAP 或内存镜像时记住数十个不相关命令的 REMnux/Linux 和 Windows 分析师而设计。
MALLP 并不试图取代 Volatility 3、Zeek、Suricata、capa、FLOSS、oletools 或 tshark 等专业工具。它会检测并编排这些工具,添加安全的 Python 回退机制,关联它们的证据,提取子工件,将确定性发现映射到 MITRE ATT&CK,并生成一份名为 **Master Protect** 的案例报告。
## MALLP 解决的问题
一个普通的钓鱼或恶意软件案例可能需要分别使用不同的命令来进行哈希计算、文件识别、Office/PDF 解析、字符串解码、嵌入式对象提取、PCAP 分析、内存取证、反取证检查、ATT&CK 映射以及防御规则创建。MALLP 通过一个一致的 CLI 提供了所有这些操作:
```
Evidence intake
-> hash and type verification
-> static parsing and metadata
-> deterministic deobfuscation
-> embedded-artifact extraction
-> recursive payload-chain analysis
-> phishing and fileless indicators
-> PCAP / C2 correlation
-> Volatility 3 memory workflow
-> anti-forensics verification
-> ATT&CK mapping
-> Master Protect report
-> YARA / Sigma / Suricata drafts
```
## 支持的证据
| 家族 | 格式 |
|---|---|
| PowerShell 和脚本 | `.ps1`, `.psm1`, `.psd1`, `.js`, `.jse`, `.vbs`, `.vbe`, `.hta`, `.wsf`, `.bat`, `.cmd` |
| Office 和钓鱼 | `.docm`, `.xlsm`, `.pptm`, `.docx`, `.xlsx`, `.pptx`, `.doc`, `.xls`, `.ppt`, `.eml` |
| PDF 和 Web 内容 | `.pdf`, `.html`, `.htm`, `.svg`, `.chm`, `.lnk` |
| Windows/Linux 载荷 | `.exe`, `.dll`, `.sys`, `.scr`, `.cpl`, `.ocx`, `.elf`, `.so`, `.bin`, `.dat` |
| 网络证据 | `.pcap`, `.pcapng`, `.cap` |
| 内存证据 | `.raw`, `.mem`, `.dmp`, `.vmem`, `.lime`, `.avml` |
| 容器 | `.zip`, `.7z`, `.rar`, `.iso`, `.vhd`, `.vhdx` |
检测同时使用文件签名和文件扩展名。扩展名不匹配将被报告为可能的伪装,而不会被盲目信任。
## 核心功能
- MD5、SHA1、SHA256、SHA512,可选 ssdeep 和 TLSH。
- ASCII、UTF-16LE 和 UTF-16BE 字符串提取。
- URL、域名、IPv4/IPv6、电子邮件地址、哈希、路径、注册表项、命令和用户代理。
- PowerShell `-EncodedCommand`、Base64、十六进制、URL 编码、HTML 实体、`atob`、`FromBase64String`、JavaScript `String.fromCharCode`、VBScript `Chr/ChrW` 以及字面量拼接。
- OOXML 关系、宏、外部模板、嵌入式 OLE/包对象以及递归附件链。
- PDF 活动内容标记、JavaScript 候选项、元数据、文本和嵌入式附件。
- LNK、CHM、HTA、WSF、HTML 和 SVG 排查。
- 安装了可选库时的 PE/ELF 解析,以及 capa/FLOSS/DIE/readelf/objdump 集成。
- 有界的 ZIP 成员提取,以及从二进制容器中提取嵌入式 PDF、ZIP/OOXML 和 PE;可通过已安装的 7-Zip CLI 列出 7z/RAR/ISO/VHD 元数据。
- EML 路由/身份验证元数据、发件人不匹配、URL 提取和附件分析。
- PCAP 会话、DNS、HTTP、TLS SNI、可疑端口、重复流计时和信标候选项。
- 可选的 tshark、Zeek 和 Suricata 离线工作流。
- 精选的 Windows 和 Linux Volatility 3 配置文件。
- 反取证指标:日志清除、历史记录抑制、时间戳篡改、安全删除、恢复抑制和防御削弱。
- 来自静态分析和 Volatility 证据的 Rootkit/驱动程序和无文件内存指标。
- 面向 ATT&CK 的证据映射。
- Markdown、JSON 和 PDF Master Protect 报告。
- 生成的 YARA、Sigma、Suricata 和 IOC 文件供分析师审查。
- 仅查询的 VirusTotal、MalwareBazaar、ThreatFox 和 URLhaus 情报补充。MALLP 绝不上传样本。
## 使用 uv 安装
MALLP 使用 [`uv`](https://docs.astral.sh/uv/),因此它可以作为隔离的命令行工具安装,而无需修改 REMnux 系统 Python。
### REMnux / Linux — 从本地克隆
```
git clone https://github.com/0xAllow/mallp.git
cd mallp
# 可靠的 core 安装
uv tool install .
# 当 uv 报告缺失时,将 uv 的可执行文件目录添加到 PATH
uv tool update-shell
exec "$SHELL" -l
mallp --version
mallp --help
mallp doctor
```
安装可选的 Python 解析器:
```
cd mallp
uv tool install --force '.[full]'
mallp doctor
```
`uv tool install` 会创建一个隔离的工具环境。不要进入该环境并使用 `pip` 修改它;请通过 `uv` 重新安装或升级。
### Windows PowerShell — 从本地克隆
```
git clone https://github.com/0xAllow/mallp.git
Set-Location mallp
uv tool install .
uv tool update-shell
# 在 PATH 更新后打开一个新的 PowerShell 窗口
mallp --version
mallp --help
mallp doctor
```
可选解析器:
```
uv tool install --force ".[full]"
```
### 在仓库公开后直接从 GitHub 安装
```
uv tool install "git+https://github.com/0xAllow/mallp.git"
uv tool update-shell
mallp --version
```
在仓库内部进行开发:
```
uv sync --extra full --extra dev
uv run mallp --help
uv run pytest
```
## 为什么会发生 `mallp: command not found`
安装和 shell 发现是独立的步骤。发生这种情况时,请运行:
```
uv tool list
uv tool dir --bin
uv tool update-shell
exec "$SHELL" -l
```
然后验证:
```
mallp --version
```
在 Windows 上,运行 `uv tool update-shell`,关闭 PowerShell,然后打开一个新窗口。还必须从包含 `pyproject.toml` 的目录中执行 `uv tool install .`。
## 命令概览
运行 `mallp COMMAND --help` 获取特定命令的参数和示例。完整参考请见 [`docs/COMMAND_REFERENCE.md`](docs/COMMAND_REFERENCE.md)。
| 命令 | 用途 |
|---|---|
| `mallp analyze` | 完整的文件/文件夹案例,可选包含 PCAP 和内存证据 |
| `mallp phishing` | 电子邮件/文档钓鱼链和提取的载荷分析 |
| `mallp hash` | 对单个文件进行哈希和识别 |
| `mallp deobfuscate` | 在不执行的情况下解码和规范化脚本/文档层 |
| `mallp extract` | 导出嵌入式工件、解码后的代码、IOC 和元数据 |
| `mallp pcap` | PCAP/C2、IP、端口、DNS、HTTP、TLS 和信标分析 |
| `mallp memory` | 精选的 Volatility 3 Windows/Linux 工作流 |
| `mallp anti-forensics` | 扫描反取证和证据销毁指标 |
| `mallp rules` | 列出规则、匹配文件或生成防御草案 |
| `mallp formats` | 列出支持的格式或探测特定文件 |
| `mallp enrich-ioc` | 仅查询的威胁情报补充 |
| `mallp ai-prompt` | 构建受本地证据约束的提示词,用于解释、总结、报告或 TTP 审查 |
| `mallp doctor` | 验证 Python 解析器和外部工具 |
| `mallp setup` | 显示或运行受支持的可选安装命令 |
| `mallp examples` | 显示完整的分析师工作流 |
先前原型中引起歧义的两个命令被刻意设计得很灵活:
```
# 无参数:列出每个受支持的 family
mallp formats
# 带文件:识别实际格式
mallp formats suspicious.pdf
# 无参数:列出 MALLP 内置的 behavioral rules
mallp rules
# 带文件:显示该 sample 匹配的 rules
mallp rules suspicious.pdf
```
## 实用工作流
### 1. 完整的恶意软件案例
```
mallp analyze sample.bin \
--deep \
--case IR-2026-0042 \
--analyst 0xAllow \
--report all \
--generate-rules \
--output-dir cases/IR-2026-0042
```
输出包括:
```
cases/IR-2026-0042/
├── master_protect_report.json
├── master_protect_report.md
├── master_protect_report.pdf
├── artifacts/
└── defensive-rules/
├── mallp_generated.yar
├── mallp_generated_sigma.yml
├── mallp_generated.rules
└── mallp_iocs.json
```
### 2. 自动化钓鱼分析
```
mallp phishing suspicious.eml \
--pcap browser-session.pcap \
--zeek \
--suricata \
--output-dir cases/phish-001
```
MALLP 解析邮件头、身份验证结果、URL、HTML 和附件;提取载荷;递归分析每个子项;关联可选的网络证据;并创建 Master Protect 报告。
### 3. PowerShell / 无文件去混淆
```
mallp deobfuscate loader.ps1 --output deobfuscated.txt
mallp anti-forensics loader.ps1
mallp rules loader.ps1 --generate --output-dir detection-pack
```
MALLP 不会调用 `eval`、PowerShell、WSH、Node.js 或浏览器引擎来去混淆内容。不受支持的语义转换将作为限制报告,而不会被执行。
### 4. Office 或 PDF 提取
```
mallp extract invoice.docm --deep --output-dir extracted/invoice
mallp extract lure.pdf --deep --output-dir extracted/pdf
```
在 REMnux 上,`--deep` 可以包含已安装的 `olevba`、`oleid`、`oledump.py`、`pdfid.py`、`pdf-parser.py`、`exiftool`、`capa`、FLOSS 和 Detect It Easy CLI 的输出。
### 5. 网络 C2 分析
```
mallp pcap malware-run.pcapng \
--zeek \
--suricata \
--output-dir cases/network-001
```
当安装了这些工具时,MALLP 会报告会话、可疑端口、公共端点、DNS 名称、HTTP 请求、TLS SNI、规律性计时、导出的 HTTP 对象、Zeek 日志和 Suricata EVE 警报。
### 6. Windows 内存取证
将 Volatility 3 作为其独立的 uv 工具安装:
```
uv tool install volatility3
vol -h
```
然后运行:
```
mallp memory host.raw \
--os windows \
--profile full \
--output-dir cases/memory-001
```
Windows 完整配置文件包括进程发现、进程树、命令行、环境、网络套接字、`malfind`、VAD、DLL/模块差异、句柄、驱动程序、回调、SSDT、注册表配置单元和文件扫描。
### 7. Linux 内存取证
```
mallp memory host.lime \
--os linux \
--profile full \
--output-dir cases/linux-memory-001
```
Linux 配置文件涵盖进程视图、shell 历史记录、环境、套接字、打开的文件、映射、`malfind`、模块以及模块交叉视图检查。Linux 内存镜像可能需要与捕获的内核相匹配的正确符号表。
### 8. 单个关联的文件 + PCAP + 内存案例
```
mallp analyze payload.ps1 \
--pcap traffic.pcap \
--zeek \
--suricata \
--memory host.raw \
--memory-os windows \
--memory-profile full \
--deep \
--generate-rules \
--output-dir cases/master-001
```
这是 MALLP 的预期工作流:保留每个证据源,独立分析它,并在一个报告中关联这些发现,而不是将哈希或 AV 标签视为证明。
## 外部工具集成
如果没有这些工具,MALLP 依然有用,但当 `--deep`、`--zeek` 和 `--suricata` 模式可用时,它们的功能会变得更强大。
| 任务 | 检测到的命令 |
|---|---|
| 常规识别 | `file`, `exiftool`, `strings`, `diec` |
| 功能和解码后的字符串 | `capa`, `floss` |
| Office | `olevba`, `oleid`, `oledump.py` |
| PDF | `pdfid.py`, `pdf-parser.py` |
| LNK/CHM/容器 | `lnkparse`, `7z` |
| 编码/混淆的脚本 | `decode-vbe.py`, `js-beautify` |
| PE/ELF | `readelf`, `objdump`, Detect It Easy CLI |
| 网络 | `tshark`, `zeek`, `suricata` |
| 内存 | 来自 Volatility 3 的 `vol` |
| 规则 | 用于外部验证的 `yara` |
检查您的系统:
```
mallp doctor
```
MALLP 会在案例报告中记录缺失的工具和解析器失败;它不会假装已静默完成深度分析。
## 威胁情报补充
补充功能是**仅限查询**的。MALLP 绝不会向公共服务提交样本。
```
export VT_API_KEY='...'
export ABUSECH_AUTH_KEY='...'
mallp enrich-ioc
mallp enrich-ioc example.org --providers virustotal,threatfox
```
支持的环境变量:
```
VT_API_KEY
ABUSECH_AUTH_KEY
MALWAREBAZAAR_AUTH_KEY
THREATFOX_AUTH_KEY
URLHAUS_AUTH_KEY
```
在查询第三方之前,请验证组织策略是否允许共享哈希、URL、域名或 IP。
## Master Protect 报告
该报告区分了事实、确定性发现、假设、局限性和建议的验证。它包括:
- 证据识别和哈希。
- 文件类型、熵、元数据、字符串、功能和工具警告。
- 钓鱼和嵌入式工件链。
- 去混淆层。
- 无文件和反取证证据。
- PCAP/C2 和信标分析。
- Volatility 发现。
- 汇总的 IOC。
- 带有证据规则 ID 的 MITRE ATT&CK 映射。
- 生成的防御规则位置。
PDF 生成使用 ReportLab,专为案例交接而设计。Markdown 仍然是同行评审和基于 Git 的案例记录的最佳格式。
## 防御规则
生成的规则被刻意标记为草案。良好的检测需要本地遥测、基线知识、针对良性数据的测试以及对误报的承担。
```
mallp rules suspicious.js --generate --output-dir detection-pack
```
该包包含:
- 精确的 SHA256 YARA 条件以及选定的行为字符串。
- Sigma 进程创建起点。
- Suricata DNS、HTTP Host、TLS SNI 和目标 IP IOC 规则。
- 规范化的 IOC JSON 文件。
未经审查,请勿将生成的规则直接部署到生产环境。
## 架构
```
mallp CLI
├── evidence intake and hashing
├── signature-aware dispatcher
├── format analyzers
│ ├── script / markup
│ ├── Office / OLE / OOXML
│ ├── PDF
│ ├── PE / ELF / generic binary
│ ├── LNK / CHM
│ └── EML phishing
├── deterministic deobfuscation
├── artifact carving and recursion
├── PCAP engine + tshark/Zeek/Suricata adapters
├── Volatility 3 adapter
├── anti-forensics rules
├── ATT&CK and capability mapping
├── enrichment providers
├── Master Protect writers
└── YARA/Sigma/Suricata generators
```
有关实现边界和信任假设,请参见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
## AI 政策
MALLP 1.0 分析引擎是确定性的。AI 不是对证据进行哈希、解析、提取、去混淆、映射或报告所必需的。可选的 `mallp ai-prompt` 工作流仅可用于:
- 解释已提取或去混淆的代码。
- 起草执行摘要。
- 改进报告措辞。
- 建议可能的 ATT&CK 映射,并带有明确的不确定性。
MALLP 绝不会将提示词发送到任何。分析师必须对其进行审查,并选择组织批准的 AI 服务。AI 输出绝不能替代证据、静默更改 IOC、执行代码或被视为已验证的归属。
```
mallp ai-prompt payload.ps1 --mode explain -o explain.md
mallp ai-prompt invoice.docm --mode executive --deep -o executive.md
mallp ai-prompt case.pdf --mode report -o report_prompt.md
mallp ai-prompt sample.js --mode ttp -o ttp_review.md
```
## 开发
```
uv sync --extra full --extra dev
uv run pytest
uv run ruff check .
uv build --no-sources
```
在不进行全局安装的情况下运行本地源码:
```
uv run mallp --help
uv run mallp analyze samples/benign/demo.ps1 --report md -o /tmp/mallp-demo
```
## 版本控制和升级
MALLP 遵循语义化版本控制。
```
1.0.0
│ │ └── patch: fixes that preserve command behavior
│ └──── minor: backward-compatible analyzers and commands
└────── major: intentional breaking changes
```
在打包发布之后:
```
uv tool upgrade mallp
```
对于 GitHub 源码安装,请重新安装选定的标签或分支:
```
uv tool install --force "git+https://github.com/0xAllow/mallp.git@v1.0.0"
```
请参见 [`CHANGELOG.md`](CHANGELOG.md)。
## 负责任的范围
MALLP 刻意不包含恶意软件部署、持久化安装、凭据窃取、漏洞利用或规避执行。它仅分析证据并生成防御性工件。不接受将 MALLP 转变为攻击性载荷框架的贡献。
## 贡献
阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md),添加良性回归测试夹具,记录解析器限制,并且绝不向仓库提交活体恶意软件。
## 安全
使用 [`SECURITY.md`](SECURITY.md) 中的流程私下报告漏洞。请勿在公开的 issue 中包含活体恶意软件或敏感的事件证据。
## 许可证
Apache License 2.0。请参见 [`LICENSE`](LICENSE)。
由 **0xAllow** 为希望拥有一个可复现的入口点,同时不失专业恶意软件分析“证据优先”原则的分析师而构建。
标签:ATT&CK映射, DAST, DNS 反向解析, Go语言工具, Metaprompt, SecList, 内存取证, 威胁情报, 开发者工具, 恶意软件分析, 搜索语句(dork), 网络信息收集, 自动化分析, 跨站脚本, 逆向工具, 速率限制处理, 防御规则生成