MCP Kali Server

Um servidor abrangente do Model Context Protocol (MCP) para testes de penetração e operações de cibersegurança, oferecendo integração perfeita entre ferramentas do Kali Linux e clientes compatíveis com MCP.

Documentação

MCP Kali Server

License: MIT Version: v0.2.1

MCP Kali Server Architecture

Um servidor abrangente de Model Context Protocol (MCP) para operações de teste de penetração e segurança cibernética, fornecendo integração perfeita entre as ferramentas do Kali Linux e clientes compatíveis com MCP.

🎥 Vídeo de Demonstração

Automatizando o Kali Linux com um MCP (Model Context Protocol) — Demonstração HTB

Neste vídeo, mostro como meu MCP automatiza um fluxo de trabalho do Kali Linux dentro do WSL2 e auxilia na resolução de um desafio do Hack The Box — desde a enumeração até a exploração e a documentação gerada automaticamente.

Assista à demonstração no YouTube


🚀 Visão Geral

Este projeto fornece um poderoso servidor MCP que permite acesso seguro e programático às ferramentas de teste de penetração do Kali Linux por meio de uma interface padronizada. Inclui recursos avançados como gerenciamento de shell reverso, manipulação de sessões SSH e operações abrangentes de arquivos com verificação de integridade.

🏗️ Arquitetura

Este projeto foi projetado para funcionar em diferentes ambientes:

1. Servidor Kali (kali-server/)

Executa apenas no Kali Linux — O aplicativo servidor principal que fornece as capacidades reais de teste de penetração.

kali-server/
├── api/           # REST API routes and endpoints
├── core/          # Core functionality (SSH, reverse shells, config, Docker)
├── tools/         # Penetration testing tools integration
└── utils/         # Utility functions and file operations

Recursos:

  • Modo de teste Docker (opção --test) — gerencia automaticamente contêineres de teste
  • Todas as ferramentas de teste de penetração (nmap, gobuster, etc.)
  • Gerenciamento de sessões SSH e shell reverso
  • Operações de arquivos com verificação de integridade

2. Servidor MCP (mcp-server/)

Pode ser executado em qualquer sistema — O servidor Model Context Protocol que fornece uma interface padronizada para clientes MCP.

mcp-server/
└── mcp_server.py  # MCP protocol implementation

Nota: O servidor MCP se comunica com o servidor Kali via HTTP, portanto, eles podem estar em sistemas diferentes.

Arquitetura de Implantação

┌─────────────────┐    HTTP     ┌──────────────────┐    HTTP     ┌──────────────────┐
│   MCP Client    │ ◄─────────► │   MCP Server     │ ◄─────────► │   Kali Server    │
│  (Any system)   │             │  (Any system)    │             │  (Kali Linux)    │
└─────────────────┘             └──────────────────┘             │                  │
                                                                  │ ┌──────────────┐ │
                                                                  │ │   Docker     │ │
                                                                  │ │ (test mode)  │ │
                                                                  │ └──────────────┘ │
                                                                  └──────────────────┘

✨ Recursos Principais

🔧 Ferramentas de Teste de Penetração

  • Nmap: Descoberta de rede e auditoria de segurança
  • Gobuster: Enumeração de diretórios/arquivos
  • Dirb: Scanner de conteúdo web
  • Nikto: Scanner de servidores web
  • Hydra: Quebrador de logins de rede
  • SQLmap: Teste de injeção SQL
  • WPScan: Scanner de segurança WordPress
  • John the Ripper: Quebra de senhas
  • Enum4linux: Enumeração SMB
  • Metasploit: Framework de exploração

🐚 Gerenciamento Avançado de Sessões

  • Gerenciador de Sessões SSH: Gerenciamento completo do ciclo de vida de sessões SSH
    • start_ssh_session: Estabelecer conexões SSH seguras
    • execute_ssh_command: Executar comandos em sessões SSH
    • get_ssh_status: Monitorar o status das sessões SSH
    • stop_ssh_session: Encerrar sessões SSH de forma limpa
    • list_ssh_sessions: Visualizar todas as sessões SSH ativas
  • Gerenciador de Shell Reverso: Manipulação de múltiplas sessões de shell reverso
    • start_reverse_shell_listener: Iniciar escuta para shells reversos
    • execute_shell_command: Executar comandos em shells reversos
    • trigger_reverse_shell_action: Execução de gatilho não bloqueante para payloads
    • get_shell_status: Monitorar o status das sessões de shell reverso
    • stop_reverse_shell: Encerrar sessões de shell reverso
    • list_reverse_shell_sessions: Visualizar todas as sessões de shell reverso ativas

