Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 108 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,26 @@

<p align="center"><img src="./docs/media/social-preview.svg" alt="LR-PayloadLab" width="100%"></p>
<p align="center"><img src="./docs/media/demo.gif" alt="LR-PayloadLab reproducible demo" width="100%"></p>
<p align="center"><strong>Bounded payloads. Verifiable research.</strong></p>
<p align="center">Auditable endpoint telemetry scenarios with receipts and rollback.</p>
<p align="center"><img alt="Test" src="https://github.com/LLR6/LR-PayloadLab/actions/workflows/test.yml/badge.svg"> <img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10%2B-blue"> <img alt="MIT" src="https://img.shields.io/badge/license-MIT-green"> <img alt="Version" src="https://img.shields.io/badge/version-0.1.0-8b5cf6"></p>
<p align="center"><strong>Payload telemetry × Detection evasion research × Reproducible experiments.</strong></p>
<p align="center">把“载荷是否能被检测、检测为什么失效、怎样加固检测器”做成一套可复现实验链。</p>
<p align="center"><img alt="Test" src="https://github.com/LLR6/LR-PayloadLab/actions/workflows/test.yml/badge.svg"> <img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10%2B-blue"> <img alt="MIT" src="https://img.shields.io/badge/license-MIT-green"> <img alt="Research" src="https://img.shields.io/badge/research-detection%20resilience-8b5cf6"></p>

## 30 秒看懂

用 JSON 描述研究行为,平台先检查动作白名单、路径边界和资源上限,再执行并生成逐动作回执。`rollback` 根据回执清理实验文件。
LR-PayloadLab 现在包含两条研究链:

```text
Track A
Manifest → Policy validation → Bounded execution → Receipt → Rollback

Track B
Synthetic Sample → Explainable Detector → Feature Perturbation
→ Recall / FPR / Decision Flip → Sensitivity Analysis
```

## 5 分钟 Demo
Track A 用来生成可审计、可回滚的无害遥测场景;Track B 用来研究“检测器面对载荷特征变化时为什么会漏报”。

## 载荷实验

```bash
python -m pip install -e .
Expand All @@ -24,17 +31,106 @@ payload-lab rollback receipt.json
payload-lab build examples/telemetry-demo.json --output generated-payload.py
```

示例只包含临时标记、无害子进程、文件哈希、50ms 计算与延迟。生成文件的 SHA-256 会写入输出,便于实验复现。
示例只产生临时标记、无害子进程、文件哈希、短时计算与延迟,并记录 SHA-256 和逐动作回执。

## Detection Evasion Benchmark

```bash
python research/evasion_benchmark.py
python research/evasion_benchmark.py --samples 1000 --json report.json
```

这部分用于导师展示“免杀/检测对抗”研究方法,但实验对象是 **合成特征向量**,不会生成或修改真实恶意程序,也不会调用生产环境 AV/EDR。

输出包括:

- baseline / P1 / P2 / P3 的 TP、FN、FP、TN
- Recall / False Positive Rate
- 相比 baseline 的 recall delta
- 特征敏感度与 decision flips
- 固定 seed 的可复现实验结果

详细设计见 [Detection Evasion Study](./docs/detection-evasion-study.md)。


## Real Threat Model: IcedID (S0483)

为了让实验不只停留在“自造样本”,项目现在加入 **IcedID** 作为真实威胁模型。研究数据来自公开 ATT&CK 行为证据,并映射到可安全复现的 Atomic Red Team / adversary-emulation 流程。

当前覆盖 12 个重点技术,包括:

- T1071.001 Web Protocols
- T1547.001 Registry Run Keys / Startup Folder
- T1055.004 APC Injection
- T1055.012 Process Hollowing
- T1082 System Information Discovery
- T1016 System Network Configuration Discovery
- T1518.001 Security Software Discovery
- T1218.007 Msiexec
- T1218.011 Rundll32
- T1053.005 Scheduled Task
- T1497 Virtualization/Sandbox Evasion
- T1047 Windows Management Instrumentation

运行:

```bash
python research/icedid_coverage.py
```

详细案例见 [IcedID Case Study](./docs/icedid-case-study.md)。

这条链用于回答一个更接近实战的问题:

```text
真实恶意软件家族
↓
公开 ATT&CK 行为证据
↓
授权对手模拟
↓
真实终端遥测
↓
检测覆盖 / 漏报
↓
检测器加固
```


## IcedID × Atomic Coverage Matrix

项目已经把 12 个 IcedID 研究 TTP 与 Atomic Red Team 元数据接起来:

