Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
honeyprompt — Cadre de leurre axé sur les LLM : "Le honeypot qui répond !™" | Kitploit
Outils/GitHubGitHub/alectrocute/honeyprompt
OSINT (Renseignement de Sources Ouvertes)Sécurité des ConteneursSécurité WebSécurité RéseauRenseignement sur les MenacesRed TeamingRéponse aux IncidentsSécurité de l'IA
GitHubalectrocute/honeyprompt

honeyprompt

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

Voir le dépôt
191il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

honeyprompt

banner

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.

Instance de démonstration

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.

Démarrage rapide

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 :

root@kitploit:~
# 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 :

root@kitploit:~
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 :

root@kitploit:~
docker compose up -d

4. Testez-le :

root@kitploit:~
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 latest pour les déploiements en production — définissez HONEYPROMPT_IMAGE dans .env.

Le fichier honeyprompt.yaml que vous venez de télécharger est une vitrine entièrement annotée. Il embarque des profils pour :

  • Un serveur web générique d'entreprise — port 80, le plus large filet ; / 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.
  • Passerelles MCP / agent — Découverte HTTP streamable, métadonnées OAuth, appels d'outils JSON-RPC et outils de production tentants.
  • API Docker Engine 29.5 — la surface du port 2375 non authentifiée utilisée par les vers cloud réels.
  • API Kubernetes v1.36 — découverte des espaces de noms, des charges de travail, des Secrets, des ConfigMaps et du RBAC.
  • Infrastructure de build IA Ubuntu 26.04 — SSH, charges de travail GPU, Docker, kubeconfigs, état CI et identifiants de fournisseur.
  • Redis 8.8 — sondes RESP courantes utilisées pour le vol d'identifiants, la persistance et le mouvement latéral.
  • Edge industriel / OT — un plan de gestion Telnet délibérément hérité, car la défense moderne doit encore attraper les attaques contre l'infrastructure ancienne.

Fonctionnement sans LLM

