
Honeypot de alta interação imitando um aplicativo Laravel/Livewire vulnerável. Captura explorações RCE e webshells direcionados a CVE-2024-47823, CVE-2025-54068 e CVE-2025-14894, e os analisa em contêineres Docker em sandbox para extrair IOCs.
Um honeypot de alta interação que se disfarça de uma aplicação Laravel/Livewire vulnerável. Ele captura tentativas de exploração direcionadas a CVEs conhecidas do Livewire, armazena arquivos maliciosos enviados (webshells) e cargas de execução remota de código (RCE) com deduplicação SHA-256, e opcionalmente as executa em um contêiner Docker isolado para extrair indicadores de comprometimento (IOCs) — URLs, IPs e domínios que o malware tenta contatar.
O sistema é executado como dois processos separados por segurança: um servidor web que captura cargas (sem acesso ao Docker) e um worker sandbox que as analisa em contêineres isolados.
Atacante → Nginx → FastAPI → SQLite ← Worker Sandbox (Docker)
(captura) (consulta jobs, escreve IOCs)
Fachada — Serve páginas realistas de login/registro do Laravel com atributos wire: do Livewire, tokens XSRF e cabeçalhos X-Powered-By: PHP/8.3.12. Scanners automatizados veem o que parece ser uma aplicação vulnerável real.
Captura — Cada requisição HTTP é registrada no SQLite (IP, cabeçalhos, hash do corpo, timestamp) por uma camada intermediária ASGI, de forma transparente, antes de qualquer roteamento.
Armadilhas — Os endpoints do Livewire aceitam uploads de arquivos e mensagens de componentes exatamente como o framework real faria. As cargas são classificadas (código PHP, objetos serializados, comandos shell) e armazenadas com deduplicação SHA-256. Cada carga interessante cria um job durável na fila sandbox_jobs.
Sandbox — Um processo worker separado consulta jobs pendentes e executa cada carga em um contêiner Docker efêmero (sistema de arquivos somente leitura, sem rede, cap_drop=ALL). Um shim LD_PRELOAD intercepta chamadas de rede da libc para registrar tentativas de comunicação C2 (command-and-control). O analisador extrai IOCs e pontua potenciais endpoints C2 usando heurísticas.
| CVE | CVSS | Resumo | Endpoint da Armadilha |
|---|---|---|---|
| CVE-2024-47823 | 9.8 Crítico | RCE via upload de arquivo no Livewire por bypass de tipo MIME. Extensões de arquivo são adivinhadas a partir do tipo MIME em vez de validadas pelo nome do arquivo, permitindo uploads de .php disfarçados como imagens. Afeta Livewire < 2.12.7 e < 3.5.2. | POST /livewire/upload-file |
| CVE-2025-54068 | 9.2 Crítico | RCE por hidratação de props no Livewire. O processo de hidratação não sanitiza tipos de objetos em atualizações de propriedades de componentes, permitindo que cargas injetadas sejam executadas no lado do servidor. Afeta Livewire 3.0.0-beta.1 até 3.6.3. | POST /livewire/message |
| CVE-2025-14894 | Crítico | RCE por upload irrestrito no Livewire Filemanager. A falta de validação de tipo de arquivo e MIME permite upload não autenticado de arquivos PHP executáveis. | POST /livewire/upload-file |
Uma armadilha *.php do tipo "pega-tudo" também captura sondagens pós-exploração por nomes comuns de webshell (ex.: accesson.php, wp-login.php, admin.php).
Pré-requisitos: Python 3.11+ e uv.
git clone https://github.com/HelgeSverre/livewire-honeypot.git
cd livewire-honeypot
# Instalar dependências
uv sync
# Iniciar o servidor web (apenas captura, sem Docker necessário)
DATA_DIR=./data uv run uvicorn honeypot.main:app --reload --port 8000
# Em um segundo terminal — iniciar o worker sandbox (requer Docker)
DATA_DIR=./data uv run python -m honeypot.worker
# Executar testes
uv run pytest tests/ -v
O servidor web funciona sozinho — ele captura e armazena tudo mesmo sem o worker sandbox em execução. Inicie o worker quando quiser análise automatizada de cargas.
Nota: O diretório
src/está no path do Python viapyproject.toml(src-layout), entãohoneypot.main:appmapeia parasrc/honeypot/main.py.
Você precisará de:
A implantação completa é um único comando assim que a VPS existir. O script cuida de cada etapa, de "droplet vazio" a "serviço em execução com TLS" — pacotes apt, usuários e grupos, venv Python, imagem sandbox, nginx, certbot e regras de firewall.
# 1. Provisione um droplet de $6/mês (Ubuntu 24.04, 1 GB RAM é suficiente).
# Na DigitalOcean:
doctl compute droplet create veritron-honeypot \
--size s-1vcpu-1gb \
--image ubuntu-24-04-x64 \
--region fra1 \
--ssh-keys "$(doctl compute ssh-key list --format ID --no-header | head -1)" \
--wait
# 2. Aponte o registro A do seu domínio para o IP do droplet.
# Aguarde a resolução DNS antes de continuar.
dig +short seu-dominio.exemplo # deve retornar o IP do droplet
# 3. Copie o projeto para o droplet.
rsync -az --exclude='.git' --exclude='.venv' --exclude='data' \
./ root@<ip-do-droplet>:/opt/honeypot/
# 4. Execute o script de inicialização. Informar seu domínio habilita TLS via certbot.
ssh root@<ip-do-droplet> 'cd /opt/honeypot && [email protected] \
bash deploy/setup.sh seu-dominio.exemplo'
Pronto. O honeypot agora está servindo uma página de login falsa do Laravel/Livewire via HTTPS, capturando cada requisição no SQLite e pronto para analisar cargas no sandbox Docker.
deploy/setup.sh é idempotente — executá-lo novamente é seguro. Em ordem, ele: