项目简介

Pentest MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,专为渗透测试人员设计。它集成了 Nmap、Go/Dirbuster、Nikto 和 John the Ripper 等常用的安全工具,并通过 MCP 协议将这些工具以标准化的方式提供给 LLM 客户端,使得客户端可以通过调用服务器端工具执行各种安全扫描和评估任务。此服务器旨在简化渗透测试环境的搭建和工具的使用,让安全专业人员能够更专注于测试本身。

主要功能点

  • 集成多种渗透测试工具: 内置 Nmap(网络扫描)、Go/Dirbuster(目录爆破)、Nikto(Web漏洞扫描)、John the Ripper(密码破解)等实用工具。
  • MCP 标准协议: 基于 MCP 协议与客户端通信,提供标准化的工具调用和资源管理接口。
  • 远程工具调用: LLM 客户端可以通过 MCP 协议远程调用服务器上的渗透测试工具,执行安全扫描任务。
  • 结果管理与分析: 服务器端记录扫描结果,并提供基础的分析能力,例如漏洞分级。
  • 用户模式切换: 支持学生和专业模式,根据不同用户提供不同详细程度的反馈和建议。
  • 可扩展性: 模块化设计,可以根据需要添加或移除工具。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/Karthikathangarasu/pentest-mcp.git
    cd pentest-mcp
  2. 安装依赖: 虽然文档中提到 'requirements.txt',但仓库中没有找到该文件。根据代码,项目使用了 Node.js 环境,并且 'package.json' 文件缺失,可能需要手动安装依赖。不过,从代码来看,主要的依赖是 '@modelcontextprotocol/sdk' 和 'node-nmap',以及一些常用的 Node.js 库如 'zod', 'fast-xml-parser' 等。建议先尝试直接运行,看是否报错,再根据报错信息安装缺失的依赖。

    如果需要手动安装依赖,可以尝试初始化 'package.json' 并安装:

    npm init -y
    npm install @modelcontextprotocol/sdk node-nmap zod fast-xml-parser
  3. 下载最新版本: 访问 Releases section 下载最新版本的服务器。但实际上该仓库没有 Release 版本,所以直接使用克隆下来的代码即可。

  4. 配置服务器: 配置文件位于 'config' 目录。但实际上该仓库没有 'config' 目录或配置文件。服务器的配置主要通过代码中的默认设置和工具的参数进行。 用户可能需要根据实际情况修改 'src/index.ts' 文件中的代码,例如调整 Nmap 等工具的默认参数。

  5. 启动服务器: 运行以下命令启动服务器:

    ./start-server.sh

    注意: 仓库中没有 'start-server.sh' 文件。根据 'README.md' 的描述和 'index.ts' 的代码,推测启动命令应该是直接运行 'index.ts' 文件。

    尝试使用以下命令启动服务器 (需要 Node.js 环境):

    npm install typescript ts-node  # 如果没有安装 TypeScript 和 ts-node,先安装
    npx ts-node src/index.ts

    或者,如果先编译成 JavaScript 再运行:

    npm install typescript
    npx tsc
    node dist/index.js # 假设编译输出目录为 dist

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置连接到 Pentest MCP 服务器的信息。以下是一个可能的 JSON 配置示例,用于 'stdio' 传输方式:

{
  "serverName": "pentest-mcp-server",
  "command": "npx",
  "args": [
    "ts-node",  // 或者 "node", 如果编译成了 JavaScript
    "src/index.ts" // 或者 "dist/index.js"
  ],
  "transport": "stdio",
  "description": "Pentest MCP Server for penetration testing tools",
  "version": "0.1.0"
}

参数注释:

  • 'serverName': 服务器的名称,客户端用于标识。可以自定义,例如 "pentest-mcp-server"。
  • 'command': 启动服务器进程的命令。这里假设使用 'ts-node' 直接运行 TypeScript 代码,或者使用 'node' 运行编译后的 JavaScript 代码。请根据实际启动方式选择 "ts-node" 或 "node"。
  • 'args': 传递给启动命令的参数。
    • '"src/index.ts"' 或 '"dist/index.js"': 服务器入口文件路径。请根据实际文件路径和启动方式修改。
  • 'transport': MCP 服务器使用的传输协议。这里配置为 'stdio',表示使用标准输入输出流进行通信。'Pentest MCP Server' 代码中使用了 'StdioServerTransport',因此这里应配置为 'stdio'。
  • 'description': 服务器的描述信息,用于客户端显示。可以自定义。
  • 'version': 服务器版本号,与 'src/index.ts' 中 'McpServer' 构造函数的 'version' 字段保持一致。

注意: 请确保 MCP 客户端和服务器端都安装了 Node.js 环境,并且客户端能够找到并执行配置中指定的 'command' 和 'args'。

基本使用方法

  1. 启动 Pentest MCP Server: 按照上述安装步骤和服务器配置启动服务器。

  2. 配置 MCP 客户端: 在 MCP 客户端中,添加上述 JSON 配置,连接到 Pentest MCP Server。

  3. 使用客户端调用工具: 连接成功后,客户端应该能够发现 Pentest MCP Server 提供的工具,例如 'nmapScan', 'gobuster', 'nikto', 'runJohnTheRipper' 等。

  4. 执行渗透测试任务: 在客户端中,根据需要调用相应的工具,并提供工具所需的参数(例如目标地址、扫描选项等),即可远程执行渗透测试任务,并获取结果。

例如,在客户端中调用 'nmapScan' 工具,可以扫描指定目标主机的开放端口和服务版本。调用 'nikto' 工具,可以扫描目标 Web 应用的常见漏洞。

信息

分类

开发者工具