sshkey-grab
Questo script sfrutta un bug in ssh-agent che permette di recuperare l'ultima chiave aggiunta all'agente. Ciò può consentire di recuperare una chiave che è stata rimossa da ssh-agent tramite ssh-add -t, -d o -D, a condizione che ssh-agent non sia stato terminato e che una nuova chiave non sia stata aggiunta dopo la rimozione della precedente. Questo bug è stato segnalato e potrebbe essere corretto nelle versioni più recenti di OpenSSH, rendendo questo strumento inutilizzabile.
Requisiti
- grabagentmem.sh richiede accesso root e gdb sulla macchina di destinazione per funzionare correttamente
- parse_mem.py richiede l'installazione del modulo python pyasn1
Utilizzo
- Copiare grabagentmem.sh sulla macchina di destinazione.
- Eseguire grabagentmem.sh sulla macchina di destinazione come root. Verrà creato un dump della memoria dello stack per ogni processo ssh-agent in esecuzione su questo sistema. I file saranno denominati di default /tmp/SSHagent-$PID.stack.
- Copiare i trace dello stack sulla macchina in cui è installato parse_mem.py
- Eseguire parse_mem.py [file stack] [output chiave] (Esempio: ./parse_mem.py /tmp/SSHagent-17019.stack /tmp/key)
- Verificare se il file della chiave estratta funziona utilizzando ssh -i [file chiave] [utente]@[macchina]
Parte del codice per la creazione della chiave RSA proviene da Fancy SSH Key Generator di Thialfihar: https://github.com/thialfihar/semantic-ssh-key/blob/master/generate_fancy_ssh_key.py