비밀번호로 보호된 RAR 아카이브 크랙하기

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 암호로 보호된 RAR 아카이브를 크랙하는 과정을 배우게 됩니다. 이는 모의 해킹 (penetration testing) 및 디지털 포렌식 (digital forensics) 에서 흔히 사용되는 작업입니다. Linux 에서 사용할 수 있는 강력하고 업계 표준 도구들을 조합하여 사용할 것입니다: 아카이브 생성에는 rar, 아카이브에서 해시를 추출하는 데는 John the Ripper 스위트 (특히 rar2john), 그리고 해시를 크랙하여 원본 비밀번호를 알아내는 데는 Hashcat을 사용할 것입니다.

이 과정은 샘플 보호 파일을 생성하고, 해당 파일의 비밀번호 해시를 추출하며, 크랙 도구에 맞는 올바른 해시 유형을 식별한 다음, 마지막으로 사전 공격 (dictionary attack) 을 실행하여 비밀번호를 찾는 단계를 포함합니다. 이 실습을 통해 비밀번호 크랙 메커니즘에 대한 기본적인 이해를 얻을 수 있습니다.

암호로 보호된 RAR 파일 생성

이 단계에서는 암호로 보호된 RAR 아카이브를 생성합니다. 이것이 비밀번호 크랙 실습의 대상이 될 것입니다. rar 명령줄 도구를 사용할 것입니다. 실습 환경에서는 이미 현재 디렉토리인 /home/labex/projectsecret.txt라는 샘플 파일을 생성해 두었습니다.

먼저, rar 명령을 사용하여 아카이브를 생성해 보겠습니다. a 옵션은 "아카이브에 추가 (add to archive)"를 의미하며, -p 스위치는 비밀번호를 직접 지정하는 데 사용됩니다. 이 실습에서는 비밀번호로 labex를 사용할 것입니다.

secret.txt 파일을 포함하는 secret.rar라는 이름의 암호로 보호된 아카이브를 생성하기 위해 터미널에서 다음 명령을 실행하십시오.

rar a -plabex secret.rar secret.txt

파일이 추가되고 아카이브가 생성되고 있음을 나타내는 출력이 표시됩니다.

RAR 6.12   Copyright (c) 1993-2022 Alexander Roshal   17 May 2022
Trial version             Type 'rar -?' for help

Evaluation copy. Please register.

Creating archive secret.rar

Adding    secret.txt                                                      OK
Done

이제 ls -l 명령을 사용하여 secret.rar 파일이 프로젝트 디렉토리에 생성되었는지 확인하십시오.

ls -l
total 12
-rw-r--r-- 1 labex labex  338 Dec 05 10:30 secret.rar
-rw-r--r-- 1 labex labex   25 Dec 05 10:28 secret.txt
-rw-r--r-- 1 labex labex   29 Dec 05 10:28 wordlist.txt

이제 이 실습의 대상 파일을 성공적으로 생성했습니다.

rar2john 을 사용하여 RAR 파일에서 해시 추출하기

이 단계에서는 John the Ripper 스위트의 유틸리티인 rar2john을 사용하여 secret.rar 파일에서 비밀번호 해시를 추출합니다. Hashcat 과 같은 크랙 도구는 RAR 파일에 직접 작동하지 않습니다. 비밀번호를 검증하는 데 필요한 정보를 포함하는 특정 해시 형식이 필요합니다. rar2john은 바로 이 목적을 위해 설계되었습니다.

secret.rar 파일을 처리하기 위해 다음 명령을 실행하십시오.

rar2john secret.rar

명령은 터미널에 긴 문자열을 출력합니다. 이 문자열이 해시입니다.

secret.rar:$RAR3$*0*b51874e2d3731234*f82b2123456789012345678901234567:8:secret.txt:24:0

이 해시에는 아카이브의 솔트 (salt), 암호화된 데이터 및 크랙 프로세스에 필요한 기타 메타데이터가 포함되어 있습니다. 사용 편의를 위해 이 해시를 텍스트 파일에 저장하는 것이 좋습니다.

출력 리디렉션 (>) 을 사용하여 해시를 rar_hash.txt라는 파일에 저장하십시오.

rar2john secret.rar > rar_hash.txt

이 명령은 출력이 파일로 리디렉션되기 때문에 눈에 보이는 출력을 생성하지 않습니다. cat 명령을 사용하여 파일이 생성되었고 해시를 포함하고 있는지 확인할 수 있습니다.

cat rar_hash.txt
secret.rar:$RAR3$*0*b51874e2d3731234*f82b2123456789012345678901234567:8:secret.txt:24:0

이제 비밀번호 크랙 도구가 이해할 수 있는 형식으로 RAR 해시를 얻었습니다.

RAR3-hp 또는 RAR5 에 대한 올바른 해시 모드 식별하기

이 단계에서는 해시를 크랙할 때 Hashcat 이 사용할 올바른 모드를 식별합니다. Hashcat 은 수백 가지의 다양한 해시 유형을 지원하며, 모드 번호를 사용하여 올바른 유형을 지정해야 합니다.

