John the Ripper 로 SSH 키 해시 크랙하기
해시를 추출했으므로 이제 John the Ripper 를 사용하여 크랙할 차례입니다. "사전 공격"을 수행할 것이며, 여기서 john은 제공된 목록의 모든 단어를 가능한 암호 구문으로 시도합니다. 이 실습에서는 환경에 미리 생성된 wordlist.txt 파일을 사용할 것입니다.
실제 시나리오에서는 공격자가 수백만 개의 일반적인 암호, 이름 및 사전 단어를 포함하는 대규모 단어 목록을 사용합니다. 우리의 간단한 단어 목록에는 올바른 암호 구문인 labex가 포함되어 있어 이 시연에서 크랙이 성공적으로 이루어지도록 합니다.
단어 목록과 해시 파일을 지정하여 john 명령을 실행합니다.
john --wordlist=wordlist.txt ssh_hash.txt
John 이 크래킹 프로세스를 시작합니다. 암호 구문이 짧은 단어 목록에 있으므로 거의 즉시 발견됩니다.
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH private keys ssh2john])
Cost 1 (KDF/cipher) is 0 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
labex (my_ssh_key)
1g 0:00:00:00 DONE (2023-01-01 12:05) 12.50g/s 12.50p/s 12.50c/s 12.50C/s sunshine..labex
Use the "--show" option to display all of the cracked passwords reliably
Session completed
성공! 출력 줄 labex (my_ssh_key)는 암호 구문 labex가 키 my_ssh_key에 대해 성공적으로 복구되었음을 보여줍니다.
John the Ripper 는 크랙된 암호를 "pot 파일"(~/.john/john.pot 기본값) 이라는 파일에 저장합니다. 공격을 다시 실행하지 않고 크랙된 암호를 다시 보려면 --show 옵션을 사용할 수 있습니다.
john --show ssh_hash.txt
my_ssh_key:labex
1 password hash cracked, 0 left
이는 크랙된 암호 구문을 확인합니다. 이제 SSH 키의 약한 암호 구문을 성공적으로 크랙했습니다.