📁 Operações Abrangentes de Arquivos

  • Gerenciamento de Arquivos do Servidor Kali:
    • upload_to_kali: Enviar arquivos diretamente para o servidor Kali
    • download_from_kali: Baixar arquivos do servidor Kali
  • Transferência de Arquivos via SSH (otimizada para arquivos grandes):
    • ssh_upload_content: Enviar conteúdo via SSH com otimização automática
    • ssh_download_content: Baixar conteúdo via SSH com divisão em partes
    • ssh_estimate_transfer_time: Estimar tempos de transferência e obter recomendações
  • Transferência de Arquivos via Shell Reverso:
    • reverse_shell_upload_file: Enviar arquivos via shell reverso
    • reverse_shell_upload_content: Enviar conteúdo via shell reverso
    • reverse_shell_download_file: Baixar arquivos via shell reverso
    • reverse_shell_download_content: Baixar conteúdo via shell reverso

🛠️ Integração de Sistema

  • Execução de Comandos: Execução direta de comandos no servidor Kali
  • Monitoramento de Saúde: Verificações de saúde do servidor e monitoramento de status
  • Persistência de Sessões: Manter múltiplas sessões simultâneas

🔒 Recursos de Segurança

  • Integridade de Dados: Verificação de checksum SHA256 para todas as transferências de arquivos
  • Comunicações Seguras: Conexões SSH criptografadas
  • Isolamento de Sessões: Gerenciamento independente de sessões
  • Tratamento de Erros: Detecção e relatório abrangentes de erros

📊 Otimização de Desempenho

  • Transferências em Partes: Otimizado para operações com arquivos grandes
  • Seleção Automática de Método: Seleção inteligente com base no tamanho do arquivo
  • Processamento em Segundo Plano: Operações não bloqueantes para tarefas de longa duração
  • Gerenciamento de Recursos: Uso eficiente de memória e CPU

🛠️ Instalação

Consulte install.md para instruções detalhadas de instalação.

Configuração do Cliente MCP

Após a instalação, configure seu cliente MCP para conectar-se ao servidor Kali:

📖 Guia de Configuração

Este guia aborda:

  • Configuração do .claude/mcp_settings.json para Claude Desktop
  • Configuração de clientes MCP alternativos
  • Como encontrar seu caminho do Python e o endereço IP do Kali
  • Exemplos específicos por plataforma (Windows, Linux, macOS)

Configuração de Rede WSL

Se você estiver executando o Kali Linux no WSL 2, a configuração adequada de rede é crítica para o funcionamento do servidor MCP. Consulte nosso guia abrangente:

📖 Guia de Configuração de Rede WSL

Este guia aborda:

  • Configuração essencial do WSL (wsl.conf)
  • Configuração de resolução de DNS para ferramentas do Kali
  • Crítico: Entendendo o comportamento do localhost no WSL 2 (comunicação Windows → Kali)
  • Testes de rede e solução de problemas

⚠️ Importante: O cliente MCP no Windows deve ser capaz de acessar o servidor Kali via localhost. Revise este guia antes de executar o servidor.

Divisão de Dependências

Este projeto agora separa as dependências Python para os dois componentes de tempo de execução:

  • requirements.kali.txt – Apenas o que o código Python do servidor de API Kali precisa (Flask, etc.)
  • requirements.mcp.txt – Dependências para a interface do cliente do servidor MCP (requests, FastMCP, bibliotecas de teste)
  • requirements.txt – Arquivo informativo descrevendo a divisão; não contém pacotes diretos agora.

Instale em cada máquina conforme apropriado:

pip install -r requirements.kali.txt   # On Kali host running kali-server/
pip install -r requirements.mcp.txt    # On host running mcp-server/

⚠️ Aviso de Segurança

IMPORTANTE: Tenha extrema cautela ao executar o servidor Kali com privilégios de sudo:

# ⚠️ DANGEROUS - Avoid if possible
sudo python kali_server.py

Por que isso é arriscado:

  • Todo o servidor é executado com privilégios de root
  • Todos os endpoints de API e comandos são executados com acesso total ao sistema
  • Qualquer comprometimento do servidor concede acesso root completo ao sistema
  • Não há separação de privilégios ou controle de acesso

Alternativas mais seguras:

  • Execute o servidor como um usuário comum (muitas ferramentas funcionam sem root)
  • Use permissões sudo específicas apenas para comandos que as exigem
  • Considere contêineres ou virtualização para isolamento
  • Implemente elevação de privilégios apenas quando absolutamente necessário

Para ambientes de produção: Consulte TODO.md para melhorias de segurança planejadas, incluindo gerenciamento granular de privilégios e controles de acesso.

📖 Uso

Consulte usage.md para instruções detalhadas de uso e exemplos.

🧪 Testes

O projeto inclui suítes de testes abrangentes usando contêineres Docker para ambientes de teste isolados.

Executar Todos os Testes

cd tests
./run_all.bat  # Windows
# or
chmod +x run_all.sh && ./run_all.sh  # Linux

Ambiente de Teste Docker

cd tests/docker
docker-compose up -d --build
python test_config_docker.py

Testes do Gerenciador SSH

cd tests/kali
python -m pytest test_ssh_manager.py -v