추출한 해시는 $RAR3$*...으로 시작합니다. 이 접두사는 사용된 RAR 암호화 유형을 알려줍니다. Hashcat 에서 해당 모드를 찾으려면 도움말 메뉴를 검색할 수 있습니다.

다음 명령을 사용하여 모든 Hashcat 모드를 나열하고 "RAR"과 관련된 모드를 필터링합니다. grep-i 플래그는 검색을 대소문자 구분 없이 수행합니다.

hashcat --help | grep -i "RAR"

출력에는 Hashcat 에서 지원하는 다양한 RAR 모드가 표시됩니다.

...
12500 | RAR3-hp                                      | Archives
13000 | RAR5                                         | Archives
...

출력에서 두 가지 주요 모드를 볼 수 있습니다.

  • RAR3-hp의 경우 12500
  • RAR5의 경우 13000

해시가 $RAR3$으로 시작하므로 사용할 올바른 모드는 12500입니다. 올바른 해시 모드를 식별하는 것은 성공적인 크랙 시도를 위한 중요한 단계입니다.

공격을 위한 해시 및 단어 목록 준비

이 단계에서는 크랙 시도에 필요한 파일을 준비합니다. 우리가 수행할 사전 공격 (dictionary attack) 은 두 가지 주요 입력이 필요합니다. 바로 크랙할 해시가 포함된 파일과 단어 목록 (잠재적 비밀번호가 포함된 파일) 입니다.

rar_hash.txt에 해시를 저장하여 첫 번째 부분을 이미 완료했습니다. 내용을 빠르게 검토해 보겠습니다.

cat rar_hash.txt
secret.rar:$RAR3$*0*b51874e2d3731234*f82b2123456789012345678901234567:8:secret.txt:24:0

다음으로 단어 목록이 필요합니다. 이 실습을 위해 설정 과정에서 wordlist.txt라는 간단한 단어 목록이 준비되었습니다. 실제 시나리오에서는 유명한 rockyou.txt와 같이 훨씬 더 큰 단어 목록을 사용할 것입니다. 작은 단어 목록의 내용을 살펴보겠습니다.

cat wordlist.txt
password
123456
labex
secret

보시다시피, 우리 단어 목록에는 올바른 비밀번호인 labex를 포함하여 몇 가지 일반적인 비밀번호가 포함되어 있습니다. 해시 파일과 단어 목록이 모두 준비되었으므로 이제 공격을 시작할 준비가 되었습니다.

RAR 비밀번호를 찾기 위한 공격 실행

이 단계에서는 Hashcat 을 사용하여 사전 공격을 실행합니다. 해시 파일, 단어 목록, 올바른 모드 번호를 식별했으므로 필요한 모든 것을 갖추었습니다.

Hashcat 사전 공격의 기본 구문은 다음과 같습니다: hashcat -m <mode> <hash_file> <wordlist_file>.

이제 모드 12500, 해시 파일 rar_hash.txt, 단어 목록 wordlist.txt를 사용하여 명령을 실행합니다.

hashcat -m 12500 rar_hash.txt wordlist.txt

Hashcat 이 초기화되고 크랙 세션을 시작하며 단어 목록의 비밀번호를 해시에 대해 빠르게 테스트합니다. 일치하는 항목을 찾으면 프로세스가 완료되고 상태가 Cracked로 표시됩니다.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: RAR3-hp
Hash.Target......: secret.rar
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:    24211 H/s (0.01ms) @ Accel:128 Loops:128 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/4 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidate.Engine.: Optimized Kernel
Candidates.#1....: password -> secret
Hardware.Mon.#1..: Temp: 45c Fan: 30%
...

Hashcat 은 크랙된 비밀번호를 ~/.hashcat/hashcat.potfile에 위치한 "potfile"이라는 파일에 자동으로 저장합니다. 크랙된 비밀번호를 보려면 원래 명령에 --show 옵션을 사용할 수 있습니다.

hashcat -m 12500 rar_hash.txt --show

이렇게 하면 해시와 해당 크랙된 비밀번호가 표시됩니다.

secret.rar:$RAR3$*0*b51874e2d3731234*f82b2123456789012345678901234567:8:secret.txt:24:0:labex

비밀번호인 labex는 줄 끝에 콜론으로 구분되어 표시됩니다. RAR 아카이브의 비밀번호를 성공적으로 크랙했습니다.

요약

이 실습을 완료하신 것을 축하드립니다! 비밀번호로 보호된 RAR 아카이브를 크랙하는 전체 프로세스를 성공적으로 학습했습니다.

이 실습에서는 몇 가지 핵심 기술을 연습했습니다.

  • rar 명령을 사용하여 비밀번호로 보호된 아카이브 생성
  • rar2john을 사용하여 RAR 파일에서 크랙 가능한 해시 추출
  • Hashcat에서 올바른 해시 유형 및 해당 모드 식별
  • 추출된 해시와 단어 목록을 사용하여 Hashcat으로 사전 공격 실행
  • 복구된 비밀번호 보기

이러한 기술은 비밀번호 복구 및 보안 감사 분야에서 사이버 보안의 기본입니다. 이러한 기술은 명시적으로 테스트 권한이 있는 시스템에 대해서만 윤리적이고 합법적으로 사용해야 한다는 점을 기억하는 것이 중요합니다.