项目简介

Kali容器化渗透测试助手是一个强大的Model Context Protocol (MCP) 服务器,旨在为大型语言模型(LLM)客户端提供一个安全、隔离的Kali Linux环境。它允许LLM通过标准化的工具接口,执行各种渗透测试命令、管理后台任务、监控带外(OOB)交互,并组织渗透测试工件,从而实现半自动化安全研究和渗透测试。

主要功能点

  • 容器化命令执行: 在隔离的Kali Linux容器中安全地运行各种渗透测试和安全研究工具,包括'nmap'、'masscan'、'dirb'、'ffuf'、'whatweb'、'nikto'、'dig'、'whois'、'dnsrecon'、'curl'、'wget'、'jq'、'exiftool'以及各种'Seclists'字典等。
  • 后台任务管理: 对于耗时较长的命令(超过60秒),服务器会自动将其作为后台任务运行,并提供状态查询和取消功能,确保长时间任务不阻塞LLM交互。
  • Interactsh集成: 内置对Interactsh的支持,用于监控和检测盲注漏洞等带外交互,并可配置输出文件路径。
  • API服务管理: 集中配置和管理GitHub、Shodan、VirusTotal等侦察服务的API密钥,方便LLM在需要时获取和使用。
  • 工作区管理: 提供有组织的文件目录结构,用于存储和管理渗透测试过程中生成的所有文件和数据,支持自定义工作区配置。

安装步骤

  1. 准备环境: 确保您的系统已安装Docker和Docker Compose。
  2. 启动服务器: 在仓库根目录打开终端,运行以下命令启动Kali MCP服务器容器:
    docker compose up --build -d
  3. 验证运行: 运行以下命令检查服务器容器是否正在运行:
    docker ps | grep kali-mcp-server
  4. 配置API密钥与工作区: 根据您的需求,编辑项目根目录下的'config.toml'文件,配置Interactsh设置、API服务密钥(如Shodan、GitHub)以及工作区目录结构。

服务器配置

在您的MCP兼容客户端(如Claude Code、Gemini CLI、VS Code Copilot等)中,您需要添加一个MCP服务器配置。请注意,为了安全和隔离,务必禁用客户端内置的终端或命令执行功能,确保所有安全工具都在Kali容器内运行。

以下是配置MCP服务器的示例信息(您需要将其添加到客户端的配置中):

  • Claude Desktop客户端配置示例: 在终端中运行以下命令:

    claude mcp add --transport stdio kali-mcp-server "docker exec -i kali-mcp-server python3 /app/kali_server.py"
    • 'kali-mcp-server': 您为MCP服务器指定的名字。
    • '--transport stdio': 指定通信方式为标准输入输出流。
    • '"docker exec -i kali-mcp-server python3 /app/kali_server.py"': 启动MCP服务器的命令。它会在'kali-mcp-server'这个Docker容器中执行Python程序'/app/kali_server.py'。
  • Gemini CLI客户端配置示例: 在终端中运行以下命令:

    gemini mcp add kali-mcp-server "docker exec -i kali-mcp-server python3 /app/kali_server.py"
    • 'kali-mcp-server': 您为MCP服务器指定的名字。
    • '"docker exec -i kali-mcp-server python3 /app/kali_server.py"': 启动MCP服务器的命令。
  • VS Code (Copilot) 客户端配置示例: 在您的VS Code工作区 '.vscode/' 目录下创建或编辑 'mcp.json' 文件,并添加以下内容:

    {
      "servers": {
        "kali-mcp-server": {
          "type": "stdio",
          "command": "docker",
          "args": [
            "exec",
            "-i",
            "kali-mcp-server",
            "python3",
            "/app/kali_server.py"
          ]
        }
      }
    }
    • '"kali-mcp-server"': 您为MCP服务器指定的名字。
    • '"type": "stdio"': 指定通信方式为标准输入输出流。
    • '"command": "docker"': 启动MCP服务器的主命令。
    • '"args"': 启动命令的参数列表。
      • '"exec"': Docker命令,用于在运行中的容器内执行命令。
      • '"-i"': 保持标准输入(stdin)打开,允许交互。
      • '"kali-mcp-server"': 目标Docker容器的名称。
      • '"python3"': 在容器内执行Python解释器。
      • '"/app/kali_server.py"': MCP服务器主程序的路径。

配置完成后,请务必重启您的MCP客户端以加载Kali MCP服务器。

基本使用方法

一旦服务器配置并启动,您的LLM客户端将能够通过以下工具与Kali容器交互:

  • 执行命令: LLM可以使用名为'run_kali_command'的工具,在Kali容器中运行任何渗透测试或安全研究命令。例如,LLM可以要求执行'nmap -sV target.com'来扫描目标服务版本。
  • 管理后台任务: 对于长时间运行的命令,LLM可以使用'get_job_status'查询特定任务的状态,使用'list_background_jobs'列出所有后台任务,或使用'cancel_job'取消正在运行的任务。
  • 监控OOB交互: LLM可以调用'start_interactsh'工具启动Interactsh客户端,生成用于带外交互的有效载荷URL,然后使用'poll_interactsh'来检索任何已记录的带外交互,使用'stop_interactsh'停止监控。
  • 获取工作区信息: LLM可以使用'get_workspace_info'工具,了解当前渗透测试工作区的目录路径和结构配置。
  • 获取API密钥: LLM可以调用'get_service_tokens'工具,来获取已在'config.toml'中配置的外部服务API密钥,以便在侦察和情报收集中使用。

LLM客户端会根据这些工具的描述和输入规范,自动生成调用这些工具的请求,从而实现与Kali容器的智能交互。

信息

分类

开发者工具