- 11 个 TTP 存在同 ID 的 Atomic YAML
- T1497 是父级技术,当前没有 exact parent-level Atomic,因此不会虚报为“已覆盖”
- Process Injection / Process Hollowing / Msiexec / Rundll32 等高风险项只保留 metadata,不提供二次封装执行器
- 实验结果默认全部 not_run,只有填入真实遥测和检测证据后才计入覆盖率

生成矩阵:

python research/atomic_coverage_matrix.py --results examples/icedid-lab-results.template.json --markdown icedid-coverage.md --json icedid-coverage.json

详情见 [IcedID × Atomic Coverage](./docs/icedid-atomic-coverage.md)。


## 研究价值

- **可审计载荷**:行为在 Manifest 中完整列出,生成脚本不隐藏动作。
- **遥测验证**:可观察文件、进程、计算和时间行为是否被采集。
- **安全约束**:拒绝未知动作、目录逃逸、长时间计算;无网络、持久化、凭据访问与规避模块。
- **回滚回执**:实验产生的文件记录在回执中,按工作区边界清理。
- **可审计 Payload**:Manifest 完整描述实验行为,执行结果有回执。
- **检测对抗评估**:不只展示“能不能检出”,还量化检测率随特征扰动如何变化。
- **可解释性**:直接输出哪些特征最容易导致 decision flip。
- **可复现性**:固定模型、固定随机种子、自动化测试。
- **安全边界**:不包含真实 AV/EDR 绕过、注入、持久化、凭据访问或隐蔽远控能力。

## 研究路线
## 导师展示路线

建议现场只演示三步:

```text
1. 运行 benign payload,展示 receipt / rollback
2. 运行 detection-evasion benchmark,展示 recall 下降
3. 打开 sensitivity 结果,解释“检测器为什么漏、应该怎么加固”
```

下一步计划加入跨平台遥测适配器、Sigma 规则回放、实验签名、容器隔离和检测覆盖矩阵。欢迎提交新的**无害、可回滚、可观测**场景。
这比单纯做一个“免杀程序”更适合研究型项目:既能体现攻防思维,也能留下完整实验方法、指标和代码证据。

作者:LLR6 · MIT License
59 changes: 59 additions & 0 deletions docs/detection-evasion-study.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Detection Evasion Study — Safe Research Track

这个实验用于展示 **“检测器在输入特征发生扰动后是否仍然稳定”**,而不是提供真实杀软绕过能力。

## 研究问题

1. 一个检测器过度依赖哪些特征?
2. 当这些特征发生小幅变化时,召回率下降多少?
3. 哪些扰动最容易造成 decision flip?
4. 如何通过特征多样化、阈值校准与规则组合提高鲁棒性?

## 实验设计

`research/evasion_benchmark.py` 只生成合成特征向量,不读取 PE/ELF,不执行载荷,也不调用 Defender/EDR。

每个样本由 6 个抽象维度组成:

- `exec_surface`
- `io_surface`
- `network_surface`
- `persistence_surface`
- `entropy`
- `token_overlap`

检测器是固定权重的可解释模型。P1/P2/P3 是 **纯特征空间扰动**,不对应真实混淆、注入、打包或规避技术。

## 运行

```bash
python research/evasion_benchmark.py
python research/evasion_benchmark.py --samples 1000 --json report.json
```

输出包括:

- baseline / P1 / P2 / P3 的 TP、FN、FP、TN
- Recall 与 False Positive Rate
- 相比 baseline 的 recall delta
- 每个特征的平均分数下降和 decision flips

## 导师展示建议

把重点放在 **“为什么检测器漏掉了”** 和 **“怎么把它修好”**:

```text
Synthetic Sample
↓
Explainable Detector
↓
Feature-space Perturbation
↓
Recall / FPR / Decision Flip
↓
Sensitivity Analysis
↓
Detector Hardening
```

这条路线能体现检测对抗、实验设计、指标评估和可解释性,同时不会把仓库变成真实 AV/EDR 规避工具。
46 changes: 46 additions & 0 deletions docs/icedid-atomic-coverage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# IcedID × Atomic Red Team Coverage Matrix

这个模块把真实威胁模型、Atomic Red Team 元数据和实验结果统一成一张 Coverage Matrix。

## 当前映射

- IcedID 研究 TTP:12
- 可找到同 ID Atomic YAML:11
- 无 exact parent-level Atomic:1(T1497)
- 高风险/容易被误用的 Atomic 只记录 metadata,不在 LR-PayloadLab 中封装执行命令。

## 生成矩阵

