Kali MCP Server

Um servidor MCP em Python que conecta Modelos de Linguagem de Grande Escala nativamente a um conjunto abrangente de ferramentas de segurança ofensiva.

Documentação

image

🐉 Kali Linux MCP Server

📖 Visão Geral do Projeto

O Kali Linux MCP Server é uma implementação especializada do Model Context Protocol (MCP) projetada para conectar Modelos de Linguagem de Grande Porte nativamente a um conjunto abrangente de ferramentas de segurança ofensiva, reconhecimento e enumeração. Alimentado pelo FastMCP Python SDK, este servidor traduz solicitações em linguagem natural em execuções seguras e encapsuladas de utilitários padrão do Kali Linux via linha de comando.

Ao expor essas ferramentas como recursos MCP, agentes de IA podem executar consultas WHOIS de forma autônoma, rodar varreduras Nmap, fazer fuzzing de diretórios web, pesquisar bancos de dados de exploits e até mesmo interagir com o Metasploit Framework, tudo isso retornando saída padrão estruturada e logs de erro para o contexto do LLM.

Principais Recursos

  • 🎯 Kit de Ferramentas Abrangente de Segurança Ofensiva: Expõe nativamente categorias distintas de ferramentas de teste de penetração ao seu LLM. O servidor categoriza logicamente as capacidades, incluindo módulos dedicados para Quebra de Senhas & Força Bruta, bem como Exploração & Sniffing.
  • 📦 Containerização Automatizada e Isolada: A configuração Docker incluída garante uma configuração sem atritos e reproduzível. Ela utiliza a variável de ambiente DEBIAN_FRONTEND=noninteractive para suprimir prompts manuais durante instalações de pacotes Debian, garantindo um processo de build totalmente automatizado.
  • Integração Nativa com o SDK MCP: Construído de forma robusta sobre o SDK Python oficial mcp. O ambiente é flexível, permitindo que o SDK seja instalado globalmente dentro do contêiner isolado (--break-system-packages) ou via um ambiente virtual Python localizado.
  • ⚡ Transporte Padronizado stdio: Utiliza entrada/saída padrão direta para comunicação JSON-RPC, contornando configurações de rede complexas e garantindo compatibilidade imediata com IDEs de IA (como Cursor e VS Code) e clientes desktop (como Claude Desktop).

Demonstração

Quebra de Hash

image

Varredura de Vulnerabilidades

 Varredura Autônoma de Vulnerabilidades com GitHub Copilot & Kali MCP Server

Pré-requisitos

As dependências necessárias variam inteiramente de acordo com o método de execução escolhido.

Opção A: 🐳 Execução via Docker (Recomendada)

Ao usar Docker, o servidor roda em um contêiner isolado que provisiona automaticamente Python 3, pip, e um conjunto extenso de ferramentas Kali Linux (incluindo nmap, sqlmap, tcpdump e metasploit-framework).

  • Docker Engine: Deve estar instalado e em execução. Este método funciona perfeitamente em Windows, macOS e Linux sem exigir ferramentas de segurança locais.

Opção B: 🐍 Execução Local via Python

Se você optar por executar o script diretamente na sua máquina host em vez de usar Docker, seu host deve ter as ferramentas disponíveis nativamente.

  • Sistema Operacional: Kali Linux (recomendado) ou outra distribuição Linux com as ferramentas de teste de penetração necessárias instaladas e no PATH do seu sistema.
  • Python: Python 3.10 ou superior.
  • Dependências: O SDK Python mcp (pip install mcp).
  • Permissões: Algumas ferramentas expostas, como tcpdump para captura de pacotes, exigem explicitamente privilégios de root para execução nativa.

Como Configurar

🐳 Opção A: Implementação via Docker

Como este servidor depende de dezenas de ferramentas binárias específicas, empacotá-lo via Docker é a abordagem "Padrão Ouro".

A maneira mais rápida de começar é baixar a imagem oficial do Docker Hub.

