Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SSHintel — Honeypot SSH autonome permettant de capturer les interactions des attaquants et de les transformer en renseignements de sécurité structurés. | Kitploit
Outils/GitHubGitHub/sonitbahl/sshintel
Sécurité RéseauRenseignement sur les MenacesDétection d'IntrusionRéponse aux IncidentsAnalyse de Journaux
GitHubsonitbahl/sshintel

SSHintel

Honeypot SSH autonome permettant de capturer les interactions des attaquants et de les transformer en renseignements de sécurité structurés.

Voir le dépôt
378il y a 2 joursPas 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

SSHintel — Honeypot SSH léger

License: MIT Python Last Commit Repo Size

SSHintel est un honeypot SSH léger construit avec Python et Paramiko. Il simule un faux shell Linux pour journaliser les tentatives d'accès non autorisées, capturer les identifiants et analyser le comportement des attaquants dans un environnement contrôlé.


🔧 Fonctionnalités

  • Journalise les tentatives de connexion SSH avec l'IP, le nom d'utilisateur et le mot de passe
  • Fournit un shell Linux simulé (un environnement factice en mémoire)
  • Prend en charge un large ensemble de commandes de reconnaissance et de navigation (ls, cd, pwd, cat, echo, grep, find, tree, head, tail, wc, stat, ps, df, free, env, id, whoami, etc.)
  • Mode --tarpit optionnel pour ralentir les attaquants avec une sortie différée
  • Système de fichiers factice isolé par session avec prise en charge de la création et de la lecture de fichiers
  • Tableau de bord web local pour visualiser la télémétrie de sécurité capturée (sessions, commandes, tentatives d'authentification, principaux attaquants)
  • Vue d'investigation de session — sélectionnez n'importe quelle session et reconstituez la chronologie complète de l'attaque de manière chronologique, y compris l'IP source, le résultat de l'authentification, chaque commande exécutée avec son répertoire de travail, et la durée de la session
  • Tout est simulé — les commandes ne s'exécutent jamais sur l'hôte, n'accèdent jamais au système de fichiers réel et n'effectuent aucune requête réseau.

SSHintel n'est pas un shell Bash/Linux complet. Il simule un sous-ensemble crédible de commandes courantes afin de recueillir la télémétrie des attaquants. Les commandes sont distribuées par un registre léger ; ajouter une commande revient à ajouter une petite fonction de gestion.


🛠️ Installation

1. 📦 Installer les dépendances

pip install -r requirements.txt

Remarque : La clé d'hôte SSH est générée automatiquement au premier lancement. Aucune génération manuelle de clé n'est nécessaire.


🚀 Exécution du honeypot

Lancez le honeypot avec un port, un nom d'utilisateur et un mot de passe spécifiques :

python3 run.py serve --port 2222 --username user1 --password pass123

Le port par défaut est 2222 et l'hôte est 0.0.0.0.

Le honeypot génère automatiquement une clé d'hôte SSH dans static/server.key au premier lancement si elle n'existe pas. Aucune génération manuelle de clé n'est nécessaire.

Pour activer le mode tarpit :

python3 run.py serve --port 2222 --username user1 --password pass123 --tarpit

Pour désactiver la télémétrie SQLite (JSONL uniquement) :

python3 run.py serve --port 2222 --username user1 --password pass123 --no-db

Configuration files and environment variables

Les paramètres du capteur suivent l'ordre CLI > environnement > fichier de configuration > valeurs par défaut. Seuls les indicateurs CLI explicitement fournis remplacent les autres sources. Cela s'applique à serve ; les commandes dashboard/query conservent leurs propres paramètres CLI.

Sur Python 3.11+ :

cp sshintel.toml.example sshintel.toml
chmod 600 sshintel.toml
python3 run.py serve

Sur Python 3.8/3.10, utilisez l'équivalent JSON sans dépendance :

cp sshintel.json.example sshintel.json
chmod 600 sshintel.json
python3 run.py serve

Modifiez le fichier copié avant le déploiement. TOML nécessite Python 3.11+ ; les versions plus anciennes échouent avec une instruction claire d'utiliser JSON. Sans fichier explicite, SSHintel recherche sshintel.toml, puis sshintel.json dans le répertoire courant. Utilisez serve --config /path/to/settings.json ou HONEYPOT_CONFIG pour sélectionner un autre fichier (--config est prioritaire). Les fichiers explicitement manquants, les fichiers malformés, les clés inconnues et les valeurs invalides échouent avant le démarrage du serveur ou de la base de données. Les chemins de fichiers dans la configuration sont relatifs au répertoire de travail du processus, et non au fichier de configuration.

Clé de fichierVariable d'environnementValeur par défaut
hostHONEYPOT_HOST0.0.0.0
portHONEYPOT_PORT (alias hérité : PORT)2222
usernameHONEYPOT_USERNAMEuser1
passwordHONEYPOT_PASSWORDpass123
tarpitHONEYPOT_TARPITfalse
tarpit_max_secondsHONEYPOT_TARPIT_MAX_SECONDS120
max_connectionsHONEYPOT_MAX_CONNECTIONS50
auth_timeoutHONEYPOT_AUTH_TIMEOUT60
session_idle_timeoutHONEYPOT_SESSION_IDLE_TIMEOUT300
sensor_idHONEYPOT_SENSOR_IDnon défini
db_pathHONEYPOT_DB_PATHdata/sshintel.db
no_dbHONEYPOT_NO_DBfalse
fetch_payloadsHONEYPOT_FETCH_PAYLOADSfalse (réservé)

Les booléens d'environnement acceptent true/false, 1/0, yes/no et on/off. HONEYPOT_PORT est prioritaire sur PORT. Les ports doivent être compris entre 1 et 65535, et les limites et délais d'expiration doivent être des entiers positifs. Utilisez --no-tarpit, --db-enabled ou --no-fetch-payloads pour remplacer un paramètre true de priorité inférieure. Les chemins de base de données utilisent l'option CLI existante --db. La récupération de payloads n'est pas implémentée : activer fetch_payloads est rejeté plutôt que silencieusement ignoré.

Les fichiers locaux sshintel.toml/sshintel.json sont ignorés par Git et exclus des builds Docker car ils peuvent contenir des identifiants. Montez plutôt un fichier de configuration en lecture seule dans un conteneur. Docker consomme directement les variables d'environnement (sans interpolation shell des identifiants) ; ses valeurs ENV par défaut existantes sont prioritaires sur un fichier monté. Remplacez ces variables selon les besoins ou utilisez des options CLI explicites.

🛡️ Limites de connexion et délais d'expiration

SSHintel se protège contre l'épuisement des ressources dû à de nombreuses connexions simultanées ou à des connexions maintenues actives indéfiniment. Ces paramètres sont configurables via la CLI :

OptionValeur par défautObjectif
--max-connections50Nombre maximal de connexions actives simultanées ; les connexions supplémentaires sont rejetées et journalisées comme un événement connection_rejected
--auth-timeout60 (s)Temps accordé pour terminer la poignée de main/authentification SSH ; les clients bloqués sont déconnectés
--session-idle-timeout300 (s)Délai d'inactivité pour un shell authentifié ; une session inactive est terminée, mais un attaquant en train de taper activement n'est jamais tué

Exemple :

python3 run.py serve --port 2222 --username user1 --password pass123 \
  --max-connections 25 --auth-timeout 30 --session-idle-timeout 300

Lorsque trop de connexions sont ouvertes, la connexion supplémentaire est fermée immédiatement et un événement de sécurité connection_rejected (avec reason: connection_limit) est écrit dans le journal JSONL. Une authentification bloquée est enregistrée comme une déconnexion avec reason: auth_timeout ; un shell inactif se termine avec reason: idle_timeout.

Le mode tarpit envoie intentionnellement la sortie lentement pour maintenir un attaquant engagé, de sorte que la boucle de bannière du tarpit n'est pas soumise au délai d'inactivité — mais les sessions tarpit sont prises en compte dans la limite de connexions.


📊 Tableau de bord

SSHintel inclut un tableau de bord web local qui visualise la télémétrie de sécurité stockée dans SQLite.

Télécharger l’outil