安全工具集成服务

一个基于Go的MCP服务器,集成了Kali/Linux安全工具,支持本地、Docker和SSH执行模式,适用于网络安全测试和渗透测试。

  • by zacariasworks
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 zack-pz/kali-linux-mcp

使用说明

kali linux mcp

用Go编写的MCP服务器,通过以下方式公开Kali/Linux安全工具 工作室 因此兼容MCP的客户端可以将它们作为工具调用。

如今,该存储库包含四个工具系列:

  • nmap 用于主机发现和端口扫描
  • sqlmap 用于SQL注入评估工作流
  • sslscan 用于快速TLS/密码检查
  • sslyze 用于更深入的SSL/TLS分析

[!警告] 仅在您有明确授权进行测试的环境中使用此项目。这些命令可能具有侵入性,对任意目标都不安全。

存储库实际包含的内容

代码库围绕一个简单的适配器模式进行组织:

  • cmd/main.go 启动MCP服务器并注册工具。
  • internal/mcp/ 包含每个工具族的MCP处理程序。
  • internal/services/ 构建具体的shell命令。
  • pkg/executor/ 命令运行的摘要:
    • 本地 shell
    • Docker容器
    • SSH会话
  • internal/di/container.go 将存储库和处理程序连接在一起。

换言之: MCP请求->处理程序->存储库->执行器->安全工具命令.

支持的执行模式

执行目标通过以下方式控制 KALI_URL 在一个 .env 文件。

1.本地模式

在主机上运行命令。

KALI_URL=local://

在以下情况下使用此功能 nmap, sqlmap, sslscan,以及 sslyze 已在本地安装。

2.Docker模式

在已运行的容器中运行命令。

KALI_URL=docker://kali-toolbox

这 docker-compose.yml 文件创建了一个 kali-toolbox 集装箱从 Dockerfile.kali,安装所需的工具。

3.SSH模式

该代码包含一个SSH执行器,但现在它是 实验性/不完整:连接设置是硬编码的 cmd/main.go (root, password, localhost:22)而不是从解析 KALI_URL.

所以,是的,该方案存在于代码中,但尚未准备好投入生产。

需求

  • 走 1.24+
  • A. .env 项目根目录中的文件
  • 其中一个执行环境:
    • 已安装本地工具,或
    • Kali容器提供Docker守护进程

快速开始

选项A:在Kali Docker容器上运行

  1. 创建 .env 文件:

    KALI_URL=docker://kali-toolbox
    
  2. 启动工具箱容器:

    docker compose up -d kali-toolbox
    
  3. 运行MCP服务器:

    go run cmd/main.go
    

选项B:在本地运行

  1. 在您的机器上安装所需的工具。

  2. 创建 .env 文件:

    KALI_URL=local://
    
  3. 运行MCP服务器:

    go run cmd/main.go
    

可用的MCP工具组

扫描器

包括以下命令:

  • 实时主机发现
  • SYN/TCP连接/UDP扫描
  • 全端口范围扫描
  • 版本检测
  • 操作系统识别
  • 默认脚本和漏洞脚本
  • 以时机和规避为导向的变体

注册工具名称示例:

  • NmapDiscoverLiveHosts
  • NmapStealthSYNScan
  • NmapServiceVersionDetection
  • NmapScanForVulnerabilities

Sqlmap

包括以下命令:

  • 测试单个URL
  • 从文件加载原始请求
  • 枚举数据库
  • 列出表格
  • 转储表或数据库数据
  • 会话刷新/批处理/风险级别更改

示例:

  • SqlmapTestSingleURL
  • SqlmapEnumerateDatabases
  • SqlmapDumpTable
  • SqlmapSpawnOSShell

SSLScan

包括以下命令:

  • 密码枚举
  • 证书提取
  • TLS版本检查
  • 过时的协议检查
  • SNI和STARTTLS扫描
  • 心脏出血检查

示例:

  • SSLScanEnumerateCipherHTTPS
  • SSLScanExtractCertificate
  • SSLScanVerifyTLSVersion

SSLyze

包括以下命令:

  • 全面TLS分析
  • JSON导出
  • STARTTLS检查
  • 心脏出血/机器人/CCS注射检查
  • 从文件进行多目标扫描
  • 超时调整
  • TLS 1.3早期数据检查

示例:

  • SslyzePerformComprehensiveAnalysis
  • SslyzeExportScanResultsToJSON
  • SslyzeTestRobotVulnerability

开发说明

存储库中的有用命令:

make deps
make build
make run
make test
make fmt
make vet

代码库中发现的当前限制

这些是影响当前设置和使用的真实实现细节。

  • 服务器使用 STDIO传输不是HTTP。
  • config.Load() 如果失败很难 .env 缺失,即使是默认值 local:// 代码中存在值。
  • Docker模式要求Docker URL主机是容器名称或ID。
  • SSH模式是硬编码的,在被记录为完全支持之前需要重构。
  • 某些文件仍然使用其他项目中的名称(auth-service 在 Makefile, bin/auth-service 在repo中),因此存储库命名目前不一致。

故障排除

Docker权限被拒绝

如果Docker模式失败:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

您有两个选择:

  1. 使用提升的权限运行服务器:

    sudo go run cmd/main.go
    
  2. 将您的用户添加到 docker 组(推荐):

    sudo usermod -aG docker $USER
    newgrp docker
    

您可能需要注销并重新登录才能应用组更改。