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

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 암호로 보호된 7z 아카이브를 크랙하는 기본적인 과정을 배우게 됩니다. 7-Zip 은 높은 압축률을 가진 인기 있는 파일 압축 프로그램이며, 사용자가 아카이브를 암호로 암호화할 수 있도록 합니다. 우리는 잊어버린 암호를 복구해야 하는 시나리오를 시뮬레이션할 것입니다.

강력하고 업계 표준 도구들을 조합하여 사용할 것입니다: 아카이브를 생성하기 위한 p7zip, 암호 해시를 추출하기 위한 John the Ripper 스위트, 그리고 실제 크랙을 수행하기 위한 Hashcat입니다. 이 실습 경험을 통해 타겟을 생성하고, 해당 암호화 해시를 추출하고, 마스크 공격 (mask attack) 을 사용하여 효율적으로 암호를 찾는 과정을 안내할 것입니다.

암호로 보호된 7z 아카이브 생성

이 단계에서는 샘플 파일을 생성한 다음, 이를 암호로 보호된 7z 아카이브로 압축하는 것부터 시작합니다. 이 아카이브는 후속 단계에서 암호 크랙 프로세스의 대상이 될 것입니다.

먼저 현재 디렉토리인 ~/projectsecret.txt라는 이름의 간단한 텍스트 파일을 생성해 보겠습니다.

echo "This is a secret file." > secret.txt

이제 7z 명령을 사용하여 secret.txt로부터 secret.7z라는 이름의 아카이브를 생성할 것입니다. 암호는 LabEx2024로 보호할 것입니다. -p 플래그는 암호를 직접 지정하는 데 사용됩니다.

7z a -pLabEx2024 secret.7z secret.txt

파일이 성공적으로 생성되고 압축되었음을 나타내는 출력이 표시될 것입니다.

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)

Scanning the drive:
1 file, 25 bytes (1 KiB)

Creating archive: secret.7z

Items to compress: 1


Files read from disk: 1
Archive size: 228 bytes (1 KiB)
Everything is Ok

이제 작업할 암호로 보호된 아카이브를 성공적으로 생성했습니다.

7z2john.pl 을 사용하여 해시 추출하기

이 단계에서는 secret.7z 아카이브에서 암호 해시를 추출합니다. Hashcat 과 같은 암호 크랙 도구는 아카이브 파일에서 직접 작동하지 않습니다. 대신 해시 (hash) 라고 알려진 암호화 키의 특정 문자열 표현이 필요합니다.

John the Ripper 스위트에 포함된 유틸리티인 7z2john을 사용할 것입니다. 이 도구는 7z 아카이브에서 이러한 해시를 추출하도록 특별히 설계되었습니다.

secret.7z를 처리하고 해당 해시를 hash.txt라는 새 파일에 저장하기 위해 다음 명령을 실행합니다. > 기호는 명령의 출력을 지정된 파일로 리디렉션합니다.

/usr/sbin/7z2john secret.7z > hash.txt

출력이 리디렉션되었기 때문에 명령은 터미널에 아무런 출력을 생성하지 않습니다. 해시가 성공적으로 추출되었는지 확인하려면 hash.txt의 내용을 확인하십시오.

cat hash.txt

출력은 암호를 나타내는 긴 문자열인 해시가 될 것입니다. 파일 이름이 앞에 붙습니다.

secret.7z:$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

이제 다음 준비 단계에 사용할 해시를 얻었습니다.

Hashcat 을 위한 추출된 해시 정리

이 단계에서는 추출된 해시를 Hashcat 에 사용할 수 있도록 준비해야 합니다. 7z2john의 출력은 John the Ripper 용으로 형식이 지정되어 있으며 파일 이름이 접두사로 포함됩니다 (예: secret.7z:). 그러나 Hashcat 은 올바르게 작동하기 위해 순수한 해시 문자열만 필요로 합니다.

cut 명령을 사용하여 파일 이름 접두사를 제거할 것입니다. cut 명령은 파일에서 섹션을 추출하는 간단한 유틸리티입니다. 콜론 (:) 을 구분 기호로 사용하고 두 번째 필드를 선택하도록 지정할 것입니다.

해시를 정리하고 hashcat.txt라는 새 파일에 저장하려면 다음 명령을 실행하십시오.

cut -d':' -f2 hash.txt > hashcat.txt
  • -d':'는 구분 기호를 콜론으로 설정합니다.
  • -f2는 분할 후 두 번째 필드를 선택합니다.

