omarbabba779xx/APT-Simulator
GitHub: omarbabba779xx/APT-Simulator
面向紫队演练的 APT 行为模拟框架,通过预置威胁组织画像重放 MITRE ATT&CK 战术链路,帮助蓝队验证检测能力而无需使用真实恶意软件。
Stars: 0 | Forks: 0
# APT Simulator
防御性高级持续性威胁(Advanced Persistent Threat)模拟框架。专为紫队演练、检测工程和 SOC 培训构建,**仅限在已授权的实验环境中使用**。
## 目标
重放真实的对手行为链(映射至 MITRE ATT&CK),使蓝队能够验证检测结果、调整 SIEM 规则并衡量覆盖盲区——无需使用真实的恶意软件。
## 非目标
- 并非武器化的攻击工具。载荷是模拟的制品,而非破坏性代码。
- 不可用于未拥有或未获得书面授权测试的系统中。
- 不能完全替代红队实战演练。
## 系统架构
```
+-------------------+ +---------------------+
| Scenario YAML | -----> | Orchestrator |
| (DSL) | | (FastAPI) |
+-------------------+ +----------+----------+
|
+-------------+-------------+
| | |
+----v---+ +----v---+ +----v---+
| Agent | | Agent | | Agent |
| Win/Lin| | Win/Lin| | Win/Lin|
+--------+ +--------+ +--------+
| | |
(TTPs executed inside lab VM only)
| | |
+------+------+------+------+
|
+---------v---------+
| Telemetry / JSONL |
| (SIEM-compatible) |
+-------------------+
```
## 安全防护机制
1. **终止开关**:存在 `data/STOP` 文件或设置环境变量 `APT_SIM_STOP=1` 时,将在一个心跳周期内停止所有 agent。
2. **实验室白名单**:如果主机名/IP不在 `config/lab_whitelist.yaml` 中,agent 将拒绝运行。
3. **签名载荷**:每个 TTP 载荷均使用 Ed25519 签名。Agent 会在执行前进行验证。
4. **TTL 自动卸载**:如果在配置的 TTL 时间内未收到编排器的的heartbeat,agent 将会自动终止。
5. **仅模拟影响**:破坏性战术(T1485, T1486)仅写入良性标记文件,绝不涉及真实数据。
6. **审计日志**:每个操作均记录为哈希链式的 JSONL 格式;任何篡改均可被检测。
## 快速开始
```
# 1. 安装
python -m venv .venv
. .venv/Scripts/activate # Windows
pip install -e ".[dev]"
# 2. 生成签名密钥(一次性)
python -m orchestrator.core.signer init
# 3. 将此主机添加到实验室白名单
edit config/lab_whitelist.yaml
# 4. 启动 orchestrator
apt-orchestrator serve
# 5. 在另一个终端 — 运行 agent
apt-agent run --server http://127.0.0.1:8000
# 6. 启动 scenario
curl -X POST http://127.0.0.1:8000/scenarios/run \
-H "Content-Type: application/json" \
-d @scenarios/basic_recon.yaml
```
## 项目结构
```
orchestrator/ FastAPI server, planner, kill-switch, audit, DSL loader
agent/ Beacon agent (Windows / Linux)
ttps/ TTP plugin library, mapped to MITRE ATT&CK IDs
scenarios/ YAML scenario definitions
detection/ Generated Sigma rules + detection coverage reports
config/ Defaults + lab whitelist
tests/ pytest suite
docs/ Architecture + threat model
```
## MITRE ATT&CK 覆盖范围 (阶段 1 + 2 + 3)
| 战术 | TTP | ATT&CK ID | 平台 |
|----------------------|-----------------------------------|------------|-----------------------|
| 侦察发现 | System Owner/User Discovery | T1033 | 全部 |
| 侦察发现 | File and Directory Discovery | T1083 | 全部 |
| 侦察发现 | Process Discovery | T1057 | 全部 |
| 侦察发现 | Network Config Discovery | T1016 | 全部 |
| 侦察发现 | Network Connections Discovery | T1049 | 全部 |
| 侦察发现 | Cloud Infrastructure Discovery | T1580 | 全部 (需要云凭据) |
| 执行 | Command Interpreter (模拟) | T1059 | 全部 |
| 持久化 | Registry Run Key (模拟, Windows) | T1547.001 | windows |
| 持久化 | Scheduled Task (模拟, Windows) | T1053.005 | windows |
| 持久化 | SSH Authorized Keys (模拟) | T1098.004 | linux/macOS |
| 持久化 | Systemd User Service (模拟) | T1543.002 | linux |
| 凭据访问 | Credential Target Enumeration | T1003 | 全部 |
| 防御规避 | Obfuscated File Artifact (模拟) | T1027 | 全部 |
| 防御规避 | Indicator Removal: File Deletion | T1070.004 | 全部 |
| 防御规避 | Modify Registry (模拟, Windows) | T1112 | windows |
| 命令与控制 | HTTP C2 Beaconing (模拟) | T1071.001 | 全部 |
| 命令与控制 | Ingress Tool Transfer (模拟) | T1105 | 全部 |
| 收集 | Data from Local System (模拟) | T1005 | 全部 |
| 数据渗出 | Exfil Over C2 Channel (模拟) | T1041 | 全部 |
| 影响 | Data Encrypted for Impact (模拟) | T1486 | 全部 |
每个 TTP 均提供 Sigma 规则、合成 SIEM 事件和清理方法。
涵盖 9 个战术的 22 个 TTP。完整路线图请参见 `docs/ROADMAP.md`。
## 核心功能
- **ATT&CK Navigator 导出** — `GET /coverage/navigator` 返回完整的 Navigator v4 层 JSON。可直接导入 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/) 以实现覆盖范围的可视化。
- **对手配置文件** — `profiles/` 中包含 4 个内置配置文件 (APT29, FIN7, Lazarus, APT41)。`POST /profiles/{name}/generate` 可生成与该行为者已记录行为相匹配的场景。
- **基于配置文件的场景生成器** — `python -m orchestrator.profile_gen generate apt29 --steps 8`
- **独立 Agent** — `apt-agent run-local scenarios/basic_recon.yaml --dry-run` 无需编排器即可运行 TTP(离线 CI 模式)。
- **指标 API** — `GET /metrics` 返回运行次数、TTP 成功率和 agent 统计明细。
- **实时审计推送** — 仪表板 WebSocket 面板可实时显示每一个审计事件。
- **步骤详情弹窗** — 点击仪表板中的任意运行行,即可查看每个步骤的耗时、输出和错误信息。
## CLI 参考
```
# 启动 orchestrator
apt-orchestrator serve
# 本地运行 scenario(无需 orchestrator)
apt-agent run-local scenarios/basic_recon.yaml --skip-safety
# 导出 ATT&CK Navigator layer
python -m orchestrator.navigator_export export --out layer.json
# 列出 adversary profiles
python -m orchestrator.profile_gen list
# 从 profile 生成 scenario
python -m orchestrator.profile_gen generate lazarus --steps 10 --out scenarios/lazarus_gen.yaml
# 导出 Sigma rules
python -m orchestrator.sigma_export export --out detection/sigma/
# 对随机 scenario 进行 Fuzz
python -m orchestrator.fuzz generate --seed 42
# 重放审计日志
python -m orchestrator.replay list-runs
# Detection diff
python -m orchestrator.detection_diff verify --run-id
```
## 许可证
MIT — 详见 `LICENSE`。包含道德使用声明。
标签:APT29, APT41, APT模拟, ATT&CK Navigator, AV绕过, Cloudflare, Ed25519签名, FastAPI, FIN7, JSONL, Kill-switch, Lazarus, MITRE ATT&CK, SIEM规则调优, Sigma规则, SOC培训, TGT, YAML, 反取证, 场景DSL, 多平台Agent, 威胁 emulation, 安全库, 安全测试, 安全规则引擎, 安全评估, 安全防护栏, 实验室安全, 审计日志, 攻击性安全, 攻防演练, 时序数据库, 目标导入, 紫队, 紫队框架, 网络靶场, 蓝队验证, 逆向工具, 遥测数据