OSCP 2일차: John the Ripper 실습
TryHackMe 선행 학습 - John the Ripper Basics
어제는 HashCat을 이용해서 hash를 크래킹했다면, 오늘은 John the Ripper 라는 도구를 실습했다.
John the Ripper (JtR) 란?
John the Ripper(흔히 John 또는 JtR이라고 부름)는 가장 널리 사용되는 오픈소스 비밀번호 크래킹 툴 중 하나다. 원래는 Unix 환경을 위해 개발되었지만, 지금은 윈도우, macOS 등 다양한 15가지 이상의 플랫폼을 지원한다.
기본적으로 해시는 역연산(복호화)이 불가능하기 때문에, John the Ripper는 무차별 대입 또는 사전 대입 방식을 사용한다.
공격자가 수많은 단어들을 해시 함수에 대입해 보고, 그 결과값이 타겟이 되는 해시값과 일치하는지 대조하여 본래의 평문을 알아내는 원리이다.
이 툴의 가장 큰 장점은 해시의 알고리즘 유형을 자체적으로 판별해내는 기능과, 다양한 암호화 형식들을 지원해준다는 점이다.
어떻게 작동하는가?
JtR의 가장 기본적이고 흔한 사용법은 대입해볼 단어들이 모여있는 텍스트 파일, 즉 ‘사전 파일’을 이용하는 방식이다.
john --format=[포맷] --wordlist=[사전_파일_경로] [크랙할_해시_파일]
예를 들어, MD5 포맷의 해시를 크랙하려면 다음과 같이 명령을 내릴 수 있다. JtR 스스로 포맷을 유추하게 놔둘 수도 있지만, --format 옵션을 명확히 명시해주면 연산 속도를 크게 향상시킬 수 있다.
john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
운영체제의 패스워드도 이와 유사한 기법으로 접근한다. 윈도우의 경우 NTLM 해시 포맷(--format=NT)을 해독하며, 리눅스의 경우 사용자 정보가 담긴 /etc/passwd와 해시가 담긴 /etc/shadow 파일을 unshadow라는 자체 유틸리티로 하나로 병합한 후 크래킹을 시도하게 된다.
Custom Rules
단순히 사전 파일에 있는 단어만 대입하는 것은 성공률이 낮다. 인간은 흔히 비밀번호 정책 규정을 만족시키기 위해 password123 이나 Admin!! 처럼 기존 단어를 약간 변형하기 때문이다. John the Ripper의 Custom Rules 기능은 단어들에 이런 흔한 조작(대소문자 변경, 숫자 및 기호 추가 등)을 적용해 효율적으로 대입하게 해준다. 이를 통해 패턴화된 비밀번호의 예측 가능성을 공략한다.
룰 적용 예시
이 커스텀 룰들은 환경에 따라 /etc/john/john.conf (또는 john.ini) 파일 내부의 [List.Rules:RuleName] 섹션에 직접 정의하여 구현할 수 있다.
예제: 모든 문자를 소문자로 변환 후, 맨 뒤에 알파벳 대문자 하나를 추가하는 룰
[List.Rules:THMRules]
c Az"[A-Z]"
c: 문자를 전부 소문자로 바꾸라는 플래그.Az: 끝 부분(z)에 문자열을 추가(A)하라는 플래그."[A-Z]": 추가할 문자열, 즉 A부터 Z까지의 대문자 중 하나.
명령어 실행 시에는 --rule=THMRules 같이 플래그를 붙여주면 JtR이 자동으로 사전 파일 내 모든 텍스트에 해당 룰을 계산해서 대입해준다.
2John 계열 유틸리티: 압축 파일과 SSH Key 크래킹
John은 단순 텍스트 해시만 부수지 않는다. 암호가 걸려있는 .zip, .rar 같은 압축 파일이나 id_rsa 와 같은 SSH Private Key 역시 타겟이 된다. zip2john, rar2john, ssh2john 등 John 패키지에 포함된 보조 툴들을 통해 이런 파일들 내부의 암호 체계를 JtR이 읽을 수 있는 해시 포맷으로 먼저 추출해낼 수 있다. 추출해낸 후에는 앞서 한 방식과 똑같이 명령어를 돌려 크래킹한다.
TryHackMe: John the Ripper (Task별 전체 문제/정답)
방 안에서 주어졌던 과제들에 대한 문제와 정답 내역이다.
Task 2: Setting up John the Ripper
1. What is the most popular extended version of John the Ripper?
- 정답:
jumbo john
Task 3: Wordlists
1. What website was the rockyou.txt wordlist created from a breach on?
- 정답:
rockyou.com
Task 4: Cracking Basic Hashes
1. What type of hash is hash1.txt?
- 정답:
md5
2. What is the cracked value of hash1.txt?
- 정답:
biscuit
3. What type of hash is hash2.txt?
- 정답:
SHA1
4. What is the cracked value of hash2.txt?
- 정답:
kangeroo
5. What type of hash is hash3.txt?
- 정답:
SHA256
6. What is the cracked value of hash3.txt?
- 정답:
microphone
7. What type of hash is hash4.txt?
- 정답:
Whirlpool
8. What is the cracked value of hash4.txt?
- 정답:
colossal
Task 5: Cracking Windows Authentication Hashes
1. What do we need to set the “format” flag to, in order to crack this?
- 정답:
NT
2. What is the cracked value of this password?
- 정답:
mushroom
Task 6: Cracking /etc/shadow Hashes
1. What is the password of the root user in etchashes.txt?
- 정답:
1234
Task 7: Single Crack Mode
1. What is Joker’s password?
- 정답:
Jok3r
Task 8: Custom Rules
1. What do custom rules allow us to exploit?
- 정답:
Password complexity predictability
2. What rule would we use to add all capital letters to the end of the word?
- 정답:
Az"[A-Z]"
3. What flag would we use to call a custom rule called “THMRules”?
- 정답:
--rule=THMRules
Task 9: Cracking Password Protected Zip Files
1. What is the password for the secure.zip file?
- 정답:
pass123
2. What is the contents of the flag inside the zip file?
- 정답:
THM{w3ll_d0n3_h4sh_r0y4l}
Task 10: Cracking Password Protected RAR Archives
1. What is the password for the secure.rar file?
- 정답:
password
2. What is the contents of the flag inside the RAR file?
- 정답:
THM{r4r_4rch1ve5_th15_t1m3}
Task 11: Cracking SSH Keys with John
1. What is the SSH private key password?
- 정답:
mango
마치며
오늘은 JtR의 핵심적인 기능들을 훑어보았는데, 툴에 내장된 룰 기능 같은 것들을 보면 생각보다 해킹은 꽤 창의적이고 스크립트 작성에 능해야 한다는 생각이 든다.
단순히 사전 파일을 때려 맞추는 게 아니라 사용자의 심리적 허점을 파고드는 과정 자체가 매력적이다.
내일도 꾸준히 진도를 빼봐야겠다.
마침
다른 글 보기
OSCP 4일차: Meterpreter, Post Exploitation
TryHackMe 선행 학습 - Meterpreter Commands & Post Exploitation
OSCP 3일차: Metasploit, 이제부터가 진짜.
TryHackMe 선행 학습 - Metasploit Introduction & Exploitation
OSCP 1일차: 해시, 평문으로 어떻게 돌릴까?
TryHackMe 선행 학습 - Hashing Basics
OSCP를 한 번 따보자.
실패를 준비한다기 보다는, 빡세게 랩업한다는 마음가짐으로...