bli8er/malware-re-detection-pipeline
GitHub: bli8er/malware-re-detection-pipeline
一个端到端的Windows PE恶意软件分析管道,将静态分析、IOC提取、检测规则与ATT&CK映射自动化。
Stars: 0 | Forks: 0
# Windows Malware RE & Detection Pipeline





**作者:** Bharath Kalyan Reddy Devarapalli — Security Engineer | DFIR & Detection Engineering
**技术栈:** Python 3.10+ · YARA · Sigma · MITRE ATT&CK · Cuckoo · Any.run · Hybrid-Analysis
## 这是什么工具?
大多数恶意软件分析工作流程是碎片化的——你在一个工具中运行 PE 解析,在另一个工具中提取字符串,手动编写 YARA 规则,分别映射到 ATT&CK,提交到沙箱需要打开浏览器,最后手动编写报告。本管道将整个流程整合为单个命令。
放入一个 Windows PE 二进制文件,即可获得:
- 完整映射的 **IOC(入侵指标)**,包含静态分析与运行时分析结果
- 可直接部署的 **YARA 检测规则**
- 可加载到 Splunk、Microsoft Sentinel 或 Elastic 的 **Sigma 规则**
- 样本触发的 **MITRE ATT&CK 技术映射**
- 带评分的 **风险等级(0–100)** 与结论 — CLEAN / LOW / MEDIUM / HIGH / CRITICAL
- 完整的 **HTML 分析报告**
在典型样本上,整个流程运行时间不到一秒。它**零外部依赖**——仅使用纯 Python 标准库。`pefile`、`yara-python`、`capstone` 等可选库在可用时会增强结果。
## 我为什么构建这个项目?
作为一名 SOC 分析师和检测工程师,从“收到可疑二进制文件”到“拥有已部署的 SIEM 检测”之间涉及太多手动步骤,且大量分析知识仅存在于分析人员头脑中。
该项目自动化了从**初步分类到检测部署**的完整流程:
1. **分类** — 是否恶意?风险等级如何?
2. **理解** — 静态与动态行为分别是什么?
3. **检测** — 如何在大规模环境中捕获此类样本及其变种?
4. **文档** — 如何向团队传达分析结果?
## 工作原理 — 8 个阶段
### 阶段 1 — PE 静态分析
仅使用 Python 的 `struct` 模块解析原始二进制文件。提取:
- DOS/PE/COFF 头部、机器类型、编译时间戳
- 按节划分的 **Shannon 熵**(用于检测加壳/加密)
- 完整的导入表 — 加载的所有 DLL 与函数
- 导出表、调试目录、PDB 路径
- 覆盖数据检测(位于最后一个节之后的数据 — 常见 dropper 模式)
- 安全特性标志:ASLR、DEP/NX、CFG、SEH
### 阶段 2 — 字符串提取
在整个二进制文件中扫描 ASCII 与 UTF-16LE 字符串,并自动分类:
| 类别 | 示例 |
|---|---|
| `url` | `http://c2.evil.ru/stage2.exe` |
| `ipv4` | `185.220.101.47` |
| `registry_run` | `HKCU\...\CurrentVersion\Run\backdoor` |
| `command_line` | `powershell -enc JABX -bypass` |
| `lolbin` | `certutil`, `mshta`, `regsvr32` |
| `mutex` | `Global\UniqueAppMutex2024` |
| `credential` | `password=S3cr3t` |
| `file_path_win` | `C:\Users\Admin\AppData\Local\Temp\svchost32.exe` |
### 阶段 3 — 静态 IOC 提取
一个多阶段引擎使用 35+ 个正则表达式扫描字符串、导入表、PE 头部与原始字节。每个 IOC 会根据启发式规则进行严重性分级:
- 域名位于 `.tk`/`.ru`/`.pw` TLD → **HIGH**
- 连接至 4444/1337/31337 端口的 IP → **CRITICAL**
- 向 `Run` 注册表键写入 → **CRITICAL**
- 使用 `-EncodedCommand` 或 `-bypass` 的 PowerShell → **CRITICAL**
- 域名拼写欺骗(如 `micros0ft-update.com`)→ **CRITICAL**
### 阶段 4 — 动态分析(沙箱)
将二进制文件提交至沙箱并提取运行时行为工件:
| 工件 | 捕获内容 |
|---|---|
| **进程树** | 所有派生进程、父子关系、注入进程 |
| **API 调用跟踪** | 每个进程调用的每个 Windows API 及其参数 |
| **网络流量** | DNS 查询、HTTP 请求、原始 TCP/UDP 连接、联系 IP |
| **文件活动** | 创建、修改、删除的文件 |
| **注册表写入** | 所有写入的注册表键 — 自动标记持久化机制 |
| **互斥量** | 运行时创建的有名同步对象 |
| **内存工件** | 注入区域、从注入代码提取的字符串 |
| **沙箱签名** | 行为检测映射到 ATT&CK 技术 |
支持的沙箱提供者:
| 提供者 | 类型 | 说明 |
|---|---|---|
| **Cuckoo** | 自托管 | 免费,完全可控,需要部署 |
| **Any.run** | 云端 | 免费层级可用,支持交互 |
| **Hybrid-Analysis** | 云端 | 免费层级,每小时 5 次提交 |
| **Mock / Dry-run** | 本地 | 无需 API 密钥,用于测试 |
### 阶段 5 — YARA 规则生成
为每个样本自动生成最多 5 条 YARA 规则:
| 规则类型 | 检测方法 |
|---|---|
| **Imphash** | 精确导入哈希 — 最高精度 |
| **Strings** | 关键嵌入字符串模式 — 覆盖面广 |
| **Behavioral** | 可疑 API 导入组合 |
| **Packed** | 高熵节 + 加壳节名称 |
| **C2/Network** | 嵌入的域名、IP 与 URL |
每条规则在写入磁盘前都会经过语法验证。
### 阶段 6 — MITRE ATT&CK 映射
将来自静态分析、动态签名、IOC 与字符串的所有证据映射到 ATT&CK 技术,覆盖 10 个战术类别、32 种技术:
| 战术 | 示例技术 |
|---|---|
| 执行 | T1059(PowerShell)、T1106(原生 API) |
| 防御规避 | T1027(混淆)、T1055(进程注入)、T1622(调试器规避) |
| 凭证访问 | T1003(LSASS 转储)、T1555(密码存储) |
| 收集 | T1056.001(键盘记录)、T1113(屏幕捕获) |
| 命令与控制 | T1071.001(HTTP/S C2)、T1095(原始 TCP/UDP) |
| 持久化 | T1547.001(注册表 Run 键)、T1543.003(Windows 服务) |
| 权限提升 | T1134(令牌操纵) |
| 影响 | T1486(数据加密以影响) |
### 阶段 7 — Sigma 规则生成
为每个检测行为生成可直接在 SIEM 中使用的 Sigma 规则,支持 **Splunk**、**Microsoft Sentinel**、**Elastic SIEM** 与 **QRadar**:
- 进程注入指标
- 通过 LSASS 的凭证访问
- C2 网络通信
- 注册表持久化
- 可疑命令行执行
### 阶段 8 —风险评分与报告
综合风险评分(0–100),基于 6 个加权类别:
```
PE Anomalies (20 pts) — packing, missing ASLR/DEP, overlays
Suspicious Imports (25 pts) — injection / credential / C2 API combos
IOC Severity (20 pts) — critical/high/medium IOC counts
MITRE Coverage (20 pts) — technique count x tactic spread
Structural (15 pts) — no imports, suspicious PDB, W+X sections
Dynamic Analysis (+15 pts) — runtime behavioral confirmation bonus
```
**结论:** `CLEAN (<15)` · `LOW (<30)` · `MEDIUM (<50)` · `HIGH (<75)` · `CRITICAL (75+)`
## 快速开始
```
# Clone
git clone https://github.com/bli8er/malware-re-detection-pipeline.git
cd malware-re-detection-pipeline
# 可选:安装增强库
pip install pefile yara-python capstone
# 生成综合测试 PE(安全、无害的嵌入式 IOC 二进制文件)
python create_test_sample.py
# 仅静态分析
python pipeline.py samples/test_sample.exe --verbose
# 静态 + 动态(模拟沙箱 — 无需 API 密钥)
python pipeline.py samples/test_sample.exe --dynamic --sandbox mock
# 打开报告
# Windows: start output/reports/test_sample_report.html
# Mac/Linux: open output/reports/test_sample_report.html
```
**启用动态分析后的预期输出:**
```
═══ Starting analysis: samples/test_sample.exe
[1/8] PE parsing... PE32 | x86 | 4 sections | 35 imports | 2 suspicious
[2/8] Extracting strings... 56 strings, 11 interesting
[3/8] Extracting IOCs... 20 IOCs: 5 critical, 13 high, 2 medium
[4/8] Dynamic analysis... malicious | 8.5/10 | 6 signatures | 29 behavioral IOCs
[5/8] Generating YARA... 4 rules — all valid
[6/8] Mapping ATT&CK... 15 techniques across 9 tactics
[7/8] Generating Sigma... 3 rules
[8/8] Risk score... 77/100 — Verdict: CRITICAL
═══ Analysis complete in 0.15s
```
## CLI 参考
```
python pipeline.py [options]
Arguments:
target PE file path or directory (with --batch)
Static Analysis:
--output-dir DIR Output directory (default: ./output)
--format {html,json,both} Report format (default: both)
--no-yara Skip YARA rule generation
--no-sigma Skip Sigma rule generation
--no-mitre Skip MITRE ATT&CK mapping
--risk-threshold N Only report if risk score >= N (0-100)
--batch Process all PE files in a directory
--verbose, -v Verbose logging
Dynamic Analysis:
--dynamic Enable sandbox analysis
--sandbox PROVIDER cuckoo | anyrun | hybrid_analysis | mock
--api-key KEY API key (required for anyrun / hybrid_analysis)
--sandbox-url URL Base URL (required for Cuckoo)
--dry-run Use mock sandbox without real submission
```
**示例:**
```
# 自建 Cuckoo
python pipeline.py malware.exe --dynamic --sandbox cuckoo --sandbox-url http://localhost:8090
# Any.run 云
python pipeline.py malware.exe --dynamic --sandbox anyrun --api-key YOUR_KEY
# Hybrid-Analysis 云
python pipeline.py malware.exe --dynamic --sandbox hybrid_analysis --api-key YOUR_KEY
# 批量扫描整个目录(使用模拟沙箱)
python pipeline.py ./samples/ --batch --dynamic --sandbox mock --risk-threshold 40
```
## 输出文件
```
output/
├── reports/
│ ├── sample_report.html # Full analyst report (dark theme)
│ └── sample_report.json # Machine-readable output (SOAR ready)
├── yara_rules/
│ ├── sample_imphash.yar
│ ├── sample_strings.yar
│ ├── sample_behavioral.yar
│ └── sample_c2.yar
├── detections/
│ ├── sample_injection.yml # Sigma: process injection
│ ├── sample_c2_network.yml # Sigma: C2 communication
│ └── sample_persistence.yml # Sigma: registry persistence
├── iocs/
│ ├── sample_iocs.json # Merged static + dynamic IOC list
│ └── sample_dynamic_iocs.json # Behavioral IOCs only
└── dynamic/
└── sample_dynamic_raw.json # Raw sandbox report
```
## 项目结构
```
malware-re-detection-pipeline/
├── pipeline.py ← Main CLI entrypoint (8 stages)
├── create_test_sample.py ← Synthetic PE generator for testing
├── run_tests.py ← Test runner (no pytest required)
├── src/
│ ├── pe_parser/ ← PE header/section/import/entropy parser
│ ├── ioc_extractor/ ← 35+ pattern IOC engine + severity classifier
│ ├── dynamic_analysis/
│ │ ├── sandbox_client.py ← Cuckoo / Any.run / Hybrid-Analysis client
│ │ ├── result_parser.py ← Unified schema for all sandbox reports
│ │ └── behavioral_ioc.py ← Runtime IOC extraction + ATT&CK mapping
│ ├── yara_engine/ ← 5 YARA rule type generators + validator
│ ├── detection/
│ │ ├── mitre_mapper.py ← ATT&CK technique mapping (32 techniques)
│ │ ├── sigma_generator.py ← SIEM-ready Sigma rule generation
│ │ ├── risk_scorer.py ← Composite 0-100 risk scorer
│ │ └── report_builder.py ← HTML + JSON analyst report
│ └── utils/ ← Hashing, logging, helpers
├── tests/ ← 102 unit tests
│ ├── test_pe_parser.py
│ ├── test_ioc_extractor.py
│ ├── test_yara_engine.py
│ ├── test_mitre_mapper.py
│ └── test_dynamic_analysis.py
├── docs/
│ ├── MITRE_MAPPINGS.md
│ └── IOC_PATTERNS.md
└── .github/workflows/ci.yml ← CI across Python 3.10, 3.11, 3.12
```
## 运行测试
```
python run_tests.py
```
```
102 tests — 102 passed, 0 failed, 0 errors
```
覆盖范围:PE 解析 · 熵计算 · 字符串提取 · 哈希计算 · IOC 模式 · 严重性分类 · YARA 生成 · YARA 验证 · MITRE 映射 · 风险评分 · 沙箱客户端 · 结果解析 · 行为 IOC 提取
## 依赖项
基于 **纯 Python 标准库** — 无需安装即可开始使用。
| 库 | 状态 | 补充功能 |
|---|---|---|
| `pefile` | 可选 | 增强的 PE 解析(资源、丰富头部) |
| `yara-python` | 可选 | 在样本上原生执行 YARA 规则 |
| `capstone` | 可选 | x86/x64 反汇编引擎 |
| `python-magic` | 可选 | 通过 libmagic 检测文件类型 |
## 与检测工程的相关性
该项目直接映射检测工程与威胁情报角色的核心职责:
- **追踪复杂系统中的数据流** — PE 格式内部结构、导入解析、RVA 到偏移转换、沙箱 API 标准化
- **威胁建模攻击者 TTPs** — 将 API 级行为映射到 ATT&CK,建立从静态与动态来源的证据链
- **构建可扩展的检测内容** — 可在企业 SIEM 中直接部署的 YARA 与 Sigma 规则,无需手动操作
- **向利益相关者传达风险** — 结构化的 HTML 与 JSON 报告,包含执行摘要与完整技术细节
- **自动化与工具化** — 将手动分类时间从数小时缩短至不到一秒
*Bharath Kalyan Reddy Devarapalli · Security Engineer | DFIR & Detection Engineering · San Jose, CA*
*[LinkedIn](https://linkedin.com/in/bharath-kalyan-reddy) · [GitHub](https://github.com/bli8er)*
标签:Any.run, Cloudflare, Cuckoo, DNS信息、DNS暴力破解, DNS 反向解析, DNS 解析, HTML报告, HTTP工具, Hybrid-Analysis, IOC提取, IP 地址批量处理, Microsoft Sentinel, MITRE ATT&CK, PE分析, Python, Python3.10, Python3.11, Python3.12, Sigma规则, Windows恶意软件, YARA规则, 云安全监控, 云资产清单, 后渗透, 威胁情报, 子域名变形, 开发者工具, 无依赖, 无后门, 无线安全, 沙箱, 目标导入, 端点检测, 纯Python, 网络安全审计, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 静态分析, 风险评分