sshkey-grab
Ce script exploite un bogue dans ssh-agent qui permet de récupérer la dernière clé ajoutée à l'agent. Cela peut permettre de récupérer une clé qui a été supprimée de ssh-agent via ssh-add -t, -d ou -D, à condition que ssh-agent n'ait pas été arrêté et qu'aucune nouvelle clé n'ait été ajoutée depuis la suppression de la précédente. Ce bogue a été signalé et pourrait être corrigé dans les versions plus récentes d'OpenSSH, ce qui rendra cet outil inutilisable.
Prérequis
- grabagentmem.sh nécessite un accès root et gdb sur la machine cible pour fonctionner correctement
- parse_mem.py nécessite l'installation du module python pyasn1
Utilisation
- Copiez grabagentmem.sh sur la machine cible.
- Exécutez grabagentmem.sh sur la machine cible en tant que root. Cela créera un dump mémoire de la pile pour chaque processus ssh-agent en cours sur cette machine. Par défaut, ils seront nommés /tmp/SSHagent-$PID.stack.
- Copiez les traces de pile sur la machine où parse_mem.py est installé
- Exécutez parse_mem.py [fichier de pile] [sortie de clé] (Exemple : ./parse_mem.py /tmp/SSHagent-17019.stack /tmp/key)
- Testez si le fichier de clé extrait fonctionne en utilisant ssh -i [fichier de clé] [utilisateur]@[machine]
Une partie du code de création de clé RSA provient du Fancy SSH Key Generator de Thialfihar : https://github.com/thialfihar/semantic-ssh-key/blob/master/generate_fancy_ssh_key.py