先复制 examples/icedid-lab-results.template.json 并填写真实实验结果。

然后运行:

python research/atomic_coverage_matrix.py --results icedid-lab-results.json --markdown icedid-coverage.md --json icedid-coverage.json

## 实验结果字段

- run_status: not_run / passed / failed / skipped
- detection: not_evaluated / detected / missed / partial
- telemetry: 实际拿到的日志源,例如 Sysmon EID 1、Windows Security、EDR alert
- evidence: 截图、日志文件、事件编号或报告路径
- notes: 失败原因、前置条件、清理情况等

## 为什么不直接执行所有 Atomic

Process Injection、Process Hollowing、Msiexec/Rundll32 等测试可能产生高风险行为。这个仓库负责研究映射、证据记录和检测覆盖分析,不会再封装一层一键执行器。

对于 discovery、WMI、Run Key、Scheduled Task 等项目,也应只在有授权的隔离 Windows 测试主机上,阅读 upstream prerequisite / cleanup 后运行。

导师展示链路:

IcedID TTP
↓
Exact Atomic metadata
↓
Authorized isolated execution
↓
Telemetry evidence
↓
Detection result
↓
Coverage Matrix
87 changes: 87 additions & 0 deletions docs/icedid-case-study.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# IcedID(S0483)行为研究 Case Study

## 为什么选 IcedID

IcedID 是 MITRE ATT&CK 收录的真实 Windows 恶意软件家族(S0483)。本项目不保存或分发 IcedID 恶意二进制,而是把公开威胁情报里的行为映射成可复现的检测研究对象。

研究链:

```text
IcedID public threat intelligence
↓
MITRE ATT&CK technique mapping
↓
Atomic Red Team / safe emulation coverage
↓
endpoint telemetry
↓
detection rules
↓
robustness / false-negative analysis
```

## 重点行为

当前 case study 选择 12 个适合做检测研究的行为:

| ATT&CK | 行为 | 研究重点 |
|---|---|---|
| T1071.001 | Web Protocols | HTTPS C2 的网络遥测 |
| T1547.001 | Registry Run Keys / Startup Folder | 启动持久化检测 |
| T1055.004 | APC Injection | 注入行为的事件关联 |
| T1055.012 | Process Hollowing | 父子进程与内存遥测 |
| T1082 | System Information Discovery | 主机信息发现 |
| T1016 | System Network Configuration Discovery | 网络配置发现 |
| T1518.001 | Security Software Discovery | 安全软件枚举 |
| T1218.007 | Msiexec | 系统二进制代理执行 |
| T1218.011 | Rundll32 | DLL 代理执行 |
| T1053.005 | Scheduled Task | 任务计划持久化 |
| T1497 | Virtualization/Sandbox Evasion | 沙箱/分析环境识别 |
| T1047 | WMI | WMI 执行行为 |

## 和 Atomic Red Team 怎么结合

Atomic Red Team 的测试按 ATT&CK technique 组织,每个 technique 都有结构化 YAML/Markdown 定义,并可由 Invoke-AtomicRedTeam 执行。

这里的研究原则是:

1. 先从 IcedID 的 ATT&CK technique 列表出发。
2. 找到相同 technique 的 Atomic Test。
3. 阅读 prerequisite / attack / cleanup 定义。
4. 只在授权、隔离测试机运行。
5. 保存 EDR/Sysmon/Windows Event Log 遥测。
6. 把测试结果喂给 LR-PayloadLab 的 detection-resilience 分析。

## 导师演示

```text
IcedID (S0483)
│
├── T1082 System Information Discovery
├── T1016 Network Configuration Discovery
├── T1218.011 Rundll32
├── T1053.005 Scheduled Task
└── ...
↓
Atomic Red Team equivalent
↓
Windows telemetry
↓
Detection / missed detection
↓
Feature sensitivity + detector hardening
```

重点不是声称“仓库里放了 IcedID 木马”,而是说明:

> 我选取真实恶意软件家族 IcedID 作为威胁模型,根据 ATT&CK 的公开行为证据建立可复现实验,并研究不同检测器对这些行为的覆盖和鲁棒性。

## 数据文件

- `research/icedid_case_study.json`:研究行为清单
- `research/icedid_coverage.py`:按研究战术聚合行为
- `research/evasion_benchmark.py`:检测鲁棒性实验

## 安全边界

仓库不收录真实 IcedID 二进制、不实现凭据窃取/C2/持久化/注入载荷,也不实现 AV/EDR 绕过;实验聚焦公开行为证据、授权对手模拟、遥测与检测工程。
Loading
Loading