Récupérer des clés SSH en mémoire
Si vous gérez plusieurs machines via SSH, peut-être utilisez-vous SSH-agent ? Cet outil tourne en arrière-plan sur votre machine et charge les clés privées SSH avec leur mot de passe en mémoire. Ainsi, lorsque vous vous connectez une première fois en SSH, la clé reste en mémoire et vous n’avez plus besoin par la suite taper le mot de passe (passphrase) à chaque reconnexion.
Pratique si vous êtes souvent déco.
Toutefois, il est possible de se faire pomper les clés ssh déchiffrées présentes en mémoire. Bon, ce n’est pas un vrai risque car il faut être root et quand on est root de toute façon, on a accès à tout et on peut tout faire… C’est surtout une jolie démo de ce qu’il est possible de faire en matière d’extraction de clés privées en mémoire.
Cela passe par le debugger gdbqui permet de produire un dump du process SSH-agent. Il y a un script dispo sur Github pour automatiser tout ça : grabagentmem.sh
root@test:/tmp# grabagentmem.sh Created /tmp/SSHagent-17019.stack
Ce fichier .stack c’est donc le dump mémoire de SSH-agent. Il ne reste plus qu’à en extraire les clés en clair qui s’y trouvent. Il faut avant tout savoir que les clés présentes en mémoire sont dans un format légèrement différent de celui généré par SSH-keygen mais ce n’est pas grave puisque pour cela, il y a le script parse_mem.py disponible lui aussi sur Github. Pour faire fonctionner ce script, vous aurez besoin de Python et du module pyasn1.
Lancez ensuite l’analyse du dump comme ceci :
root@test:/tmp# parse_mem.py /tmp/SSHagent-17019.stack /tmp/key Found rsa key Creating rsa key: /tmp/key.rsa
Si il y a une clé valide dans le dump, celle-ci sera copiée sur votre disque dur. Elle s’utilisera alors comme la clé d’origine et sans demander un mot de passe pour la déverrouiller.
J’espère que cette petite news fera plaisir à tous mes copains pentesteurs. ;-)
Entièrement dédiée à la cybersécurité, l'école Guardia est accessible soit directement après le bac (post-bac), soit après un bac+2 ou bac+3. En rejoignant l'école Guardia, vous deviendrez développeur informatique option cybersécurité (Bac+3) ou expert en cybersécurité (Bac+5).