sshkey-grab
このスクリプトは、ssh-agent のバグを利用して、エージェントに最後に追加された鍵を取得します。これにより、ssh-agent が終了されておらず、以前の鍵が削除された後に新しい鍵が追加されていない場合、ssh-add -t、-d、-D を介して ssh-agent から削除された鍵を復元できる可能性があります。このバグは報告されており、新しいバージョンの OpenSSH で修正される可能性があります。修正されると、このツールは動作しなくなります。
要件
- grabagentmem.sh は、ターゲットマシン上で root アクセスと gdb が必要です
- parse_mem.py は、pyasn1 Python モジュールがインストールされている必要があります
使用方法
- grabagentmem.sh をターゲットマシンにコピーします。
- ターゲットマシン上で root として grabagentmem.sh を実行します。これにより、このマシン上で実行中の各 ssh-agent プロセスのスタックのメモリダンプが作成されます。デフォルトでは、/tmp/SSHagent-$PID.stack という名前で保存されます。
- スタックトレースを parse_mem.py がインストールされているマシンにコピーします
- parse_mem.py [スタックファイル] [鍵出力] を実行します(例: ./parse_mem.py /tmp/SSHagent-17019.stack /tmp/key)
- 抽出した鍵ファイルが動作するかどうかを、ssh -i [鍵ファイル] [ユーザー]@[マシン] を使用してテストします
RSA 鍵生成コードの一部は、Thialfihar の Fancy SSH Key Generator からのものです: https://github.com/thialfihar/semantic-ssh-key/blob/master/generate_fancy_ssh_key.py