접두사가 제거되었는지 확인하기 위해 새 파일의 내용을 확인해 보겠습니다.

cat hashcat.txt

출력은 이제 secret.7z: 부분이 없는 해시 문자열만 포함해야 합니다.

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

해시가 이제 Hashcat 에 올바른 형식으로 준비되었습니다.

7-Zip 의 해시 모드 선택

이 단계에서는 Hashcat 이 7-Zip 해시를 이해하고 처리하는 데 필요한 올바른 "해시 모드"를 식별해야 합니다. Hashcat 은 수백 가지의 다른 해시 유형을 지원하며, 각 유형에는 고유한 숫자 코드가 있습니다. Hashcat 이 작동하려면 올바른 코드를 지정해야 합니다.

Hashcat 의 도움말 메뉴를 검색하여 7-Zip 의 모드를 찾을 수 있습니다. grep을 사용하여 "7-Zip"이라는 용어로 출력을 필터링할 것입니다.

hashcat --help | grep -i "7-Zip"

grep-i 플래그는 검색을 대소문자 구분 없이 수행합니다. 출력에는 7-Zip 아카이브와 관련된 모드 번호가 표시됩니다.

11600 | 7-Zip                                          | Archives

출력에서 볼 수 있듯이 7-Zip 의 해시 모드는 11600입니다. 다음 단계에서 크랙 공격을 실행할 때 이 숫자를 사용할 것입니다.

7z 비밀번호 크랙을 위한 마스크 공격 실행

이 마지막 단계에서는 Hashcat 을 사용하여 비밀번호를 크랙할 것입니다. 우리는 비밀번호 구조에 대한 약간의 지식이 있을 때 매우 효과적인 무차별 대입 공격의 한 종류인 "마스크 공격"을 수행할 것입니다.

우리의 비밀번호는 LabEx2024입니다. 이 구조를 마스크로 설명할 수 있습니다.

  • 대문자 하나로 시작합니다 (?u).
  • 소문자 두 개가 이어집니다 (?l?l).
  • 대문자 하나와 소문자 하나가 이어집니다 (?u?l).
  • 네 개의 숫자로 끝납니다 (?d?d?d?d).

완전한 마스크는 ?u?l?l?u?l?d?d?d?d입니다.

이제 Hashcat 명령을 구성해 보겠습니다.

  • -m 11600: 이전 단계에서 찾은 7-Zip 해시 모드를 지정합니다.
  • -a 3: 공격 모드를 "무차별 대입 / 마스크 (Brute-force / Mask)"로 설정합니다.
  • hashcat.txt: 정리된 해시가 포함된 파일입니다.
  • ?u?l?l?u?l?d?d?d?d: 비밀번호 마스크입니다.

공격을 시작하려면 명령을 실행하십시오.

hashcat -m 11600 -a 3 hashcat.txt ?u?l?l?u?l?d?d?d?d

Hashcat 이 시작되고 상태 화면이 표시됩니다. 비밀번호가 간단하고 마스크가 정확하므로 매우 빠르게 크랙될 것입니다.

...
Session..........: hashcat
Status...........: Cracked
...

상태가 Cracked로 표시되면 비밀번호가 발견된 것입니다. 복구된 비밀번호를 보려면 동일한 명령에 --show 플래그를 사용할 수 있습니다.

hashcat -m 11600 hashcat.txt --show

그러면 해시와 함께 크랙된 비밀번호가 표시됩니다.

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301:LabEx2024

축하합니다! 7z 아카이브의 비밀번호를 성공적으로 크랙했습니다.

요약

이 실습에서는 비밀번호로 보호된 7z 아카이브를 크랙하는 전체 과정을 성공적으로 완료했습니다.

다음 내용을 배웠습니다.

  • 7z 명령을 사용하여 비밀번호로 보호된 7z 아카이브를 생성하는 방법.
  • 7z2john 유틸리티를 사용하여 아카이브에서 비밀번호 해시를 추출하는 방법.
  • Hashcat 에서 사용하기 위해 추출된 해시를 정리하고 형식화하는 방법.
  • 특정 해시 유형에 대한 Hashcat 의 올바른 해시 모드를 식별하는 방법.
  • 비밀번호를 효율적으로 복구하기 위해 Hashcat 으로 대상 마스크 공격을 실행하는 방법.

이 워크플로우는 비밀번호 크랙의 원리와 John the Ripper 및 Hashcat 과 같은 강력한 도구의 실제 적용에 대한 견고한 기초를 제공합니다.