
script d'énumération d'utilisateurs SSH basé sur les différences de timing et les réponses d'authentification. Il exploite le même vecteur que CVE-2018-15473 sur les versions vulnérables d'OpenSSH (≤ 7.7), bien qu'il puisse également révéler des schémas dans les configurations modernes.
Script d'énumération d'utilisateurs SSH basé sur les différences de timing et les réponses d'authentification. Exploite le même vecteur que CVE-2018-15473 dans les versions vulnérables d'OpenSSH (≤ 7.7), bien qu'il puisse également révéler des motifs dans les configurations modernes. Fonctionne en Python 3 + Paramiko et prend en charge :
Pré-lecture de bannière pour éviter les erreurs EOF/NoBanner.
Nouvelles tentatives par essai et temps d'attente entre utilisateurs (pour contourner les tarpits/MaxStartups).
Autotune des paramètres (-m, -t) en fonction du jitter de la cible.
⚠️ Utilisation Éthique
Ce script ne doit être utilisé que dans des environnements personnels ou avec une autorisation explicite. Les abus contre des systèmes externes sans permission peuvent être illégaux.
📖 Utilisation de base ./ssh_enum_py3.py -i -u users.txt -m <multiplier_ms> -t
Exemple : ./ssh_enum_py3.py -i 149.210.234.234 -u users.txt -m 5000 -t 8
⚙️ Options -i, --ip Hôte/IP cible (obligatoire) -p, --port Port SSH (défaut : 22) -u, --userlist Fichier contenant la liste des utilisateurs (un par ligne)
-a, --autotune Calcule les paramètres recommandés (multiplier et threshold) -m, --multiplier Seuil en millisecondes au-dessus de la médiane locale -t, --threshold Nombre minimum de « votes » (essais dépassant le cutoff)
--attempts Tentatives par utilisateur (défaut : 12) --timeout Délai de connexion/authentification (s, défaut : 6) --banner-timeout Délai pour lire la bannière SSH (s, défaut : 12) --delay Pause entre tentatives pour un même utilisateur (s, défaut : 0,6) --cooldown-users Pause entre utilisateurs (s, défaut : 0) --retries Nouvelles tentatives par essai en cas d'erreur de bannière/transport
🚀 Exemples d'utilisation
Sortie :
[*] Autotune suggéré : multiplier (ms): 4986 threshold : 8 baseline_med : 3586 ms (avg=3596 ms) error mix : {'AuthFailed': 12}
Autotune + énumération dans la même exécution
./ssh_enum_py3.py -i 149.210.234.234 -a -u users.txt
--timeout 12 --banner-timeout 30 --delay 3 --cooldown-users 15
Énumération directe avec paramètres fixes
./ssh_enum_py3.py -i 149.210.234.234 -u users.txt -m 4986 -t 8
--attempts 10 --timeout 12 --banner-timeout 30 --retries 5 --delay 3 --cooldown-users 15
📋 Interprétation des résultats
likely VALID → Utilisateur probablement existant (a dépassé le cutoff dans ≥ threshold essais).
likely INVALID → Utilisateur probablement inexistant (réponses cohérentes comme « AuthFailed »).
errors={...} → résumé des codes :
AuthFailed : réponse SSH normale.
NoBanner : le serveur a coupé avant la bannière (tarpit, MaxStartups, WAF).
TransportError : erreur réseau/temps.