[!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 :

root@kitploit:~
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"
root@kitploit:~
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

Déploiement

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.

Pourquoi un leurre axé sur le LLM, en bref

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

Ce qui est enregistré : deux flux distincts

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 :

  • Événements de leurre : chaque interaction d'attaquant : connexions, tentatives d'authentification, chaque commande ou requête, la réponse renvoyée par honeyprompt, quel fournisseur et modèle ont répondu, et combien de temps cela a pris. C'est votre renseignement sur les menaces. Il est conservé dans un tampon mémoire limité pour le panneau en direct et vous pouvez tout persister sur le disque.
  • Journaux opérationnels : démarrage, ports liés, échecs de fournisseur, arrêt, erreurs internes. C'est ce que vous lisez lorsque le runtime se comporte mal. Cela n'a rien à voir avec l'activité de l'attaquant.

Vous les configurez séparément :

root@kitploit:~
# 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

# Les diagnostics du runtime lui-même.
logging:
  level: info # debug | info | warn | error
  format: text # son rendu sur la console : text (humain) ou json
  file: /data/honeyprompt.log # optionnel ; sur le disque c'est toujours du JSON

events.jsonl contient un objet JSON autonome par ligne — prêt à être suivi avec tail -f, envoyé à un SIEM ou relu avec jq. Les commandes Docker ci-dessus montent le volume nommé honeyprompt-data à /data, de sorte que les événements survivent au remplacement du conteneur. Les deux fichiers sont ajoutés et vidés lors d'un arrêt propre.

format n'affecte que la manière dont les journaux opérationnels sont rendus sur la console ; le fichier de journal opérationnel, lorsqu'il est activé, est toujours du JSON structuré pour être facile à analyser.

Le panneau web

screenshot

Un tableau de bord optionnel en lecture seule diffuse les événements de leurre en temps réel, les décompose par protocole et exporte tout en JSON en un clic :

root@kitploit:~
panel:
  enabled: true
  address: "0.0.0.0:8080"
  auth: # authentification de base optionnelle
    username: admin
    password: "${HONEYPROMPT_PANEL_PASSWORD}"

Le tableau de bord est en HTML, CSS et JavaScript (src/panel/assets) intégré dans le binaire. Laissez auth non défini pour désactiver l'authentification.

Fournisseurs

Chaque fournisseur est son propre module avec ses propres timeouts, tentatives, limites de taux et en-têtes. Les clés proviennent de l'environnement. Prêts à l'emploi :

Équilibrage de charge et basculement

Configurez les fournisseurs, choisissez une pool.strategy (round-robin, weighted, random ou failover), et honeyprompt répartit le trafic entre eux. Si le fournisseur choisi expire ou renvoie une erreur pouvant être relancée, honeyprompt bascule de manière transparente vers le suivant — un backend mort ne met jamais le honeypot hors ligne. Les erreurs non relançables (une clé API incorrecte, par exemple) arrêtent la cascade pour que vous le sachiez plutôt que de consommer silencieusement le quota.

Les services utilisent le pool global sauf s'ils nomment leur propre sous-ensemble de fournisseurs :

root@kitploit:~
llm:
  enabled: true
  providers: [local-ollama] # un nom : force ce service vers ce fournisseur

Listez plusieurs noms pour conserver l'équilibrage de charge et le basculement, mais uniquement dans ce sous-ensemble :

root@kitploit:~
llm:
  enabled: true
  providers: [openai-primary, openrouter-backup]

Pools nommés

Lorsque plusieurs services doivent partager le même groupe de fournisseurs — ou qu'un sous-ensemble nécessite sa propre stratégie au lieu de la stratégie globale — définissez un pool nommé. Un pool a un nom, une stratégie et une liste ordonnée de fournisseurs, et un service le référence par son nom partout où il nommerait un fournisseur :

root@kitploit:~
pools:
  - name: cheap-first
    strategy: failover # essayez le modèle local en premier, basculez vers l'API payante
    order: [local-ollama, openrouter]
  - name: spread
    strategy: round-robin
    order: [openrouter, openai]

services:
  - protocol: ssh
    # ...
    llm:
      enabled: true
      providers: [cheap-first] # un nom de pool, à la place d'un fournisseur
  - protocol: http
    # ...
    llm:
      enabled: true
      providers: [spread]

Un nom de pool doit être la seule entrée dans providers — mélanger un pool avec des fournisseurs individuels dans une même liste n'est pas autorisé, car il serait ambigu quelle stratégie prévaut. Les noms de pool vivent dans le même espace de noms que les noms de fournisseurs et ne peuvent pas entrer en conflit avec eux.

Extension des réponses avec des hooks

Lorsque « faire correspondre une regex » ou « demander au modèle » ne suffit pas, les hooks vous permettent d'insérer votre propre TypeScript dans le chemin de la requête et de la réponse. Un hook peut réécrire l'invite avant qu'elle n'atteigne le modèle, ou réécrire la réponse avant qu'elle n'atteigne l'attaquant.

root@kitploit:~
import { registerHook } from "./src/engine/hooks.ts";

registerHook({
  name: "fake-latency-notice",
  transformResponse(response, ctx) {
    if (ctx.protocol === "ssh" && /rm -rf/.test(ctx.input)) {
      return "rm: cannot remove '/': Operation not permitted\n";
    }
    return response;
  },
});

Référencez-le par son nom depuis la liste hooks: de n'importe quel service. Un hook intégré redact-secrets est activé dans la configuration d'exemple pour que le modèle ne puisse jamais renvoyer un véritable identifiant.

Métriques

Les métriques Prometheus sont servies à /metrics sur le panneau (non authentifié, pour que les scrappers fonctionnent simplement) :

root@kitploit:~
honeyprompt_events_total{protocol="ssh"}                          412
honeyprompt_llm_requests_total{provider="openai",protocol="ssh"}  118
honeyprompt_auth_attempts_total{protocol="ssh"}                    87
honeyprompt_engine_errors_total{protocol="http"}                   0

Construire depuis les sources

Pour contribuer ou si vous souhaitez un binaire natif : vous aurez besoin de Deno 2.x — la seule dépendance.

root@kitploit:~
deno task check    # vérification de type
deno task lint
deno task fmt
deno task test     # tests unitaires + intégration

deno task start -- --config honeyprompt.yaml    # exécution locale
deno task dev   -- --config honeyprompt.yaml    # exécution avec surveillance de fichiers
deno task compile                                # -> ./dist/honeyprompt (binaire autonome)

deno compile intègre le runtime, les ressources du panneau et tout dans un seul exécutable sans dépendances. Des binaires préconstruits pour Linux, macOS et Windows sont attachés à chaque version taguée.

L'intégration continue exécute le formatage, le lint, la vérification de type, les tests, la validation de configuration, une compile multiplateforme et une construction Docker à chaque push. Tagger vX.Y.Z produit les binaires de version et publie l'image multi-architecture avec attestations de provenance et SBOM sur alectrocute/honeyprompt.

CLI

root@kitploit:~
honeyprompt run [--config <path>]        démarre tous les services configurés (par défaut)
honeyprompt validate [--config <path>]   analyse et valide la configuration, puis se termine — idéal pour l'IC
honeyprompt version
honeyprompt help

--config par défaut sur ./honeyprompt.yaml, ou $HONEYPROMPT_CONFIG si défini (le conteneur le définit à /etc/honeyprompt/honeyprompt.yaml).

Un mot d'avertissement pour les utilisateurs et contributeurs

Cet outil est destiné à attirer et étudier les attaquants sur une infrastructure que vous possédez ou pour laquelle vous êtes autorisé à effectuer des tests. Exposer des services leurres revient toujours à exposer des services ; exécutez-le sur des hôtes isolés, maintenez-le à jour et ne le pointez pas vers quoi que ce soit que vous ne pouvez pas vous permettre de voir sonder. Le leurre ne remplace pas la sécurisation réelle.

Si vous souhaitez contribuer à ce projet et utiliser un agent IA ou vous appuyer fortement sur du code génératif, c'est tout à fait acceptable — mais vous serez PERSONNELLEMENT interrogé sur chaque ligne de code que vous proposez et si vous ne démontrez pas une compréhension immédiate et sans IA, votre INTÉGRALITÉ contribution sera rejetée et supprimée.

Licence

MIT.

Télécharger l’outil
FournisseurtypeNotes
OllamaollamaModèles locaux ; par défaut localhost:11434
llama.cppllamacppPoint de terminaison OpenAI server local
OpenAIopenaiOPENAI_API_KEY
Azure OpenAIazurenécessite azure.deployment + azure.apiVersion
OpenRouteropenrouterOPENROUTER_API_KEY
AnthropicanthropicANTHROPIC_API_KEY
Google GeminigoogleGEMINI_API_KEY
Tout compatible OpenAIopenai-compatiblepointez baseUrl vers votre passerelle