使用说明
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容器上运行
-
创建
.env文件:KALI_URL=docker://kali-toolbox -
启动工具箱容器:
docker compose up -d kali-toolbox -
运行MCP服务器:
go run cmd/main.go
选项B:在本地运行
-
在您的机器上安装所需的工具。
-
创建
.env文件:KALI_URL=local:// -
运行MCP服务器:
go run cmd/main.go
可用的MCP工具组
扫描器
包括以下命令:
- 实时主机发现
- SYN/TCP连接/UDP扫描
- 全端口范围扫描
- 版本检测
- 操作系统识别
- 默认脚本和漏洞脚本
- 以时机和规避为导向的变体
注册工具名称示例:
NmapDiscoverLiveHostsNmapStealthSYNScanNmapServiceVersionDetectionNmapScanForVulnerabilities
Sqlmap
包括以下命令:
- 测试单个URL
- 从文件加载原始请求
- 枚举数据库
- 列出表格
- 转储表或数据库数据
- 会话刷新/批处理/风险级别更改
示例:
SqlmapTestSingleURLSqlmapEnumerateDatabasesSqlmapDumpTableSqlmapSpawnOSShell
SSLScan
包括以下命令:
- 密码枚举
- 证书提取
- TLS版本检查
- 过时的协议检查
- SNI和STARTTLS扫描
- 心脏出血检查
示例:
SSLScanEnumerateCipherHTTPSSSLScanExtractCertificateSSLScanVerifyTLSVersion
SSLyze
包括以下命令:
- 全面TLS分析
- JSON导出
- STARTTLS检查
- 心脏出血/机器人/CCS注射检查
- 从文件进行多目标扫描
- 超时调整
- TLS 1.3早期数据检查
示例:
SslyzePerformComprehensiveAnalysisSslyzeExportScanResultsToJSONSslyzeTestRobotVulnerability
开发说明
存储库中的有用命令:
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
您有两个选择:
-
使用提升的权限运行服务器:
sudo go run cmd/main.go -
将您的用户添加到
docker组(推荐):sudo usermod -aG docker $USER newgrp docker
您可能需要注销并重新登录才能应用组更改。
