
nightcrawler — Mis à jour !
Assistant local IA propulsé par IA pour red team sur téléphone
Nightcrawler
Un agent de test d'intrusion autonome qui fonctionne entièrement sur un smartphone. Déposez le téléphone sur un réseau, éloignez-vous, et il découvre les hôtes, cartographie les services, trouve les vulnérabilités et génère un rapport de pentest — le tout sans connexion cloud.
░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄ v0.1.0
AUTONOMOUS MOBILE PENTEST AGENT
OnePlus 8 · NetHunter · LFM2.5-1.2B · OpenCL GPU
Qu'est-ce que c'est ?
Le test d'intrusion (pentest) est la pratique qui consiste à tester la sécurité d'un réseau informatique en simulant une attaque — avec l'autorisation explicite du propriétaire du réseau. Les pentesters professionnels sont engagés pour trouver les vulnérabilités avant que de vrais attaquants ne le fassent.
Nightcrawler automatise ce processus sur un téléphone. Il utilise un petit modèle d'IA (LFM2.5-1.2B-Instruct-Heretic, 1,2 milliard de paramètres) exécuté localement sur le GPU du téléphone pour décider de la prochaine action — quel hôte sonder, quel outil utiliser, quoi chercher. Aucune connexion Internet ni API cloud requise.
Démo
▶️ Regardez Nightcrawler en action sur Instagram
Comment ça fonctionne
- Brèche WiFi (optionnel) — Si déposé sans WiFi, il peut craquer de manière autonome les réseaux WPA2 à l'aide d'un adaptateur WiFi USB externe
- Reconnaissance — Découvre les appareils sur le réseau à l'aide de scans furtifs
- Énumération — Sonde les services découverts (serveurs web, partages de fichiers, SSH, DNS, etc.)
- Exploitation — Teste les vulnérabilités connues et les identifiants par défaut
- Rapport — Génère un rapport de pentest structuré avec les constatations et les recommandations de remédiation
L'agent fonctionne comme un pentester humain patient — il alterne entre les hôtes, effectue une petite action par tour et accumule des connaissances progressivement sur des heures. Cela le rend beaucoup plus difficile à détecter que les scanners de vulnérabilités traditionnels qui bombardent tous les hôtes à la fois.
Concepts clés
| Terme | Signification |
|---|---|
| Drop box | Un appareil laissé sur un réseau cible pour effectuer des tests de manière autonome |
| Périmètre (Scope) | L'ensemble des réseaux/hôtes que vous êtes autorisé à tester |
| Règles d'engagement (ROE) | Un document juridique spécifiant ce que vous êtes autorisé à faire |
| Furtivité | Techniques pour éviter la détection par la surveillance réseau (IDS/IPS) |
| MCP | Model Context Protocol — une interface standard pour l'utilisation d'outils par l'IA |
| C2 | Command and Control — le tableau de bord web pour surveiller et diriger l'agent |
Architecture
┌──────────────────────────────────────────────────────────┐
│ 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 │ │
│ └──────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────┘
Pour la conception complète du système, voir docs/ARCHITECTURE.md.
Fonctionnalités
- Entièrement autonome — aucun humain dans la boucle pendant le fonctionnement
- Inférence 100 % locale — l'IA s'exécute sur le GPU du téléphone, aucun cloud requis
- Périmètre imposé — défense à deux couches empêchant les actions hors périmètre
- Furtivité d'abord — taux de scan lents, rotation des hôtes, trafic de couverture, nmap -T2 uniquement
- 27 playbooks d'exploitation — chaînes d'attaque en plusieurs étapes qui s'exécutent automatiquement
- Base de données CVE de 24 956 entrées — correspondance des vulnérabilités selon les versions
- Tableau de bord web — surveillance en temps réel, gestion des hôtes, contrôles C2
- Mode brèche WiFi — craquage WPA2 autonome avec adaptateur USB (inspiré de Pwnagotchi)
- Découverte passive — capture en arrière-plan des diffusions mDNS/NBNS/DHCP/ARP
- Multi-réseau — données isolées par réseau, survit aux changements DHCP via des hôtes indexés par MAC
- Auto-réparation — détection des déchets, réinitialisation du contexte, chiens de garde, détection de blocage
- Capture d'entraînement — journalise les interactions réussies pour un futur affinage du modèle
- Génération de rapports — rapport de pentest téléchargeable avec vulnérabilités, chaînes d'exploitation, remédiation
Voir docs/FEATURES.md pour la référence complète des fonctionnalités.
Matériel
Requis
- Téléphone Android avec Kali NetHunter (testé sur OnePlus 8, Snapdragon 865)
- Accès root via Magisk
- 12 Go+ de RAM (le modèle utilise ~1,3 Go, Android ~4 Go, le reste pour les outils)
Optionnel
- Adaptateur WiFi USB pour le mode brèche WiFi hors ligne (Ralink RT3572 recommandé)
- Kernel personnalisé avec MAC80211 pour le mode moniteur (guide de compilation)
- NVIDIA AGX pour décharger vers un modèle plus grand via Tailscale
Performances GPU
Toute l'inférence via OpenCL sur GPU Adreno 650 :
| Modèle | Quantification | Vitesse de prompt | Vitesse de génération |
|---|---|---|---|
| LFM2.5-1.2B-Instruct-Heretic (production) | 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 |
Remarque : Android limite le GPU sur batterie (ralentissement x6). Nightcrawler inclut un démon de régulation GPU qui force les performances maximales et réduit automatiquement à ≤15 % de batterie.
Démarrage rapide
# 1. Installation (dans le chroot Kali NetHunter)
bash INSTALL.sh
# 2. Attendre le démarrage de llama-server (~5 min après le boot)
curl -s http://127.0.0.1:8080/health # Doit renvoyer {"status":"ok"}
# 3. Démarrer tous les services
bash scripts/run-36h.sh
# 4. Ouvrir le tableau de bord web (depuis n'importe quel appareil de votre réseau Tailscale)
# https://<votre-nom-dhote-tailscale>:8888
Essai à sec (aucune commande réelle exécutée)
NC_DRY_RUN=1 python3 main.py