mcpField
G
GHOSTCREW

GHOSTCREW

github.com/gh05tcrew框架与 SDK3.2k2 天前更新

关于 GHOSTCREW

GHOSTCREW 是一款面向渗透测试的 AI Agent 工具箱,采用 MCP 架构,集成 Nmap、Metasploit、FFUF、SQLMap 等工具。它适用于渗透测试、漏洞赏金和威胁狩猎人员,并支持基于 RAG 的本地知识库问答。

主要功能

  1. 01集成 Nmap、Metasploit、FFUF、SQLMap 等工具
  2. 02基于 AI Agent 的渗透测试流程
  3. 03RAG 响应与本地知识库支持
  4. 04报告生成

适用场景

  1. 01对目标进行渗透测试
  2. 02漏洞赏金猎取
  3. 03威胁狩猎与报告编写

MCP 相关

该项目采用 MCP 架构,可作为 MCP 客户端使用其中的 AI Agent 与工具。

详细介绍

PentestAgent Logo

PentestAgent

AI 渗透测试

GH05TCREW%2Fpentestagent | Trendshift

Python License Version Security MCP

https://github.com/user-attachments/assets/a67db2b5-672a-43df-b709-149c8eaee975

要求

  • Python 3.10+
  • OpenAI、Anthropic 或其他 LiteLLM 支持的提供商的 API 密钥

安装

# Clone
git clone https://github.com/GH05TCREW/pentestagent.git
cd pentestagent

# Setup (creates venv, installs deps)
.\scripts\setup.ps1   # Windows
./scripts/setup.sh    # Linux/macOS

# Or manual
python -m venv venv
.\venv\Scripts\Activate.ps1  # Windows
source venv/bin/activate     # Linux/macOS
pip install -e ".[all]"
playwright install chromium  # Required for browser tool

配置

在项目根目录中创建 .env:

ANTHROPIC_API_KEY=sk-ant-...
PENTESTAGENT_MODEL=claude-sonnet-4-20250514

或者使用 OpenAI:

OPENAI_API_KEY=sk-...
PENTESTAGENT_MODEL=gpt-5

任何 LiteLLM 支持的模型 均可使用。

使用中继/自定义 API 基础 URL

通过 OPENAI_API_BASE 将 PentestAgent 指向任意兼容 OpenAI 的端点:

OPENAI_API_KEY=your-relay-token
OPENAI_API_BASE=https://relay.example/v1
PENTESTAGENT_MODEL=openai/<model-name-on-your-relay>

对于兼容 Anthropic 的端点,请改用 ANTHROPIC_API_BASE。 完整的提供商说明和嵌入选项请参阅 .env.example。

运行

pentestagent                      # Launch TUI
pentestagent -t 192.168.1.1       # Launch with target
pentestagent tui --docker         # Run tools in Docker container

Docker

在 Docker 容器中运行工具,以实现隔离并使用预装的渗透测试工具。

选项 1:拉取预构建镜像(最快)
# Base image with nmap, netcat, curl
docker run -it --rm \
  -e ANTHROPIC_API_KEY=your-key \
  -e PENTESTAGENT_MODEL=claude-sonnet-4-20250514 \
  ghcr.io/gh05tcrew/pentestagent:latest

# Kali image with metasploit, sqlmap, hydra, etc.
docker run -it --rm \
  -e ANTHROPIC_API_KEY=your-key \
  ghcr.io/gh05tcrew/pentestagent:kali
选项 2:本地构建
# Build
docker compose build

# Run
docker compose run --rm pentestagent

# Or with Kali
docker compose --profile kali build
docker compose --profile kali run --rm pentestagent-kali

容器运行 PentestAgent,并可访问 Linux 渗透测试工具。Agent 可以直接通过终端工具使用 nmap、msfconsole、sqlmap 等工具。

需要安装并运行 Docker。

模式

PentestAgent 提供三种模式,可通过 TUI 中的命令访问:

模式命令说明
辅助/assist <task>一次性执行单条指令,并运行工具
Agent/agent <task>自主执行单项任务
Crew/crew <task>多 Agent 模式。协调器会启动专门的工作 Agent
交互/interact <task>交互模式。与 Agent 聊天;它会在渗透测试过程中为你提供帮助和指导
TUI 命令
/assist <task>    One single-shot instruction.
/agent <task>     Run autonomous agent on task
/crew <task>      Run multi-agent crew on task
/interact <task>  Chat with the agent in guided mode
/target <host>    Set target
/tools            List available tools
/notes            Show saved notes
/report           Generate report from session
/memory           Show token/memory usage
/prompt           Show system prompt
/conversations    Browse and restore saved conversations
/mcp <list/add>   Visualizes or adds a new MCP server.
/spawn [target] [--scope CIDR] [--model M] [--no-rag] [--no-mcp]
                  Manually spawn a child MCP agent from the TUI.
