OpenAEV 完整教程:三步跑通一次靠谱的攻防演练(附自检清单与排错速查表)
【免费下载链接】openaevOpen Adversarial Exposure Validation Platform项目地址: https://gitcode.com/GitHub_Trending/op/openaev
OpenAEV 是一款免费开源的攻防演练平台:你在它上面规划、排期并执行网络对手模拟,它会用防御、检测、脆弱性、人员响应四个维度告诉你防线漏在哪里。把这篇教程读一遍,你就能独立跑完一次完整演练:演练前逐项自检、演练中搭出像真攻击的场景、演练后拿到能落地的复盘结论,而不是得到一堆不知道怎么用的人脸数据。
第一步(演练前):把环境自检清单勾完再动手
演练失败的大头不在平台,而在 injector 没配对。所谓 injector,就是真正"把动作打出去"的组件——发邮件、发短信、扫端口、发挑战题,每个场景步骤背后都挂着一个 injector。演练开始前,按下表逐项过一遍,任何一条勾不上,先修掉再谈跑演练:
| # | 检查项 | 检查什么 | 怎么算通过 |
|---|---|---|---|
| 1 | injector 已启用 | 本次用到的每个 injector 的启用开关(形如*_ENABLE)是否为true,必填变量是否齐全 | 在Integrations → Deployed页能看到对应卡片,状态为已启动,"最后被看见"的时间是最近的 |
| 2 | 平台连接变量 | OPENAEV_URL与OPENAEV_TOKEN是否已填、token 是否有效 | injector 出现在 Deployed 列表中且没有认证报错 |
| 3 | 唯一标识 | 每个 injector 实例的INJECTOR_ID是否各自是一个独立的 UUIDv4 | 两个实例之间找不到重复的 ID |
| 4 | 外部服务 | 所连扫描器、消息通道等外部服务的 URL 与 API 密钥是否正确,服务器到该 URL 和端口是否可达 | 一次简单请求返回 200,injector 侧无超时日志 |
| 5 | 消息通道 | injector 容器能否按平台下发的配置连上 RabbitMQ 的主机名和端口 | 容器挂在平台所在网络上,无连接被拒日志 |
| 6 | 人员权限 | 演练账号的角色能力是否覆盖演练中要执行的操作 | 按 用户与权限管理 检查角色能力项,无缺失能力告警 |
| 7 | 场景时间线 | 场景里各步骤的顺序与时间是否符合计划 | 步骤顺序等于你设计好的攻击顺序,没有把时间设到过去 |
第 2、3 项的变量长这样,4 行就是全部关键配置:
INJECTOR_ID=<你的UUIDv4> INJECTOR_NAME=<实例名> OPENAEV_URL=http://your-platform OPENAEV_TOKEN=<管理token>漏配INJECTOR_ID会让 injector 无法向平台注册身份;两个实例复用了同一个 ID,消息会被投到错误的那台,演练跑到一半"莫名"卡住。每个 injector 的具体必填参数以 Injectors 部署文档 中该 injector 的 README 为准,内置的邮件、短信、钓鱼、挑战题等 injector 则直接在平台配置页填参数,参考 内置 Injectors 说明。
第二步(演练中):把场景搭得像一次真攻击
先选 ATT&CK 技术,再填步骤
练习场景设计的第一步不是拖组件,而是选技术。OpenAEV 的 inject 按 MITRE ATT&CK 框架组织,从 Initial Access(初始访问)一路到 Lateral Movement(横向移动)。先想清楚你要覆盖哪些阶段、验证哪些安全控制点,再为每个阶段挑一个对应技术:想验证钓鱼邮件拦截,就选 Phishing 类技术;想验证凭据泄露后的横向发现,就配 Credential Access + Discovery。每个步骤挂上明确的技术标签,演练结束后才能把"哪个环节被突破了"说清楚。
时间线:固定时刻发射,或跟着结果走
场景本质是一张时间线:每个 inject 在指定时刻发射。更进阶的做法是用连锁场景(Attack Chaining):下一步不靠定时器,而是靠上一步的输出来触发——初始访问成功了才尝试横向移动,扫出开放端口才继续下一步。固定时间线适合验证"按计划攻击"的防守流程;连锁场景更像真实对手,会根据现场情况分支。两种都能用,选哪种取决于你想考防守方的是"流程"还是"反应"。
团队与角色:让每个人只做他该做的事
场景里的人不是摆设。把参演者(Players)编进团队,给每个团队设定在这次演练中承担的职责;角色(Role)则决定谁能看到什么、能执行什么操作。权限给多了,场景里会出现能直接看到答案的人,演练就失真了;给少了,参演者卡住不动,你的数据会混进大量"没做"而不是"做错了"。原则:先按真实组织架构分团队,再按"最少够用"配角色能力,最后把两个模块都确认一遍再开跑。
第三步(演练后):盯哪些指标,复盘写什么
四个维度分和状态机
演练的总览页给出四个仪表:prevention(防御)、detection(检测)、vulnerability(脆弱性)、human response(人员响应),每根指针都是"该维度的 expectation 达成比例"。注意一个容易踩的坑:inject 全部发完不代表演练结束——每个 inject 的执行要跑完、它挂的 expectation 要么被达成(collector 或安全平台上报)要么在配置窗口内过期,状态才会从 Running 走到 Finished。所以演练"结束"前,先确认采集端和安全平台的回传正常,否则状态会一直悬在 Running。执行过程与状态流转见 Simulation 管理。
监控与复盘:从分数到行动项
演练进行中盯三件事:injector 执行状态(Deployed 页最后心跳是否还在更新)、各步骤完成进度、安全侧检测到的事件与响应时长。结束后做三件事:
- 用平台生成本次演练报告(见 Reporting),把四个维度的分数固定下来,别只留在口头结论里;
- 逐条对照 expectation:被防住的说明控制有效,被漏掉的写清是"没检测到"还是"检测到但没响应",这是两类完全不同的改进项;
- 把改进项落成清单,注明负责角色与复查时间,并在下一次排期演练中验证这些项是否真的收敛。
演练跑不动?injector 故障排查速查表
⚠️ 演练卡住时先查表,多数情况是配置问题而不是平台问题:
| 现象 | 根因 | 处理 |
|---|---|---|
| 场景步骤不执行,对应 injector 显示离线 | injector 未启用或未部署 | 确认启用参数为true并重启实例,到 Deployed 页看状态是否恢复"已启动" |
| injector 日志报认证或连接平台失败 | OPENAEV_URL或OPENAEV_TOKEN缺失/无效 | 补填两个变量;token 可用管理员 token 或管理员服务账号 |
| 演练开始后步骤整体卡死不动 | 两个 injector 实例共用同一个INJECTOR_ID | 给每个实例换独立的 UUIDv4,重启后确认各自都出现在列表中 |
| 连不上外部服务(扫描器、消息平台等) | 防火墙拦截、URL 配错,或容器未与平台同网段 | 逐段测试 URL 与端口;把 injector 容器挂到平台网络再测 |
| 参演用户看不到场景或无法操作 | 角色能力不足 | 在权限管理里给角色补上对应能力,再重新分发账号 |
| inject 已全部发出,但 Simulation 状态停在 Running | expectation 还在等待达成或等待过期 | 检查 collector 与安全平台是否正常回传,或等待配置窗口过期后自动转 Finished |
更多细节可查 故障排查文档。
开跑前的最终行动清单
✅ 全部勾完再点启动,能避开 90% 的返工:
- 所有 injector 在 Deployed 页为"已启动",最后心跳时间是最近的
- 每个 injector 实例持有独立的 UUIDv4 标识,没有复用
OPENAEV_URL、OPENAEV_TOKEN与各 injector 必填变量均已配置且验证通过- 场景每个步骤都挂了 ATT&CK 技术标签,时间线顺序与攻击计划一致
- 参演团队与角色权限按"最少够用"配好,每个 expectation 都设了合理的过期窗口
【免费下载链接】openaevOpen Adversarial Exposure Validation Platform项目地址: https://gitcode.com/GitHub_Trending/op/openaev
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考