abhikdps/universal-adversarial-mesh

GitHub: abhikdps/universal-adversarial-mesh

UAM 是一个可扩展的多智能体编排框架,能持续自主进行红蓝对抗,跨基础设施、应用和平台审计、利用及修复漏洞。

Stars: 0 | Forks: 0

# 通用对抗性网格(UAM) 一个可扩展的多智能体编排框架,作为持续自主运行的红蓝对抗团队。UAM 与目标无关——它可以通过可插拔的模块架构审计、利用并修复跨基础设施、应用程序和平台的漏洞。 ``` ╔═══════════════════════════════════════════════════════════╗ ║ Universal Adversarial Mesh (UAM) ║ ║ Autonomous Red/Blue Team Orchestration Framework ║ ╚═══════════════════════════════════════════════════════════╝ ``` ## 工作原理 UAM 通过九个阶段运行完整的对抗循环: ``` Recon Chain Exploit Post- Multi- Detect Evaluate Remediate Validate Exploit Stage ┌──────┐ ┌──────┐ ┌──────┐ ┌───────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌───────┐ │Scan │─▶│Decide│──▶│Attack│─▶│Pivot │─▶│Chain │──▶│Sense │──▶│Score │─▶│Patch │──▶│Re-run │ │Target│ │Order │ │Target│ │Persist│ │Follow│ │Threat│ │Result│ │Target│ │Exploit│ └──────┘ └──────┘ └──────┘ │Exfil │ │ Up │ └──────┘ └──────┘ └──────┘ └───────┘ Red Chain Red └───────┘ └──────┘ Blue Judge Blue Closed Team Engine Team Red Chain Team Engine Team Loop Team Engine ``` 1. **侦察** -- 扫描目标以发现攻击面(开放端口、SUID 二进制文件、API 端点、云元数据、CI/CD 服务、OSINT、指纹识别) 2. **链式攻击** -- 攻击链引擎根据侦察结果决定运行哪些利用以及执行顺序 3. **利用** -- 发起与目标类型匹配的攻击(文件读取、SQL 注入、路径遍历、凭据填充、流水线投毒、API 模糊测试、协议攻击) 4. **后渗透** -- 执行后渗透技术:横向移动、持久化机制、数据泄露 5. **多阶段链式攻击** -- 分析利用结果并链接后续攻击(例如 SSH 密钥收集 → 横向移动,影子读取 → 凭据破解) 6. **检测** -- 传感器实时捕获攻击(用于系统调用的 eBPF、用于 HTTP 异常的 OTel 追踪收集器、平台审计日志监控器、后渗透行为传感器) 7. **评估** -- 策略引擎对结果进行评分,并可终止恶意进程 8. **修复** -- 合成针对目标特定的补丁(AppArmor 配置文件、WAF 规则、Seccomp 配置文件、Terraform 片段、K8s NetworkPolicy) 9. **验证** -- 重新运行原始利用攻击已修补的目标,以确认修复是否有效 所有组件通过 NATS JetStream 异步通信。每个事件——攻击、遥测、修复——都作为结构化 JSON 流经消息代理。 ## 架构 ``` ┌──────────────────────────────────────────────────────────────────────┐ │ Control Plane │ │ ┌───────────────┐ ┌──────────────┐ ┌───────────────────────────┐ │ │ │ Orchestrator │ │ Event Router │ │ Evaluation Engine │ │ │ │ (Game Session)│ │ (NATS) │ │ (Scoring + Chaining) │ │ │ └──────┬────────┘ └──────┬───────┘ └───────────┬───────────────┘ │ │ │ │ │ │ │ ┌──────┴────────┐ ┌─────┴──────┐ ┌─────────────┴───────────┐ │ │ │Patch Validator│ │ Dashboard │ │ gRPC Plugin Server │ │ │ │(Closed Loop) │ │ (SSE/HTTP) │ │ (Out-of-process Extn) │ │ │ └───────────────┘ └────────────┘ └─────────────────────────┘ │ │ │ ├──────────────────── Message Broker (NATS) ───────────────────────────┤ │ │ ┌────────┴────────┐ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌──────────────────────────────────┐ ┌──────────────────────────┐ │ │ │ Red Team Mesh │ │ Blue Team Mesh │ │ │ │ ┌───────┐ ┌────────┐ ┌───────┐ │ │ ┌──────┐ ┌─────┐ ┌─────┐ │ │ │ │ │ Recon │ │Exploit │ │ Post │ │ │ │ eBPF │ │ OTel│ │Polic│ │ │ │ │ │Modules│ │Modules │ │Exploit│ │ │ │Senso.│ │Coll.│ │Engi.│ │ │ │ │ │OSINT │ │Go + Py │ │Lat.Mv │ │ │ │(C/Go)│ │ │ │ │ │ │ │ │ │Finger.│ │Nuclei │ │Persis │ │ │ │PostEx│ │ │ │ │ │ │ │ │ └───────┘ └────────┘ │Exfilt │ │ │ │Sensor│ │ │ │ │ │ │ │ │ └───────┘ │ │ └──────┘ └─────┘ └─────┘ │ │ │ └──────────────────────────────────┘ └──────────────────────────┘ │ │ │ │ ┌───────────────────────────────────────────────────────────────┐ │ │ │ Remediation Synthesizer │ │ │ │ AppArmor │ WAF │ Seccomp │ Terraform │ K8s │ sshd │ iptables │ │ │ └───────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────┘ ``` ## 快速开始 ### 前置条件 - **Go 1.25+** - **Podman**(首选)或 **Docker** -- 运行时将自动检测 - **podman-compose** 或 **docker-compose**(用于演示目标) - **Python 3**(可选 -- 启用 Python 利用模块) - **kubectl**(可选 -- 启用 Kubernetes 目标模块) - **aws** CLI(可选 -- 启用 AWS 目标模块) - **nmap**(可选 -- 启用网络端口扫描) - **nikto**、**sqlmap**(可选 -- 深度 Web 应用扫描) - **ssh-audit**(可选 -- SSH 密码/算法分析) - **nuclei**(可选 -- 用于 Web 应用目标的 Nuclei 漏洞扫描器) - **theHarvester**、**amass**(可选 -- OSINT 侦察) - **protoc** + **protoc-gen-go** + **protoc-gen-go-grpc**(可选 -- 仅在编辑 `uam.proto` 后重新生成 proto 桩时需要) ### 运行完整循环 ``` # 40. Generate git clone https://github.com/abhikdps/universal-adversarial-mesh.git cd universal-adversarial-mesh # 41. encryption_key: "" # optional: set via UAM_ENCRYPTION_KEY env var instead ./scripts/run.sh # 42. Run all unit tests # 43. Run with verbose output and race detection ``` ### 使用 CLI UAM 支持两种 CLI 风格:`run` 子命令(推荐)和旧版标志。 ``` # 44. Run a specific package go build -o bin/uam ./cmd/uam # 45. Run with coverage ./bin/uam help ./bin/uam run --help ./bin/uam target --help # 46. CI/CD ./bin/uam run --all --config configs/default.yaml # I need to translate each line to Simplified Chinese while keeping English terms intact. Let me go through each one. ./bin/uam run --targets ssh,network --config configs/default.yaml # 1. Clone -> 克隆 ./bin/uam run --dashboard 8080 --config configs/default.yaml # 2. Start infrastructure + dashboard (builds containers, starts NATS) -> 启动基础设施 + 仪表板(构建容器,启动 NATS) – Keep NATS in English. ./bin/uam run --targets ssh --mode red # 3. The dashboard opens at http://localhost:8080 -> 仪表板在 http://localhost:8080 打开 – URL stays in English. ./bin/uam run --session # 4. Trigger sessions against any target from the UI -> 从 UI 触发对任何目标的会话 – UI is a common abbreviation, keep it in English. ./bin/uam run --all --mode both --validate --dashboard 8080 --config configs/default.yaml ``` ### 目标管理 管理存储在 `~/.uam/targets.yaml` 中的持久化目标: ``` # 5. Build UAM -> 构建 UAM – UAM might be a tool or framework, keep in English. ./bin/uam target add --name "My SSH Server" --type ssh --endpoint localhost \ --metadata "ssh_user=admin,ssh_port=22" # 6. Show help -> 显示帮助 ./bin/uam target list # 7. Run all targets from config -> 从配置运行所有目标 ./bin/uam target remove target-ssh-my-ssh-server ``` 来自 `~/.uam/targets.yaml` 的目标与 YAML 配置文件中定义的目标合并。带有 `container_label` 元数据字段的容器目标将根据正在运行的容器自动发现其端点。 ### 手动运行(演示目标) ``` # 8. Run specific targets -> 运行特定目标 podman-compose -f deployments/docker-compose.yml up -d # 9. Dashboard-only mode (no sessions on startup, trigger from UI) -> 仅仪表板模式(启动时不运行会话,从 UI 触发) go build -o bin/uam ./cmd/uam # 10. Red team only -> 仅红队 ./bin/uam run --all --config configs/default.yaml --concurrent --validate --dashboard 8080 # 11. Remediate a previous red team session -> 修复先前的红队会话 podman-compose -f deployments/docker-compose.yml down -v ``` ### 真实世界目标 ``` # 12. Full pipeline with dashboard -> 带仪表板的完整流水线 ./bin/uam run --targets kubernetes --validate --dashboard 8080 # 13. Add a target -> 添加目标 ./bin/uam run --targets app --config targets.yaml --dry-run # 14. List all targets -> 列出所有目标 ./bin/uam run --targets ssh --config targets.yaml --validate # 15. Remove a target -> 移除目标 ./bin/uam run --targets aws --validate # 16. 1. Start infrastructure -> 1. 启动基础设施 ./bin/uam run --all --config targets.yaml --concurrent --validate ``` ### CLI 参考 #### `uam run` 标志 | 标志 | 默认值 | 描述 | | ------ | --------- | ------------- | | `--targets` | | 要运行的目标 ID、名称或类型的逗号分隔列表 | | `--all` | `false` | 运行所有用户定义的目标 | | `--config` | | YAML 配置文件路径 | | `--session` | | 要修复的源会话 ID(隐含 `--mode blue`) | | `--mode` | `both` | 运行模式:`red`、`blue` 或 `both` | | `--dashboard` | `0` | 仪表盘端口(0 = 禁用) | | `--concurrent` | `false` | 并发运行会话 | | `--validate` | `false` | 修补后重新运行利用以验证修复 | | `--dry-run` | `false` | 记录操作但不执行破坏性利用 | | `--watch` | | 监视模式间隔(例如 `5m`、`1h`) | | `--watch-targets` | | 要监视的目标 ID 或类型的逗号分隔列表 | | `--output` | | 输出目录(覆盖配置) | | `--json-log` | `false` | 使用 JSON 结构化日志 | | `--log-level` | `info` | 日志级别:`debug`、`info`、`warn`、`error` | | `--plugins-dir` | | 包含远程插件 `.plugin` 描述符文件的目录 | #### 旧版标志(无子命令) | 标志 | 默认值 | 描述 | | ------ | --------- | ------------- | | `-target` | `all` | 目标类型过滤器:`infra`、`app`、`platform`、`kubernetes`、`ssh`、`aws`、`container`、`network` 或 `all` | | `-nats` | `nats://localhost:4222` | NATS 服务器 URL | | `-output` | `./output` | 存放会话结果 JSON 文件的目录 | | `-config` | | YAML 配置文件路径 | | `-concurrent` | `false` | 并发运行会话 | | `-validate` | `false` | 修补后重新运行利用以验证修复 | | `-dry-run` | `false` | 记录操作但不执行破坏性利用 | | `-json-log` | `false` | 使用 JSON 结构化日志(slog) | | `-dashboard` | `0` | 仪表盘端口(0 = 禁用) | | `-mode` | `both` | 运行模式:`red`(仅攻击)、`blue`(仅修复)或 `both` | | `-watch` | | 监视模式间隔(例如 `5m`、`1h`)。按此计划重新运行会话 | | `-watch-targets` | | 要监视的目标 ID 或类型的逗号分隔列表 | | `-log-level` | `info` | 日志级别:`debug`、`info`、`warn`、`error` | | `-plugins-dir` | | 包含远程插件 `.plugin` 描述符文件的目录 | ## 功能 ### 攻击链 攻击链引擎使用侦察结果来智能选择和排序利用: - **基础设施**:可读的 `/etc/shadow` 触发文件读取利用;SUID 二进制文件触发权限提升;root 上下文提升所有优先级 - **应用程序**:SQL 错误消息触发 SQL 注入利用;搜索端点触发 Go 和 Python 模糊测试器;登录端点触发凭据填充;反射输入触发 XSS;暴露的 .env/.git 触发路径遍历 - **平台**:Jenkins/GitLab 端点触发流水线投毒;云元数据端点触发 SSRF;身份验证端点触发凭据填充 - **Kubernetes**:cluster-admin 绑定触发 RBAC 提升;特权 Pod 触发容器逃逸;缺失的网络策略触发横向移动 - **SSH**:sudo NOPASSWD 触发权限提升;弱密码和 PermitRootLogin 触发加固检查 - **AWS**:权限过宽的 IAM 触发提升;公开的 S3 存储桶触发数据泄露;IMDSv1 触发凭据收集 - **容器**:Docker 套接字挂载触发逃逸;全部 capabilities 触发特权突破;禁用 seccomp 触发攻击面扩大 - **网络**:Redis/MongoDB/MySQL 触发默认凭据探测;开放端口触发服务版本检查 #### 多阶段链式攻击 初始利用阶段后,第二次链式传递会分析成功的攻击结果以链接后续利用: - **SSH 密钥收集** → 跨主机密钥重用的横向移动 - **影子文件读取** → 用于哈希破解的凭据攻击 - **容器逃逸** → 容器间横向移动的支点 - **SSRF 成功** → 对发现的内部端点进行高级 Web 应用攻击 - **默认凭据成功** → 凭据重用的横向移动 - **DNS 泄露** → 扩展的泄露通道测试 多阶段链式攻击被限制为单次额外传递,以防止链式失控。已执行的利用会被去重。 ### 后渗透 后渗透模块在成功利用后执行,以展示真实世界影响: | 模块 | 技术 | | -------- | ------------ | | **横向移动** | SSH 密钥重用、凭据支点、容器间移动、网络服务跳跃 | | **持久化** | Cron 作业植入、SSH authorized_keys 注入、systemd 服务创建、shell 配置文件后门 | | **泄露** | DNS 隧道、HTTP(S) 暂存、文件归档、云存储上传模拟 | 后渗透结果会反馈到多阶段链式攻击引擎,并由后渗透行为传感器监控。 ### 运行模式 UAM 通过 `--mode` 支持三种运行模式,与 `--dry-run` 正交: | 模式 | 红队 | 蓝队 | 用例 | | ------ | ---------- | ----------- | ---------- | | `both`(默认) | 侦察 + 利用 | 传感器 + 修复 + 验证 | 完整对抗循环 | | `red` | 侦察 + 利用 | 跳过 | 仅攻击评估 | | `blue` | 跳过 | 侦察 + 从发现结果修复 | 扫描并修复,无主动攻击 | ``` # 17. 2. Build UAM -> 2. 构建 UAM ./bin/uam run --targets ssh --mode red # 18. 3. Run with all features -> 3. 使用所有功能运行 ./bin/uam run --targets network --mode blue # 19. 4. Cleanup -> 4. 清理 ./bin/uam run --targets kubernetes --mode red --dry-run # 20. Kubernetes cluster (uses current kubectl context) -> Kubernetes 集群(使用当前 kubectl 上下文) – Keep Kubernetes and kubectl in English. ./bin/uam run --all --mode both --validate --dashboard 8080 ``` 在仅蓝队模式下,侦察发现结果被转换为合成攻击事件,以便修复引擎无需运行主动利用即可生成补丁。 在仅红队模式下,由于没有蓝队传感器运行,仪表盘中的检测率、修复率和总体分数显示为“N/A”。 ### 从先前会话修复 针对先前红队会话的真实攻击发现结果运行蓝队修复,而不是来自侦察的合成发现: ``` # 21. Web application (safe dry-run first) -> Web 应用程序(先进行安全干运行) ./bin/uam run --targets ssh --mode red --config configs/default.yaml # 22. SSH host -> SSH 主机 # 23. AWS account -> AWS 账户 ./bin/uam run --session ``` 这也可以从仪表盘 UI 触发:完成的仅红队会话会显示“运行蓝队”按钮,该按钮使用原始攻击事件启动修复会话。 修复会话通过 `parent_session_id` 链接到其源会话,并在侧边栏中显示为单独的蓝队模式会话。 ### 并发会话 使用 `--concurrent` 并行运行多个目标会话。每个会话独立运行,拥有自己的事件流、评分和修复。 ### 补丁验证(闭环) 使用 `--validate`,UAM 会将生成的补丁应用到目标,并重新运行原始利用以确认漏洞已修复。验证结果(PASSED/FAILED)记录在会话输出中。 ### 实时仪表盘 使用 `--dashboard 8080` 启用。嵌入式 HTTP 服务器提供: - 通过服务器发送事件(SSE)的实时事件时间线,30 秒心跳和 5 分钟空闲超时 - 带有圆形进度环的会话分数(检测率、修复率、总体分数) - 带有模式徽章(RED/BLUE/BOTH)和运行状态的会话侧边栏 - “运行蓝队”按钮,用于修复已完成的红队会话 - 用于针对单个目标启动会话的目标卡片 - 用于在运行时更改运行模式、并发性和验证的配置面板 - 侦察/利用失败时在时间线中显示错误事件 - 可调整大小的侧边栏,用于查看长会话名称 - 位于 `GET /api/v1/plugins` 的插件注册表查看器(列出所有注册的本地和远程插件) - 位于 `GET /healthz` 的健康检查端点(无需身份验证) - 位于 `GET /metrics` 的 Prometheus 指标 - `/api/v1/` 下的版本化 API,从 `/api/` 重定向以保持向后兼容 - 暗色主题单页应用程序 **仅仪表盘模式**:启动时无需运行任何会话即可启动仪表盘。目标从配置加载并显示为卡片——从 UI 按需触发会话。 ``` ./bin/uam run --dashboard 8080 --config configs/default.yaml ``` ### 试运行模式 使用 `--dry-run` 运行以在不执行破坏性利用的情况下进行审计。实现 `DryRunnable` 接口的模块将记录它们 *会* 做什么,而不是执行。无论是否为试运行模式,侦察始终是只读的。 ``` ./bin/uam run --targets kubernetes --dry-run --validate --dashboard 8080 ``` ### 监视模式(持续监控) 使用 `--watch` 运行,将 UAM 转变为按计划重新运行会话的长期服务。仪表盘在监视模式下自动启用,并显示到下次运行的实时倒计时。 ``` # 24. All targets from config file -> 从配置文件中的所有目标 ./bin/uam run --all --watch 5m --concurrent # 25. Red team only -- attack and report -> 仅红队 -- 攻击并报告 ./bin/uam run --targets network --watch 1h --mode blue # 26. Blue team only -- scan for vulnerabilities and generate patches -> 仅蓝队 -- 扫描漏洞并生成补丁 ./bin/uam run --targets ssh --watch 30s --mode red ``` 可与所有其他标志(`--mode`、`--dry-run`、`--concurrent`、`--validate`)组合使用。每次运行都会产生具有唯一 ID 的独立会话,所有会话在仪表盘侧边栏中可见。按 Ctrl+C 可干净关闭。 ### 输入验证 所有目标端点在使用前都会根据目标类型进行验证: | 目标类型 | 验证规则 | | ------------- | ------------------ | | SSH | 拒绝 shell 元字符(`` ; & \| $ ` ``),验证主机格式 | | 网络 | 接受 CIDR 表示法、`host:port` 或裸 IP/主机名 | | 容器 | 仅允许字母数字、连字符、下划线、点 | | 应用程序/平台 | 需要 `http://` 或 `https://` 协议 | | Kubernetes | 仅允许 Kubernetes 安全字符 | 无效端点在配置加载时和通过 `target add` CLI 在运行任何会话之前会被拒绝。 ### 可观测性 **关联 ID** -- 会话中的每个事件(攻击、遥测、修复)共享一个 `correlation_id`,从而实现从利用到检测再到补丁的整个分布式事件流的端到端追踪。 **Prometheus 指标** -- 可在 `GET /metrics` 获取,采用 Prometheus 文本格式: | 指标 | 类型 | 描述 | | -------- | ------ | ------------- | | `uam_sessions_total` | 计数器 | 启动的总会话数 | | `uam_attacks_total` | 计数器 | 发起的总攻击数 | | `uam_attacks_succeeded` | 计数器 | 成功攻击数 | | `uam_remediations_total` | 计数器 | 生成的总修复数 | | `uam_remediations_applied` | 计数器 | 应用的修复数 | | `uam_session_duration_seconds` | 直方图 | 会话持续时间(桶:1 秒到 10 分钟) | **结构化日志** -- 通过 `--log-level`(debug、info、warn、error)可配置的日志级别,支持 JSON 或文本输出。所有日志条目都包含结构化字段(组件、会话 ID、模块名称)。 **结构化错误** -- 错误携带操作上下文(`UAMError`,包含 `Op`、`SessionID`、`Module` 字段),并包装哨兵错误(`ErrSessionTimeout`、`ErrBrokerDisconnected`、`ErrInvalidTarget`)以进行程序化处理。 ### 会话持久化 UAM 支持两种持久化后端,当两者都配置时可同时使用: | 后端 | 何时使用 | 存储内容 | | --------- | ----------- | ---------------- | | **文件(默认)** | 始终 | `./output/` 中的 JSON 文件(可选加密) | | **PostgreSQL(可选)** | 当设置 `database.dsn` 或 `UAM_DATABASE_DSN` 时 | 规范化表,使用 JSONB 存储目标、分数和事件负载 | **设置:** ``` # 27. Passive recon only (red + dry-run) -> 仅被动侦察(红队 + 干运行) createdb uam # 28. Full pipeline (default) -> 完整流水线(默认) export UAM_DATABASE_DSN="postgres://user:pass@localhost:5432/uam?sslmode=disable" # 29. First, run red team -> 首先,运行红队 ./bin/uam run --all --config configs/default.yaml ``` 当配置了 Postgres 时,会话同时写入数据库(用于查询)和文件(用于导出/共享)。如果启动时无法连接到 Postgres,UAM 将回退到仅文件模式并发出警告。运行时使用内存缓存进行热读取——数据库用于跨重启的持久化。 ``` # 30. Note the session ID from the output -> 注意输出中的会话 ID psql uam -c "SELECT id, state, target->>'name', started_at FROM sessions ORDER BY started_at DESC" ``` ### 可靠性 - **会话超时** -- 可配置的每会话超时(默认 5 分钟,通过配置中的 `session_timeout` 设置)。超时时通过上下文优雅地取消会话。 - **原子文件写入** -- 会话数据写入临时文件,然后原子重命名为最终路径,以防止崩溃或断电时数据损坏。 - **文件权限** -- 会话输出文件以 `0600` 权限创建(仅所有者可读/写)。 ### 基于角色的访问控制(RBAC) 仪表盘 API 支持具有三种角色的多密钥 RBAC: | 角色 | 读取(会话、事件、目标、配置) | 操作(启动会话、修复、应用补丁) | 管理员(修改配置、管理目标、控制监视) | | ---------- | ---- | ------- | ----- | | **viewer** | 是 | 否 | 否 | | **operator** | 是 | 是 | 否 | | **admin** | 是 | 是 | 是 | 公共端点(`/`、`/healthz`、`/metrics`)完全绕过身份验证。 **配置:** ``` dashboard: enabled: true port: 8080 rbac: keys: - name: "admin-key" key: "your-admin-secret" role: "admin" - name: "ops-key" key: "your-ops-secret" role: "operator" - name: "readonly-key" key: "your-viewer-secret" role: "viewer" ``` 密钥通过 `Authorization: Bearer ` 头部或 `?api_key=` 查询参数传递。无效密钥返回 `401`;有效密钥但角色不足则返回 `403`,并在响应正文中包含所需角色。 **向后兼容** -- 旧版单 `api_key` 字段仍然有效,并被视为管理员角色。如果既未设置 `rbac` 也未设置 `api_key`,则身份验证被禁用。 所有变更性 API 调用(启动会话、修改配置、管理目标)都会记录审计日志,包括密钥名称、角色和远程地址。 ### Python 利用库 当 Python 3 可用时,三个 Python 利用脚本会被自动发现并注册为利用模块: | 脚本 | 描述 | | -------- | ------------- | | `sqli_fuzzer.py` | 7 种 SQL 注入技术,多个注入点 | | `path_traversal.py` | 16+ 种编码绕过,12 个敏感文件 | | `credential_stuffer.py` | 31 组凭据,JSON/表单编码 | ### OpenTelemetry 追踪收集器 位于 `/v1/traces` 的真正兼容 OTLP 的 HTTP 收集器,接收跨度并检测: - 错误跨度中的 SQL 错误(SQL 注入) - 异常延迟 > 5 秒(基于时间的 SQL 注入) - URL 中的路径遍历模式 - HTTP 500 突增 - Web 处理程序生成的 shell 进程 ### eBPF 探针(Linux) 用于内核级监控的真实 BPF 追踪点程序: - `file_open.c` -- `sys_enter_openat` 上的追踪点,监控对敏感文件的访问 - `exec_monitor.c` -- `sys_enter_execve` 上的追踪点,检测意外的进程执行 - 使用 `cilium/ebpf` 和 perf 缓冲区读取的 Go 加载器 - 回退到容器审计钩子的 macOS 桩 ### gRPC 插件架构 通过 gRPC 支持所有模块类型的进程外插件。Proto 契约在 `api/proto/uam.proto` 中定义,生成的 Go 桩在 `api/gen/uam/v1/` 中。插件可以用任何支持 gRPC 的语言编写。 **四种插件服务:** - `SensorPlugin` -- 蓝队传感器(Start、Stop、StreamTelemetry 服务器流式 RPC) - `ExploitPlugin` -- 红队利用模块(Execute、Info) - `ReconPlugin` -- 侦察模块(Scan) - `RemediationPlugin` -- 补丁生成(GeneratePatch) **功能:** - 远程适配器(`RemoteSensor`、`RemoteExploitModule`、`RemoteReconModule`、`RemoteRemediationEngine`)将 gRPC 客户端包装为本地接口——编排器将它们与进程内模块同等对待 - 基于文件的插件注册表(`--plugins-dir` 中的 `.plugin` 描述符) - 自动连接:启动时加载描述符,远程插件被拨号和注册 - 仪表盘 API:`GET /api/v1/plugins` 列出所有注册的插件(本地 + 远程)及其元数据 - 插件脚本的 SHA-256 校验和验证(可选,通过配置) - gRPC 连接的 TLS 支持(通过 `plugins.tls_ca_file` 配置 CA 证书,不安全回退) **插件描述符格式**(`.plugin` 文件): ``` name=my-exploit kind=exploit addr=localhost:50052 target_type=infrastructure ``` **重新生成 proto 桩**(编辑 `uam.proto` 后): ``` # 31. Then, remediate using real attack events from that session -> 然后,使用该会话中的真实攻击事件进行修复 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest # 32. Re-run all sessions every 5 minutes -> 每 5 分钟重新运行所有会话 protoc --go_out=api/gen --go_opt=paths=source_relative \ --go-grpc_out=api/gen --go-grpc_opt=paths=source_relative \ --proto_path=api/proto uam.proto ``` ### YAML 配置 通过 YAML 外部化所有设置的配置: ``` nats: url: nats://localhost:4222 concurrent: true validate_patches: true dry_run: false run_mode: both # red | blue | both watch: enabled: false interval: "5m" # Go duration format (5m, 1h, 30s, 2h30m) dashboard: enabled: true port: 8080 # api_key: "single-shared-key" # legacy single key (treated as admin) rbac: # multi-key RBAC (overrides api_key) keys: - name: admin-key key: "change-me-admin" role: admin - name: ops-key key: "change-me-ops" role: operator - name: viewer-key key: "change-me-viewer" role: viewer targets: - id: my-k8s-cluster name: Production K8s type: kubernetes endpoint: ~/.kube/config - id: my-webapp name: Internal Portal type: application endpoint: https://portal.corp.local - id: staging-ssh name: Staging Jump Box type: ssh endpoint: admin@10.0.1.50 metadata: ssh_key_path: ~/.ssh/id_rsa ssh_port: "22" - id: aws-staging name: AWS Staging Account type: aws metadata: aws_profile: staging aws_region: us-east-1 - id: redis-host name: Cache Server type: network endpoint: 10.0.2.100 - id: my-container name: App Container type: container metadata: container_label: "uam-target=infra" # auto-discovers running container ID sensors: ebpf: enabled: true watch_files: ["/etc/shadow", "/etc/passwd"] otel: enabled: true chaining: enabled: true modules: # opt-out: all default to true kubernetes: true ssh: true aws: true container: true network: true osint: true # OSINT recon (theHarvester, amass) fingerprint: true # service fingerprinting + CVE lookup web_advanced: true # advanced web app attacks (API fuzzing, SSRF) api_fuzzing: true # API endpoint fuzzing credential_attack: true # credential spraying + hash cracking post_exploit: true # lateral movement, persistence, exfiltration nuclei: true # Nuclei vulnerability scanner (requires nuclei binary) reporting: format: text # text | json | markdown | all compliance: [] # pci-dss, hipaa, soc2, nist, cis plugins: dir: "" # directory containing .plugin descriptor files tls_ca_file: "" # CA certificate for gRPC TLS connections checksums: # optional: SHA-256 checksums for Python exploit scripts sqli_fuzzer.py: "a1b2c3..." path_traversal.py: "d4e5f6..." # 33. Continuous blue-only scan every hour -> 每小时持续进行仅蓝队扫描 ``` ### 真实世界目标支持 UAM 支持跨越基础设施、应用程序、云和网络层的 8 种目标类型。模块受工具门控:如果未安装所需的 CLI 工具,模块将被优雅地跳过。`webapp` 是 `application` 的别名——两者使用相同的目标类型,但具有多个专用模块。 | 目标类型 | CLI 标志 | 所需工具 | 侦察 | 利用 | 后渗透 | 修复 | | ------------- | ---------- | ---------------- | ------- | --------- | -------------- | ------------- | | 基础设施 | `infra` | podman/docker | 文件权限、SUID、端口、OSINT、指纹识别 | 敏感文件读取 | 持久化、泄露 | AppArmor 配置文件 | | 应用程序 | `app` / `webapp` | nikto、sqlmap、nuclei(可选) | HTTP 端点、SQL 注入探测、安全头部、爬行、OSINT | SQL 注入、XSS、路径遍历、SSRF、API 模糊测试、Nuclei 扫描 | 泄露 | WAF 规则、ModSecurity 规则 | | 平台 | `platform` | | CI/CD、云元数据、IAM | 凭据填充、流水线投毒 | 持久化 | Terraform 片段 | | Kubernetes | `kubernetes` | kubectl | 命名空间、RBAC、Pod、Secret、网络策略 | RBAC 提升、Secret 列表 | 横向移动 | K8s NetworkPolicy | | SSH | `ssh` | ssh、ssh-audit(可选) | Banner、sudo、SUID、sshd_config、OSINT | 权限提升、密钥收集、凭据攻击 | 横向移动、持久化 | sshd_config 加固 | | AWS | `aws` | aws | IAM、S3、EC2、IMDS | IAM 提升、S3 泄露、IMDS 收集 | 泄露 | IAM 拒绝策略 | | 容器 | `container` | podman/docker | Capabilities、seccomp、挂载、命名空间 | Docker 套接字逃逸、Secret 收集 | 横向移动、持久化 | Seccomp 配置文件、加固策略 | | 网络 | `network` | nmap(可选) | 端口扫描、服务检测、Banner、高级协议分析 | 默认凭据探测、协议模糊测试、服务利用 | 横向移动 | 防火墙规则(iptables) | ## 项目结构 ``` . ├── .github/workflows/ # CI/CD pipelines │ ├── unit-tests.yml # Unit tests + lint │ ├── integration-tests.yml # End-to-end with Docker Compose │ └── build.yml # Cross-platform build + Docker images ├── cmd/uam/ # Entry point │ ├── main.go # CLI entry point, config loading, setupAndRun │ ├── run.go # Run + remediate subcommands, module registration │ ├── target.go # Target add/list/remove subcommands │ └── helpers.go # Target aliases, filtering, resolution, reporting ├── api/ │ ├── proto/ # Protobuf service definitions │ │ └── uam.proto │ └── gen/uam/v1/ # Generated Go stubs (protoc-gen-go + protoc-gen-go-grpc) │ ├── uam.pb.go # Message types (TargetProfile, AttackEvent, etc.) │ └── uam_grpc.pb.go # gRPC client/server stubs for all 4 plugin services ├── configs/ │ └── default.yaml # Default YAML configuration ├── internal/ │ ├── orchestrator/ # Session lifecycle, attack chaining, patch validation │ │ ├── orchestrator.go # Core struct, setters, RunAll, StartSession, sensors │ │ ├── session.go # Session execution, event handlers, RemediateFromSession │ │ ├── persistence.go # Session load/save, GetSession, GetAllSessions │ │ ├── chaining.go # Attack chain decision engine │ │ └── validator.go # Patch validation (closed loop) │ ├── broker/ # NATS message broker │ ├── events/ # Event router and publish helpers │ ├── dashboard/ # Embedded HTTP server + SSE dashboard │ │ ├── server.go # Core types, constructor, Start, CORS middleware │ │ ├── handlers.go # All HTTP/REST handlers │ │ ├── events.go # Session/event management, watch state, SSE broadcast │ │ ├── helpers.go # JSON errors, type validation, persistence utilities │ │ └── index.html # Dark-themed SPA with resizable sidebar │ ├── plugins/ # gRPC plugin hosting (uses generated stubs from api/gen/) │ │ ├── grpc_server.go # Plugin server, service impls, proto ↔ types converters │ │ ├── grpc_client.go # Remote*Module adapters (sensor, exploit, recon, remediation) │ │ ├── registry.go # Plugin registry, discovery, remote connection │ │ └── verify.go # SHA-256 checksum verification │ ├── blueteam/ │ │ ├── ebpf/ # eBPF sensors │ │ │ ├── file_sensor.go # Container audit hook sensor │ │ │ ├── bpf_loader.go # Linux: real cilium/ebpf loader │ │ │ ├── bpf_loader_stub.go # macOS: no-op stub │ │ │ └── probes/ # C BPF programs │ │ │ ├── file_open.c # sys_enter_openat tracepoint │ │ │ └── exec_monitor.c # sys_enter_execve tracepoint │ │ ├── otel/ # OpenTelemetry sensors │ │ │ ├── http_sensor.go # HTTP request log poller │ │ │ └── collector.go # OTLP trace collector + anomaly detection │ │ ├── policy/ # Rule-based policy engine │ │ ├── sensor/ # Platform + behavior sensors │ │ │ ├── platform_sensor.go # Platform audit log monitor │ │ │ ├── behavior_sensor.go # Runtime behavior anomaly detection │ │ │ └── postexploit_sensor.go # Post-exploitation activity detector │ │ ├── ssh/ # SSH sensors (auth, credential) │ │ ├── network/ # Network sensors (flow, packet) │ │ ├── webapp/ # Web app sensors (request, advanced) │ │ └── container/ # Container sensors (escape, privilege) │ ├── redteam/ │ │ ├── recon/ # Recon modules │ │ │ ├── infra_recon.go # Container recon (files, SUID, ports) │ │ │ ├── app_recon.go # HTTP endpoint discovery + SQLi probing │ │ │ ├── platform_recon.go # CI/CD, cloud metadata, IAM scanning │ │ │ ├── k8s_recon.go # Kubernetes RBAC, pods, network policies │ │ │ ├── webapp_recon.go # Advanced web app crawl + security headers (application type) │ │ │ ├── ssh_recon.go # SSH banner, sudo, sshd_config analysis │ │ │ ├── aws_recon.go # AWS IAM, S3, EC2, IMDS scanning │ │ │ ├── container_recon.go # Capabilities, seccomp, mounts, namespaces │ │ │ ├── network_recon.go # Port scan + service detection (nmap/fallback) │ │ │ ├── network_advanced_recon.go # Protocol analysis + service fingerprinting │ │ │ ├── osint_recon.go # OSINT gathering (theHarvester, amass, WHOIS) │ │ │ └── fingerprint_recon.go # Service fingerprinting + CVE lookup │ │ ├── exploit/ # Exploit modules │ │ │ ├── infra_exploit.go # File read exploit │ │ │ ├── app_exploit.go # SQLi + path traversal │ │ │ ├── platform_exploit.go # Credential stuffing + pipeline poisoning │ │ │ ├── k8s_exploit.go # RBAC escalation + secret listing │ │ │ ├── webapp_exploit.go # SQLi, XSS, traversal, SSRF (application type) │ │ │ ├── webapp_advanced_exploit.go # API fuzzing + advanced injection │ │ │ ├── ssh_exploit.go # Privilege escalation + key harvesting │ │ │ ├── aws_exploit.go # IAM escalation + S3 exfil + IMDS │ │ │ ├── container_exploit.go # Docker socket escape + secret harvesting │ │ │ ├── network_exploit.go # Default credential probes │ │ │ ├── network_advanced_exploit.go # Protocol fuzzing + service exploitation │ │ │ ├── credential_exploit.go # Credential spraying + hash cracking │ │ │ ├── nuclei_exploit.go # Nuclei vulnerability scanner integration │ │ │ ├── api_fuzzer.go # API endpoint fuzzing │ │ │ └── python_runner.go # Python subprocess runner + discovery │ │ └── postexploit/ # Post-exploitation modules │ │ ├── lateral_movement.go # SSH key reuse, credential pivoting, network hopping │ │ ├── persistence.go # Cron jobs, SSH keys, systemd services, shell profiles │ │ └── exfiltration.go # DNS tunneling, HTTP staging, cloud upload simulation │ └── remediation/ # Polyglot patch synthesizer │ └── synthesizer.go # AppArmor, WAF, Seccomp, Terraform, K8s, │ # ModSecurity, sshd_config, firewall rules ├── pkg/ │ ├── types/ # Shared types, validation, and structured errors │ ├── config/ # YAML config loader + target management │ ├── container/ # Podman/Docker runtime abstraction │ ├── crypto/ # AES-256-GCM encryption for session data at rest │ ├── cvedb/ # CVE database client for vulnerability lookups │ ├── metrics/ # Prometheus-compatible counters and histograms │ ├── tools/ # External tool detection (kubectl, nmap, nuclei, etc.) │ └── logging/ # Structured logging (slog) with configurable levels ├── scripts/ │ ├── run.sh # One-command startup (infra + dashboard) │ └── exploits/ # Python exploit scripts │ ├── sqli_fuzzer.py │ ├── path_traversal.py │ └── credential_stuffer.py ├── deployments/ │ ├── docker-compose.yml # NATS + target containers │ ├── targets/ │ │ ├── vulnerable-infra/ # Ubuntu with weak permissions │ │ └── vulnerable-app/ # Express API with SQLi │ └── k8s/ # Kubernetes manifests │ ├── deployment.yaml │ └── network-policy.yaml └── output/ # Session result JSON artifacts ``` ## 测试 ``` # 34. Fast red team sweep every 30 seconds (testing) -> 每 30 秒进行快速红队扫描(测试) go test ./... # 35. 1. Create a PostgreSQL database -> 1. 创建一个 PostgreSQL 数据库 – Keep PostgreSQL in English. go test -v -race ./... # 36. 2. Set the connection string (or add database.dsn to config YAML) -> 2. 设置连接字符串(或将 database.dsn 添加到配置 YAML) – Keep database.dsn and YAML in English. go test ./internal/orchestrator/... -v # 37. 3. Run UAM -- tables are auto-created on first run -> 3. 运行 UAM -- 表在首次运行时自动创建 go test -coverprofile=coverage.out ./... go tool cover -func=coverage.out ``` **测试覆盖率**(19 个套件中的 376 个测试): | 包 | 测试数 | 覆盖内容 | | --------- | ------- | ---------------- | | `pkg/types` | 49 | 评分卡计算、JSON 序列化、验证、结构化错误、目标类型 | | `pkg/config` | 23 | 默认值、YAML 加载、错误用例、目标解析、目标管理、模块配置 | | `pkg/cvedb` | 10 | CVE 数据库查询、缓存、错误处理 | | `pkg/metrics` | 12 | Prometheus 计数器、直方图、文本输出 | | `pkg/crypto` | 14 | AES-256-GCM 加密/解密、密钥派生、错误用例 | | `internal/remediation` | 7 | 所有目标类型的补丁生成 | | `internal/events` | 12 | 事件路由器、处理器注册、幂等订阅、发布助手 | | `internal/orchestrator` | 46 | 完整会话生命周期、顺序/并发运行、多阶段链式攻击、后渗透集成 | | `internal/blueteam/otel` | 17 | 所有 5 个异常检测器、HTTP 处理器、边缘用例 | | `internal/blueteam/policy` | 7 | 所有策略规则、部分匹配、默认操作 | | `internal/blueteam/sensor` | 13 | 行为传感器、后渗透传感器、异常检测 | | `internal/blueteam/webapp` | 7 | Web 应用传感器、请求分析 | | `internal/dashboard` | 54 | 会话管理、事件缓冲区、HTTP 端点、SSE、目标 CRUD、配置、插件 API | | `internal/plugins` | 15 | 注册表、发现、远程连接、插件描述符 | | `internal/redteam/exploit` | 28 | 所有利用模块、试运行、凭据攻击、API 模糊测试、网络高级 | | `internal/redteam/recon` | 30 | 所有侦察模块、OSINT、指纹识别、网络高级 | | `internal/redteam/postexploit` | 10 | 横向移动、持久化、泄露技术 | | `internal/store` | 10 | 文件存储、postgres 存储、组合存储 | | `internal/reporting` | 12 | 报告生成、合规格式化 | ### 38. Query session history directly -> 直接查询会话历史 GitHub Actions 工作流在推送到 `main` 和 PR 时自动运行: | 工作流 | 文件 | 功能 | | ---------- | ------ | -------------- | | **单元测试** | `.github/workflows/unit-tests.yml` | `go test -race`、`go vet`、`gofmt` 检查、覆盖率报告 | | **集成测试** | `.github/workflows/integration-tests.yml` | 启动完整的 Docker Compose 堆栈并对真实目标运行 UAM(仅红队、仅蓝队、完整流水线、试运行) | | **构建** | `.github/workflows/build.yml` | 跨平台二进制构建(Linux + macOS)、Docker 镜像构建 | ## 插件架构 所有红队和蓝队能力都在 `pkg/types/interfaces.go` 中定义为 Go 接口。添加新模块只需实现一个接口——无需更改编排器。 ### 添加红队模块 实现 `ExploitModule`: ``` type ExploitModule interface { Name() string TargetType() TargetType Execute(ctx context.Context, target TargetProfile, sessionID string) (*AttackEvent, error) } ``` 在 `main.go` 中注册: ``` orch.RegisterExploit(mymodule.NewMyExploit()) ``` 或者通过实现 `api/proto/uam.proto` 中的 `ExploitPlugin` 服务作为 gRPC 插件部署——无需对 UAM 本身进行代码更改,支持任何语言。 ### 添加蓝队传感器 实现 `Sensor`: ``` type Sensor interface { Name() string TargetType() TargetType Start(ctx context.Context, sessionID string) error Stop() error } ``` 传感器将 `TelemetryEvent` 消息发布到 NATS `uam.telemetry` 主题。编排器会自动获取它们。 ### 添加修复生成器 实现 `PatchGenerator` 接口并为其目标类型在 `Synthesizer` 中注册。合成器根据 `TargetType` 路由到正确的生成器。 ## 包含的目标 ### 目标 1:易受攻击的 Ubuntu 容器(基础设施) - 全局可读的 `/etc/shadow` - SUID 二进制文件(`/usr/bin/find`) - `/root/.env` 和 `/root/.ssh/id_rsa` 中的敏感数据 - 带有弱密码的测试用户 **攻击**:对 `/etc/shadow` 的未授权文件读取 **检测**:eBPF 文件访问传感器通过审计钩子捕获读取 **修复**:生成拒绝访问敏感文件的 AppArmor 配置文件 **验证**:在 `chmod 600` 后重新运行文件读取——确认访问被拒绝 ### 目标 2:易受攻击的 Express API(应用程序) - `/api/users/:id`、`/api/users/search`、`/api/login` 中的 SQL 注入 - `/api/files` 中的路径遍历 - 响应中的详细 SQL 错误消息 **攻击**:针对 `/api/users/search` 的基于 UNION 的 SQL 注入 **检测**:OTel HTTP 传感器和追踪收集器匹配 SQL 注入模式 **修复**:生成阻止 SQL 注入负载的 WAF JSON 规则 **验证**:重新运行 SQL 注入负载——确认 WAF 阻止了请求 ### 目标 3:平台 / CI-CD(平台) - CI/CD 端点(Jenkins、GitLab) - 云元数据端点 - 带有默认凭据的登录端点 **攻击**:凭据填充和流水线投毒 **检测**:平台审计日志传感器检测未授权的 API 调用和配置更改 **修复**:生成用于 IAM 加固的 Terraform 片段 ## 输出 每个会话在 `./output/` 中生成一个结构化 JSON 文件,包含(当设置 `UAM_ENCRYPTION_KEY` 时,可选通过 AES-256-GCM 静态加密): - 和元数据 - 会话血缘(`run_mode`、修复会话的 `parent_session_id`) - 完整事件时间线(攻击、遥测、修复、验证、错误) - 生成的补丁内容(AppArmor 配置文件、WAF 规则、Seccomp、Terraform、K8s NetworkPolicy、ModSecurity 规则、sshd_config、防火墙规则) - 评分:检测率、修复率、总体分数 - 补丁验证结果(PASSED/FAILED) ## 技术栈 | 组件 | 技术 | | --- | --- | | 核心引擎 | Go(使用 `log/slog` 结构化日志) | | 消息代理 | NATS JetStream | | 基础设施传感器 | eBPF(C 追踪点 + Go `cilium/ebpf` 加载器) | | 应用程序传感器 | 兼容 OpenTelemetry 的 OTLP 追踪收集器 | | 平台传感器 | HTTP 审计日志监控 | | 容器运行时 | Podman(主要)/ Docker(回退) | | 目标环境 | Podman/Docker Compose、Kubernetes | | 利用脚本 | Go + Python 3(自动发现)+ 外部工具(nmap、nikto、sqlmap、ssh-audit、nuclei) | | 插件系统 | 带可选 TLS 的 gRPC(进程外扩展) | | 指标 | 兼容 Prometheus(零依赖计数器 + 直方图) | | 加密 | AES-256-GCM,带 PBKDF2 密钥派生(会话数据静态加密) | | 配置 | YAML | | 仪表盘 | 嵌入式 HTTP + SSE(暗色主题 SPA) | | 易受攻击的应用 | Node.js / Express / SQLite | ## 设计原则 - **与目标无关**:编排器不知道如何攻击或防御——模块知道。添加 AWS 支持意味着添加模块,而不是更改核心。 - **事件驱动**:红队和蓝队之间没有阻塞调用。所有状态通过 NATS 流动。 - **闭环验证**:补丁在原始利用对其失败之前不被信任。 - **试运行安全**:每个利用模块通过 `DryRunnable` 接口支持试运行模式——无风险审计。 - **工具门控**:需要外部工具(kubectl、nmap、aws、nuclei)的模块,如果工具未安装,将被自动跳过。 - **可配置模块**:单个能力模块(OSINT、指纹识别、后渗透、Nuclei 等)可通过 YAML 配置启用/禁用——默认全部启用的退出模型。 - **幂等修复**:每个生成的补丁(AppArmor、WAF、Seccomp、Terraform、K8s NetworkPolicy、sshd_config、防火墙规则)均可安全重复应用。 - **运行时无关**:通过容器运行时抽象层同时支持 Podman 和 Docker。 - **输入验证**:所有目标端点在使用前都经过类型检查——SSH 拒绝 shell 元字符,网络验证 CIDR/host:port,URL 需要 http(s)。 - **弹性**:会话超时并优雅取消,原子文件写入确保崩溃安全,结构化错误包含操作上下文便于调试。 - **可扩展**:gRPC 插件接口(带 TLS)允许使用任何语言进行进程外扩展,无需接触 UAM 核心。插件脚本的 SHA-256 校验和验证。 - **可观测**:跨所有事件的关联 ID、Prometheus 指标、通过 `slog` 可配置的结构化日志、带 SSE 的实时仪表盘和全面的会话工件。 - **静态安全**:可选 AES-256-GCM 加密用于包含敏感发现结果的会话输出文件。 ## 免责声明 此工具仅用于**授权安全测试和教育目的**。用户全权负责在测试任何系统前获得适当授权。未经授权访问计算机系统是非法的。作者对误用此软件不承担任何责任。 在运行 UAM 对抗任何目标之前,始终获得系统所有者的书面许可。如有疑问,请使用 `--dry-run` 标志进行只读审计。 ## 许可证 MIT - 详情参见 [LICENSE](LICENSE)。
标签:CISA项目, Docker镜像, EVTX分析, FTP漏洞扫描, GPT, PyRIT, Python工具, 可扩展架构, 多智能体系统, 威胁模拟, 子域名突变, 安全编排, 对抗性安全, 持续监控, 插件系统, 日志审计, 模块化设计, 混合加密, 渗透测试框架, 漏洞修复, 漏洞管理, 用户代理, 目标无关, 红队攻击, 结构化查询, 网络安全, 网络安全培训, 自主操作, 自动化修复, 自动化安全, 蓝队防御, 请求拦截, 调试插件, 逆向工具, 防御, 隐私保护