/despawn <server_name>
                  Terminate and remove a previously spawned child agent.
/clear            Clear chat and history
/quit             Exit (also /exit, /q)
/help             Show help (also /h, /?)

按 Esc 停止正在运行的 Agent。按 Ctrl+Q 退出。

Playbook

PentestAgent 内置了适用于黑盒安全测试的攻击 Playbook。Playbook 为特定安全评估定义了结构化流程。

运行 Playbook:

pentestagent run -t example.com --playbook thp3_web

Playbook 演示

工具

PentestAgent 内置工具,并支持 MCP(模型上下文协议)以便扩展。

内置工具: terminal、browser、notes、web_search(需要 TAVILY_API_KEY)、spawn_mcp_agent

Agent 自我派生(spawn_mcp_agent)

spawn_mcp_agent 是一个内置工具,可让正在运行的 Agent 生成一个自身的子副本,作为通过 stdio 连接的从属 MCP 服务。子进程完全隔离——拥有自己的运行时、LLM 客户端、对话历史和笔记存储——生成后,其完整工具集会注入父 Agent 的可用工具中。

这无需任何外部编排即可实现分层多 Agent 工作流:Agent 可按需生成子 Agent,将范围明确的子任务委派给它们,从而自行组织工作。

参数类型默认值说明
targetstring—传递给子 Agent 的渗透测试目标
scopestring[]—子 Agent 的范围内目标/CIDR
modelstringenv var模型标识符,可覆盖子 Agent 上的 PENTESTAGENT_MODEL
no_ragbooleanfalse跳过子 Agent 上的 RAG 引擎初始化
no_mcpbooleantrue跳过子 Agent 上的外部 MCP 服务连接(推荐)

spawn_mcp_agent 返回后,子 Agent 的工具(run_task、run_task_async、await_tasks 等)会在下一次工具调用时可用。子 Agent 的服务名称会自动分配(例如 child_agent_1),并在结果中返回。

示例——协调器将并行侦察任务委派给两个子 Agent:

# Turn 1: spawn two isolated child agents
spawn_mcp_agent  target="10.0.1.0/24"  scope=["10.0.1.0/24"]
spawn_mcp_agent  target="10.0.2.0/24"  scope=["10.0.2.0/24"]

# Turn 2: children's tools are now available — delegate work asynchronously
child_agent_1__run_task_async  task="Full port scan and service enumeration"
child_agent_2__run_task_async  task="Full port scan and service enumeration"

# Turn 3: wait and collect
child_agent_1__await_tasks  task_ids=["<id1>"]  timeout_seconds=600
child_agent_2__await_tasks  task_ids=["<id2>"]  timeout_seconds=600
child_agent_1__get_task_result  task_id="<id1>"
child_agent_2__get_task_result  task_id="<id2>"
手动控制子 Agent(/spawn 和 /despawn)

除了自动生成的 spawn_mcp_agent 工具外,TUI 还提供两个命令,让你可以在运行中的 Agent 循环之外,手动生成和终止子 Agent。

/spawn
/spawn [target] [--scope CIDR ...] [--model MODEL] [--no-rag] [--no-mcp]

通过 stdio 生成一个新的子 MCP Agent,并将其附加到当前会话。子 Agent 会作为可折叠的终端面板显示在 TUI 侧边栏中,其工具会在下一次工具调用时对父 Agent 可用。

参数说明
target传递给子 Agent 的渗透测试目标(位置参数或 --target)
--scope CIDR一个或多个范围内的 CIDR(可重复指定)
--model MODEL覆盖子 Agent 使用的模型
--no-rag跳过子 Agent 上的 RAG 引擎初始化
--no-mcp跳过子 Agent 上的外部 MCP 服务连接

示例:

/spawn 10.0.1.1
/spawn 10.0.1.1 --scope 10.0.1.0/24 --model claude-sonnet-4-20250514
/spawn --target 10.0.1.1 --scope 10.0.1.0/24 --no-rag
/despawn
/despawn <server_name>

终止由 server_name 标识的子 Agent(例如 child_agent_1),从 TUI 中移除其终端面板,并断开其工具与父会话的连接。使用 /mcp list 查看所有当前活跃的子 Agent 名称。

示例:

/despawn child_agent_1
MCP RAG 工具优化器

