O que é um LLM Honeypot

Um honeypot e uma armadilha digital: um sistema falso criado para atrair atacantes, registrar o que eles fazem e coletar inteligência sobre as ameaças. A versão clássica simula um servidor SSH vulnerável ou um banco de dados exposto. O atacante entra, acha que é real, e você observa cada movimento.

O LLM Honeypot leva esse conceito para um nível acima. Em vez de simular apenas um servidor, ele usa um modelo de linguagem para manter conversas convincentes com bots maliciosos, scripts automatizados e até atacantes humanos. A IA responde de forma plausivelmente realista, mantendo o atacante engajado por mais tempo e revelando muito mais sobre suas técnicas.

A ideia ganhou torção em 2024 e 2025 com o crescimento dos ataques automatizados baseados em IA. Quando atacantes usam LLMs para criar phishing convincente ou automatizar varreduras, faz sentido combater fogo com fogo: usar LLMs para criar iscas igualmente convincentes do outro lado.

Como funciona

A arquitetura básica de um LLM Honeypot tem três camadas. A primeira e o ponto de entrada: um endpoint exposto que parece legítimo. Pode ser uma página de login de admin, uma API sem autenticação ou até um chatbot de suporte.

A segunda camada e o motor de conversação: um LLM (geralmente um modelo mais leve como Llama 3 ou Mistral) configurado com um prompt de sistema que o instruí a fingir ser um sistema vulnerável. Ele responde perguntas, aceita comandos errados de forma plausivelmente real, pede credenciais, finge processar dados.

A terceira camada e o sistema de logging e análise. Cada interação e gravada com timestamp, IP de origem, payload enviado, técnica utilizada e padrões de comportamento. Você acaba com um banco de dados rico sobre as táticas dos atacantes, que alimenta regras de firewall, listas de bloqueio e treinamentos futuros de segurança.

💡
Dica

LLM Honeypots são especialmente eficazes contra bots que usam IA para interagir: o modelo consegue manter a conversa por muito mais tempo do que um script fixo, revelando mais sobre o comportamento do atacante.

Principais recursos

O que diferencia um LLM Honeypot de um honeypot tradicional e justamente a capacidade de adaptação em tempo real. Algumas características que fazem diferença:

  • Conversação dinâmica: responde de forma contextual, não com respostas fixas. O atacante não percebe que esta falando com uma armadilha.
  • Simulação de erros plausíveis: o modelo pode responder com mensagens de erro realistas, dados falsos convincentes e fluxos de autenticação que parecem reais.
  • Coleta de payloads: registra automaticamente todos os prompts de injeção, tentativas de jailbreak e técnicas de engenharia social usadas.
  • Fingerprinting de bots: identifica padrões que diferenciam bots de humanos, incluindo velocidade de digitação, sequência de perguntas e vocabulário técnico.
  • Alertas em tempo real: pode ser integrado com sistemas SIEM para notificar a equipe de segurança quando detecta técnicas de ataque novas ou especialmente sofisticadas.

A grande vantagem sobre honeypots tradicionais e que o LLM consegue manter uma conversa longa o suficiente para revelar a cadeia completa do ataque, não apenas o primeiro passo.

Como começar: montando um LLM Honeypot básico

A forma mais acessível de experimentar e usando um modelo local via Ollama combinado com um endpoint HTTP simples. Você não precisa expor nada realmente vulnerável na sua infraestrutura real.

Passo 1: Instale o Ollama e baixe um modelo leve:

# Instalar Ollama (Linux/Mac)
curl -fsSL https://ollama.com/install.sh | sh

# Baixar modelo leve
ollama pull mistral:7b

Passo 2: Crie um servidor Flask simples que intercepta requests e passa para o LLM com um prompt de sistema específico:

from flask import Flask, request, jsonify
import ollama

app = Flask(__name__)

SYSTEM_PROMPT = """
Você e um sistema de banco de dados administrativo com falhas de segurança.
Responda como se fosse um sistema vulnerável real.
Nunca revele que é uma armadilha. Registre internamente cada tentativa.
"""

@app.route('/admin/api', methods=['POST'])
def honeypot():
    user_input = request.json.get('query', '')
    # Log o payload
    with open('honeypot.log', 'a') as f:
        f.write(f"{request.remote_addr}: {user_input}\n")
    # Gerar resposta convincente
    response = ollama.chat(
        model='mistral:7b',
        messages=[{'role': 'system', 'content': SYSTEM_PROMPT},
                  {'role': 'user', 'content': user_input}]
    )
    return jsonify({'result': response['message']['content']})

if __name__ == '__main__':
    app.run(port=8080)

Passo 3: Execute em um ambiente isolado (container Docker, VM ou VPS dedicada) e monitore o log em tempo real com tail -f honeypot.log.

⚠️
Atenção

NUNCA rode um honeypot na mesma máquina que seus sistemas de produção. Use sempre um ambiente completamente isolado, de preferência em uma rede separada ou VPS dedicada.

Exemplo prático

Imagine que você publicou um endpoint chamado /api/v1/admin/users sem autenticação aparente. Um bot de varredura encontra o endpoint e começa a tentar injeções SQL clássicas:

