cognis-digital/advsim
GitHub: cognis-digital/advsim
advsim 是一款仅限良性使用的对手模拟与检测验证框架,通过在沙箱中重现 ATT&CK 技术的可观测遥测数据,帮助蓝队验证 SIEM/EDR 检测规则是否真正生效。
Stars: 0 | Forks: 0
# advsim
**仅限良性、授权使用的对手模拟与检测验证框架 —— 映射至 MITRE ATT&CK。**
advsim 是一款紫队工具,与 [MITRE Caldera](https://caldera.mitre.org/) 和 [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team) 属于同一专业类别:你*模拟对手技术,以便蓝队能够确认其检测规则是否生效。* 设计上的侧重点差异十分明显 —— **advsim 仅使用严格良性、可逆且限定在沙箱范围内的操作,来模拟技术的可观测遥测数据。** 它绝不会造成实际危害,并且在架构设计上就根本无法做到这一点(参见 [范围防护机制](#the-benignauthorized-guarantee))。
## 问题所在
蓝队购买 SIEM、EDR 并编写检测规则 —— 却很少能回答唯一那个关键问题:*如果对手此刻就在这台主机上执行了 X 操作,我们真的能检测到吗?* 等待真正的安全事件发生是一种极其糟糕的测试方式。完整的红队演练既昂贵又少见。而运行真实的恶意软件或破坏性工具来“测试”检测更是鲁莽之举。
advsim 弥补了这一空白。它重现了 ATT&CK 技术的**遥测足迹** —— 即你的检测规则应当依赖的进程创建、DNS 查询、文件写入和自启动痕迹 —— 且使用的是可证明为良性的操作:在临时沙箱中生成标记文件、运行带有标签的只读进程、向不可路由的文档域名发起 DNS 查询。你运行它,然后去检查你的检测警报是否亮起。它会生成一份**检测验证报告**(Markdown / JSON / **SARIF 2.1.0**),以及一个包含所模拟 TTP 的 **STIX 2.1** 包,供你接入情报和检测 pipeline。
## 良性/授权保证
这是 advsim 的核心所在,绝非可有可无的注脚:
1. **授权使用门控。** 没有明确的授权信号,任何操作都不会运行。没有 flag,就不执行。
2. **良性、可逆、仅限可观测的模拟。** 每个技术的 `simulate` 步骤只生成*遥测数据*,绝无其他。每个技术都有对应的 `cleanup()` 用于还原。持久化“写入”的是一个 JSON 标记文件,描述了它*本会*设置的键值 —— 它绝不会触碰真实的注册表、crontab、LaunchAgents 或启动文件夹。C2“信标”只会解析/连接到**不可路由**的 RFC 5737 / RFC 2606 sink 地址。凭证访问“读取”的是一个不包含任何机密的带标签诱饵文件。
3. **经过测试的严格边界。** [`safety.py`](src/advsim/safety.py) 声明了一份禁止能力的黑名单 —— 真实恶意软件、破坏性操作、数据窃取、DoS、大规模目标定位、自我传播、针对真实系统的凭证窃取以及任何带有物理破坏性质的操作 —— 以及一份良性能力的白名单。每一项发布的技术都经过了与此边界的验证。命令字符串会经过破坏性模式黑名单的检查。所有文件活动均被限制在临时沙箱内;所有网络活动均被限制在 sink 主机范围内。
4. **出现任何回归 CI 即宣告失败。** [`tests/test_scope_guard.py`](tests/test_scope_guard.py) 断言:没有任何技术可以声明被禁止的能力,没有破坏性命令能通过门控,没有路径能逃逸出沙箱,没有真实主机可被触达,授权门控无法被绕过,且动作词汇表是一个封闭的、经过审计的集合。**如果有人添加了具有实际破坏能力的东西,CI 就会变红报错。**
如果某项技术无法以良性方式进行模拟,它将被记录为超出范围且**不予实现**。请参阅 [SECURITY_SCOPE.md](SECURITY_SCOPE.md)。
## 安装
```
# 从源码
git clone https://github.com/cognis-digital/advsim
cd advsim
pip install .
# 或 helper scripts
./install.sh # Linux / macOS
./install.ps1 # Windows PowerShell
make install # via Makefile
```
Docker:
```
docker build -t advsim .
docker run --rm advsim list
```
要求 Python 3.9+。唯一的运行时依赖是 PyYAML。
## 使用方法
```
advsim list # list techniques + scenarios
advsim run discovery.system_info --authorized # emulate one technique (T1082)
advsim run T1071.004 --authorized # ...also addressable by ATT&CK id
advsim scenario recon_and_beacon --authorized # run a chained scenario
advsim report --format sarif # re-render the last run as SARIF
advsim cleanup # remove the sandbox tree
```
报告格式:`markdown`(默认)、`json`、`sarif`、`stix`。
```
# 为你的 code-scanning / detection pipeline 生成 SARIF,并为你的 TIP 生成 STIX:
advsim scenario full_killchain --authorized --format sarif -o killchain.sarif
advsim scenario full_killchain --authorized --format stix -o killchain.stix.json
```
为会话授予一次授权,而不是每个命令授权一次:
```
export ADVSIM_AUTHORIZED=1 # or create ./advsim.yaml with `authorized: true`
advsim scenario recon_and_beacon
```
## 运行效果示例
```
$ advsim run discovery.system_info --authorized
# advsim detection-validation 报告
> advsim emulates the observable telemetry of MITRE ATT&CK techniques using
> benign, reversible, sandbox-scoped actions. Nothing below performed real harm.
## 在你的 SIEM / EDR 中验证什么
### System Information Discovery (T1082)
- Expected telemetry (confirm a detection fired):
- Process creation event for a system-info discovery binary (ver / uname / systeminfo)
- Short-lived read-only process spawned by the advsim runner
- Observed benign actions:
- enumerate_environment: read non-sensitive environment/system metadata
- spawn_benign_process: spawned benign process: cmd /c ver
```
## ATT&CK 覆盖范围
包含 18 项良性技术模拟,涵盖 8 种 ATT&CK 战术。每项模拟都具备跨平台防护且可逆。
| ATT&CK ID | 技术 | 战术 | advsim id |
|---|---|---|---|
| [T1082](https://attack.mitre.org/techniques/T1082/) | 系统信息发现 | 发现 | `discovery.system_info` |
| [T1033](https://attack.mitre.org/techniques/T1033/) | 系统所有者/用户发现 | 发现 | `discovery.account` |
| [T1016](https://attack.mitre.org/techniques/T1016/) | 系统网络配置发现 | 发现 | `discovery.network_config` |
| [T1057](https://attack.mitre.org/techniques/T1057/) | 进程发现 | 发现 | `discovery.process` |
| [T1069](https://attack.mitre.org/techniques/T1069/) | 权限组发现 | 发现 | `discovery.permission_groups` |
| [T1083](https://attack.mitre.org/techniques/T1083/) | 文件和目录发现 | 发现 | `discovery.file_and_directory` |
| [T1059](https://attack.mitre.org/techniques/T1059/) | 命令和脚本解释器 | 执行 | `execution.command_shell` |
| [T1547.001](https://attack.mitre.org/techniques/T1547/001/) | 注册表 Run 键 (自启动) | 持久化 | `persistence.registry_run_key` |
| [T1547.001](https://attack.mitre.org/techniques/T1547/001/) | 启动文件夹痕迹 | 持久化 | `persistence.startup_folder` |
| [T1053.005](https://attack.mitre.org/techniques/T1053/005/) | 计划任务 / Cron | 持久化 | `persistence.scheduled_task` |
| [T1036.003](https://attack.mitre.org/techniques/T1036/003/) | 伪装:重命名系统实用程序 | 防御规避 | `defense_evasion.masquerading` |
| [T1070.004](https://attack.mitre.org/techniques/T1070/004/) | 痕迹移除:文件删除 | 防御规避 | `defense_evasion.indicator_removal` |
| [T1070.006](https://attack.mitre.org/techniques/T1070/006/) | 痕迹移除:时间戳篡改 | 防御规避 | `defense_evasion.timestomp` |
| [T1552.001](https://attack.mitre.org/techniques/T1552/001/) | 文件中的不安全凭证 (诱饵) | 凭证访问 | `credential_access.file_access_marker` |
| [T1074.001](https://attack.mitre.org/techniques/T1074/001/) | 本地数据暂存 | 收集 | `collection.local_staging` |
| [T1071.004](https://attack.mitre.org/techniques/T1071/004/) | 应用层协议:DNS | 命令与控制 | `c2.dns_lookup` |
| [T1571](https://attack.mitre.org/techniques/T1571/) | 非标准端口信标 | 命令与控制 | `c2.beacon_connect` |
| [T1048](https://attack.mitre.org/techniques/T1048/) | 经由备用协议外发数据 (DNS 模式) | 外发传输 | `exfiltration.dns_pattern` |
内置场景:`recon_and_beacon`、`persistence_and_evasion`、`full_killchain`。
## 工作原理
技术以**声明式 YAML**(`src/advsim/techniques/*.yaml`)定义,映射到对应的 ATT&CK ID,列出了良性的 `simulate` + `cleanup` 步骤、预期遥测数据、能力要求和平台防护。这些步骤由一个规模小、封闭且经过审计的 [动作词汇表](src/advsim/actions.py) 组合而成 —— 不涉及任何任意的代码执行。请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 和 [docs/WRITING_TECHNIQUES.md](docs/WRITING_TECHNIQUES.md)。
## 开发
```
pip install -e ".[dev]"
pytest # full suite incl. the scope guard
python demos/run_all_demos.py
```
## 不附属于 MITRE
MITRE ATT&CK® 和 Caldera™ 是 The MITRE Corporation 的商标。advsim 出于互操作性目的引用了 ATT&CK 技术标识符,但不附属于 MITRE,也未获得其认可。
## 许可证
标签:TGT, 威胁情报, 安全合规, 开发者工具, 恶意代码分类, 攻防演练, 检测验证, 紫队工具, 网络代理, 请求拦截, 逆向工具