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.

Kali Linux Docker Python

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

  1. 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"
    }
  }
}
  1. Reinicie o Claude Desktop
  2. Teste com: /run nmap -F localhost

Ferramentas MCP Disponíveis (35)

Ferramentas Principais

FerramentaDescrição
runExecuta comandos shell no ambiente Kali Linux
fetchBusca e analisa conteúdo web de URLs
resourcesLista recursos disponíveis do sistema e exemplos de comandos

Reconhecimento e Varredura

FerramentaDescrição
port_scanWrapper inteligente do nmap com predefinições de varredura (rápida, completa, stealth, udp, serviço, agressiva)
dns_enumEnumeração abrangente de DNS com tentativas de transferência de zona
network_discoveryReconhecimento e descoberta de rede em múltiplas etapas
subdomain_enumEnumeração de subdomínios usando subfinder, amass, waybackurls
recon_autoPipeline automatizado de reconhecimento em múltiplas etapas

Testes de Aplicações Web

FerramentaDescrição
vulnerability_scanAvaliação automatizada de vulnerabilidades com múltiplas ferramentas
web_enumerationDescoberta e enumeração de aplicações web
web_auditAuditoria abrangente de segurança de aplicações web
spider_websiteRastreamento e spidering web usando gospider
form_analysisDescobre e analisa formulários web
header_analysisAnálise de segurança de cabeçalhos HTTP
ssl_analysisAvaliação de segurança SSL/TLS usando testssl.sh

Ataques de Credenciais e Força Bruta

FerramentaDescrição
hydra_attackTeste de credenciais por força bruta via hydra (SSH, FTP, HTTP, SMB, MySQL, RDP, etc.)
credential_storeArmazena/recupera credenciais descobertas vinculadas a sessões

Ferramentas de Payload e Exploit

FerramentaDescrição
payload_generateGera payloads usando msfvenom (reverse shell, bind shell, meterpreter)
reverse_shellGera one-liners de reverse shell para bash, python, php, perl, powershell, nc, ruby, java
exploit_searchBusca exploits usando searchsploit

Ferramentas de Codificação e Hash

FerramentaDescrição
encode_decodeCodificação/decodificação em múltiplos formatos (base64, URL, hex, HTML, ROT13)
hash_identifyIdentifica tipos de hash com modo Hashcat e consulta de formato John

Enumeração de Compartilhamentos

FerramentaDescrição
enum_sharesEnumeração de compartilhamentos SMB/NFS (smbclient, enum4linux, showmount)

Análise de Saída

FerramentaDescrição
parse_nmapAnalisa saída de texto/XML do nmap em descobertas JSON estruturadas
parse_tool_outputAnalisa saída de nikto, gobuster, dirb, hydra ou sqlmap

Evidências e Relatórios

FerramentaDescrição
save_outputSalva conteúdo em arquivos com timestamp para coleta de evidências
create_reportGera relatórios estruturados (markdown, texto, JSON)
file_analysisAnalisa arquivos (detecção de tipo, strings, hashes, metadados)
download_fileBaixa arquivos de URLs com verificação de hash

Gerenciamento de Sessões

FerramentaDescrição
session_createCria uma nova sessão de pentest
session_listLista todas as sessões com metadados
session_switchAlterna entre sessões
session_statusMostra o status da sessão atual
session_deleteExclui uma sessão e suas evidências
session_historyMostra 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çãoFlags 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:

ProfundidadeFases
quickEnumeraçã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:

CategoriaFerramentas
Varredura de Redenmap, masscan, netcat, tcpdump, tshark
Testes Webnikto, gobuster, dirb, sqlmap, wfuzz, ffuf, feroxbuster, whatweb, wafw00f
Exploraçãometasploit-framework (msfconsole, msfvenom), searchsploit
Ataques de Credenciaishydra, hashcat, john
Coleta de Informaçõeswhois, dig, nslookup, amass, subfinder, theharvester, recon-ng, fierce, dnsenum, dnsrecon
Rastreamento Webgospider, waybackurls
Enumeração de Compartilhamentossmbclient, enum4linux, showmount (nfs-common)
SSL/TLStestssl.sh, openssl
Sondagem HTTPhttpx-toolkit, curl, wget
Análise de Arquivosfile, strings, binwalk, exiftool, xxd, hexdump
Utilitáriospython3, 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:

  1. kali_mcp_server/tools.py - Implemente a função assíncrona
  2. kali_mcp_server/server.py - Adicione o despacho em handle_tool_request() e o esquema em list_available_tools()
  3. tests/ - Adicione testes em test_tools.py e test_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