sshkey-grab
Este script utiliza uma falha no ssh-agent que permite extrair a última chave adicionada ao agente. Isso pode possibilitar a recuperação de uma chave que foi removida do ssh-agent via ssh-add -t, -d ou -D, desde que o ssh-agent não tenha sido encerrado e uma nova chave não tenha sido adicionada desde a remoção da anterior. Essa falha foi reportada e pode ser corrigida em versões mais recentes do OpenSSH, o que tornará esta ferramenta inoperante.
Requisitos
- grabagentmem.sh requer acesso root e gdb na máquina alvo para funcionar corretamente
- parse_mem.py requer que o módulo python pyasn1 esteja instalado
Uso
- Copie o grabagentmem.sh para a máquina alvo.
- Execute o grabagentmem.sh na máquina alvo como root. Isso criará um dump da pilha para cada processo ssh-agent em execução na máquina. Por padrão, serão nomeados como /tmp/SSHagent-$PID.stack.
- Copie os rastreamentos da pilha para a máquina que possui o parse_mem.py instalado.
- Execute ./parse_mem.py [arquivo de stack] [saída da chave] (Exemplo: ./parse_mem.py /tmp/SSHagent-17019.stack /tmp/key)
- Teste se o arquivo de chave extraído funciona usando ssh -i [arquivo de chave] [usuário]@[máquina]
Parte do código de criação de chaves RSA é de Thialfihar's Fancy SSH Key Generator: https://github.com/thialfihar/semantic-ssh-key/blob/master/generate_fancy_ssh_key.py