SSH commence chaque session en négociant les algorithmes d'échange de clés, de chiffrement et d'authentification des messages à partir des listes proposées par les deux parties. Si un serveur annonce encore des options faibles, la négociation (ou un attaquant positionné la forçant) peut aboutir à une combinaison cassable : chiffrements hérités ou cassés, MAC faibles ou tronqués, et groupes d'échange de clés petits ou défaillants. Cela n'a pas d'importance face à un observateur passif d'une session robuste, mais permet le déchiffrement, l'altération ou le downgrade pour un attaquant capable de capturer ou de se positionner sur la connexion, et ces faiblesses sont celles qui rendent possibles certaines attaques SSH de type machine-in-the-middle et sur le trafic.
# enumerate offered algorithms and grade them
nmap -p22 --script ssh2-enum-algos <target>
ssh -Q cipher; ssh -Q mac; ssh -Q kex # what your client supports (for comparison)
# connect forcing a weak algorithm to test acceptance
ssh -c aes128-cbc -o MACs=hmac-md5 user@<target>
Sous-thèmes#
- Downgrade d'échange de clés : forcer des groupes d'échange de clés faibles ou petits.
- Chiffrements faibles : faiblesses des chiffrements hérités et en mode CBC.
- Algorithmes MAC faibles : protection d'intégrité cassée ou tronquée.