Configuração de Testes

Os testes usam contêineres Docker para ambientes de teste consistentes e isolados. A configuração é configurada automaticamente em:

  • tests/kali/test_config.py - Configuração principal de teste (baseada em Docker)
  • tests/docker/test_config_docker.py - Configuração de teste específica para Docker

📋 Ferramentas MCP Disponíveis

O servidor MCP fornece as seguintes ferramentas:

FerramentaDescrição
mcp_kali_mcp_nmap_scanVarredura de rede e enumeração
mcp_kali_mcp_gobuster_scanEnumeração de diretórios e arquivos
mcp_kali_mcp_hydra_attackForça bruta de senhas
mcp_kali_mcp_start_ssh_sessionGerenciamento de sessões SSH
mcp_kali_mcp_execute_ssh_commandExecução de comandos SSH
mcp_kali_mcp_ssh_upload_contentEnvio de arquivos via SSH
mcp_kali_mcp_ssh_download_contentDownload de arquivos via SSH
mcp_kali_mcp_start_reverse_shell_listenerGerenciamento de shell reverso
mcp_kali_mcp_generate_reverse_shell_payloadGeração de payloads

🔍 Operações de Arquivos

Envio com Verificação de Integridade

# The system automatically verifies file integrity using SHA256 checksums
upload_result = {
    "success": True,
    "source_checksum": "abc123...",
    "remote_checksum": "abc123...",
    "checksum_verified": True,
    "integrity_check": "PASSED"
}

Download com Verificação de Integridade

# All downloads include automatic integrity verification
download_result = {
    "success": True,
    "remote_checksum": "def456...",
    "local_checksum": "def456...",
    "checksum_verified": True,
    "integrity_check": "PASSED"
}

🚨 Considerações de Segurança

  • Ambiente de Teste: Todos os testes usam contêineres Docker isolados para segurança
  • Segurança de Rede: Garanta a configuração adequada do firewall
  • Autenticação: Use senhas fortes e autenticação baseada em chaves
  • Gerenciamento de Sessões: Limpe regularmente sessões não utilizadas
  • Permissões de Arquivos: Defina permissões apropriadas nos arquivos enviados
  • Registro de Atividades: Monitore todas as atividades por meio de registro abrangente

🐛 Solução de Problemas

Problemas Comuns

  1. Conexão Recusada

    # Check if server is running
    curl http://localhost:5000/health
    
  2. Falha na Conexão SSH

    # Verify SSH connectivity
    ssh user@target-host
    
  3. Ferramenta Não Encontrada

    # Install missing tools
    sudo apt update && sudo apt install nmap gobuster
    
  4. Problemas no Modo de Teste Docker

    Se você encontrar erros relacionados ao Docker ao usar o modo --test no Kali Linux:

    Correções comuns de Docker no Kali Linux:

    # Install Docker
    sudo apt update && sudo apt install docker.io
    
    # Start Docker service
    sudo systemctl start docker
    sudo systemctl enable docker
    
    # Add user to docker group (then logout/login)
    sudo usermod -aG docker $USER
    
    # Test Docker access
    docker --version
    docker ps
    

    Se os comandos Docker funcionam manualmente, mas falham no modo de teste:

    • O problema pode estar relacionado ao PATH no ambiente Python
    • Tente executar com sudo: sudo python kali_server.py --test
    • Verifique as permissões do socket Docker: ls -la /var/run/docker.sock
    • Certifique-se de estar executando no Kali Linux, não no Windows

Modo de Depuração

Ative o registro de depuração:

# For the server
python kali_server.py --test --debug

# For Python logging
import logging
logging.basicConfig(level=logging.DEBUG)

🤝 Contribuindo

  1. Faça um fork do repositório
  2. Crie um branch de recurso
  3. Siga os padrões de codificação (comentários em inglês, nomenclatura adequada)
  4. Adicione testes abrangentes
  5. Atualize a documentação
  6. Envie um pull request

Padrões de Codificação

  • Todo código, variáveis e funções devem estar em inglês
  • Todos os comentários e documentação devem estar em inglês claro
  • Siga as convenções de nomenclatura padrão
  • Adicione testes para novos recursos ou correções de bugs
  • Atualize o README e a documentação

📄 Licença

Este projeto é licenciado sob a Licença MIT — consulte o arquivo LICENSE para obter detalhes.

🙏 Agradecimentos

  • Projeto Original: Este projeto é inicialmente um fork do MCP-Kali-Server, mas foi completamente reescrito e reestruturado
  • Kali Linux pela plataforma abrangente de teste de penetração
  • Model Context Protocol pela interface padronizada
  • A comunidade de segurança cibernética pelo desenvolvimento contínuo de ferramentas

📞 Suporte


⚠️ Aviso Legal: Esta ferramenta é projetada apenas para testes de penetração autorizados e pesquisa de segurança. Os usuários são responsáveis por cumprir as leis e regulamentos aplicáveis.