bvlik/malware-triage-kit
GitHub: bvlik/malware-triage-kit
以 .NET 窃取木马为案例,将行为分析转化为可部署的 Sigma/YARA/STIX 检测包并附带带监管链验证的 Python Procmon 分诊工具。
Stars: 0 | Forks: 0
# 🦠 malware-triage-kit
**针对 .NET 窃取木马的行为分析 —— 转化为您可以真正部署的检测方案。**
围绕 `Private.exe` 窃取木马的一套完整防御工作流:一个 Python **Procmon 分诊工具**(包含监管链验证)、一个可直接交付的**检测包**(Sigma / YARA / STIX / ATT&CK Navigator),以及支撑每一个论点的**证据**。仅涉及行为分析 —— 不含逆向工程。
[](LICENSE)





🤝 与 @StaiLee 合作完成
## 为什么做这个
一份仅仅停留在“这是一个窃取木马”的恶意软件分析报告是不完整的。本项目将行为分析一路推进到**可操作的输出**:同样的观察结果转化为了 SOC 可以推送到 Sentinel/Splunk/Elastic 的 Sigma 规则、用于扫描的 YARA 规则、用于 MISP/OpenCTI 的 STIX bundle,以及一个**证明证据未被篡改**的 Python 工具。我们将检测成果视为最终交付物,而不是事后的补充。
## 一句话结论
`Private.exe` 是一个 **.NET 窃取木马**:它会**读取 Microsoft Edge 凭据**(读取 `Local State` → AES 主密钥;尝试读取 `Login Data` → 密码存储)并释放 `Too_late_*` 标记文件。在约 30 秒的观察窗口内,**未观察到 C2 通信和持久化行为**(已在 *局限性* 中如实说明);**DNS Client 服务持续崩溃并陷入死循环**。**高危严重性。**
**二进制文件 SHA-256:** `2FB35630884583875BDC0362B34046F8A15FF31795942B02A8F64D008686C7F7`
## 目录结构
```
malware-triage-kit/
├── tool/ # reusable Python triage tool (stdlib only)
│ ├── procmon_triage.py # → hash · procmon · verify · stix
│ ├── tests/ # → pytest suite
│ └── sample-procmon-export.csv
├── detection/ # ship-ready detection pack
│ ├── sigma/ # → 3 Sigma rules (SIEM)
│ ├── yara/ # → exact-hash + behavioral hunting rule
│ ├── stix/ # → STIX 2.1 bundle (MISP / OpenCTI)
│ └── navigator/ # → MITRE ATT&CK Navigator layer
├── evidence/ # raw proofs + chain of custody (CSV / JSON)
└── docs/ # attack chain + written analysis
```
## 分诊工具 — `procmon_triage.py`
纯 Python 3 编写,无外部依赖。包含四个子命令:
| 命令 | 用途 |
|---------|---------|
| `hash` | 获取二进制文件**以及**每个证据文件的指纹(SHA-256/1、MD5)→ 构成监管链 |
| `procmon` | 分诊 Process Monitor 导出的 CSV 文件(**严格按 PID 过滤**),对文件/注册表/网络行为进行分类,标记持久化及破坏行为,提取 IoCs |
| `verify` | 根据清单重新计算证据哈希值 → 得出 **INTACT(完好) / INCOMPLETE(不完整) / TAMPERED(已篡改)** 的结论(若状态非完好则以非零状态码退出) |
| `stix` | 将提取的 IoCs 导出为 STIX 2.1 bundle |
```
cd tool
python -m pytest tests/ -v # run the test suite
python procmon_triage.py procmon sample-procmon-export.csv --pid 6988 --json triage.json
python procmon_triage.py verify ../evidence/hash-evidences.csv
```
严格按 PID 过滤至关重要:它可以防止将同名进程或分析编排器的操作错误地归咎于恶意软件 —— 这是经得起推敲的结论与主观臆断之间的区别。
## 检测包
| 产物 | 覆盖范围 |
|----------|--------|
| `sigma/stealer_edge_credential_store_access.yml` | 非浏览器进程读取 Edge 凭据 —— T1555.003 / T1539 / T1005 |
| `sigma/too_late_marker_file_dropped.yml` | 释放 `Too_late_*.txt` 标记文件 —— T1486 |
| `sigma/dnscache_service_crash_loop.yml` | DNS Client 崩溃死循环 —— T1489 |
| `yara/private_stealer.yar` | 精确哈希规则(确定匹配)+ 行为狩猎规则(用于验证) |
| `stix/private-stealer.stix.json` | STIX 2.1 bundle(指标 + 恶意软件 + ATT&CK) |
| `navigator/private-layer.json` | 已观察到的技术的 ATT&CK Navigator 热力图 |
```
# Sigma → SIEM 查询(示例)
pip install sigma-cli
sigma convert -t microsoft365defender detection/sigma/stealer_edge_credential_store_access.yml
```
更多细节及攻击链:**[docs/attack-chain.md](docs/attack-chain.md)** ·
**[docs/analysis.md](docs/analysis.md)** · **[detection/README.md](detection/README.md)**。
## MITRE ATT&CK → 检测映射
| 技术(已观察到) | 提供的检测 |
|----------------------|--------------------|
| T1555.003 Web Browser Credentials | Sigma `stealer_edge_credential_store_access` + STIX |
| T1539 Steal Web Session Cookie | Sigma(针对 `Network\Cookies`)+ STIX |
| T1005 Data from Local System | Sigma(Local State → Login Data 序列) |
| T1518 / T1082 Discovery | 注册表关联分析 |
| T1486-like(标记文件,无加密行为) | Sigma `too_late_marker_file_dropped` + YARA `$marker1` |
| T1489 Service Stop (DNS) | Sigma `dnscache_service_crash_loop` |
| 二进制文件识别 | YARA `private_exe_exact_hash` (SHA-256) + STIX 文件哈希 |
## 相关工作
属于同一蓝队作品集的一部分:
- [home-detection-lab](https://github.com/bvlik/home-detection-lab) — Sigma 规则 + ATT&CK 场景 + 可运行的检测器
- [sigma-rule-pack](https://github.com/bvlik/sigma-rule-pack) — 映射到 ATT&CK 的精选 Sigma 检测规则
- [log-triage-toolkit](https://github.com/bvlik/log-triage-toolkit) — 只读权限的 auth-log 分诊工具
由 bvlik 和 @StaiLee 构建 —— 专注于恶意软件分析与检测工程。
标签:DAST, HTTP工具, Python, StruQ, YARA, 云资产可视化, 威胁情报, 安全规则引擎, 开发者工具, 恶意软件分析, 数字取证, 无后门, 检测规则, 网络资产发现, 自动化脚本