docker pull cyberillo/kali-mcp-server:latest

Para executar o contêiner interativamente usando o transporte stdio exigido pelos clientes MCP:

docker run -i --rm kali-mcp-server

(Nota: Algumas ferramentas como tcpdump ou netdiscover exigem privilégios elevados. Se você precisar explicitamente delas, pode ser necessário adicionar --privileged ou flags específicas de --cap-add ao seu comando docker run, embora isso seja fortemente desencorajado para uso geral).

Alternativamente, construa a imagem Docker você mesmo seguindo os passos abaixo.


Detalhamento do Dockerfile

  • Imagem Base: O servidor é construído sobre a imagem base oficial kalilinux/kali-rolling.

  • Instalação do Toolchain: Ele atualiza o sistema e instala ferramentas essenciais, incluindo nmap, sqlmap, metasploit-framework, gobuster, hydra e john.

  • Listas de Palavras: Ele extrai automaticamente a wordlist rockyou.txt, pois ela vem compactada por padrão, tornando-a imediatamente disponível para ferramentas de quebra de senhas e fuzzing.

  • Ambiente Python: Ele utiliza a flag --break-system-packages do PEP 668 para instalar o SDK Python mcp globalmente dentro do contêiner isolado.


  1. Clone o repositório e navegue até o diretório.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server

  1. 🏗️ Construa a imagem
docker build -t kali-mcp-server .

  1. 🏃 Execute o contêiner

Para executar o contêiner interativamente usando o transporte stdio exigido pelos clientes MCP:

docker run -i --rm kali-mcp-server

(Nota: Algumas ferramentas como tcpdump ou netdiscover exigem privilégios elevados. Se você precisar explicitamente delas, pode ser necessário adicionar --privileged ou flags específicas de --cap-add ao seu comando docker run, embora isso seja fortemente desencorajado para uso geral).

🛠️ Opção B: Configuração de Desenvolvimento Local

Embora o Docker seja o método de implantação recomendado, você pode executar o servidor diretamente em uma máquina Kali Linux para desenvolvimento ou depuração.

  1. Clone o repositório e navegue até o diretório.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server

  1. 🐍 Configure um Ambiente Virtual Python:
python3 -m venv venv
source venv/bin/activate

  1. Instale o SDK MCP:
pip install mcp

  1. Garanta que todas as ferramentas Kali estejam instaladas:
    Garanta que ferramentas como nmap, gobuster, sqlmap e msfconsole estejam disponíveis no PATH do seu sistema.
  2. Execute o servidor em modo de depuração localmente:
    Você pode testar o script Python diretamente usando entrada/saída padrão.
python3 kali-mcp-server.py

🤖 Como Usar

1. Configuração do Claude Desktop

Adicione o seguinte ao seu arquivo claude_desktop_config.json (geralmente localizado em ~/Library/Application Support/Claude/claude_desktop_config.json no Mac ou %APPDATA%\Claude\claude_desktop_config.json no Windows).

Vá em Arquivo > Configurações > Desenvolvedor > Editar Configuração se você não o encontrar nos caminhos acima.

Usando Docker (Recomendado):

{
  "mcpServers": {
    "kali-tools": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "kali-mcp-server"
      ]
    }
  }
}

Usando Python Local:

{
  "mcpServers": {
    "kali-tools": {
      "command": "/path/to/your/venv/bin/python3",
      "args": [
        "/path/to/kali-mcp-server.py"
      ]
    }
  }
}

2. GitHub Copilot (VS Code)

  1. Se não existir, adicione um diretório .vscode no seu espaço de trabalho.
  2. Adicione o servidor MCP atualizando .vscode/mcp.json da seguinte forma.
{
    "servers": {
        "kali-mcp-server": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "kali-mcp-server"
            ]
        }
    },
    "inputs": []
}

3. Cursor / Outros IDEs

Para IDEs que suportam o Model Context Protocol, configure um novo servidor MCP utilizando o tipo de transporte stdio.

  • Tipo: stdio
  • Comando: docker
  • Argumentos: run -i --rm kali-mcp-server

