使用说明
Kali Linux MCP 服务器
一个专业级别的模型上下文协议(MCP)服务器,通过容器化执行提供对Kali Linux安全工具的安全访问。专为与Claude Desktop、Cursor及其他MCP兼容客户端配合使用而设计。
目录
特点/功能
核心能力
- 集装箱化安全工具 - 隔离的Docker环境以确保安全执行
- 网络安全测试 - Nmap、Nikto、DIRB 和自定义命令执行
- WiFi安全审计 - 监控模式,数据包捕获,WPA/WPA2攻击
- JWT安全测试 - 令牌分析和漏洞检测
- VPN集成 - 内置Mullvad VPN支持,用于匿名测试
- 基于环境的配置 - 通过.env文件实现安全的凭证管理
安全特性
- 在隔离环境中进行容器化执行
- 可配置的网络访问(桥接/主机/无模式)
- 支持WiFi操作的特权模式
- 命令白名单和输入验证
- 操作后自动清理
- 用于专业评估的VPN匿名服务
要求
- Python 3.10及以上版本 (MCP SDK 要求)
- Docker (针对容器化Kali工具)
- 紫外线 包管理器
- Mullvad VPN 订阅 (可选,用于VPN功能)
- Java 运行时环境 (为OWASP ZAP自动安装)
- Node.js/npm (为 retire.js 自动安装)
安装
步骤1:安装依赖项
cd /path/to/kali-mcp-server
uv sync
步骤2:构建Docker镜像
docker build -t kali-mcp:latest .
这将安装:
- Kali Linux 基础系统
- 网络安全工具(nmap,nikto,dirb)
- Web应用程序扫描工具(sqlmap、OWASP ZAP、nuclei)
- SSL/TLS 测试(testssl.sh)
- JavaScript安全扫描器(retire.js)
- WiFi安全工具(airmon-ng、reaver、wifite、aircrack-ng)
- Mullvad VPN 客户端
- 用于JWT和安全测试的Python库
- Java运行时和Node.js作为现代工具
步骤3:配置Mullvad VPN(可选)
编辑 .env 使用您的Mullvad凭据进行文件操作:
# Required: Your Mullvad account number
MULLVAD_ACCOUNT_NUMBER=YOUR_16_DIGIT_ACCOUNT_NUMBER
# Optional: Default server location (default: se)
MULLVAD_DEFAULT_SERVER=se
# Optional: Default protocol (default: wireguard)
MULLVAD_DEFAULT_PROTOCOL=wireguard
从(某处)获取您的Mullvad账户 Mullvad.net
配置
MCP客户端设置
在您的MCP客户端配置文件中添加以下内容:
{
"mcpServers": {
"kali-linux": {
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/kali-mcp-server",
"python",
"src/kali_mcp_server/mcp_server.py"
]
}
}
}
重要: 替换 /absolute/path/to/kali-mcp-server 根据您实际的项目路径。
配置文件位置
| 客户端 | 配置文件 |
|---|---|
| 光标 | ~/.cursor/mcp.json |
| Claude Desktop(适用于 macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude 桌面版(Linux) | ~/.config/Claude/claude_desktop_config.json |
| 代理循环 | ~/.config/agent-loop/mcp.json |
替代的VPN配置方法
方法1:环境变量
export MULLVAD_ACCOUNT_NUMBER="YOUR_16_DIGIT_ACCOUNT"
export MULLVAD_DEFAULT_SERVER="se"
export MULLVAD_DEFAULT_PROTOCOL="wireguard"
方法2:运行时配置
使用 vpn_configure_account 服务器启动后使用的工具。
方法3:Docker镜像 编辑Dockerfile,将凭据嵌入到镜像中(不建议在生产环境中使用)。
可用工具
网络安全工具
nmap扫描
执行网络扫描和端口发现。
参数:
target(必填)- 目标IP/主机名/网络scan_type(可选)- 扫描类型:quick,full,或stealthports(可选)- 端口范围(例如。,80,443或者1-1000)
nikto_scan 翻译成中文是“Nikto扫描”。
Web应用程序漏洞扫描器(旧版工具)。
参数:
target(必填)- 目标URLoptions(可选)- 其他 Nikto 命令行选项
dirb_scan
目录和文件暴力破解工具。
参数:
target(必填)- 目标URLwordlist(可选)- 词表文件的路径
网络应用安全工具
sqlmap扫描
自动化SQL注入检测与利用工具。
参数:
target(必填)- 目标URLlevel(可选)- 测试彻底性 1-5(默认:1)risk(可选)- 风险等级 1-3(默认:1)data(可选)- 用于测试表单的POST数据
用例:
- 检测Web应用中的SQL注入漏洞
- 测试 GET 和 POST 参数
- 提取数据库内容以进行授权测试
- 确定数据库类型和版本
zap_scan(在中文语境下,这个词汇可能不直接对应一个常用词汇,但可以理解为“ZAP扫描”或“进行ZAP扫描”,具体翻译取决于上下文,ZAP可能是一个特定的扫描工具或技术的名称)
OWASP ZAP - 现代Web应用安全扫描器。
参数:
target(必填)- 目标URLscan_type(可选)-baseline(快点),full(彻底地),或api(RESTful API)
用例:
- 针对现代Web应用的全面漏洞扫描
- 单页应用(React、Vue、Angular)的自动化测试
- 支持OpenAPI/Swagger的API安全测试
- 主动和被动漏洞检测
- 现代应用中Nikto的更好替代品
“nuclei_scan”可以翻译为“核扫描”或“细胞核扫描”,具体取决于上下文和应用领域。在医学或生物学领域,通常指的是对细胞核或相关结构进行的扫描检查
基于模板的快速漏洞扫描器,具备5000+项检查项。
参数:
target(必填)- 目标URLtemplates(可选)- 模板标签(例如。,cves,misconfigurations,exposures)severity(可选)- 按严重程度过滤:critical,high,medium,low,info
用例:
- CVE检测与利用
- 配置错误检测
- 暴露的管理面板和敏感文件
- 安全头部验证
- 基于自定义模板的检查
testssl_scan(可翻译为“SSL测试扫描工具”或保持原样,因为这是一个专有名词,直接使用原名在技术语境中更为常见)
全面的SSL/TLS配置工具及漏洞扫描器。
参数:
target(必填)- 目标主机名:端口 或 URLchecks(可选)- 特定检查类型
用例:
- 测试HTTPS/TLS配置
- 检测SSL/TLS漏洞(如Heartbleed、POODLE等)
- 分析密码套件强度
- 证书验证
- 非常适合用于测试本地开发服务器的HTTPS连接
retirejs_scan 翻译为中文是:“使用 Retire.js 进行扫描”。
扫描寻找存在漏洞和过时的JavaScript库。
参数:
target(必填)- 目标URL或本地路径
用例:
- 识别易受攻击的JavaScript库(如jQuery、Angular等)
- 检测过时的 npm 包
- 查找客户端依赖中的已知CVE(通用漏洞与披露)
- 第三方脚本的安全审计
安全头部检查
分析HTTP安全头部配置。
参数:
target(必填)- 目标URL
检查以下内容:
Content-Security-Policy- XSS(跨站脚本攻击)和注入攻击防护Strict-Transport-Security- 强制使用HTTPSX-Frame-Options- 点击劫持保护X-Content-Type-Options- 防止MIME类型嗅探Referrer-Policy- 引荐信息控制Permissions-Policy- 浏览器功能控制
用例:
- 验证安全头部实现
- 快速安全态势评估
- 开发/预生产环境验证
- 生产部署验证
VPN管理工具
VPN连接
连接到Mullvad VPN,可选择服务器。
参数:
server(可选)- 服务器位置(例如。,se,nl ams,us-nyc-wg-301)protocol(可选)- VPN 协议:wireguard或者openvpn
VPN断开连接
断开与Mullvad VPN的连接。
VPN状态
检查VPN连接状态和详细信息。
参数:
verbose(可选)- 显示详细状态信息
JWT 安全工具
JWT解码
解码并分析JWT令牌结构。
参数:
token(必需)- 需要解码的JWT令牌verify(可选)- 尝试签名验证secret(可选)- 用于验证的密钥
JWT安全测试
测试JWT令牌的常见安全漏洞。
参数:
token(必填)- 用于测试的JWT令牌endpoint(可选)- 用于测试的API端点
漏洞测试:
- 无算法绕过攻击
- 弱密码暴力破解
- 算法混淆攻击
- 试图篡改代币
- 签名验证绕过
WiFi安全工具
注: 在Docker镜像中提供了WiFi工具,但尚未作为MCP工具公开。它们可以通过以下方式访问: custom_command 如果实施的话,这个工具将(发挥作用)。
可用的无线网络功能:
- 监控模式激活/停用
- 网络扫描与发现
- WPA/WPA2握手捕获
- WPS漏洞测试
- MAC地址欺骗
- 数据包注入与分析
使用示例
Web应用程序安全测试(本地开发)
// 1. Check security headers first
security_headers_check({
target: 'http://localhost:3000',
});
// 2. Scan for vulnerable JavaScript libraries
retirejs_scan({
target: 'http://localhost:3000',
});
// 3. Test for SQL injection vulnerabilities
sqlmap_scan({
target: 'http://localhost:3000/api/users?id=1',
level: 3,
risk: 2,
});
// 4. Test POST forms for SQL injection
sqlmap_scan({
target: 'http://localhost:3000/login',
data: 'username=admin&password=test',
level: 2,
});
// 5. Comprehensive web app scan
zap_scan({
target: 'http://localhost:3000',
scan_type: 'baseline',
});
// 6. Fast vulnerability detection with Nuclei
nuclei_scan({
target: 'http://localhost:3000',
templates: 'cves,misconfigurations,exposures',
severity: 'critical,high',
});
// 7. Test HTTPS configuration (if using SSL)
testssl_scan({
target: 'https://localhost:8443',
});
网络侦察
// Quick port scan
nmap_scan({
target: '192.168.1.0/24',
scan_type: 'quick',
});
// Full scan with OS detection
nmap_scan({
target: 'example.com',
scan_type: 'full',
ports: '1-65535',
});
// Web vulnerability scan
nikto_scan({
target: 'https://example.com',
});
// Directory enumeration
dirb_scan({
target: 'https://example.com',
wordlist: '/usr/share/dirb/wordlists/common.txt',
});
VPN保护的测试
// Connect to VPN before testing
vpn_connect({
server: 'se got',
protocol: 'wireguard',
});
// Verify VPN connection
vpn_status({ verbose: true });
// Perform anonymous testing
nmap_scan({
target: 'authorized-target.com',
scan_type: 'stealth',
});
// Disconnect when done
vpn_disconnect();
JWT安全评估
// Decode JWT token
jwt_decode({
token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
verify: true,
secret: 'suspected-secret',
});
// Security vulnerability testing
jwt_security_test({
token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
endpoint: 'https://api.example.com/protected',
});
专业安全工作流程
// 1. Establish anonymous connection
vpn_connect({ server: 'se got' });
vpn_status({ verbose: true });
// 2. Initial reconnaissance
nmap_scan({
target: 'authorized-target.com',
scan_type: 'stealth',
ports: '1-10000',
});
// 3. Web application security testing
// a. Modern vulnerability scan
zap_scan({
target: 'https://authorized-target.com',
scan_type: 'baseline',
});
// b. Fast CVE and misconfiguration detection
nuclei_scan({
target: 'https://authorized-target.com',
templates: 'cves,misconfigurations,exposures',
severity: 'critical,high',
});
// c. Security headers check
security_headers_check({
target: 'https://authorized-target.com',
});
// d. Check for vulnerable JavaScript libraries
retirejs_scan({
target: 'https://authorized-target.com',
});
// 4. Database security testing
sqlmap_scan({
target: 'https://authorized-target.com/api/products?id=1',
level: 3,
risk: 2,
});
// 5. SSL/TLS security analysis
testssl_scan({
target: 'authorized-target.com:443',
});
// 6. API and JWT security testing
jwt_security_test({
token: 'captured-jwt-token',
endpoint: 'https://api.authorized-target.com/v1/user',
});
// 7. Switch VPN location if needed
vpn_connect({ server: 'nl ams' });
// 8. Additional testing from new IP
nmap_scan({
target: 'authorized-target.com',
scan_type: 'full',
});
// 9. Clean disconnect
vpn_disconnect();
完成本地开发安全审计
// Comprehensive security check for your local web application
const target = 'http://localhost:3000';
// Step 1: Quick security posture
security_headers_check({ target });
// Step 2: Check for vulnerable dependencies
retirejs_scan({ target });
// Step 3: SQL injection testing
sqlmap_scan({
target: `${target}/api/search?q=test`,
level: 2,
risk: 1,
});
// Step 4: Comprehensive vulnerability scan
zap_scan({
target,
scan_type: 'baseline',
});
// Step 5: Template-based checks
nuclei_scan({
target,
templates: 'misconfigurations,exposures',
severity: 'medium,high,critical',
});
// Step 6: If using HTTPS locally
testssl_scan({
target: 'https://localhost:8443',
});
安全考虑因素
法律与道德准则
关键: 仅在您拥有或明确获得书面许可测试的系统上使用此工具。在大多数司法管辖区,未经授权访问计算机系统是违法的。
VPN安全最佳实践
- 凭证保护 - 永远不要提交(代码/更改等)
.env将文件纳入版本控制 - 连接验证 - 在执行敏感操作前,务必验证VPN状态
- “Kill Switch”翻译成中文是“终止开关”或“关闭开关”。这个术语通常用于描述一种机制或功能,用于在特定情况下立即停止或关闭某个系统、设备或程序的运行 - 使用锁定模式以防止流量泄露
- DNS泄漏防护 - 验证DNS查询是否通过VPN路由
- 行动安全 - 假设所有测试活动都可以被记录
集装箱安全
- 最小权限原则 - 用途
--cap-add NET_ADMIN和--cap-add NET_RAW而不是--privileged为了更好的安全性 - 主机网络访问 - 网络扫描和VPN操作仅在需要时使用主机网络模式
- 资源限制 - 考虑实施Docker资源限制
- 图像安全 - 定期更新Docker镜像以应用安全补丁
- 容器隔离 - 非特权操作在桥接网络模式下运行,具有最小权限
WiFi测试警告
- 法律合规 - WiFi测试可能违反您所在司法管辖区的法律
- 网络中断 - 攻击可能会干扰合法的网络服务
- 干扰 - 监控模式可能会干扰您自己的网络连接
- 数据处理 - 捕获的握手数据包含敏感信息
专业使用指南
- 文档 - 详细记录所有安全测试活动的日志
- 授权 - 为所有渗透测试保留书面授权
- 范围遵循(或范围合规) - 仅测试明确包含在范围内的系统
- 负责任的披露 - 通过适当渠道报告漏洞
- 证据链 - 记录VPN使用情况以确保法律合规
发展
项目结构
kali-mcp-server/
├── src/
│ └── kali_mcp_server/
│ ├── __init__.py
│ ├── mcp_server.py # Main MCP server (clean coordinator)
│ ├── core/
│ │ ├── __init__.py
│ │ └── docker_executor.py # Reusable Docker execution engine
│ └── tools/
│ ├── __init__.py
│ ├── network_tools.py # Nmap, Nikto, DIRB
│ ├── web_tools.py # SQLMap, ZAP, Nuclei, testssl, retire.js
│ ├── vpn_tools.py # Mullvad VPN management
│ └── jwt_tools.py # JWT security testing
├── Dockerfile # Kali Linux container definition
├── pyproject.toml # Python dependencies
├── .env # Environment configuration (git-ignored)
├── .env.example # Environment template
└── README.md # This file
架构原则
服务器遵循 DRY(不要重复自己) 并且 KISS(保持简单,别傻了) 原则:
- 模块化设计 - 每个工具类别都在其各自的模块中
- 组合优于继承 - 使用函数,而非复杂的类层次结构
- 单一职责 - 所有工具共用一个Docker执行器
- 全面的文档资料 - 每个函数都有详细的Python文档字符串
开发命令
# Install development dependencies
uv sync --dev
# Format code
uv run black .
# Lint code
uv run ruff check .
# Run tests (if available)
uv run pytest
# Test server locally
uv run python src/kali_mcp_server/mcp_server.py
添加新工具
模块化架构使得添加新工具变得简单直接:
-
创建工具模块 - 在适当的模块中添加功能
tools/- 网络工具 →
network_tools.py - 网络安全
web_tools.py - VPN/匿名性 →
vpn_tools.py - 认证 →
jwt_tools.py - 新类别 → 创建新模块文件
- 网络工具 →
-
导出功能 - 添加到
tools/__init__.py -
注册工具 - 添加到
TOOL_DEFINITIONS并且TOOL_HANDLERS在mcp_server.py -
添加文档 - 使用以下方式包含Python文档字符串:
- 功能描述
- 带有类型和描述的参数
- 退货规格
- 使用示例
-
彻底测试 - 在隔离环境中验证
示例: 添加一个新的网络工具:
# In tools/network_tools.py
async def run_masscan(args: Dict[str, Any]) -> Dict[str, Any]:
"""Execute Masscan port scanner.
Args:
args: Dictionary containing target and rate parameters
Returns:
Dictionary with scan results
"""
target = args["target"]
rate = args.get("rate", 1000)
cmd = ["masscan", target, "-p1-65535", f"--rate={rate}"]
return await execute_in_container(cmd, privileged=True)
Docker镜像定制
可以自定义Dockerfile以添加额外的工具:
# Add custom tools
RUN apt-get update && apt-get install -y \
your-custom-tool \
another-tool \
&& rm -rf /var/lib/apt/lists/*
# Add Python packages
RUN pip3 install --no-cache-dir --break-system-packages \
your-python-package
修改后重建镜像:
docker build -t kali-mcp:latest .
故障排除
服务器无法启动
问题: MCP 客户端中的“No tools, prompts, or resources”错误
解决方案: 确保你正在使用 --directory 在您的MCP配置中设置标志:
"args": ["run", "--directory", "/absolute/path/to/project", "python", "src/kali_mcp_server/mcp_server.py"]
Docker 连接问题
问题: 无法连接到 Docker 守护进程
解决方案:
# Start Docker service
sudo systemctl start docker
# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker
VPN连接失败
问题: VPN无法连接
解决方案:
- 验证Mullvad账户号码
.env文件 - 检查Mullvad订阅是否有效
- 确保已启用特权Docker模式
- 验证主机网络访问是否可用
模块导入错误
问题: ModuleNotFoundError 当启动服务器时
解决方案:
# Reinstall dependencies
uv sync
# Verify uv is using correct Python version
uv run python --version # Should be 3.10+
Nmap 权限错误
问题: Operation not permitted 在运行nmap扫描时
解决方案: 在v1.0.0版本中,这一问题已通过适当的权限管理得到解决。服务器现在使用:
--cap-add NET_ADMIN用于网络管理--cap-add NET_RAW用于原始数据包访问--network host用于网络扫描操作
而不是那种不安全的 --privileged 标志。如果您仍然遇到问题:
# Verify Docker image is updated
docker images | grep kali-mcp
# Rebuild if needed
docker build -t kali-mcp:latest .
# Test manually
docker run --rm --network host --cap-add NET_ADMIN --cap-add NET_RAW \
kali-mcp:latest nmap -F 192.168.1.1
参考文献: 基于 Docker MCP 教程问题 #7
做出贡献
欢迎投稿!请确保:
- 代码遵循现有风格(使用
black和ruff) - 所有安全工具均已正确容器化
- 针对新功能已更新文档
- 测试在隔离环境中进行
许可证
此项目仅提供用于教育和经授权的安全测试目的,不做任何其他用途。
法律声明
警告: 此工具仅设计用于授权的安全测试。
未经授权访问计算机系统是违法的。用户需负责:
- 在测试前获得适当授权
- 遵守所有适用的法律法规
- 以道德和负责任的方式使用该工具
- 对发现的漏洞保密
作者和贡献者不对本工具的滥用承担任何责任。
致谢
- Kali Linux(卡利Linux) - 安全测试平台
- Mullvad VPN(中文可译为“Mullvad虚拟私人网络”或简化为“Mullvad VPN”,根据语境选择是否保留“虚拟私人网络”的全称) - 注重隐私的VPN服务
- 模型上下文协议 - 人类中心主义的MCP标准
- 安全社区 - 对于工具和方法论
资源
版本: 1.0.0 最后更新时间: 2024年10月21日 状态: 生产就绪 - 模块化架构
最新更新
- ✅ 版本1.0.0 (2024年10月21日) - 完成基于模块化架构的全面重构
- 模块化工具组织(遵循DRY和KISS原则)
- 增强Docker安全性(使用最小权限而非--privileged)
- 为所有函数提供全面的Python文档字符串
- 基于组件的设计以提高可维护性
- 修复了nmap执行问题,确保具备适当的NET_ADMIN/NET_RAW权限