Kali MCP Server
Um servidor MCP Kali Linux que fornece acesso a ferramentas de segurança para assistentes de IA.
Documentação
Kali MCP Server
Um servidor MCP (Model Context Protocol) pronto para produção, executado em um contêiner Docker Kali Linux, fornecendo a assistentes de IA acesso a 35 ferramentas de segurança que cobrem todo o ciclo de vida de segurança ofensiva.
Visão Geral
Este projeto fornece um servidor MCP containerizado que roda no Kali Linux, dando a assistentes de IA (como Claude) acesso a um conjunto completo de ferramentas de segurança e testes de penetração. O servidor se comunica via Server-Sent Events (SSE) ou stdio e permite que a IA execute comandos em um ambiente controlado.
Início Rápido
Construindo e Executando o Contêiner
# Quick start with the helper script
./run_docker.sh
# Or with Docker Compose
docker compose up --build -d
# Or manually:
docker build -t kali-mcp-server .
docker run -p 8000:8000 kali-mcp-server
Verificações de Desenvolvimento
# install dev dependencies
./run_tests.sh install
# individual checks
./run_tests.sh typecheck # pyright
./run_tests.sh lint # ruff check .
./run_tests.sh format # ruff format .
./run_tests.sh test # pytest
./run_tests.sh test-tools # pytest tests/test_tools.py
./run_tests.sh test-session # pytest -k "session"
# run install + typecheck + lint + tests
./run_tests.sh all
Conectando ao Claude Desktop
- Edite o arquivo de configuração do Claude Desktop em
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"kali-mcp-server": {
"transport": "sse",
"url": "http://localhost:8000/sse",
"command": "docker compose up -d"
}
}
}
- Reinicie o Claude Desktop
- Teste com:
/run nmap -F localhost
Ferramentas MCP Disponíveis (35)
Ferramentas Principais
| Ferramenta | Descrição |
|---|---|
run | Executa comandos shell no ambiente Kali Linux |
fetch | Busca e analisa conteúdo web de URLs |
resources | Lista recursos disponíveis do sistema e exemplos de comandos |
Reconhecimento e Varredura
| Ferramenta | Descrição |
|---|---|
port_scan | Wrapper inteligente do nmap com predefinições de varredura (rápida, completa, stealth, udp, serviço, agressiva) |
dns_enum | Enumeração abrangente de DNS com tentativas de transferência de zona |
network_discovery | Reconhecimento e descoberta de rede em múltiplas etapas |
subdomain_enum | Enumeração de subdomínios usando subfinder, amass, waybackurls |
recon_auto | Pipeline automatizado de reconhecimento em múltiplas etapas |
Testes de Aplicações Web
| Ferramenta | Descrição |
|---|---|
vulnerability_scan | Avaliação automatizada de vulnerabilidades com múltiplas ferramentas |
web_enumeration | Descoberta e enumeração de aplicações web |
web_audit | Auditoria abrangente de segurança de aplicações web |
spider_website | Rastreamento e spidering web usando gospider |
form_analysis | Descobre e analisa formulários web |
header_analysis | Análise de segurança de cabeçalhos HTTP |
ssl_analysis | Avaliação de segurança SSL/TLS usando testssl.sh |
Ataques de Credenciais e Força Bruta
| Ferramenta | Descrição |
|---|---|
hydra_attack | Teste de credenciais por força bruta via hydra (SSH, FTP, HTTP, SMB, MySQL, RDP, etc.) |
credential_store | Armazena/recupera credenciais descobertas vinculadas a sessões |
Ferramentas de Payload e Exploit
| Ferramenta | Descrição |
|---|---|
payload_generate | Gera payloads usando msfvenom (reverse shell, bind shell, meterpreter) |
reverse_shell | Gera one-liners de reverse shell para bash, python, php, perl, powershell, nc, ruby, java |
exploit_search | Busca exploits usando searchsploit |
Ferramentas de Codificação e Hash
| Ferramenta | Descrição |
|---|---|
encode_decode | Codificação/decodificação em múltiplos formatos (base64, URL, hex, HTML, ROT13) |
hash_identify | Identifica tipos de hash com modo Hashcat e consulta de formato John |
Enumeração de Compartilhamentos
| Ferramenta | Descrição |
|---|---|
enum_shares | Enumeração de compartilhamentos SMB/NFS (smbclient, enum4linux, showmount) |
Análise de Saída
| Ferramenta | Descrição |
|---|---|
parse_nmap | Analisa saída de texto/XML do nmap em descobertas JSON estruturadas |
parse_tool_output | Analisa saída de nikto, gobuster, dirb, hydra ou sqlmap |
Evidências e Relatórios
| Ferramenta | Descrição |
|---|---|
save_output | Salva conteúdo em arquivos com timestamp para coleta de evidências |
create_report | Gera relatórios estruturados (markdown, texto, JSON) |
file_analysis | Analisa arquivos (detecção de tipo, strings, hashes, metadados) |
download_file | Baixa arquivos de URLs com verificação de hash |
Gerenciamento de Sessões
| Ferramenta | Descrição |
|---|---|
session_create | Cria uma nova sessão de pentest |
session_list | Lista todas as sessões com metadados |
session_switch | Alterna entre sessões |
session_status | Mostra o status da sessão atual |
session_delete | Exclui uma sessão e suas evidências |
session_history | Mostra o histórico de comandos da sessão atual |
Detalhes das Ferramentas
port_scan - Wrapper Inteligente do Nmap
Executa nmap com predefinições de varredura, gerando saída em texto e XML.
/port_scan target=192.168.1.1 scan_type=quick
/port_scan target=10.0.0.0/24 scan_type=aggressive ports=80,443,8080
Predefinições de Varredura:
| Predefinição | Flags do Nmap |
|---|---|
quick | -F -sV |
full | -sS -sV -p- |
stealth | -sS -T2 --max-retries 1 |
udp | -sU --top-ports 100 |
service | -sV --version-intensity 5 -sC |
aggressive | -A -T4 |
dns_enum - Enumeração de DNS
Consulta todos os tipos de registro DNS e tenta transferências de zona.
/dns_enum domain=example.com
/dns_enum domain=target.com record_types=a,mx,ns,txt
recon_auto - Pipeline Automatizado de Reconhecimento
Executa um pipeline de reconhecimento em múltiplas etapas com profundidade configurável.
/recon_auto target=example.com depth=quick
/recon_auto target=10.0.0.1 depth=standard
/recon_auto target=target.com depth=deep
Níveis de Profundidade:
| Profundidade | Fases |
|---|---|
quick | Enumeração de DNS, varredura rápida de portas, análise de cabeçalhos |
standard | + varredura de serviços, análise SSL, busca de exploits |
deep | + enumeração de subdomínios, enumeração web, varredura de vulnerabilidades |
hydra_attack - Teste de Força Bruta
/hydra_attack target=192.168.1.1 service=ssh username=admin passlist=/usr/share/wordlists/rockyou.txt
/hydra_attack target=10.0.0.1 service=ftp userlist=users.txt passlist=passwords.txt threads=32
Serviços Suportados: ssh, ftp, http-get, http-post-form, smb, mysql, rdp, telnet, vnc, pop3, imap, smtp
payload_generate - Payloads Msfvenom
/payload_generate payload_type=reverse_shell platform=linux lhost=10.0.0.1 lport=4444 format=elf
/payload_generate payload_type=meterpreter platform=windows lhost=10.0.0.1 format=exe
Tipos de Payload: reverse_shell, bind_shell, meterpreter Plataformas: linux, windows, osx, php, python Formatos: elf, exe, raw, python, php, war
reverse_shell - One-Liners de Shell
Gera comandos de reverse shell prontos para uso com dicas de listener.
/reverse_shell lhost=10.0.0.1 shell_type=bash lport=4444
/reverse_shell lhost=10.0.0.1 shell_type=python lport=9999
Tipos de Shell: bash, python, php, perl, powershell, nc, ruby, java
encode_decode - Utilitário de Codificação
/encode_decode data="hello world" operation=encode format=base64
/encode_decode data="aGVsbG8gd29ybGQ=" operation=decode format=base64
/encode_decode data="<script>alert(1)</script>" operation=encode format=html
Formatos: base64, url, hex, html, rot13
hash_identify - Identificação de Hash
Identifica tipos de hash por regex e retorna números de modo Hashcat e nomes de formato John.
/hash_identify hash_value=5d41402abc4b2a76b9719d911017c592
/hash_identify hash_value=$2y$10$abcdefghijklmnopqrstuuABCDEFGHIJKLMNOPQRSTUVWXYZ012345
Tipos Suportados: MD5, SHA-1, SHA-256, SHA-512, bcrypt, SHA-512/256/MD5 Crypt, NTLM, Apache APR1, MySQL, Django
enum_shares - Enumeração de Compartilhamentos
/enum_shares target=192.168.1.1 enum_type=all
/enum_shares target=10.0.0.1 enum_type=smb username=admin password=pass
Tipos de Enumeração: smb (smbclient + enum4linux), nfs (showmount), all
credential_store - Gerenciamento de Credenciais
Armazena credenciais descobertas como JSON vinculadas à sessão ativa.
/credential_store action=add username=admin password=pass123 service=ssh target=10.0.0.1
/credential_store action=list
/credential_store action=search username=admin
parse_nmap - Analisador de Saída do Nmap
Analisa saída de texto e XML do nmap em JSON estruturado com hosts, portas abertas, serviços, detecção de SO e saída de scripts.
/parse_nmap filepath=port_scan_10_0_0_1_quick_20240101_120000.txt
/parse_nmap filepath=scan_results.xml
parse_tool_output - Analisador de Saída Genérico
Detecta e analisa automaticamente saída de nikto, gobuster, dirb, hydra ou sqlmap.
/parse_tool_output filepath=nikto_results.txt
/parse_tool_output filepath=gobuster_output.txt tool_type=gobuster
vulnerability_scan
/vulnerability_scan target=127.0.0.1 scan_type=quick
/vulnerability_scan target=example.com scan_type=comprehensive
Tipos de Varredura: rápida, abrangente, web, rede
web_enumeration
/web_enumeration target=http://example.com enumeration_type=full
Tipos: básico, completo, agressivo
network_discovery
/network_discovery target=192.168.1.0/24 discovery_type=comprehensive
Tipos: rápido, abrangente, stealth
Ferramentas Pré-instaladas
O contêiner Docker inclui as seguintes ferramentas, todas habilitadas para uso através do comando run:
| Categoria | Ferramentas |
|---|---|
| Varredura de Rede | nmap, masscan, netcat, tcpdump, tshark |
| Testes Web | nikto, gobuster, dirb, sqlmap, wfuzz, ffuf, feroxbuster, whatweb, wafw00f |
| Exploração | metasploit-framework (msfconsole, msfvenom), searchsploit |
| Ataques de Credenciais | hydra, hashcat, john |
| Coleta de Informações | whois, dig, nslookup, amass, subfinder, theharvester, recon-ng, fierce, dnsenum, dnsrecon |
| Rastreamento Web | gospider, waybackurls |
| Enumeração de Compartilhamentos | smbclient, enum4linux, showmount (nfs-common) |
| SSL/TLS | testssl.sh, openssl |
| Sondagem HTTP | httpx-toolkit, curl, wget |
| Análise de Arquivos | file, strings, binwalk, exiftool, xxd, hexdump |
| Utilitários | python3, perl, ruby, php, git, base64, jq |
Todos os comandos são permitidos por padrão dentro do contêiner. O próprio contêiner é o limite de segurança.
Considerações de Segurança
- Isolamento do contêiner: O servidor roda dentro de um contêiner Docker isolado. Root é usado dentro do contêiner porque muitas ferramentas de segurança (varreduras SYN do nmap, tcpdump, etc.) exigem acesso a sockets brutos
- Sanitização de entrada: Metacaracteres de shell (
;,&,|) são removidos de toda entrada de comando - Sem acesso ao host: O contêiner não tem acesso ao sistema de arquivos ou à pilha de rede do host (a menos que volumes sejam explicitamente montados)
- Autorização necessária: Use apenas para testes de segurança legítimos com autorização adequada
- Somente local: O contêiner não deve ser exposto à internet
Requisitos
- Docker
- Claude Desktop ou outro cliente MCP (SSE ou stdio)
- Porta 8000 disponível na sua máquina host
Desenvolvimento
Configuração
git clone https://github.com/yourusername/kali-mcp-server.git
cd kali-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Executando Verificações
# All checks
./run_tests.sh
# Individual
pyright # Type checking
ruff check . # Linting
ruff format . # Formatting
pytest # All tests
pytest tests/test_tools.py # Single file
pytest -k "session" # Pattern match
Arquitetura
Adicionar uma nova ferramenta requer alterações em três lugares:
kali_mcp_server/tools.py- Implemente a função assíncronakali_mcp_server/server.py- Adicione o despacho emhandle_tool_request()e o esquema emlist_available_tools()tests/- Adicione testes emtest_tools.pyetest_server.py
Agradecimentos
- Kali Linux pela distribuição focada em segurança
- Anthropic pelo Claude e pelo protocolo MCP
- A comunidade de ferramentas de segurança de código aberto
Construído para profissionais de segurança e assistentes de IA