Hashcat 으로 PMKID 해시 크랙하기

Beginner
지금 연습하기

소개

이 실습에서는 강력하고 다재다능한 비밀번호 복구 도구인 Hashcat 을 사용하여 WPA/WPA2 PMKID(Pairwise Master Key Identifier) 해시를 크래킹하는 기본 사항을 배우게 됩니다. PMKID 는 WPA/WPA2 인증 프로세스의 일부이며, 클라이언트가 존재하지 않아도 액세스 포인트에서 캡처될 수 있습니다. PMKID 를 크래킹하는 것은 전체 4-way 핸드셰이크를 크래킹하는 것보다 종종 더 효율적입니다.

해시 파일 준비부터 Hashcat 을 사용한 사전 공격 실행까지 전체 과정을 살펴보게 됩니다. 이러한 실습 경험을 통해 통제된 교육 환경에서 비밀번호 크래킹이 어떻게 작동하는지에 대한 실질적인 이해를 얻을 수 있습니다. 이 실습의 모든 활동은 교육 목적으로만 사용됩니다.

PMKID 캡처를 Hashcat 호환 형식으로 변환

이 단계에서는 Hashcat 이 PMKID 해시를 크래킹하는 데 필요한 형식에 대해 배우게 됩니다. 일반적으로 PMKID 는 원시 네트워크 캡처 파일 (예: .pcapng 파일) 에서 추출됩니다. hcxpcapngtool과 같은 도구를 사용하여 캡처를 Hashcat 이 처리할 수 있는 일반 텍스트 해시 형식으로 변환합니다.

이를 위한 명령은 다음과 같습니다. hcxpcapngtool -o <output_hash_file> <input_capture_file.pcapng>

이 실습에서는 원활한 진행을 위해 이미 이 변환을 수행했습니다. 결과 해시는 현재 디렉토리 (~/project) 의 pmkid.hash라는 파일에 저장되어 있습니다.

이 파일의 내용을 살펴보고 구조를 이해해 봅시다. cat 명령을 사용하여 파일 내용을 표시합니다.

cat pmkid.hash

다음과 같은 출력을 볼 수 있으며, 이는 PMKID 해시를 나타내는 단일 줄입니다.

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65

이 형식은 PMKID*MAC_AP*MAC_STA*SSID_HEX입니다. 각 부분은 별표로 구분되어 있으며, Hashcat 에 공격을 수행하는 데 필요한 모든 정보를 제공합니다.

WPA-PMKID 에 대한 올바른 Hashcat 모드 선택 (모드: -m 16800)

이 단계에서는 Hashcat 에서 PMKID 해시를 크래킹하기 위한 올바른 모드를 식별합니다. Hashcat 은 수백 가지의 다양한 해시 알고리즘을 지원하며, 각 알고리즘에는 고유한 모드 번호가 할당됩니다. 올바른 모드를 제공하는 것은 Hashcat 이 올바르게 작동하는 데 필수적입니다.

hashcat 명령에 --help 옵션을 사용하여 지원되는 모든 해시 유형과 해당 모드 목록을 찾을 수 있습니다. 목록을 좁히려면 출력을 grep으로 파이프하고 "PMKID"와 같은 특정 키워드를 검색할 수 있습니다.

WPA-PMKID에 대한 모드를 찾으려면 다음 명령을 실행합니다.

hashcat --help | grep "WPA-PMKID"

출력에는 관련 해시 모드가 표시됩니다.

16800 | WPA-PMKID-PBKDF2                                     | Network Protocols

출력에서 볼 수 있듯이 WPA-PMKID-PBKDF2의 모드 번호는 16800입니다. 이 모드 번호를 Hashcat 명령의 -m 옵션과 함께 사용하게 됩니다.

해시 파일과 함께 Hashcat 명령 구성

이 단계에서는 hashcat 명령 구성을 시작합니다. 사전 공격의 기본 구문은 hashcat [options] <hash_file> <wordlist_file>입니다.

지금까지 두 가지 주요 구성 요소를 식별했습니다.

  1. 해시 모드: -m 16800
  2. 해시 파일: pmkid.hash

이것들을 합쳐 봅시다. -a 옵션을 사용하여 공격 모드도 지정해야 합니다. 사전 공격은 모드 0이므로 -a 0을 사용합니다. 이것은 기본 공격 모드이지만 명시적으로 지정하는 것이 좋습니다.

해시 모드와 해시 파일만 사용하여 명령을 실행해 봅시다. 이 명령은 실패하지만 구문을 확인하고 Hashcat 이 다음에 무엇을 기대하는지 보는 좋은 방법입니다.

