
AI locale potenziato per red teaming su un telefono
Un agente autonomo di penetration testing che gira interamente su uno smartphone. Lascia il telefono su una rete, allontanati, e lui scopre host, mappa servizi, trova vulnerabilità e genera un report di pentest — tutto senza connettività cloud.
░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄ v0.1.0
AUTONOMOUS MOBILE PENTEST AGENT
OnePlus 8 · NetHunter · LFM2.5-1.2B · OpenCL GPU
Il penetration testing (pentest) è la pratica di testare la sicurezza di una rete informatica simulando un attacco — con il permesso esplicito del proprietario della rete. I pentester professionisti vengono assunti per trovare vulnerabilità prima che lo facciano i veri attaccanti.
Nightcrawler automatizza questo processo su un telefono. Usa un piccolo modello di IA (LFM2.5-1.2B-Instruct-Heretic, 1,2 miliardi di parametri) eseguito localmente sulla GPU del telefono per decidere cosa fare dopo — quale host sondare, quale strumento usare, cosa cercare. Nessuna connessione internet o API cloud richiesta.
▶️ Guarda Nightcrawler in azione su Instagram
L'agente opera come un pentester umano paziente — ruota tra gli host, fa una piccola azione per turno e costruisce conoscenza gradualmente nel corso delle ore. Questo lo rende molto più difficile da rilevare rispetto ai tradizionali scanner di vulnerabilità che bombardano tutti gli host contemporaneamente.
| Termine | Cosa significa |
|---|---|
| Drop box | Un dispositivo lasciato su una rete target per eseguire test in autonomia |
| Scope | L'insieme di reti/host che sei autorizzato a testare |
| Rules of Engagement (ROE) | Un documento legale che specifica cosa ti è permesso fare |
| Stealth | Tecniche per evitare il rilevamento da parte del monitoraggio di rete (IDS/IPS) |
| MCP | Model Context Protocol — un'interfaccia standard per l'uso di strumenti IA |
| C2 | Command and Control — la dashboard web per monitorare e guidare l'agente |
┌──────────────────────────────────────────────────────────┐
│ 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 │ │
│ └──────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────┘
Per il design completo del sistema, vedi docs/ARCHITECTURE.md.
Vedi docs/FEATURES.md per il riferimento completo delle funzionalità.
Tutta l'inferenza tramite OpenCL su GPU Adreno 650:
| Modello | Quantizzazione | Velocità Prompt | Velocità Generazione |
|---|---|---|---|
| LFM2.5-1.2B-Instruct-Heretic (produzione) | 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: Android limita la GPU quando si è a batteria (rallentamento di 6x). Nightcrawler include un demone del governor GPU che forza le massime prestazioni e auto-limita a ≤15% di batteria.
# 1. Installazione (dentro il chroot di Kali NetHunter)
bash INSTALL.sh
# 2. Attendi l'avvio di llama-server (~5 min dopo il boot)
curl -s http://127.0.0.1:8080/health # Dovrebbe restituire {"status":"ok"}
# 3. Avvia tutti i servizi
bash scripts/run-36h.sh
# 4. Apri la dashboard web (da qualsiasi dispositivo sulla tua rete Tailscale)
# https://<il-tuo-hostname-tailscale>:8888
NC_DRY_RUN=1 python3 main.py
Questo usa un server Kali mock così puoi testare il loop dell'agente senza eseguire comandi di rete reali.
kali-server-mcp --port 5000 &
python3 scope_proxy.py --config config.yaml --port 8800 --upstream http://127.0.0.1:5000 &
bash scripts/webui-daemon.sh start
python3 main.py &