项目简介
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在需要时获取和使用。
- 工作区管理: 提供有组织的文件目录结构,用于存储和管理渗透测试过程中生成的所有文件和数据,支持自定义工作区配置。
安装步骤
- 准备环境: 确保您的系统已安装Docker和Docker Compose。
- 启动服务器: 在仓库根目录打开终端,运行以下命令启动Kali MCP服务器容器:
docker compose up --build -d - 验证运行: 运行以下命令检查服务器容器是否正在运行:
docker ps | grep kali-mcp-server - 配置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容器的智能交互。
信息
分类
开发者工具