hashcat -m 16800 pmkid.hash

Hashcat 이 시작된 후 사용법 메시지와 함께 종료됩니다. 이 공격 유형에 필요한 인수가 누락되었기 때문입니다.

hashcat (v6.2.6) starting...

* Device #1: WARNING! Kernel exec timeout is not disabled.
...
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...

Try --help for more help.

오류는 기본 공격 모드 (사전) 에 대한 단어 목록 또는 디렉토리가 필요함을 나타냅니다. 이는 지금까지 명령 구조가 올바르다는 것을 확인시켜 주며 다음 단계로 바로 이어집니다. 단어 목록을 제공하는 것입니다.

사전 공격을 위한 단어 목록 지정

이 단계에서는 단어 목록을 추가하여 Hashcat 명령을 완성합니다. 사전 공격은 주어진 파일 ( "단어 목록" 또는 "사전") 에서 각 단어를 가져와 해시에 대한 잠재적 비밀번호로 테스트하는 방식으로 작동합니다.

이 실습을 위해 ~/project 디렉토리에 wordlist.txt라는 작은 단어 목록 파일이 준비되었습니다. 내용을 살펴보겠습니다.

cat wordlist.txt

몇 가지 잠재적 비밀번호 목록이 표시됩니다.

secret
123456
password123
qwertyuiop
labex

이 단어들 중 하나가 우리 해시에 대한 올바른 비밀번호입니다. 이제 이전 단계의 명령에 단어 목록 파일 이름을 추가하여 전체 명령을 구성할 수 있습니다.

완성된 명령은 다음과 같습니다: hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

  • -m 16800: WPA-PMKID 해시 유형을 지정합니다.
  • -a 0: 사전 공격 모드를 지정합니다.
  • pmkid.hash: 크래킹할 해시가 포함된 파일입니다.
  • wordlist.txt: 비밀번호 후보가 포함된 사전 파일입니다.

마지막 단계에서 이 명령을 실행하여 해시를 크래킹합니다.

Hashcat 실행 및 크래킹 결과 분석

이 단계에서는 완성된 Hashcat 명령을 실행하고 출력을 분석하여 크래킹된 비밀번호를 찾습니다. 이제 모든 것을 종합하여 크래킹 프로세스를 시작할 시간입니다.

터미널에서 전체 명령을 실행합니다.

hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

Hashcat 이 초기화되고 세션 정보가 표시되며 wordlist.txt의 비밀번호 테스트를 시작합니다. 단어 목록이 매우 작기 때문에 프로세스는 거의 즉시 완료됩니다. 올바른 비밀번호를 찾으면 Hashcat 이 이를 표시하고 상태를 "Cracked"로 보고합니다.

출력은 다음과 유사하게 표시됩니다.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: WPA-PMKID-PBKDF2
Hash.Target......: d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*...
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
...
Recovered........: 1/1 (100.00%) Digests
...

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

All hashes have been recovered.
...

가장 중요한 줄은 d5b6c18645897310626525389ebb3461*...:password123이며, 원본 해시 뒤에 콜론과 복구된 비밀번호인 password123이 표시됩니다.

Hashcat 은 크래킹된 비밀번호를 자동으로 저장합니다. 공격을 다시 실행하지 않고 이전에 크래킹된 해시를 보려면 --show 옵션을 사용할 수 있습니다.

hashcat -m 16800 pmkid.hash --show

이 명령은 크래킹된 해시와 비밀번호 쌍을 즉시 표시합니다.

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

요약

PMKID 해시 크래킹에 성공하신 것을 축하드립니다! 이 실습을 통해 Hashcat 을 직접 사용해보고 사전 공격에 필요한 필수 단계를 배웠습니다.

다음과 같은 내용을 학습했습니다.

  • PMKID 해시에 대한 Hashcat 호환 형식 인식 방법.
  • 특정 해시 유형에 대한 올바른 Hashcat 모드 식별 방법 (WPA-PMKID의 경우 -m 16800).
  • 사전 공격을 위한 전체 Hashcat 명령 구성 방법 (-a 0).
  • 해시 파일과 단어 목록을 사용하여 공격 실행 방법.
  • 출력을 분석하고 --show 옵션을 사용하여 크래킹된 비밀번호를 확인하는 방법.

이 실습에서는 작고 간단한 예제를 사용했지만, 동일한 원칙이 실제 시나리오에도 적용됩니다. 실제 시나리오에서는 훨씬 더 큰 단어 목록과 더 강력한 하드웨어가 사용됩니다. 여러분이 배운 기술은 비밀번호 보안 및 윤리적 해킹 관행을 이해하는 데 견고한 기반을 제공합니다.