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 ![CI](https://github.com/bli8er/malware-re-detection-pipeline/actions/workflows/ci.yml/badge.svg) ![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue) ![Tests](https://img.shields.io/badge/tests-102%20passing-brightgreen) ![ATT&CK](https://img.shields.io/badge/MITRE%20ATT%26CK-32%20techniques-red) ![License](https://img.shields.io/badge/license-MIT-green) **作者:** 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, 网络安全审计, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 静态分析, 风险评分