当 MCP 服务暴露的工具超过 128 个时,PentestAgent 会自动将完整目录替换为一个 mcp_<server>_rag_optimizer 工具。这个元工具使用嵌入相似度(通过 LiteLLM,默认使用 text-embedding-3-small)检索与当前任务最相关的工具,并将它们注入 Agent 的下一轮对话中,从而在不失去对完整工具集访问权限的情况下,控制上下文窗口的大小。

这个优化器对 Agent 是透明的:Agent 会调用 RAG 工具,使用聚焦的自然语言查询描述所需内容;匹配的工具会在下一轮中直接提供调用。

Agent 使用指南:

参数类型默认值说明
queriesstring[](必填)每项所需能力使用一个聚焦的查询。描述越具体,准确度越高
top_kinteger20每个查询检索的工具数量(最多 128 个)。结果会合并并去重

嵌入向量在启动时计算一次并缓存,因此重复查询速度很快。优化器按服务构建,因此每个拥有大型目录的 MCP 服务都有自己的独立索引。

提示: 每种不同的能力使用一个查询,而不是将所有内容合并到一个查询中。["list open ports on a host", "get process memory usage"] 比 ["list ports and memory and CPU"] 能检索到更好的结果。

MCP 集成

PentestAgent 支持双向 MCP(模型上下文协议):使用外部 MCP 服务作为工具来源,以及将自身暴露为 MCP 服务,以便外部客户端(Claude Desktop、Cursor 等)通过编程方式驱动 PentestAgent。


使用外部 MCP 服务(客户端模式)

配置 mcp_servers.json,将 PentestAgent 连接到任意外部 MCP 服务。配置示例:

{
  "mcpServers": {
    "nmap": {
      "command": "npx",
      "args": ["-y", "gc-nmap-mcp"],
      "env": {
        "NMAP_PATH": "/usr/bin/nmap"
      }
    }
  }
}

将 PentestAgent 暴露为 MCP 服务(服务端模式)

PentestAgent 可以作为 MCP 服务运行,从而允许任何兼容 MCP 的客户端提交任务、检查结果并远程控制 Agent。支持两种传输方式:

STDIO — 用于本地客户端(例如 Claude Desktop、Cursor):

pentestagent mcp_server --type stdio
pentestagent mcp_server --type stdio --target 192.168.1.1 --scope 192.168.1.0/24
pentestagent mcp_server --type stdio --model claude-sonnet-4-20250514 --docker

SSE(HTTP) — 用于远程或网络客户端:

pentestagent mcp_server --type sse
pentestagent mcp_server --type sse --host 0.0.0.0 --port 8080
pentestagent mcp_server --type sse --target 10.0.0.1 --scope 10.0.0.0/24 --docker

SSE 传输方式暴露单个 /mcp 端点,支持 POST(请求)、GET(用于服务端主动推送的持久 SSE 流)和 DELETE(拆除会话)。会话通过 Mcp-Session-Id 标头进行跟踪。

所有 mcp_server 标志:

标志默认值说明
--type(必填)传输方式:stdio 或 sse
--host0.0.0.0SSE 绑定主机
--port8080SSE 绑定端口
--target无主要渗透测试目标(IP / 主机名)
--scope[]范围内的目标/CIDR(以空格分隔)
--model环境变量模型标识符,可覆盖 PENTESTAGENT_MODEL
--dockerfalse使用 DockerRuntime 而非 LocalRuntime
--no-ragfalse跳过 RAG 引擎初始化
--no-mcpfalse跳过外部 MCP 服务连接
示例:Claude Desktop 配置(claude_desktop_config.json)
{
  "mcpServers": {
    "pentestagent": {
      "command": "pentestagent",
      "args": ["mcp_server", "--type", "stdio"]
    }
  }
}

MCP 服务工具参考

作为 MCP 服务运行时,PentestAgent 会公开以下工具:

服务状态与配置

工具描述
get_server_status实时服务状态:就绪情况、各状态的任务数量、主要目标/范围、内存存储大小
get_config主要 Agent 的配置:目标、范围、最大迭代次数、工具列表
update_config更新后续所有任务的目标、范围或最大迭代次数

任务执行

工具描述
run_task提交任务并阻塞,直到任务完成。返回完整结果、使用的工具和笔记快照
run_task_async提交任务并立即返回一个 task_id。使用 get_task_status 轮询

任务检查

