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