
nightcrawler — Updated!
Assistente de red team com IA local no seu telefone
Nightcrawler
Um agente autônomo de teste de penetração que roda inteiramente em um smartphone. Coloque o telefone em uma rede, afaste-se, e ele descobre hosts, mapeia serviços, encontra vulnerabilidades e gera um relatório de pentest — tudo sem conectividade com a nuvem.
░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄ v0.1.0
AUTONOMOUS MOBILE PENTEST AGENT
OnePlus 8 · NetHunter · LFM2.5-1.2B · OpenCL GPU
O que é isso?
Teste de penetração (pentest) é a prática de testar a segurança de uma rede de computadores simulando um ataque — com a permissão explícita do proprietário da rede. Pentesters profissionais são contratados para encontrar vulnerabilidades antes que atacantes reais o façam.
O Nightcrawler automatiza esse processo em um telefone. Ele usa um pequeno modelo de IA (LFM2.5-1.2B-Instruct-Heretic, 1,2 bilhão de parâmetros) rodando localmente na GPU do telefone para decidir o que fazer em seguida — qual host sondar, qual ferramenta usar, o que procurar. Nenhuma conexão com a internet ou API em nuvem é necessária.
Demonstração
▶️ Assista ao Nightcrawler em ação no Instagram
Como funciona
- Invasão de WiFi (opcional) — Se implantado sem WiFi, ele pode quebrar redes WPA2 autonomamente usando um adaptador WiFi USB externo
- Reconhecimento — Descobre dispositivos na rede usando varreduras furtivas
- Enumeração — Sonda serviços descobertos (servidores web, compartilhamentos de arquivos, SSH, DNS, etc.)
- Exploração — Testa vulnerabilidades conhecidas e credenciais padrão
- Relatório — Gera um relatório de pentest estruturado com descobertas e recomendações de remediação
O agente opera como um pentester humano paciente — ele rotaciona entre hosts, faz uma pequena ação por turno e constrói conhecimento gradualmente ao longo de horas. Isso o torna muito mais difícil de detectar do que scanners de vulnerabilidade tradicionais que atacam todos os hosts de uma vez.
Conceitos-chave
| Termo | O que significa |
|---|---|
| Drop box | Um dispositivo deixado em uma rede alvo para realizar testes autonomamente |
| Escopo | O conjunto de redes/hosts que você está autorizado a testar |
| Regras de Engajamento (ROE) | Um documento legal especificando o que você tem permissão para fazer |
| Furtividade | Técnicas para evitar detecção por monitoramento de rede (IDS/IPS) |
| MCP | Model Context Protocol — uma interface padrão para uso de ferramentas por IA |
| C2 | Command and Control — o painel web para monitorar e direcionar o agente |
Arquitetura
┌──────────────────────────────────────────────────────────┐
│ PHONE (OnePlus 8) │
│ │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │ LFM2.5 │ │ Agent Loop │ │
│ │ 1.2B model │◄───►│ (main.py) │ │
│ │ on GPU │ │ Decides what │ │
│ │ (:8080) │ │ to do next │ │
│ └─────────────┘ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ Scope Proxy │ ← Safety layer │
│ │ Validates every │ Blocks out- │
│ │ command before │ of-scope │
│ │ execution │ actions │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ Kali MCP Server │ ← Runs the │
│ │ nmap, curl, │ actual │
│ │ smbclient, ... │ commands │
│ └──────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Web Dashboard │ │ SQLite DB │ │
│ │ (:8888) │ │ Hosts, vulns, │ │
│ │ Monitor & steer │ │ creds, commands │ │
│ └──────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────┘
Para o design completo do sistema, consulte docs/ARCHITECTURE.md.
Recursos
- Totalmente autônomo — sem humano no ciclo durante a operação
- Inferência 100% local — a IA roda na GPU do telefone, sem necessidade de nuvem
- Escopo imposto — defesa em duas camadas impede ações fora do escopo
- Furtividade em primeiro lugar — taxas de varredura lentas, rotação de hosts, tráfego de cobertura, apenas nmap -T2
- 27 playbooks de exploração — cadeias de ataque em várias etapas que executam automaticamente
- Banco de dados CVE com 24.956 entradas — correspondência de vulnerabilidades ciente de versões
- Painel web — monitoramento em tempo real, gerenciamento de hosts, controles C2
- Modo de invasão WiFi — quebra autônoma de WPA2 com adaptador USB (inspirado no Pwnagotchi)
- Descoberta passiva — captura em segundo plano de broadcasts mDNS/NBNS/DHCP/ARP
- Multi-rede — dados isolados por rede, sobrevive a mudanças de DHCP via hosts chaveados por MAC
- Autocura — detecção de lixo, redefinição de contexto, watchdogs, detecção de travamento
- Captura de treinamento — registra interações bem-sucedidas para futuro ajuste fino do modelo
- Geração de relatórios — relatório de pentest baixável com vulnerabilidades, cadeias de exploração, remediação
Consulte docs/FEATURES.md para a referência completa de recursos.
Hardware
Necessário
- Telefone Android com Kali NetHunter (testado no OnePlus 8, Snapdragon 865)
- Acesso root via Magisk
- 12GB+ de RAM (o modelo usa ~1,3GB, o Android usa ~4GB, o restante para ferramentas)
Opcional
- Adaptador WiFi USB para modo de invasão WiFi offline (Ralink RT3572 recomendado)
- Kernel personalizado com MAC80211 para modo monitor (guia de compilação)
- NVIDIA AGX para descarregar para um modelo maior via Tailscale
Desempenho da GPU
Toda a inferência via OpenCL na GPU Adreno 650:
| Modelo | Quantização | Velocidade de Prompt | Velocidade de Geração |
|---|---|---|---|
| LFM2.5-1.2B-Instruct-Heretic (produção) | Q8_0 | 115 tok/s | 13 tok/s |
| Qwen3.5-0.8B | Q8_0 | 30,5 tok/s | 6,3 tok/s |
| Qwen3.5-4B | Q4_0 | 10,1 tok/s | 2,0 tok/s |
Nota: O Android limita a GPU quando alimentado por bateria (desaceleração de 6x). O Nightcrawler inclui um daemon de governança de GPU que força o desempenho máximo e limita automaticamente a ≤15% de bateria.
Início Rápido
# 1. Instalação (dentro do chroot do Kali NetHunter)
bash INSTALL.sh
# 2. Aguarde o llama-server iniciar (~5 min após o boot)
curl -s http://127.0.0.1:8080/health # Deve retornar {"status":"ok"}
# 3. Inicie todos os serviços
bash scripts/run-36h.sh
# 4. Abra o painel web (de qualquer dispositivo na sua rede Tailscale)
# https://<seu-hostname-tailscale>:8888
Execução de Teste (nenhum comando real é executado)
NC_DRY_RUN=1 python3 main.py
Isso usa um servidor Kali simulado para que você possa testar o loop do agente sem executar comandos reais de rede.