
Cadre de leurre axé sur les LLM : "Le honeypot qui répond !™"

Présentation de honeyprompt, un framework de leurre axé sur les LLM conçu par/pour les développeurs web. Le projet personnel de @alectrocute.
Prend en charge tous les principaux fournisseurs de LLM cloud et locaux. SSH, HTTP, TLS, TCP, telnet et plus encore. Il est livré sous la forme d'un petit conteneur (et d'un binaire statique unique) et conserve tous les réglages dans un seul fichier honeyprompt.yaml.
Aucun plugin à compiler, aucune base de données à exécuter, facilement extensible et peut être déployé sur du matériel bas de gamme.
Une instance de démonstration est disponible à 172.233.151.216, avec le panneau web non authentifié ici : http://172.233.151.216:9090. Il s'agit d'une instance publique de honeyprompt tournant sur un VPS Linode bon marché, avec openrouter/free comme seul fournisseur/modèle LLM.
Pour une configuration facile en 2026, nous recommandons Docker et OpenRouter/openrouter/free comme fournisseur LLM. Tous les principaux fournisseurs de LLM cloud et locaux sont pris en charge. Trois fichiers et une commande mettent en place le déploiement par défaut complet : sept leurres alimentés par LLM, un stockage d'événements durable et le panneau opérateur.
1. Récupérez la configuration par défaut, le fichier compose et le modèle d'environnement :
# si vous n'avez pas Docker :
# curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
mkdir honeypot && cd honeypot
wget https://raw.githubusercontent.com/alectrocute/honeyprompt/main/honeyprompt.yaml
wget https://raw.githubusercontent.com/alectrocute/honeyprompt/main/compose.yaml
wget -O .env https://raw.githubusercontent.com/alectrocute/honeyprompt/main/.env.example
(Ou clonez le dépôt et cd dedans — les mêmes trois fichiers.)
2. Remplissez .env. Deux valeurs sont requises :
OPENROUTER_API_KEY=sk-or-... # utilisez une clé dédiée avec une limite de dépenses
HONEYPROMPT_PANEL_PASSWORD=changeme # mot de passe d'authentification de base pour le panneau
3. Démarrez-le :
docker compose up -d
4. Testez-le :
ssh -p 2222 root@localhost # mot de passe : root — puis tapez n'importe quoi
curl http://localhost:2375/v1.54/containers/json # API Docker "exposée"
5. Regardez-le se produire dans le panneau en lecture seule à http://127.0.0.1:9090 (connectez-vous en tant qu'admin avec votre mot de passe du panneau). Chaque connexion, identifiant et commande est diffusé en direct. Si vous êtes déployé sur un hôte distant, vous devrez exposer le port :9090 dans compose.yaml. Ceci n'est pas recommandé pour les déploiements en production.
Épinglez une version numérotée au lieu de
latestpour les déploiements en production — définissezHONEYPROMPT_IMAGEdans.env.
Le fichier honeyprompt.yaml que vous venez de télécharger est une vitrine entièrement annotée. Il embarque des profils pour :
/ sert instantanément la page d'accueil nginx standard, et les chemins plus profonds passent par le LLM pour générer des pages intranet complètes en HTML/CSS, des formulaires de connexion et des panneaux d'administration conçus pour que l'attaquant continue à cliquer.[!IMPORTANT] Même si vous utilisez des LLM, identifiez les chemins les plus fréquemment utilisés et ajoutez des règles statiques pour eux. Cela vous fera économiser des quantités massives de tokens LLM et accélérera les réponses aux requêtes qui ne valent pas le coût d'un appel LLM. Exemples aléatoires :
whoami, vérifications de santé, favicon, sondes de version, etc.
Ce honeyprompt.yaml minimal simule une boîte SSH avec deux règles statiques et aucun LLM :
panel:
enabled: true
address: "0.0.0.0:8080"
events:
buffer: 2000
file: /data/events.jsonl # activité durable de l'attaquant
services:
- protocol: ssh
address: "0.0.0.0:2222"
description: "Exécuteur de build Ubuntu 26.04 LTS"
serverName: "gpu-runner-07"
passwordRegex: "^(root|admin|123456)$" # quels mots de passe "fonctionnent"
commands:
- regex: "^whoami$"
handler: "root"
- regex: "^(.+)$"
handler: "bash: command not found"
docker run --rm \
-p 2222:2222 -p 8080:8080 \
-v "$(pwd)/honeyprompt.yaml:/etc/honeyprompt/honeyprompt.yaml:ro" \
-v honeyprompt-data:/data \
alectrocute/honeyprompt:latest
Pour un déploiement persistant, utilisez le fichier compose.yaml fourni. Le guide de déploiement couvre les versions Docker Hub, les secrets GitHub requis, la configuration des ports et du pare-feu, l'accès au panneau via SSH, les mises à niveau, le rollback, le stockage des événements et l'isolation.
Un honeypot n'a qu'une seule chose à faire : rester convaincant assez longtemps pour que l'attaquant continue à taper. Chaque commande qu'il exécute est une information de renseignement — les outils qu'il utilise, les identifiants qu'il réutilise, les CVE qu'il suppose que vous n'avez pas corrigées. Les honeypots statiques perdent leur crédibilité dès que quelqu'un exécute une commande que l'auteur n'avait pas anticipée. honeyprompt confie ce moment à un LLM, de sorte que le shell réponde à dmesg | tail ou cat /etc/shadow comme le ferait un vrai, et la session continue.
Découvrez l'excellente présentation de Adel Karimi à DEF CON 32 sur Galah, (le premier ?) honeypot LLM, qui a inspiré ce projet : https://www.youtube.com/watch?v=XGsm4Qcc_Ag
C'est la partie qu'il vaut la peine de comprendre dès le départ, car les deux sont délibérément séparés :
Vous les configurez séparément :
# Le miel : l'activité de l'attaquant.
events:
buffer: 2000 # événements récents conservés en mémoire pour le panneau
file: /data/events.jsonl # persister chaque événement en JSON Lines