AI 驱动的渗透测试自主协调 Agent | Think-Act-Observe 引擎 | 多 Agent 编排 | 防护感知利用 | 跨轮次记忆
用一句话启动:
ovogo "对 target.com 进行渗透测试"
Ovogo 是一个自主红队协调引擎——它不是一堆散装的扫描脚本,而是一个具备完整推理能力的 AI Agent,能够:
- 理解目标 — 接收渗透测试目标(URL / IP / 域名)
- 环境感知 — 自动检测 WAF/EDR/沙箱防护,生成结构化绕过建议
- 制定计划 — 基于 MITRE ATT&CK 框架自动生成攻击链
- 并行分发 — 同时派遣多个专业子 Agent 执行侦察、扫描、利用
- 防护感知利用 — 集成 Havoc C2 / Sliver C2 / APT28 三大框架的 23 种绕过技术
- 监控进度 — 定时读取子 Agent 输出,评估进展,调整策略
- 联动利用 — 将一个 Agent 的发现传递给另一个 Agent 利用
- 收集 Flag — 自动搜索、提取目标 Flag
- 生成报告 — 汇总所有发现,形成完整攻击链记录
与传统红队框架的本质区别:
- 传统框架 = 脚本编排(if-then 流程固定,遇防护即失效)
- Ovogo = AI 自主决策 + 防护感知(LLM 每轮推理,动态检测防护并选择绕过技术)
╔══════════════════════════════════════════════════════════════════════════════════════════════╗
║ Ovogo — 自主红队协调引擎 架构全景 ║
╠══════════════════════════════════════════════════════════════════════════════════════════════╣
║ ║
║ 用户输入: "对 zhhovo.top 进行渗透测试" ║
║ │ ║
║ ▼ ║
║ ┌─────────────────────────────────────────────────────────────────────────────────────┐ ║
║ │ bin/ovogogogo.ts — 主入口 (REPL / 单次任务 / --orchestrator 状态机模式) │ ║
║ │ ├── Skill 系统 (阶段动态工具加载) │ Hook 系统 (Pre/Post 工具钩子) │ ║
║ │ ├── MCP 服务 (外部工具扩展) │ OVOGO.md (用户指令注入) │ ║
║ │ └── Memory 系统 (文件记忆加载) │ KnowledgeBase (实战知识注入) │ ║
║ └─────────────────────────────────┬───────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌───────────────┼───────────────┐ ║
║ ▼ ▼ ▼ ║
║ ┌─────────────────────┐ ┌────────────────┐ ┌──────────────────────────────┐ ║
║ │ ExecutionEngine │ │ Battle │ │ Agent Worker (独立进程) │ ║
║ │ (Think-Act-Observe)│ │ Orchestrator │ │ ┌──────────────────────┐ │ ║
║ │ │ │ (状态机) │ │ │ 专用 Agent 实例 │ │ ║
║ │ ┌─────────────────┐ │ │ │ │ │ 独立 Engine + Prompt │ │ ║
║ │ │ Context Budget │ │ │ PhaseMachine │ │ │ 文件系统通信 │ │ ║
║ │ │ + Auto-Compact │ │ │ 7阶段状态机 │ │ │ 结构化结果提取 │ │ ║
║ │ ├─────────────────┤ │ ├──────────────┤ │ └──────────────────────┘ │ ║
║ │ │ Streaming LLM │ │ │ TaskDAG │ │ │ recon / vuln-scan / │ ║
║ │ │ + Tool Stream │ │ │ 依赖追踪 │ │ │ exploit / privesc / │ ║
║ │ ├─────────────────┤ │ ├──────────────┤ │ │ lateral / flag-hunter │ ║
║ │ │ Critic 审查 │ │ │ LLM │ │ └──────────────────────────────┘ ║
║ │ │ (15项自动纠错) │ │ │ Supervisor │ │ ║
║ │ ├─────────────────┤ │ │ RoE约束注入 │ │ ║
║ │ │ 并行 Tool 调度 │ │ └──────┬───────┘ │ ║
║ │ │ (Promise.all) │ │ │ │ │ ║
║ │ └────────┬────────┘ │ └───────┼─┘ ║
║ └─────────┼──────────┘ │ ║
║ │ │ ║
║ ┌─────────┴───────────────────────────┼──────────────────────────────────────┐ ║
║ │ 工具层 (22 Tools) │ │ ║
║ │ ┌──────────┬──────────┬────────────┼──────┬──────────┬──────────────┐ │ ║
║ │ │ Bash │ Agent │ MultiAgent │ 武器 │ Shell │ TmuxSession │ │ ║
║ │ │ 命令执行 │ 子Agent │ 批量并发 │ 雷达 │ Session │ 交互进程 │ │ ║
║ │ ├──────────┼──────────┼────────────┼──────┼──────────┼──────────────┤ │ ║
║ │ │ Read │ Write │ Edit │ Glob │ Grep │ TodoWrite │ │ ║
║ │ │ 读文件 │ 写文件 │ 精确替换 │ 查找 │ 内容搜索 │ 任务清单 │ │ ║
║ │ ├──────────┼──────────┼────────────┼──────┼──────────┼──────────────┤ │ ║
║ │ │ Weapon │ Web │ Web │ C2 │ Dispatch │ Finding │ │ ║
║ │ │ Radar │ Search │ Fetch │ 设施 │ Agent │ Write/List │ │ ║
║ │ │ 22W PoC │ 网络搜索 │ URL获取 │ MSF │ 异步任务 │ 漏洞管理 │ │ ║
║ │ ├──────────┼──────────┼────────────┼──────┼──────────┼──────────────┤ │ ║
║ │ │ MultiScan│ DocRead │ EnvAnalyzer│技 │ │ │ │ ║
║ │ │ 并行扫描 │ 文档读取 │ 环境感知 │术生成│ │ │ │ ║
║ │ └──────────┴──────────┴────────────┴──────┴──────────┴──────────────┘ │ ║
║ └────────────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌─────────┴────────────────────────────────────────────────────────────────────┐ ║
║ │ 记忆 & 知识 & 安全基础设施 │ ║
║ │ ┌──────────────┐ ┌───────────────┐ ┌──────────────┐ ┌──────────────────┐ │ ║
║ │ │ 语义记忆 │ │ 情景记忆 │ │ 实战知识库 │ │ EventLog │ │ ║
║ │ │ SemanticMem │ │ EpisodicMem │ │ KnowledgeBase│ │ (不可变事件流) │ │ ║
║ │ │ CVE/拓扑/凭证│ │ 行动轨迹 │ │ JSONL持久化 │ │ NDJSON审计轨迹 │ │ ║
║ │ ├──────────────┤ ├───────────────┤ ├──────────────┤ ├──────────────────┤ │ ║
║ │ │ 工具缓存 │ │ 进度追踪 │ │ Dispatch │ │ 文件记忆 │ │ ║
║ │ │ ToolCache │ │ Progress │ │ 异步通信 │ │ MEMORY.md │ │ ║
║ │ │ SHA256+TTL │ │ 长任务管理 │ │ 任务队列 │ │ 跨session偏好 │ │ ║
║ │ └──────────────┘ └───────────────┘ └──────────────┘ └──────────────────┘ │ ║
║ └────────────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌─────────┴────────────────────────────────────────────────────────────────────────────┐ ║
║ │ 环境感知 & 绕过引擎 (EnvAnalyzer + TechniqueGenerator) │ ║
║ │ │ ║
║ │ ┌─────────────────────────┐ ┌──────────────────────────────────┐ │ ║
║ │ │ EnvAnalyzer │ -> │ TechniqueGenerator (23 技术) │ │ ║
║ │ │ │ │ │ │ ║
║ │ │ WAF 检测 (wafw00f/curl)│ │ Havoc 系列 (6 技术): │ │ ║
║ │ │ EDR 检测 (进程匹配) │ │ AMSI/ETW绕过/间接syscall/ │ │ ║
║ │ │ 沙箱检测 (VM特征) │ │ 睡眠混淆/栈伪造/Hash API │ │ ║
║ │ │ │ │ │ │ ║
║ │ │ 输出: 防护类型+建议 │ │ Sliver 系列 (7 技术): │ │ ║
║ │ │ │ │ RefreshPE/SGN编码/流量多态/ │ │ ║
║ │ │ │ │ PE元数据伪造/.NET双模式/ │ │ ║
║ │ │ │ │ Go模板编译/操作模式 │ │ ║
║ │ │ │ │ │ │ ║
║ │ │ │ │ APT28 系列 (8 技术): │ │ ║
║ │ │ │ │ 交替XOR/轮转XOR/PNG隐写/ │ │ ║
║ │ │ │ │ RW→RX转换/APC注入/COM劫持/ │ │ ║
║ │ │ │ │ Dead Drop/WebDAV UNC │ │ ║
║ │ └─────────────────────────┘ └──────────────────────────────────┘ │ ║
║ └────────────────────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌─────────┴────────────────────────────────────────────────────────────────────────────┐ ║
║ │ 子 Agent 作战体系 (25+ 类型) │ ║
║ │ │ ║
║ │ Phase 1: 侦察+探测 Phase 2: 漏洞检索 Phase 3: 漏洞利用+C2 │ ║
║ │ ┌──────────────────┐ ┌─────────────────┐ ┌────────────────────────────┐ │ ║
║ │ │ recon ─┬─ dns-recon │ weapon-match │ │ manual-exploit (curl/py) │ │ ║
║ │ │ ├─ port-scan │ 22W PoC语义检索 │ │ tool-exploit (MSF/sqlmap) │ │ ║
║ │ │ ├─ web-probe └─────────────────┘ │ c2-deploy (MSF/Sliver) │ │ ║
║ │ │ └─ osint └────────────┬───────────────┘ │ ║
║ │ ├──────────────────┤ │ │ ║
║ │ │ vuln-scan ─┬─ web-vuln Phase 4: 靶机操作 Phase 5: 内网横移 │ ║
║ │ │ ├─ service-vuln ┌──────────────┐ ┌────────────────────────────┐ │ ║
║ │ │ └─ auth-attack │ target-recon │ │ tunnel (chisel socks5) │ │ ║
║ │ └──────────────────┘ │ privesc │ │ internal-recon (proxy+nmap)│ │ ║
║ │ └───────┬───────┘ │ lateral (PTH/MS17/Kerberos)│ │ ║
║ │ │ └────────────┬───────────────┘ │ ║
║ │ Phase 6: Flag收集 Phase 7: 报告 │ ║
║ │ ┌──────────────┐ ┌────────────────────────────┐ │ ║
║ │ │ flag-hunter │ │ report (渗透测试报告) │ │ ║
║ │ │ 6层深度搜索 │ │ 攻击链记录 + 漏洞清单 │ │ ║
║ │ └──────────────┘ └────────────────────────────┘ │ ║
║ └────────────────────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ 输出: sessions/{target}_{timestamp}/ — 完整攻击记录 + 漏洞清单 + Flag + 报告 ║
╚══════════════════════════════════════════════════════════════════════════════════════════╝
┌──────────────────────────────────────────────────────────────────┐
│ RunTurn() 主循环 │
│ │
│ ┌───────────┐ ┌──────────┐ ┌───────────┐ ┌──────────┐ │
│ │ Context │ -> │ Streaming │ -> │ Tool │ -> │ Loop / │ │
│ │ Budget + │ │ LLM Call │ │ Batch │ │ Return │ │
│ │ Compact │ │ (Think) │ │ (Act/Obs) │ │ │ │
│ └───────────┘ └──────────┘ └───────────┘ └──────────┘ │
│ ↑ │
│ │ 每 5 轮 │
│ ┌────┴──────────┐ │
│ │ Critic 检查 │ 15 项自动纠错清单 │
│ └───────────────┘ │
│ │
│ 并行调度: Promise.all (安全工具) + 串行 (写操作) │
│ 软中断: ESC 暂停 → 用户介入 → 继续 │
│ 硬中断: Ctrl+C 取消 │
└──────────────────────────────────────────────────────────────────┘
每次 runTurn() 循环:
- 上下文预算评估 — 检查 token 使用量,决定是否需要压缩
- 自动压缩 — 超过 75% 时调用 LLM 摘要旧消息,保留最近 8 条原始消息
- Critic 注入 — 每 5 轮用 LLM 审查最近 24 条消息,发现失误立即纠正
- 流式 API 调用 — 接收 LLM 的文本思考(Think)+ 工具调用(Act)
- 工具批调度 — 读工具并行执行(Promise.all),写工具串行执行
- 结果注入 — 工具结果作为 user 消息注入下一轮
┌──────────────────────────────────────────────────────────────┐
│ BattleOrchestrator │
│ │
│ init → recon → vuln-scan → weapon-match → exploit │
│ ↘ ↗ ↗ ↗ │
│ post-exploit → privesc → lateral │
│ ↖ ↗ │
│ report → done │
│ │
│ PhaseMachine: 阶段状态追踪 + 允许转换约束 │
│ TaskDAG: 任务依赖图 + 自动触发下游任务 │
│ Supervisor: LLM 决策引擎 (JSON 输出) + RoE 约束注入 │
│ Fallback: 规则降级决策 (LLM 失败时) │
│ │
│ 启动: ovogogogo --orchestrator "对 target 进行渗透测试" │
└──────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 子 Agent 作战体系 (25+ 类型) │
│ │
│ Phase 1 — 侦察 + 漏洞探测 (并行开局) │
│ ├── recon 侦察总管 (内部: dns-recon / port-scan / │
│ │ web-probe / osint) │
│ └── vuln-scan 漏洞探测总管 (内部: web-vuln / │
│ service-vuln / auth-attack) │
│ │
│ Phase 2 — 漏洞检索 │
│ └── weapon-match POC 库语义检索 (22W Nuclei PoC, │
│ BGE-M3 向量搜索) │
│ │
│ Phase 3 — 漏洞利用 + C2 (并行) │
│ ├── manual-exploit 手工利用 (curl/python 精准打击 + 防护绕过) │
│ ├── tool-exploit 工具利用 (MSF/sqlmap/searchsploit) │
│ └── c2-deploy C2 部署 (Metasploit/Sliver 监听 + payload) │
│ │
│ Phase 4 — 靶机操作 │
│ ├── target-recon 靶机信息收集 (本机 + 内网) │
│ └── privesc 权限提升 (SUID/sudo/内核/计划任务/AMSI绕过) │
│ │
│ Phase 5 — 内网横移 │
│ ├── tunnel 内网穿透 (chisel socks5 代理) │
│ ├── internal-recon 内网资产发现 (proxychains + nmap) │
│ └── lateral 横向移动 (MS17-010/PTH/凭证复用/AD攻击) │
│ │
│ Phase 6 — Flag 收集 │
│ └── flag-hunter 全局 Flag 搜索收集 (6 层深度搜索) │
│ │
│ Phase 7 — 报告 │
│ └── report 渗透测试报告生成 │
│ │
│ 每个子 Agent: 独立 Engine | 专用 Prompt | tmux 面板 | 文件通信 │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 记忆 & 知识系统 │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ 语义记忆 │ │ 情景记忆 │ │
│ │ SemanticMemory │ │ EpisodicMemory │ │
│ │ │ │ │ │
│ │ 渗透知识持久化 │ │ 行动轨迹记录 │ │
│ │ CVE利用/内网拓扑 │ │ "做了什么/成功失败" │ │
│ │ 凭证/技术栈 │ │ Critic检查时注入 │ │
│ │ │ │ │ │
│ │ 存储: semantic.jsonl│ │ 存储: episodes.jsonl│ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ 实战知识库 │ │ 文件记忆 │ │
│ │ KnowledgeBase │ │ MEMORY.md │ │
│ │ │ │ │ │
│ │ 4类 JSONL 持久化 │ │ 用户协作偏好 │ │
│ │ attack_patterns │ │ 项目约定/反馈 │ │
│ │ cve_notes │ │ 跨 session 保留 │ │
│ │ tool_combos │ │ │ │
│ │ target_profiles │ │ 存储: memory/ │ │
│ │ │ │ │ │
│ │ 规则提取(零LLM成本) │ │ 启动时自动加载 │ │
│ │ 实时+Session结束 │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ 攻击知识库 (AttackKnowledge) — 19 章节系统性方法论 │
│ ├── Web攻击向量 (API/认证/上传/SSRF/SSTI/反序列化) │
│ ├── 框架漏洞 (Java/PHP/Python/Node.js/Go) │
│ ├── 云原生攻击 (Docker/K8s/CI-CD/AWS/Azure/GCP) │
│ ├── 数据库攻击 (Redis/MongoDB/MySQL/PG/ES/RabbitMQ/Kafka) │
│ ├── 内网&AD攻击 (Kerberos/NTLM/ADCS/BloodHound/横向) │
│ ├── OAuth/SAML/SSO (授权码劫持/PKCE/断言注入) │
│ ├── AI/LLM应用攻击 (Prompt注入/RAG污染/工具滥用) │
│ ├── 供应链&CI/CD (依赖污染/GitHub Actions/Jenkins) │
│ ├── 攻击链配方 (10条完整攻击链公式) │
│ ├── EDR/AV 绕过技术 (AMSI/ETW/WAF/进程注入速查) │
│ └── Sliver C2 技术 (RefreshPE/SGN/流量多态/PE伪造) │
└─────────────────────────────────────────────────────────────────┘
所有工具统一 Tool 接口:execute(input, context) → Promise<ToolResult>
| 类别 | 工具 | 职责 |
|---|---|---|
| 执行 | Bash | Shell 命令(进程组 kill、后台模式、follow 模式) |
| ShellSession | 持久反弹 Shell(listen/exec/kill) | |
| TmuxSession | 本地交互进程(msfconsole/sqlmap/REPL) | |
| 文件 | Read / Write / Edit / Glob / Grep | 文件读写、查找、替换 |
| 情报 | WeaponRadar | 22W PoC 向量数据库语义检索(BGE-M3) |
| WebSearch / WebFetch / DocRead | 网络搜索、URL 获取、文档读取 | |
| 编排 | Agent / MultiAgent | 启动单个或多个子 Agent |
| DispatchAgent / CheckDispatch / GetDispatchResult | 异步任务分发 | |
| 管理 | FindingWrite / FindingList | 漏洞记录管理 |
| TodoWrite | 任务清单 | |
| C2 | C2 基础设施(Metasploit/Sliver) | |
| 扫描 | MultiScan | 并行扫描执行(等待/后台双模式) |
| 感知 | EnvAnalyzer | WAF/EDR/沙箱环境检测 + 绕过建议 |
| 绕过 | TechniqueGenerator | 23 种绕过技术生成(Havoc/Sliver/APT28) |
调度策略:
- 并行批(Promise.all):Read/Glob/Grep/WebFetch/WebSearch/Bash/Agent/MultiAgent/DispatchAgent/C2/ShellSession/TmuxSession/MultiScan/EnvAnalyzer/TechniqueGenerator
- 串行批(竞态安全):Write/Edit/FindingWrite
这是 Ovogo 区别于传统 AI 渗透工具的核心能力 —— 不再盲目生成 payload,而是先检测防护、再生成绕过方案。
┌─────────────────────────────────────────────────────────────────┐
│ 环境感知 & 绕过引擎 │
│ │
│ Step 1: EnvAnalyzer 环境检测 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ WAF 检测 ──> wafw00f → 10种WAF特征匹配 → 置信度评分 │ │
│ │ ├── Cloudflare / 宝塔 / ModSecurity / AWS WAF │ │
│ │ ├── Akamai / Imperva / Sucuri / 360 / 安全狗 / 长亭 │ │
│ │ └── 降级: curl 手动探针 + 状态码对比 │ │
│ │ │ │
│ │ EDR 检测 ──> ShellSession → tasklist 匹配已知EDR进程 │ │
│ │ ├── Windows Defender / CrowdStrike / SentinelOne │ │
│ │ ├── Symantec / Carbon Black / FireEye / McAfee │ │
│ │ └── Trend Micro / Kaspersky │ │
│ │ │ │
│ │ 沙箱检测 ──> CPU/内存/MAC/主机名 VM特征匹配 │ │
│ │ │ │
│ │ 输出: 防护类型 + 针对性绕过建议 → TechniqueGenerator │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Step 2: TechniqueGenerator 绕过生成 (23 技术) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Havoc 系列 (6 技术): │ │
│ │ ├── AMSI bypass ──> 反射补丁/字符串混淆/环境变量/NGEN │ │
│ │ ├── ETW bypass ──> 反射补丁/注册表禁用 │ │
│ │ ├── Havoc strategy ──> 编译器标志/间接syscall/ │ │
│ │ │ 硬件断点/睡眠混淆/栈伪造/Hash API │ │
│ │ └── shellcode_encode / waf_evasion / obfuscated_ps │ │
│ │ │ │
│ │ Sliver 系列 (7 技术): │ │
│ │ ├── RefreshPE ──> DLL .text从磁盘重载去hook │ │
│ │ ├── SGN encoding ──> Shikata-Ga-Nai多态编码 │ │
│ │ ├── Traffic encoder──> 8种HTTP流量多态(Base32/58/64/ │ │
│ │ │ Hex/English/PNG/Gzip/WASM) │ │
│ │ ├── PE donor ──> Rich Header/时间戳/签名克隆 │ │
│ │ ├── .NET dual ──> 进程内CLR托管 vs fork-and-run │ │
│ │ ├── Go template ──> 条件编译/garble混淆 │ │
│ │ └── Sliver strategy ──> 操作模式综合 │ │
│ │ │ │
│ │ APT28 系列 (8 技术): │ │
│ │ ├── String obfusc ──> 交替字节XOR + Null填充 │ │
│ │ ├── Rotating XOR ──> 76字节轮转XOR密钥 │ │
│ │ ├── PNG stego ──> PNG隐写术 LSB提取shellcode │ │
│ │ ├── RW→RX transition ──> 避免RWX检测的两阶段内存 │ │
│ │ ├── APC injection ──> QueueUserAPC > CreateRemoteThread│ │
│ │ ├── COM hijack ──> InprocServer32注册表劫持 │ │
│ │ ├── Dead Drop ──> 合法云API作为C2(filen.io) │ │
│ │ └── WebDAV UNC ──> 无落地DLL内存加载 │ │
│ │ │ │
│ │ 工作流: EnvAnalyzer → 检测防护 → TechniqueGenerator │ │
│ │ → 选择绕过技术 → 生成payload → curl/Shell/C2投递│ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
绕过工作流示例:
目标: http://192.168.1.100
1. EnvAnalyzer({ target: "http://192.168.1.100", analyze_mode: "all" })
→ WAF: 宝塔 (confidence: 0.95)
→ EDR: Windows Defender (通过ShellSession检测)
→ 建议: 使用分块传输编码绕过WAF; 先执行AMSI bypass再运行PowerShell
2. TechniqueGenerator({ technique: "waf_evasion", payload: "' OR 1=1--",
analysis_context: { waf: "宝塔" } })
→ 返回: Unicode编码 + SQL注释插入 + 分块传输 + 参数污染 四种方案
3. TechniqueGenerator({ technique: "amsi_bypass", payload: "payload",
analysis_context: { edr: "Windows Defender" } })
→ 返回: 反射补丁 + 字符串混淆 + 排除路径 三种方案
4. 组合绕过payload → 通过curl/ShellSession/C2投递
ShellSession (反弹 Shell 持久管理) TmuxSession (本地交互进程)
┌─────────────────────────┐ ┌──────────────────────────┐
│ 目标 ──TCP──> 攻击机 │ │ msfconsole / sqlmap │
│ │ │ │ │ │
│ listen(port) │ │ new() → 创建 tmux 会话 │
│ exec(session, cmd) │ │ send() → 发送按键 │
│ kill(session) │ │ capture() → 捕获输出 │
│ │ │ wait_for() → 等待模式 │
│ 多 Shell 并发 │ │ list() / kill() │
│ 命令超时控制 │ │ 解决交互式工具超时问题 │
└─────────────────────────┘ └──────────────────────────┘
C2 集成 (Metasploit + Sliver)
├── Metasploit: msfrpcd API — listener 部署、payload 生成、session 管理
├── Sliver: CLI 封装 — implant 生成、beacon 交互
└── 持久化: C2 状态 JSON,重启后恢复
MultiScan (并行扫描执行器)
├── 等待模式 (detach: false) — Promise.all 并行,适合 <5min 短任务
│ └── subfinder / httpx / naabu / 快速 nmap → 自动超时 + 结果摘要
├── 后台模式 (detach: true) — nohup detached 进程,适合长任务
│ └── nmap -p- / nuclei 全模板 / hydra → 立即返回 PID + 输出路径
└── 统一输出: 状态图标 + 耗时 + 输出文件大小 + 末尾预览
Windows:
setup.batmacOS / Linux:
chmod +x setup.sh && ./setup.shgit clone https://github.com/atreasureboy/ovogo.git
cd ovogo
npm install
npm run build# 设置 API 密钥 (必需)
export OPENAI_API_KEY=sk-xxx # Linux/macOS
set OPENAI_API_KEY=sk-xxx # Windows CMD
$env:OPENAI_API_KEY="sk-xxx" # Windows PowerShell
# 可选配置
export OPENAI_BASE_URL=https://api.example.com # 兼容端点
export OVOGO_MODEL=gpt-4o # 模型
export OVOGO_MAX_ITER=200 # 最大轮数
export OVOGO_CWD=/path/to/project # 工作目录# 交互模式 (REPL)
ovogo
# 直接任务
ovogo "对 zhhovo.top 进行渗透测试"
# 管道输入
echo "分析当前项目安全" | ovogo
# Plan 模式 (只读分析)
ovogo "/plan 分析目标 zhhovo.top 的攻击面"
# 状态机编排模式 (全自动攻击链)
ovogo --orchestrator "对 zhhovo.top 进行渗透测试"
# 参数控制
ovogo -m claude-sonnet-4-x --max-iter 300 --cwd /target/dir| 命令 | 功能 |
|---|---|
/plan <task> |
Plan 模式运行(只读分析 + 确认执行) |
/skills |
列出可用 skills |
/clear |
清空对话历史 |
/history |
显示消息数 |
/model |
显示当前模型 |
/help |
显示帮助 |
/exit |
退出 |
交互控制:
- ESC — 暂停当前操作,注入用户建议
- Ctrl+C — 强制取消
- Ctrl+D — 退出
ovogo/
├── bin/
│ ├── ovogogogo.ts # 主入口 (REPL + Task + Plan + Orchestrator)
│ └── agent-worker.ts # 子 Agent 独立进程
│
├── src/
│ ├── core/ # 核心引擎
│ │ ├── engine.ts # Think-Act-Observe 执行引擎 (流式 + 并行调度 + Critic)
│ │ ├── orchestrator.ts # 状态机 + TaskDAG + LLM Supervisor
│ │ ├── types.ts # 核心类型定义
│ │ ├── compact.ts # 上下文压缩 (LLM 摘要 + 百分比阈值)
│ │ ├── contextBudget.ts # 上下文预算管理 (显式 token 分配)
│ │ ├── eventLog.ts # 不可变事件流 (NDJSON 审计轨迹)
│ │ ├── dispatch.ts # 异步 Agent 分发管理器
│ │ ├── semanticMemory.ts # 语义记忆 (跨 session 渗透知识)
│ │ ├── episodicMemory.ts # 情景记忆 (行动轨迹记录)
│ │ ├── knowledgeBase.ts # 实战知识库 (JSONL 持久化)
│ │ ├── knowledgeExtractor.ts # 规则知识提取器 (零LLM成本)
│ │ ├── skillRegistry.ts # 技能注册表 (阶段动态加载)
│ │ ├── progressTracker.ts# 长任务进度追踪
│ │ ├── toolCache.ts # 工具结果缓存 (SHA256 + TTL)
│ │ └── priorityQueue.ts # 优先级队列
│ │
│ ├── tools/ # 通用工具 (22 tools)
│ │ ├── agent.ts # 子 Agent 派发 + Dispatch 工具
│ │ ├── multiAgent.ts # 批量并发子 Agent
│ │ ├── bash.ts # Shell 命令执行 (进程组 kill)
│ │ ├── shellSession.ts # 反弹 Shell 持久管理
│ │ ├── tmuxSession.ts # 本地交互进程管理
│ │ ├── weaponRadar.ts # 22W PoC 向量数据库检索
│ │ ├── multiScan.ts # 并行扫描执行器 (等待/后台双模式)
│ │ ├── c2.ts # C2 基础设施 (MSF/Sliver)
│ │ ├── finding.ts # 漏洞档案管理
│ │ ├── envAnalyzer.ts # 环境感知 (WAF/EDR/沙箱检测)
│ │ ├── techniqueGenerator.ts # 绕过引擎 (23种技术: Havoc/Sliver/APT28)
│ │ ├── fileRead.ts # 文件读取
│ │ ├── fileWrite.ts # 文件写入
│ │ ├── fileEdit.ts # 文件编辑
│ │ ├── glob.ts # 文件查找
│ │ ├── grep.ts # 内容搜索
│ │ ├── todo.ts # 任务清单
│ │ ├── webFetch.ts # URL 内容获取
│ │ ├── webSearch.ts # 网络搜索
│ │ ├── docRead.ts # 文档读取
│ │ └── index.ts # 工具注册
│ │
│ ├── skills/ # 阶段技能模块
│ │ ├── recon.ts # 侦察阶段工具
│ │ ├── vuln-scan.ts # 漏洞扫描阶段工具
│ │ ├── exploit.ts # 漏洞利用阶段工具
│ │ ├── post-exploit.ts # 后渗透阶段工具
│ │ └── loader.ts # 技能加载器
│ │
│ ├── prompts/ # Prompt 工程
│ │ ├── system.ts # 系统 Prompt 组装 (12+ sections)
│ │ ├── agentPrompts.ts # 25+ Agent 类型专用 Prompt (含防护感知流程)
│ │ ├── attackKnowledge.ts # 19章攻击知识库 (含EDR绕过/Sliver技术)
│ │ └── tools.ts # 工具描述 Prompt
│ │
│ ├── config/ # 配置系统
│ │ ├── settings.ts # 设置加载 (项目级 + 用户级)
│ │ ├── hooks.ts # Hook 执行器
│ │ └── ovogomd.ts # OVOGO.md 指令加载
│ │
│ ├── memory/ # 文件记忆系统
│ │ └── index.ts # MEMORY.md 索引 + 加载
│ │
│ ├── ui/ # 终端 UI
│ │ ├── renderer.ts # 终端渲染器 (文件回溯 + spinner)
│ │ ├── input.ts # 输入处理 (ESC + Ctrl+C + Ctrl+D)
│ │ └── tmuxLayout.ts # tmux 4 面板布局管理
│ │
│ └── services/mcp/ # MCP 服务
│ ├── client.ts # MCP 客户端
│ ├── loader.ts # MCP 服务器加载
│ ├── mcpTool.ts # MCP 工具适配
│ └── types.ts # MCP 类型
│
├── sessions/ # 运行时 session 输出 (git 忽略)
├── .ovogo/ # 项目配置 + skills + findings
├── setup.bat # Windows 一键安装脚本
├── setup.sh # macOS/Linux 一键安装脚本
├── package.json
├── tsconfig.json
└── .gitignore
渗透测试是长链路、多工具、长耗时的任务。单一 Agent 直接执行所有工具会导致:
- 上下文窗口爆炸 — 每个工具的结果都占 token
- 专注力下降 — Agent 推理能力随上下文增大而衰减
- 无法并行 — 串行执行浪费时间
协调器方案:主 Agent 只做决策和读结果,具体执行交给专业子 Agent,每个子 Agent 有隔离的上下文窗口。
传统红队框架(AutoRecon/Peirates/CrackMapExec)是 if-then 脚本,遇到非标准环境就挂。Ovogo 用 LLM 每轮推理动态决策:
- 发现新服务 → 立即匹配 POC
- 扫描超时 → 调整策略
- 工具缺失 → 安装或换方法
- 遇到防护 → EnvAnalyzer 检测 → TechniqueGenerator 生成绕过 → 换攻击路径
单纯靠 LLM "手写"绕过方案,质量不稳定且缺乏实战验证。Ovogo 从三个来源提取技术:
| 来源 | 提取内容 | 为什么选它 |
|---|---|---|
| Havoc C2 | 间接syscall/硬件断点AMSI bypass/睡眠混淆/栈伪造/Hash API | 编译时+运行时多层绕过,C源码级理解 |
| Sliver C2 | RefreshPE/SGN多态编码/流量多态/PE元数据伪造/.NET双模式 | Go工程化能力,模块化扩展系统 |
| APT28 | 交替XOR/PNG隐写/RW→RX/APC注入/COM劫持/Dead Drop/WebDAV | 国家级APT实战级免杀,多层加密链 |
主执行路径使用 src/core/engine.ts (Think-Act-Observe) + src/core/orchestrator.ts (PhaseMachine + TaskDAG + LLM Supervisor),通过 --orchestrator 启用完整攻击链自动化。
不缓存:Bash/ShellSession/TmuxSession/C2/Write/Edit/FindingWrite/Read/Glob/Grep — 这些要么有副作用,要么环境实时变化。 缓存:WebFetch/WebSearch/WeaponRadar — 网络请求和语义检索耗时高,结果相对稳定。
| 类别 | 技术 |
|---|---|
| 语言 | TypeScript 5.7 (ES2022, NodeNext 模块) |
| LLM | OpenAI 兼容 API (Claude / GPT / 任意兼容端点) |
| AI 框架 | OpenAI SDK, LangChain Core |
| MCP | @modelcontextprotocol/sdk |
| 工具集成 | nmap, nuclei, sqlmap, hydra, metasploit, sliver, chisel, subfinder, httpx, katana, ffuf, nikto, wafw00f |
| 进程管理 | tmux (子 Agent 面板 + 交互进程) |
| PoC 数据库 | WeaponRadar (22W Nuclei PoC, BGE-M3 向量搜索, pgvector) |
| 类型系统 | Zod 3.24 |
本项目仅用于授权的安全测试、CTF 竞赛、安全研究和教育目的。
使用者必须:
- 获得目标系统的书面授权
- 遵守当地法律法规
- 仅在授权范围内使用
- 不得用于未授权的渗透测试
Made with ❤️ for the Red Team Community