工具描述
list_tasks列出所有任务及其状态、目标和摘要。可按状态筛选
get_task_status轮询任务的当前状态和结果预览
get_task_result完整任务结果:最终输出、思考步骤、所有工具调用及结果、笔记快照
await_tasks阻塞,直到一组异步任务 ID 全部完成(每隔 500 ms 轮询一次,超时时间可配置)

任务控制

工具描述
cancel_task按 ID 取消正在运行或等待中的任务

工具管理

工具描述
list_tools列出 Agent 可用的所有工具
enable_tool在主要 Agent 上启用指定工具
disable_tool在主要 Agent 上禁用指定工具

对话历史

工具描述
get_conversation_history返回任务或主要 Agent 的消息历史。支持 limit 参数
reset_conversation清除任务或主要 Agent 的对话历史

记忆

工具描述
store_memory将键值对持久化到进程内存储中
retrieve_memory按精确键检索、按子字符串搜索,或列出所有键
clear_memory删除指定键,或使用 scope='all' 清除所有记忆

可观测性

工具描述
get_logs返回最近的执行日志,可按级别(info / warning / error)筛选
get_metrics运行时指标:任务数量、成功率、工具调用总数、内存和日志大小

异步任务工作流示例

对于运行时间较长的侦察任务,请使用异步模式:

# 1. Submit tasks without blocking
run_task_async  task="Enumerate subdomains of example.com"  target="example.com"
run_task_async  task="Run nmap SYN scan on example.com"     target="example.com"

# 2. Block until both finish (up to 5 minutes)
await_tasks  task_ids=["<id1>", "<id2>"]  timeout_seconds=300

# 3. Retrieve full results
get_task_result  task_id="<id1>"
get_task_result  task_id="<id2>"

CLI 工具管理
pentestagent tools list         # List all tools
pentestagent tools info <name>  # Show tool details
pentestagent mcp list           # List MCP servers
pentestagent mcp add <name> <command> [args...]  # Add MCP server
pentestagent mcp test <name>    # Test MCP connection

对话历史控制

TUI 中的每条用户消息都提供两个内联操作按钮:回退和分支。

回退

点击任意用户消息上的回退,即可将对话截断至该消息之前——界面和 Agent 的内存历史都会同步截断。可用此功能从头重试查询,而不保存被丢弃的路径。

分支

点击任意用户消息上的 >> fork,即可从该处创建对话分支:

  1. 当前完整对话会保存到对话存储中,并显示一个简短的快照 ID。
  2. 随后,对话会截断至所选消息之前(与回退操作相同)。

这样,你就可以从任意位置尝试其他方法,同时仍可通过 /conversations 找回原始对话。


对话历史记录

PentestAgent 会自动保存每次对话,方便你查看、比较和恢复之前的会话。

自动保存会在每次 /assist、/agent、/crew 和 /interact 任务后触发,并在 /clear 前触发。最多保留 20 个对话;较早的对话会自动清理。

**存储位置:**激活工作区时为 workspaces/<active>/memory/conversations/,否则为项目根目录下的 conversations/。每个对话都是一个 JSON 文件。

使用 /conversations 浏览和恢复:

/conversations 命令会在 TUI 中打开一个分栏弹窗:

  • 左侧面板 — 已保存对话的列表,包含标题和日期。
  • 右侧面板 — 元数据预览及前 5 条消息(用户消息为蓝色、Agent 回复为绿色、工具调用为黄色、工具结果为灰色)。计数会显示还有多少条消息。
imagen

选择一个对话并按 Restore,即可将其载入当前会话;按 Close 可关闭弹窗。

知识

  • **RAG:**将方法论、CVE 或字典文件放入 pentestagent/knowledge/sources/,即可自动注入上下文。
  • **笔记:**Agent 会将发现保存到 loot/notes.json,并归入相应类别(credential、vulnerability、finding、artifact)。笔记会跨会话保留,并注入 Agent 上下文。
  • **Shadow Graph:**在 Crew 模式下,协调器会根据笔记构建知识图谱,以推导战略洞察(例如,“我们有主机 X 的凭据”)。

项目结构

pentestagent/
  agents/         # Agent implementations
  config/         # Settings and constants
  interface/      # TUI and CLI
  knowledge/      # RAG system and shadow graph
  llm/            # LiteLLM wrapper
  mcp/            # MCP client and server configs
  playbooks/      # Attack playbooks
  runtime/        # Execution environment
  tools/          # Built-in tools

开发

pip install -e ".[dev]"
pytest                       # Run tests
pytest --cov=pentestagent    # With coverage
black pentestagent           # Format
ruff check pentestagent      # Lint

法律声明

仅可对你明确获准测试的系统进行测试。未经授权访问属于违法行为。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。