Lorsque PasswordAuthentication est activé, les connexions SSH peuvent être devinées en ligne. L'attaque pratique est façonnée par les défenses de SSH : MaxAuthTries limite les tentatives par connexion, MaxStartups bride les poignées de main concurrentes, et les outils de type fail2ban bloquent les IP fautives, donc une force brute rapide et large est bruyante et contre-productive. Un spraying lent, un ou quelques mots de passe probables sur une liste d'utilisateurs validés, est l'approche efficace, et tout identifiant valide est un excellent matériau de réutilisation car les comptes SSH sont de vrais comptes système.
# confirm password auth is offered before spraying
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@<target> 2>&1 | head -1
# spray one password across users (quiet), stop on success, few threads
hydra -L users.txt -p 'Autumn2025!' ssh://<target> -t 4 -f
nxc ssh <target> -u users.txt -p 'Autumn2025!' # marks shell vs no-shell on hit
# brute one high-value account with a short, targeted list
hydra -l admin -P top-passwords.txt ssh://<target> -t 4 -f
Notes d'exploitation#
- Vérifiez d'abord
PasswordAuthentication; de nombreux serveurs sont à clé seule (auth par mot de passe désactivée), auquel cas basculez sur les routes par clé plutôt que de deviner. - Gardez peu de threads et une liste de mots de passe courte et contextuelle : SSH journalise chaque échec,
MaxAuthTriesferme la connexion après quelques tentatives, et les outils de blocage d'IP réagissent aux rafales. - Validez d'abord les noms d'utilisateur (Énumération d'utilisateurs) pour que les tentatives tombent sur de vrais comptes ; dérivez les mots de passe de l'organisation (saison/année, nom de l'entreprise, identifiants compromis) plutôt que d'une énorme liste générique.
- Tout identifiant SSH fonctionnel est probablement réutilisé ; testez-le immédiatement contre d'autres hôtes et services. NetExec indique si le compte obtient un shell ou est confiné.