使用说明
kali mcp服务器
Docker镜像提供了一个模型上下文协议(MCP)服务器,该服务器公开了Kali Linux安全测试工具,供人工智能助手和开发环境使用。
概述
此映像打包了一套全面的Kali Linux渗透测试和安全评估工具,使其可以通过模型上下文协议访问。MCP服务器允许AI助手和其他MCP兼容客户端以编程方式执行安全测试工具。
什么是MCP? 模型上下文协议是一种标准化的协议,使AI助手能够与外部工具和服务进行交互。该服务器将Kali Linux安全工具作为MCP工具公开,允许AI助手帮助进行授权的安全测试、漏洞评估和渗透测试任务。
开源: 这个项目是开源的,欢迎贡献!请参阅 贡献 关于如何帮助改进这个项目的部分。
⚠️ 关键的法律和道德警告
仅限授权使用
此映像包含可用于危害系统和网络的安全测试工具。此图像的使用仅限于授权的安全测试。
您必须:
- ✅ 仅在您拥有或具有明确书面授权的系统和网络上使用这些工具进行测试
- ✅ 在进行任何安全测试之前,获得适当的授权
- ✅ 遵守您所在司法管辖区的所有适用法律法规
- ✅ 尊重服务条款和可接受的使用政策
- ✅ 负责任地、合乎道德地使用这些工具
您不得:
- ❌ 未经明确授权,在系统或网络上使用这些工具
- ❌ 使用这些工具访问、损坏或破坏未经授权的系统
- ❌ 使用这些工具进行任何非法活动
- ❌ 使用这些工具侵犯隐私或机密
- ❌ 违反计算机欺诈和滥用法律使用这些工具
法律免责声明
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因软件或软件的使用或其他交易而产生或与之相关的任何索赔、损害赔偿或其他责任承担责任,无论是在合同、侵权或其他诉讼中。
通过使用此图像,您承认:
- 您了解使用安全测试工具的法律和道德影响
- 您全权负责确保您的使用符合所有适用法律
- 您只能在您拥有或有明确授权进行测试的系统上使用这些工具
- 此图像的作者和维护者不对任何滥用或非法活动负责
- 在大多数司法管辖区,未经授权访问计算机系统是非法的,可能会导致刑事起诉
管辖权考虑因素:
- 有关安全测试工具的法律因国家和司法管辖区而异
- 此图像中的某些工具在某些司法管辖区可能受到限制或非法
- 您有责任了解并遵守当地法律
- 如有疑问,请在使用前咨询法律顾问
道德使用要求
- 负责任的披露: 如果发现漏洞,请遵循负责任的披露做法
- 范围限制: 仅在明确授权的范围内进行测试
- 数据保护: 请勿访问、复制或泄露未经授权的数据
- 最小影响: 使用测试所需的侵入性最小的方法
- 文档: 对授权的测试活动进行适当的记录
快速开始
拉取图像
docker pull kali-mcp-server
基本用法(MCP客户端的stdio模式)
最低(用于测试):
docker run -i --rm \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
kali-mcp-server
建议(有资源限制):
docker run -i --rm \
-e DEBUG_MCP=1 \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
--memory=4g \
--memory-reservation=1g \
--cpus=4.0 \
kali-mcp-server
使用Docker Compose
version: '3.8'
services:
kali-mcp-server:
image: kali-mcp-server
stdin_open: true
cap_add:
- NET_RAW
- NET_ADMIN
environment:
- DEBUG_MCP=1
deploy:
resources:
limits:
memory: 4g
cpus: '4.0'
reservations:
memory: 1g
restart: unless-stopped
包含内容
基本图像
- Kali Linux滚动 -Kali Linux的最新滚动版本
安全工具
该图像包括按类别组织的一套全面的安全测试工具:
网络扫描和枚举
- nmap -网络映射器和端口扫描器
- masscan -快速端口扫描仪
- 未知 -主动/被动网络发现
- hping3 -网络数据包制作工具
Web应用程序安全测试
- 无 -Web服务器扫描程序
- sqlmap -SQL注入扫描器
- wpscan -WordPress漏洞扫描程序
- 马鹿 -Web应用程序漏洞扫描程序
- 扎普罗西 -OWASP ZAP基线扫描仪
- skipfish -主动web应用程序安全扫描程序
- uniscan -Web漏洞扫描程序
网络发现和模糊
- dirb -目录暴力破解器
- 高斯特 -目录/文件暴力破解器
- ffuf -快速网络模糊器
- wfuzz -Web应用模糊器
信息收集与侦察
- whatweb -Web技术标识符
- 收割机 -电子邮件、子域和主机收集器
- 侦察 -侦察框架
- dnsenum -DNS枚举工具
- dnsrecon -DNS枚举工具
密码攻击
- 约翰 -开膛手约翰密码破解者
- 哈希猫 -高级密码恢复工具
- 九头蛇 -并行登录破解器
- 美杜莎 -并行网络登录破解器
剥削
- 元绘图 -渗透测试框架
- 搜索漏洞利用 -利用数据库搜索工具
网络监控与分析
- tshark -网络协议分析器
- 数据包捕获工具 -数据包分析器
其他工具
- xsser -XSS漏洞扫描程序
- xssstrike -高级XSS检测套件
- 混合 -命令注入开发工具
MCP服务器功能
MCP服务器通过模型上下文协议将所有这些工具作为可调用函数公开,允许:
- 安全工具的程序化执行
- 与人工智能助手集成,用于安全测试工作流程
- 自动化安全评估管道
- 工具编排和结果聚合
使用示例
MCP客户端配置
要与MCP兼容的客户端(如Cursor IDE)一起使用,请在您的 mcp.json:
{
"mcpServers": {
"kali-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DEBUG_MCP=1",
"--cap-add=NET_RAW",
"--cap-add=NET_ADMIN",
"--memory=4g",
"--memory-reservation=1g",
"--cpus=4.0",
"--cpu-shares=1024",
"kali-mcp-server"
]
}
}
}
注: 调整 --memory 和 --cpus 根据您的系统资源。上述配置建议用于16GB+RAM的系统。
分离模式(SSE运输)
对于使用HTTP/SSE传输在分离模式下运行MCP服务器:
docker run -d \
-p 8001:8000 \
--name kali-mcp-server-detached \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
-e DETACHED_MODE=true \
kali-mcp-server
注: 分离模式使用HTTP/SSE传输(可在 http://localhost:8001/sse)而不是stdio传输。对于支持SSE传输的MCP客户端,您可以将其配置为使用此端点。对于大多数MCP客户端(如Cursor),stdio模式(通过 mcp.json)为了获得最佳性能,建议使用。
资源有限执行
对于生产用途,应用资源限制:
docker run -i --rm \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
--memory=4g \
--memory-reservation=1g \
--cpus=4.0 \
--cpu-shares=1024 \
kali-mcp-server
最低建议值: --memory=2g --cpus=2.0 基本工具。
推荐: --memory=4g --cpus=4.0 用于资源密集型工具(ZAP、Metasploit等)。
其他工具和脚本
安全评估脚本
此存储库包括与MCP服务器容器配合使用的全面安全评估脚本:
- 自动化安全测试:使用多种测试方法运行完整的安全评估
- 自定义Python测试:无Docker的应用程序级安全测试
- 基于MCP的测试:通过MCP Docker容器编排Kali工具
- 基于外壳的测试:直接基于Docker exec的安全评估
有关详细文档和使用示例,请参阅 assessment-scripts/README.md.
快速入门:
# Run full assessment
./assessment-scripts/run_assessment.sh --target example.com
# Quick mode
./assessment-scripts/run_assessment.sh --target example.com --quick
测试脚本
测试脚本可用于验证MCP服务器是否正常工作:
- 跨平台Python测试:全面的测试套件
- Windows PowerShell测试:针对Windows进行了优化
- Linux/MOSX Bash测试:Unix优化测试
有关详细文档,请参阅 server-test-scripts/README.md.
快速入门:
# Python (cross-platform)
python3 server-test-scripts/test_mcp_server.py
# Bash (Linux/macOS)
bash server-test-scripts/test_mcp_server.sh
# PowerShell (Windows)
.\server-test-scripts\test_mcp_server.ps1
安全考虑
容器功能
此映像需要提高网络工具的功能才能运行:
- NET_RAW -原始插座访问所需(nmap、masscan等)
- NET_ADMIN -网络管理操作所需
警告: 这些功能赋予了大量的网络访问权限。仅在受信任的环境中运行此容器。
网络接入
容器需要网络访问:
- 执行网络扫描和侦察
- 测试web应用程序
- 进行安全评估
隔离建议:
- 尽可能在隔离的Docker网络中运行
- 使用防火墙规则限制出站连接
- 监控来自容器的网络流量
- 考虑使用只读根文件系统:
--read-only
资源限制
该映像包括内置的每个进程的资源限制(每个工具2GB软内存限制,4GB硬内存限制)。您还应该设置Docker容器级资源约束:
--memory=4g # Limit container memory (recommended)
--memory-reservation=1g # Reserve minimum memory
--cpus=4.0 # Limit CPU cores (recommended)
--cpu-shares=1024 # CPU priority
为什么是这些价值观? WhatWeb(Ruby)、ZAP(Java)和Metasploit(Ruby)等安全工具需要大量内存。4GB的限制为多个并发工具执行提供了空间。
每个进程的资源限制
MCP服务器强制执行每个进程的资源限制,以防止任何单个工具消耗所有容器资源:
| 限制 | 值 | 描述 |
|---|---|---|
| 内存(软) | 2GB | 超出时工具会收到警告 |
| 内存(硬) | 4GB | 如果超过,工具将被终止 |
| CPU时间 | 超时+60s | 防止CPU使用率失控 |
这些限制是通过Linux执行的 rlimit 并独立应用于每个工具执行。
安全最佳实践
- 最小特权原则: 仅授予必要的能力
- 网络隔离: 使用Docker网络隔离容器
- 资源限制: 始终设置内存和CPU限制
- 监控: 监控容器活动和资源使用情况
- 定期更新: 保持图像更新到最新版本
- 审核日志: 维护安全测试活动日志
技术细节
图像规格
- 基础图像:
kalilinux/kali-rolling:latest - 工作目录:
/app - 暴露端口:
8000(用于SSE运输,如果使用) - 入口点:
/app/entrypoint.sh - Python版本: Python 3(系统默认)
Python依赖关系
mcp-模型上下文协议服务器框架python-dotenv-环境变量管理uvicorn-ASGI服务器(用于SSE传输)
图像尺寸
警告: 由于Kali Linux工具集的全面性,此映像很大(几GB)。考虑:
- 使用多阶段构建进行生产
- 移除未使用的工具以减小尺寸
- 如果需要,使用卷装载工具数据
环境变量
DEBUG_MCP-设置为1启用调试日志记录/tmp/mcp_debug.log(默认值:0)DETACHED_MODE-设置为true用于分离/监视模式(默认值:false)PYTHONUNBUFFERED=1-确保MCP协议的即时输出(在Dockerfile中设置)DEBIAN_FRONTEND=noninteractive-防止在构建过程中出现交互式提示(在Dockerfile中设置)
文件结构
/app/
├── mcp_server.py # MCP server implementation
└── entrypoint.sh # Container entrypoint script
故障排除
容器无法启动
问题: 集装箱立即出口
解决:
- 确保您正在使用
-istdio模式的标志:docker run -i ... - 检查容器日志:
docker logs <container-name> - 验证Docker是否具有功能所需的权限
网络工具不工作
问题: nmap、masscan或其他网络工具出现故障
解决:
- 确保
--cap-add=NET_RAW和--cap-add=NET_ADMIN已设定 - 检查是否需要在特权模式下运行(不建议)
- 验证容器的网络连接
MCP协议错误
问题: MCP客户端无法与服务器通信
解决:
- 确保stdin/stdout可用(使用
-i旗帜,不是-d) - 检查MCP客户端配置是否正确
- 查看MCP服务器日志中的错误
- 验证Python依赖项是否安装正确
资源耗竭
问题: 容器崩溃或无响应
解决:
- 设置适当的内存限制:
--memory=4g(推荐) - 设置CPU限制:
--cpus=4.0(推荐) - 缩小安全扫描的范围
- 在工具执行中使用超时
- 对于资源受限的系统,使用最小值:
--memory=2g --cpus=2.0
权限被拒绝错误
问题: 工具报告权限错误
解决:
- 验证是否授予了所需的能力
- 检查容器中的文件权限
- 确保工具具有执行权限(在Dockerfile中处理)
支持
报告问题
如果您遇到错误或有功能请求,请在GitHub上打开一个问题:
- 清晰、描述性的标题
- 问题或功能请求的详细描述
- Docker版本和系统信息
- 相关日志和错误消息
- 重现问题的步骤(针对错误)
- 预期行为与实际行为
获取帮助
如有疑问或支持:
- 查看上面的故障排除部分
- 查看您特定用例的文档
- 确保您使用的是最新版本的映像
贡献
我们欢迎社区的贡献!这个项目是开源的,我们感谢您提供的任何帮助,让它变得更好。
如何做出贡献
有很多方法可以为这个项目做出贡献:
- 🐛 报告错误: 打开一个描述错误的问题,并提供重现步骤
- 💡 建议功能: 分享您对新功能或改进的想法
- 📝 改进文档: 帮助我们使文档更清晰、更全面
- 🔧 解决问题: 提交pull请求以修复bug或实现功能
- 🧪 添加测试: 帮助提高测试覆盖率
- 🔍 代码审查: 审查打开的拉取请求并提供反馈
- 🌐 添加工具: 建议将新的安全工具集成到MCP服务器中
入门指南
- 分叉存储库: 点击GitHub上的“Fork”按钮创建自己的副本
- 克隆你的叉子:
git clone https://github.com/your-username/kali-mcp-server.git - 创建分支:
git checkout -b feature/your-feature-name或git checkout -b fix/your-bug-fix - 进行更改: 实现您的功能或修复
- 测试您的更改: 确保您的更改正确工作,并且不会破坏现有功能
- 提交您的更改: 编写清晰、描述性的提交消息
- 推到你的叉子上:
git push origin feature/your-feature-name - 打开拉取请求: 提交您的PR,明确说明您更改了什么以及为什么更改
开发设置
要设置开发环境,请执行以下操作:
# Clone the repository
git clone https://github.com/your-username/kali-mcp-server.git
cd kali-mcp-server
# Build the Docker image locally
docker build -t kali-mcp-server:dev .
# Test your changes
docker run -i --rm \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
-e DEBUG_MCP=1 \
kali-mcp-server:dev
拉取请求指南
提交pull请求时,请:
- ✅ 让公关人员保持专注: 每个pull请求一个功能或修复
- ✅ 写清楚描述: 解释你的公关是做什么的,为什么
- ✅ 更新文档: 如果您添加了功能,请更新README或相关文档
- ✅ 遵循代码样式: 保持与现有代码风格的一致性
- ✅ 彻底测试: 确保你的更改有效,不要引入回归
- ✅ 参考问题: 相关问题链接(如适用)
- ✅ 保持承诺清洁: 使用有意义的提交消息
代码风格
- 在适用的情况下遵循Python PEP 8风格指南
- 使用清晰、描述性的变量和函数名称
- 为复杂逻辑添加注释
- 保持功能集中和可维护
- 确保错误处理得当
我们正在寻找什么
我们特别欢迎以下捐款:
- 向MCP服务器添加新的安全工具
- 改进错误处理和鲁棒性
- 加强文档和示例
- 优化性能和资源使用
- 添加更好的超时和资源限制处理
- 改进工具输出解析和格式化
- 添加测试并提高测试覆盖率
- 修复错误和安全问题
行为准则
通过参与此项目,您同意:
- 尊重他人,包容他人
- 注重建设性反馈
- 尊重不同的观点和经验
- 为自己的言行承担责任
- 请记住,此项目仅用于授权的安全测试
问题?
如果您对贡献有任何疑问,请随时:
- 打开一个问题
question标签 - 审查现有问题并提取示例请求
- 查阅文档以获取开发指南
感谢您对kali-mcp服务器的贡献! 🎉
额外资源
许可证
MIT许可证
版权所有(c)2024-2025
特此免费向任何获得副本的人授予许可 本软件和相关文档文件(“软件”),以处理 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再许可和/或销售 软件的副本,并允许软件的接收者 根据以下条件提供:
上述版权声明和本许可声明应包含在所有 软件的副本或实质性部分。
软件按“原样”提供,不提供任何形式的明示或明示担保 隐含的,包括但不限于适销性保证, 适用于特定目的且不造成伤害。在任何情况下 作者或版权持有人对任何索赔、损害赔偿或其他 因以下原因产生的责任,无论是在合同、侵权或其他诉讼中, 出于或与软件、使用或其他交易有关 软件。
免责声明(为强调重复)
此软件仅用于授权的安全测试。未经授权的使用是非法的,可能会导致刑事起诉。用户全权负责确保遵守所有适用的法律法规。
记得: 权力越大,责任越大。仅在获得适当授权的情况下,以道德、合法的方式使用这些工具。