Definições das Ferramentas MCP

O servidor expõe 21 ferramentas especializadas categorizadas por sua fase operacional.

CategoriaNome da FerramentaDescrição e Parâmetros
Reconwhois_lookupRealiza uma consulta WHOIS. Parâmetros: domain (str).
Recondnsenum_scanEnumera registros DNS. Parâmetros: domain (str).
Reconwhatweb_scanIdentifica CMS e cabeçalhos. Parâmetros: target_url (str).
Reconamass_enumEnumeração passiva de subdomínios. Parâmetros: domain (str).
Reconnetdiscover_scanEncontra hosts ativos. Parâmetros: ip_range (str).
Scanningnmap_scanDescoberta de rede e varredura de portas. Parâmetros: target (str), flags (str, padrão: -sV -F).
Scanningenum4linux_scanEnumera sistemas Windows/Samba. Parâmetros: target_ip (str).
Scanningsmbclient_listLista compartilhamentos SMB. Parâmetros: target_ip (str), user (str), password (str).
Web Secnikto_scanVarredura de vulnerabilidades web. Parâmetros: target_url (str).
Web Secgobuster_dirForça bruta de diretórios. Parâmetros: target_url (str), wordlist (str).
Web Secdirb_scanVarredura de conteúdo web. Parâmetros: target_url (str), wordlist (str).
Web Secffuf_scanFuzzing rápido de diretórios web. Parâmetros: target_url (str), wordlist (str).
Web Secwfuzz_scanFuzzing de parâmetros/diretórios web. Parâmetros: target_url (str), wordlist (str).
Web Secsqlmap_scanDetecção/exploração de injeção SQL. Parâmetros: target_url (str), params (str).
Web Secwpscan_enumScanner de vulnerabilidades WordPress. Parâmetros: target_url (str).
Crackinghydra_bruteforceForça bruta de credenciais de login. Parâmetros: target (str), service (str), user (str), wordlist (str).
Crackingjohn_crackQuebra hashes de senha. Parâmetros: hash_file (str), wordlist (str).
Crackinghashcat_crackQuebra de hashes com uso intensivo de recursos. Parâmetros: hash_file (str), hash_type (str), wordlist (str).
Exploitsearchsploit_queryPesquisa no Exploit Database. Parâmetros: query (str).
Exploittcpdump_sniffCaptura pacotes de rede. Parâmetros: interface (str), packet_count (str).
Exploitmetasploit_exploitExecuta um módulo MSF. Parâmetros: module (str), options (str).

Dica Profissional para LLMs: Ao pedir ao LLM para executar metasploit_exploit, formate as opções cuidadosamente como pares KEY=VALUE separados por vírgula (por exemplo, RHOSTS=192.168.1.5, LHOST=10.0.0.2).

⚙️ Variáveis de Ambiente

Embora o script do servidor Python não imponha variáveis de ambiente personalizadas no nível do aplicativo, o ambiente Docker depende da seguinte variável Linux padrão:

DEBIAN_FRONTEND: Definida como noninteractive no Dockerfile para evitar que o processo de build trave em solicitações de prompt interativas durante instalações de apt.

⚠️ Solução de Problemas

  • Comando Excedeu o Tempo: O servidor tem timeouts de segurança embutidos na função run_cmd (padrão de 300 segundos, estendido para 600+ para ferramentas mais pesadas como Nikto ou Metasploit). Se um alvo estiver completamente sem resposta, a ferramenta retornará limpo um erro de timeout em vez de travar o LLM indefinidamente.
  • Permissão Negada (Docker): Garanta que seu usuário tenha permissões para executar comandos Docker, ou execute o IDE do cliente com privilégios de usuário apropriados. Ferramentas como netdiscover ou tcpdump dentro do contêiner podem falhar silenciosamente ao capturar tráfego externo, a menos que o roteamento de rede host do Docker ou modos privilegiados estejam habilitados.