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, 安全库, 安全测试, 安全规则引擎, 安全评估, 安全防护栏, 实验室安全, 审计日志, 攻击性安全, 攻防演练, 时序数据库, 目标导入, 紫队, 紫队框架, 网络靶场, 蓝队验证, 逆向工具, 遥测数据