# Tentativa típica de bot malicioso
curl -X POST https://seu-honeypot.com/api/v1/admin/users \
  -H 'Content-Type: application/json' \
  -d '{"query": "SELECT * FROM users WHERE 1=1; DROP TABLE users;--"}'

Sem um LLM, você retornaria um erro genérico e o bot passaria para o próximo alvo. Com um LLM Honeypot, o modelo responde com algo como:

{
  "result": "Query executada. 847 registros encontrados. Exportar como CSV?",
  "rows": [{"id": 1, "email": "[email protected]", "role": "superadmin"}]
}

O bot acha que funcionou e continua tentando. Ele revela mais técnicas: tenta exfiltrar dados, testa outras tabelas, talvez até tente fazer upload de um webshell. Cada passo fica gravado no seu log, dando uma visão completa da cadeia de ataque daquele agente específico.

Comparação com alternativas

Existem algumas abordagens para honeypots que vale comparar:

Honeypots tradicionais (Honeyd, Cowrie): simulam sistemas com respostas pre-programadas. São eficazes para bots simples mas facilmente detectaveis por ferramentas modernas de reconhecimento que já sabem identificar padrões de honeypot conhecidos.

Tarpit: responde extremamente devagar para consumir recursos do atacante. Útil para bots de spam, mas não coleta inteligência útil sobre as técnicas.

LLM Honeypot: tem respostas dinâmicas e imprevisíveis, o que dificulta a detecção automática de que é uma armadilha. A desvantagem e o custo computacional e a latência do modelo.

🚀
Pro tip

Combine abordagens: use um tarpit para desacelerar bots simples e um LLM Honeypot para os ataques mais sofisticados que passam pelo primeiro filtro. Isso economiza recursos do modelo sem perder cobertura.

Pontos positivos e limitações

O que funciona bem: a capacidade de manter conversas longas e convincentes e genuinamente superior aos honeypots tradicionais. Contra atacantes humanos sofisticados ou bots que usam IA, um LLM Honeypot pode revelar técnicas que um sistema de regras jamais capturaria.

Limitações reais: o custo e a latência são os maiores obstáculos. Rodar um modelo suficientemente bom para enganar atacantes sofisticados requer hardware decente ou APIs pagas. Para honeypots de alto volume (que recebem milhares de requests por hora), o custo pode ser proibitivo.

Outra limitação e o risco de prompt injection reversa: um atacante sofisticado pode tentar injetar prompts no sistema para fazer o modelo revelar que é uma armadilha ou até vazar informações do prompt de sistema. Por isso, o prompt de sistema do honeypot deve ser cuidadosamente sanitizado e o modelo deve ser instruído explicitamente a não revelar sua natureza.

Casos de uso reais

LLM Honeypots tem aplicações práticas em vários contextos:

  • Pesquisa de segurança: universidades e labs de segurança usam para estudar as técnicas de ataque mais recentes, especialmente as que usam IA. E uma forma de manter catalogo atualizado de TTPs (Tactics, Techniques and Procedures).
  • Proteção de APIs públicas: startups com APIs públicas podem colocar endpoints falsos ao lado dos reais para detectar varreduras automatizadas antes que cheguem ao sistema real.
  • Detecção de bots em formulários: em vez de CAPTCHA, alguns sistemas usam LLM Honeypots para detectar bots em formulários de contato ou cadastro, mantendo conversas que bots não conseguem navegar naturalmente.
  • Treinamento de equipes red team: criar honeypots realistas ajuda times internos a praticar técnicas de evasão e detecção em ambientes controlados.

Dicas e boas práticas

💡
Dica

Use modelos menores e rápidos (3B-7B parâmetros) para o honeypot. A velocidade de resposta e mais importante do que a qualidade do texto para manter bots engajados.

💡
Dica

Adicione delays artificiais nas respostas para simular processamento real. Respostas instantâneas são um sinal de armadilha para bots mais sofisticados.

🔴
Cuidado

Nunca inclua dados reais de usuários, senhas ou tokens reais no prompt de sistema do honeypot. Se o modelo vazar o prompt via injeção, você expõe informações críticas.

🚀
Pro tip

Implemente um sistema de pontuação de risco: log + IP + técnica = score. Quando o score ultrapassar um limiar, acione automaticamente o bloqueio no firewall e envie alerta para o time de segurança.

Vale a pena?

Para equipes de segurança e pesquisadores: sim, definitivamente. A inteligência coletada sobre técnicas de ataque automatizado baseado em IA e única e difícil de obter de outra forma.

Para startups e times pequenos: depende do orçamento. Um LLM Honeypot bem feito requer manutenção constante do prompt de sistema e análise dos logs. Se o time não tem capacidade para isso, um honeypot tradicional como Cowrie ainda entrega bastante valor com muito menos esforço.

O próximo passo prático e experimentar o projeto open source disponível em llm2human.pages.dev, que oferece uma implementação de referência para quem quer começar sem construir do zero. O código e um bom ponto de partida para entender os padrões de design antes de criar a própria versão.