noir2ganesha/phantom-ethical-redteam

GitHub: noir2ganesha/phantom-ethical-redteam

一个基于LLM的自主攻击性安全代理,能够自动完成从侦察到利用的完整渗透测试流程。

Stars: 0 | Forks: 0

# Phantom - 道德红队 ![Phantom 实战](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1cf4e4ae73164330.png) Phantom 是一个开源的自主攻击性安全代理。将其指向授权目标,它会自行推理整个攻击链——无需预定义阶段、无需手把手指导、无需固定脚本。它形成自己的攻击假设、同时 pursuing 多个向量、在需要时编写自定义工具,并在完成后提供完整的汇报。 **这个项目旨在证明一点:** AI 可以自主完成攻击性安全。 ## 为什么选择 Phantom? 大多数安全工具都是运行清单。Phantom 不是。它: - **像攻击者一样推理** — 形成并发假设,优先 pursue 影响力最大的,放弃死胡同并生成新向量 - **链接发现** — 将漏洞组合成真正的利用路径(SSRF + 内部元数据 = 云凭证 = RCE) - **编写自己的工具** — 当内置工具不够时,它动态生成并执行自定义 Python 脚本 - **不会自行停止** — 任务运行直到所有攻击向量都被穷尽,而不是直到计时器响起 - **精确汇报** — 时间线、攻击图、完整链重建,不遗漏任何内容 ## 快速开始 ### 一键安装 **Linux / macOS:** ``` curl -fsSL https://raw.githubusercontent.com/kmdn-ch/phantom-ethical-redteam/main/get.sh | bash ``` **Windows (PowerShell):** ``` irm https://raw.githubusercontent.com/kmdn-ch/phantom-ethical-redteam/main/get.ps1 | iex ``` ### 手动安装 ``` git clone https://github.com/kmdn-ch/phantom-ethical-redteam.git ~/phantom cd ~/phantom chmod +x install.sh ./install.sh ``` ### 运行任务(v3 自主引擎) ``` source .venv/bin/activate export $(cat .env) python3 agent/main.py --v3 ``` ### 恢复任务 ``` python3 agent/main.py --v3 --resume 20260318_120000 ``` ## 支持的 LLM 提供商 Phantom 开箱即用地支持以下所有提供商。通过 Ollama 支持本地模型——无需云端。 | 提供商 | 默认模型 | API 密钥环境变量 | |---|---|---| | Anthropic (Claude) | `claude-sonnet-4-6` | `ANTHROPIC_API_KEY` | | OpenAI (ChatGPT) | `gpt-5.4` | `OPENAI_API_KEY` | | xAI (Grok) | `grok-4-20-beta` | `XAI_API_KEY` | | Google (Gemini) | `gemini-3.0-pro` | `GEMINI_API_KEY` | | Mistral | `mistral-large-latest` | `MISTRAL_API_KEY` | | DeepSeek | `deepseek-chat-v3.2` | `DEEPSEEK_API_KEY` | | Ollama (本地) | `deepseek-v3.2:cloud` | *(无)* | ## 工具箱内容 ### 侦察 - **子域名发现** — 通过 crt.sh + HackerTarget 进行被动枚举 - **端口扫描** — Nmap 支持 quick、service、full 和 vuln 扫描模式 - **技术指纹识别** — WhatWeb + Python 后备方案 - **自动侦察** — 单次调用运行 nmap + whatweb + 敏感文件探测,并从结果生成攻击假设 ### 扫描与模糊测试 - **CVE 扫描** — Nuclei 用于已知漏洞和错误配置 - **WordPress 扫描器** — 版本、用户、插件、xmlrpc、debug.log、配置备份 - **目录模糊测试** — ffuf 用于隐藏端点 - **SQL 注入** — sqlmap 检测和利用 - **Payload 库** — PayloadsAllTheThings 集成(13 个攻击类别) - **动态工具锻造** — LLM 为任何未覆盖的内容编写并执行针对性 Python 脚本 ### 利用与网络 - **自动利用** — 获取已确认的发现并立即生成 + 运行针对性利用脚本 - **凭证暴力破解** — Hydra 用于 HTTP、SSH、FTP、MySQL、RDP - **Metasploit** — 模块搜索、利用执行、辅助扫描 - **JWT 攻击** — HS256 暴力破解、alg=none、声明篡改、令牌伪造 - **GraphQL 枚举** — 内省、模式转储、敏感字段发现 - **权限提升** — Linux/Windows 枚举(SUID、sudo、Docker、SeImpersonate) - **网络 MITM** — 通过 Bettercap 进行 ARP 探测(仅 Linux) ### 证据与隐蔽 - **截图** — Playwright / wkhtmltoimage / Chromium 捕获 - **认证管理** — bearer、basic、cookie、每个目标的自定义请求头 - **隐蔽配置** — 4 种模式(silent / stealthy / normal / aggressive),支持 UA 轮换和代理 ### 报告 - **报告生成** — Markdown + HTML + 可选 PDF - **任务差异** — 比较会话以跟踪修复(新增 / 已解决 / 持续) - **风险评分** — 聚合发现的 CVSS - **范围检查** — 每次网络操作前强制执行硬边界 - **日志读取器** — 解析 Nuclei JSONL、ffuf JSON 和其他工具输出 ## 工作原理 Phantom v3 运行一个 **计划-行动-观察-反思** 循环,由 **假设优先级队列** 驱动——而非回合计数器。 ``` Mission start │ ├─ Seed: 6 concurrent initial hypotheses per target │ "SQLi/SSTI/SSRF on all input surfaces" │ "Exposed .env/.git/swagger/admin endpoints" │ "Default credentials on auth surfaces" │ "Open ports → targeted service attacks" │ ... │ └─ Loop (runs until all hypotheses exhausted): PLAN — LLM picks highest-priority hypotheses, creates multi-vector plan ACT — Runs up to 4 tools in parallel OBSERVE — Extracts findings, feeds new hypotheses back into queue REFLECT — If stalled: pivot. If critical found: escalate immediately. STRATEGIST (every 5 turns) — Injects high-level attack chain analysis ``` 每个已确认的发现都会自动生成后续假设: - 注入发现 → 盲 SQLi + 基于时间 + SSTI - 暴露的配置文件 → 凭证读取 + 备份文件搜索 - 认证弱点 → 权限提升 + 密码重用 - 开放的数据库端口 → 默认凭证 + 外部访问测试 - 管理面板 → 默认凭据 + 认证绕过 + 权限提升 任务在队列被耗尽时结束——而非计时器耗尽时。 ## 任务示例 ``` === Turn 1/100 === Phantom: Forming initial hypotheses. Pursuing 3 vectors simultaneously. >> Running: run_auto_recon, run_nuclei, forge_tool [INFO] Port 22 open: OpenSSH 8.9 [INFO] Port 443 open: HTTPS / Apache 2.4.51 [HIGH] CVE-2023-2745: wp-admin path traversal [CRITICAL] SSTI confirmed: /search?q={{7*7}} returns 49 === Turn 2/100 === Phantom: Critical SSTI confirmed. Spawning exploit chain immediately. >> Running: forge_tool (RCE via SSTI), screenshot [CRITICAL] RCE: /search?q={{"".__class__.__mro__[1]...}} returns uid=33(www-data) [CRITICAL] Persistence: cron job written to /etc/cron.d/phantom === MISSION COMPLETE === Findings: 14 | Chains: 3 | Critical: 2 | High: 5 ``` ## 配置 ``` # config.yaml provider: "anthropic" # anthropic | openai | grok | gemini | ollama | mistral | deepseek model: "" # leave empty for provider default autonomous: true max_autonomous_turns: 100 # hard cap; mission usually ends earlier via hypothesis exhaustion pause_every_n_turns: 10 # operator checkpoint interval (v2 only; v3 runs fully autonomous) # 性能 max_parallel_tools: 4 # concurrent tool execution per turn requests_per_second: 5 # rate limit for tool calls retry_max: 3 # retries with exponential backoff # 隐形 stealth_profile: "normal" # silent | stealthy | normal | aggressive # 代理: "http://127.0.0.1:8080" # 通过 Burp 路由 ``` ### 范围文件(`scopes/current_scope.md`) ``` # 授权目标 https://target.com https://api.target.com 192.168.1.0/24 # 授权: 渗透测试合同签署于 2026-03-15 ``` ## 项目结构 ``` phantom/ agent/ main.py # Entry point (--v3 flag for autonomous engine) orchestrator.py # PAOR loop + hypothesis engine integration agent_client.py # v2 legacy loop providers/ # 7 LLM provider adapters reasoning/ hypothesis_engine.py # Priority queue driven by findings planner.py # XML plan block parser reflector.py # Stall detection + pivot decisions strategist.py # Attack chain analysis context_manager.py # Token-budget-aware prompt builder tools/ # Tool implementations models/ # Data models (findings, graph, events, state) prompts/ system_prompt_v3.txt # Attacker-mindset system prompt initial_mission.txt # Aggressive mission seed template forge_tool_prompt.txt # Script generation format instructions tests/ # 246 unit tests scopes/ # Scope templates install.sh / install.ps1 # Interactive installers get.sh / get.ps1 # One-liner downloaders ``` ## 任务差异(修复跟踪) 比较两个会话以查看已修复的内容和仍存在的问题: ``` Mission Diff: session_A -> session_B NEW (1): [+] [HIGH] CVE-2024-1234 RESOLVED (8): [-] [CRITICAL] CVE-2023-2745 [-] [HIGH] SQLi on /api/users PERSISTENT: 7 findings ``` ## 更新日志 ### v3.2.0 - **强制并行执行** — LLM 必须每轮响应至少调用 3 个工具;如果只返回 1 个,orchestrator 会自动用待处理的高优先级假设进行提示,并强制并行批次 - **消除基于回合的用户体验** — "Turn X" 消息移至调试日志;操作员只看到工具执行(`[*] Executing 4 tools in parallel: ...`)和发现(`[!] [CRITICAL] ...`) - **爆发启动模式** — 任务启动时通过 `HypothesisEngine.burst_launch()` 为每个目标植入 12 个分层假设(注入、暴露、认证、CVE、管理、模糊测试、侦察) - **`fetch_exploit` 工具** — 搜索 ExploitDB(searchsploit)和 GitHub PoC 仓库以查找 CVE 和已知漏洞;通过沙箱下载并针对授权目标执行利用脚本 - **Bug 修复** — 修复了死代码 `_check_mission_complete` 假设路径;修复了纯文本回合上的陈旧发现注入;更新了 7 个陈旧测试以匹配当前输出格式 - **253 个单元测试**(从 246 个增加) ### v3.1.0 - **假设驱动引擎** — 任务由攻击假设的优先级队列驱动,而非回合计数器。任务在所有攻击向量都被穷尽时结束。 - **自动后续生成** — 每个已确认的发现都会自动生成针对性的后续假设(注入 → 盲 SQLi + SSTI;认证弱点 → 权限提升;暴露端口 → 针对服务攻击) - **固定的反思管道** — 反思阶段是一个什么都不做的存根;现在解析 `` 块并驱动实际的 pivot 决策 - **战略家反馈循环** — 战略分析结果现在作为指导消息重新注入到 LLM 对话中 - **真实工具输出解析** — 发现提取现在处理实际的 nmap/nuclei/whatweb/ffuf 输出格式(不仅仅是工具从不发出的 `[CRITICAL]` 标签) - **激进系统提示** — 从 53 行被动指令重写为 137 行攻击者心态推理,涵盖 SSTI、SSRF、原型污染、JWT 伪造、反序列化、0day 模糊测试和链式思考示例 - **多向量任务植入** — 初始消息为每个目标植入 6 个跨所有攻击面类别的并发假设 - **最大回合数提高** — 默认 80 → 100(任务通常通过假设穷尽更早结束) ### v3.0.x - v3 PAOR orchestrator 替换 v2 线性循环 - 动态工具锻造(LLM 生成并执行自定义 Python 脚本) - MissionMemory 与 SQLite 持久化- AttackGraph 与 Mermaid 可视化 - ReflectionLayer 具有停滞检测和 pivot 决策 - XML 计划块解析用于结构化 LLM 输出 - 246 个单元测试 ## 法律声明 此工具仅用于**授权的渗透测试**。在未经书面许可的系统上运行它是非法的。作者不对滥用负责。 *KMDN*(瑞士)构建
标签:AI代理, AI安全, AI风险缓解, autonomous agent, Chat Copilot, CISA项目, Claude Code, CreateRemoteThread, CTI, LLM, LLM评估, MCP, offensive security, Ollama, PE 加载器, Python, RCE, red team, SSRF, Unmanaged PE, Web报告查看器, 凭证获取, 攻击链, 数据展示, 无后门, 无线安全, 横向移动, 特征检测, 红队, 编程规范, 网络安全, 自动化渗透, 逆向工具, 隐私保护