安全工具容器化服务

Kali Linux MCP Server是一个专业级的安全工具容器化执行平台,通过Docker隔离环境提供Kali Linux安全工具的访问,支持网络测试、WiFi审计、JWT安全测试等功能,适用于授权渗透测试和安全研究。

  • by AlessandroAnnini
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AlessandroAnnini/kali-mcp-server

使用说明

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,或 stealth
  • ports (可选)- 端口范围(例如。, 80,443 或者 1-1000)

nikto_scan 翻译成中文是“Nikto扫描”。

Web应用程序漏洞扫描器(旧版工具)。

参数:

  • target (必填)- 目标URL
  • options (可选)- 其他 Nikto 命令行选项

dirb_scan

目录和文件暴力破解工具。

参数:

  • target (必填)- 目标URL
  • wordlist (可选)- 词表文件的路径

网络应用安全工具

sqlmap扫描

自动化SQL注入检测与利用工具。

参数:

  • target (必填)- 目标URL
  • level (可选)- 测试彻底性 1-5(默认:1)
  • risk (可选)- 风险等级 1-3(默认:1)
  • data (可选)- 用于测试表单的POST数据

用例:

  • 检测Web应用中的SQL注入漏洞
  • 测试 GET 和 POST 参数
  • 提取数据库内容以进行授权测试
  • 确定数据库类型和版本

zap_scan(在中文语境下,这个词汇可能不直接对应一个常用词汇,但可以理解为“ZAP扫描”或“进行ZAP扫描”,具体翻译取决于上下文,ZAP可能是一个特定的扫描工具或技术的名称)

OWASP ZAP - 现代Web应用安全扫描器。

参数:

  • target (必填)- 目标URL
  • scan_type (可选)- baseline (快点), full (彻底地),或 api (RESTful API)

用例:

  • 针对现代Web应用的全面漏洞扫描
  • 单页应用(React、Vue、Angular)的自动化测试
  • 支持OpenAPI/Swagger的API安全测试
  • 主动和被动漏洞检测
  • 现代应用中Nikto的更好替代品

“nuclei_scan”可以翻译为“核扫描”或“细胞核扫描”,具体取决于上下文和应用领域。在医学或生物学领域,通常指的是对细胞核或相关结构进行的扫描检查

基于模板的快速漏洞扫描器,具备5000+项检查项。

参数:

  • target (必填)- 目标URL
  • templates (可选)- 模板标签(例如。, cves,misconfigurations,exposures)
  • severity (可选)- 按严重程度过滤: critical,high,medium,low,info

用例:

  • CVE检测与利用
  • 配置错误检测
  • 暴露的管理面板和敏感文件
  • 安全头部验证
  • 基于自定义模板的检查

testssl_scan(可翻译为“SSL测试扫描工具”或保持原样,因为这是一个专有名词,直接使用原名在技术语境中更为常见)

全面的SSL/TLS配置工具及漏洞扫描器。

参数:

  • target (必填)- 目标主机名:端口 或 URL
  • checks (可选)- 特定检查类型

用例:

  • 测试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 - 强制使用HTTPS
  • X-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安全最佳实践

  1. 凭证保护 - 永远不要提交(代码/更改等) .env 将文件纳入版本控制
  2. 连接验证 - 在执行敏感操作前,务必验证VPN状态
  3. “Kill Switch”翻译成中文是“终止开关”或“关闭开关”。这个术语通常用于描述一种机制或功能,用于在特定情况下立即停止或关闭某个系统、设备或程序的运行 - 使用锁定模式以防止流量泄露
  4. DNS泄漏防护 - 验证DNS查询是否通过VPN路由
  5. 行动安全 - 假设所有测试活动都可以被记录

集装箱安全

  1. 最小权限原则 - 用途 --cap-add NET_ADMIN 和 --cap-add NET_RAW 而不是 --privileged 为了更好的安全性
  2. 主机网络访问 - 网络扫描和VPN操作仅在需要时使用主机网络模式
  3. 资源限制 - 考虑实施Docker资源限制
  4. 图像安全 - 定期更新Docker镜像以应用安全补丁
  5. 容器隔离 - 非特权操作在桥接网络模式下运行,具有最小权限

WiFi测试警告

  1. 法律合规 - WiFi测试可能违反您所在司法管辖区的法律
  2. 网络中断 - 攻击可能会干扰合法的网络服务
  3. 干扰 - 监控模式可能会干扰您自己的网络连接
  4. 数据处理 - 捕获的握手数据包含敏感信息

专业使用指南

  1. 文档 - 详细记录所有安全测试活动的日志
  2. 授权 - 为所有渗透测试保留书面授权
  3. 范围遵循(或范围合规) - 仅测试明确包含在范围内的系统
  4. 负责任的披露 - 通过适当渠道报告漏洞
  5. 证据链 - 记录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

添加新工具

模块化架构使得添加新工具变得简单直接:

  1. 创建工具模块 - 在适当的模块中添加功能 tools/

    • 网络工具 → network_tools.py
    • 网络安全 web_tools.py
    • VPN/匿名性 → vpn_tools.py
    • 认证 → jwt_tools.py
    • 新类别 → 创建新模块文件
  2. 导出功能 - 添加到 tools/__init__.py

  3. 注册工具 - 添加到 TOOL_DEFINITIONS 并且 TOOL_HANDLERS 在 mcp_server.py

  4. 添加文档 - 使用以下方式包含Python文档字符串:

    • 功能描述
    • 带有类型和描述的参数
    • 退货规格
    • 使用示例
  5. 彻底测试 - 在隔离环境中验证

示例: 添加一个新的网络工具:

# 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


做出贡献

欢迎投稿!请确保:

  1. 代码遵循现有风格(使用 black 和 ruff)
  2. 所有安全工具均已正确容器化
  3. 针对新功能已更新文档
  4. 测试在隔离环境中进行

许可证

此项目仅提供用于教育和经授权的安全测试目的,不做任何其他用途。


法律声明

警告: 此工具仅设计用于授权的安全测试。

未经授权访问计算机系统是违法的。用户需负责:

  • 在测试前获得适当授权
  • 遵守所有适用的法律法规
  • 以道德和负责任的方式使用该工具
  • 对发现的漏洞保密

作者和贡献者不对本工具的滥用承担任何责任。


致谢

  • 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权限