소개
Hashcat 은 비밀번호 해시를 크랙하는 데 널리 사용되는 유명하고 강력한 비밀번호 복구 도구입니다. 가장 유연한 기능 중 하나는 워드 리스트 공격의 속도와 무차별 대입 (또는 마스크) 공격의 철저함을 결합한 하이브리드 공격입니다. 이 방법은 일반적인 단어를 기반으로 하지만 숫자나 기호와 같은 문자가 추가되거나 앞에 붙어 수정된 비밀번호에 특히 효과적입니다.
이 실습에서는 Hashcat 의 하이브리드 공격 기능을 사용하는 방법을 배우게 됩니다. 워드 리스트 + 마스크 및 마스크 + 워드 리스트의 두 가지 주요 하이브리드 모드를 탐색합니다. 이 실습이 끝나면 샘플 비밀번호 해시를 크랙하기 위해 이러한 공격을 설정하고 실행하는 실습 경험을 쌓게 될 것입니다.
하이브리드 워드 리스트 + 마스크와 마스크 + 워드 리스트 구분하기
이 단계에서는 Hashcat 의 두 가지 주요 하이브리드 공격 모드 간의 이론적 차이점을 배우게 됩니다. 이 구분을 이해하는 것은 주어진 비밀번호 패턴에 대한 올바른 전략을 선택하는 데 중요합니다.
하이브리드 워드 리스트 + 마스크 (공격 모드 6)
-a 6 플래그로 지정되는 이 모드는 워드 리스트의 각 단어에 정의된 마스크를 기반으로 문자를 추가합니다. 사용자가 기본 단어에 접미사를 추가하는 경우 (예: 연도 또는 특수 문자를 끝에 추가하는 경우) 에 이상적입니다.
- 예시: 워드 리스트에
password가 있고 마스크가?d?d인 경우, Hashcat 은password00,password01,password02등password99까지의 후보를 시도합니다.
하이브리드 마스크 + 워드 리스트 (공격 모드 7)
-a 7 플래그로 지정되는 이 모드는 그 반대입니다. 워드 리스트의 각 단어에 마스크로 정의된 문자를 앞에 붙입니다. 이는 사용자가 기본 단어에 접두사를 추가하는 경우에 유용합니다.
- 예시: 워드 리스트에
password가 있고 마스크가?d?d인 경우, Hashcat 은00password,01password,02password등99password까지의 후보를 시도합니다.
이 단계에서는 명령이 필요하지 않습니다. 목표는 다음 단계에서 적용하기 전에 이 두 가지 기본 개념을 이해하는 것입니다.
샘플 해시 및 기본 워드 리스트 생성
이 단계에서는 공격에 필요한 파일, 즉 샘플 비밀번호 해시와 간단한 워드 리스트를 생성합니다. 모든 작업은 ~/project 디렉토리에서 수행됩니다.
먼저 크랙할 대상 해시가 필요합니다. 이 실습에서는 MD5 해시를 사용합니다. 비밀번호가 labex2024라고 가정해 보겠습니다. 이 문자열의 MD5 해시는 2d3c839a453c68206911871584a5f70f입니다.
hash.txt라는 파일을 생성하고 해당 해시를 저장합니다.
echo "2d3c839a453c68206911871584a5f70f" > ~/project/hash.txt
cat 명령을 사용하여 파일 내용을 확인할 수 있습니다.
cat ~/project/hash.txt
다음과 같은 출력이 표시되어야 합니다.
2d3c839a453c68206911871584a5f70f
다음으로 대상 비밀번호의 기본 단어를 포함하는 워드 리스트가 필요합니다. 비밀번호가 labex2024이므로 기본 단어는 labex입니다. 이 단어만 포함하는 wordlist.txt라는 워드 리스트 파일을 생성해 보겠습니다.
echo "labex" > ~/project/wordlist.txt
새 워드 리스트의 내용을 확인합니다.
cat ~/project/wordlist.txt
출력은 다음과 같아야 합니다.
labex
이제 대상 해시와 기본 워드 리스트가 준비되었으므로 공격을 시작할 수 있습니다.
단어에 숫자 추가하는 하이브리드 공격 실행
이 단계에서는 생성한 해시를 크랙하기 위해 워드 리스트 + 마스크 모드 (-a 6) 를 사용하는 하이브리드 공격을 수행합니다. 비밀번호가 labex라는 단어 뒤에 네 개의 숫자가 오는 형태라고 가정합니다.
다음 구성 요소로 hashcat 명령을 구성합니다.
-m 0: 해시 유형을 지정하며, 이는 MD5 입니다.-a 6: 하이브리드 워드 리스트 + 마스크 공격 모드를 선택합니다.~/project/hash.txt: 대상 해시가 포함된 파일입니다.~/project/wordlist.txt: 기본 워드 리스트입니다.?d?d?d?d: 추가할 마스크입니다.?d는 단일 숫자를 나타냅니다.
이제 터미널에서 다음 명령을 실행합니다.
hashcat -m 0 -a 6 ~/project/hash.txt ~/project/wordlist.txt ?d?d?d?d
Hashcat 이 초기화되고 크랙 프로세스를 시작합니다. 가상 환경에서의 성능에 대한 경고가 표시될 수 있으며, 이는 정상입니다. 잠시 후 Hashcat 이 비밀번호를 찾을 것입니다.
출력은 다음과 유사하게 표시됩니다 (일부 세부 정보는 다를 수 있습니다).
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 2d3c839a453c68206911871584a5f70f
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (~/project/wordlist.txt)
Guess.Mod........: Mask (?d?d?d?d)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: ... H/s (...)
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 1/1 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex1000 -> labex9999
Hardware.Mon.#1..: Temp: ...
2d3c839a453c68206911871584a5f70f:labex2024
Started: ...
Stopped: ...
Hashcat 이 해시를 성공적으로 크랙하고 비밀번호 labex2024를 찾았습니다.
--show 옵션을 사용하여 언제든지 크랙된 비밀번호를 볼 수 있습니다.
hashcat -m 0 --show ~/project/hash.txt
이렇게 하면 크랙된 해시 - 비밀번호 쌍이 직접 표시됩니다.
2d3c839a453c68206911871584a5f70f:labex2024
단어 앞에 숫자 추가하는 하이브리드 공격 실행
이제 다른 하이브리드 모드인 마스크 + 워드 리스트 (-a 7) 를 시도해 보겠습니다. 이 단계에서는 패턴이 앞에 오는 새로운 해시를 크랙해 보겠습니다.
새로운 대상 비밀번호가 2024labex라고 가정해 보겠습니다. 이 문자열의 MD5 해시는 b68137c355d785422120884212515e86입니다.
먼저 이 새로운 해시로 hash2.txt라는 새 해시 파일을 생성합니다.
echo "b68137c355d785422120884212515e86" > ~/project/hash2.txt
이 시나리오에서는 기본 단어 앞에 네 자리 마스크를 추가하기 위해 공격 모드 -a 7을 사용해야 합니다. 명령 구조는 비슷하지만 공격 모드가 다릅니다.
다음 명령을 실행합니다.
hashcat -m 0 -a 7 ~/project/hash2.txt ~/project/wordlist.txt ?d?d?d?d
Hashcat 이 다시 시작됩니다. 이 비밀번호 구조에 대해 올바른 공격 모드를 선택했기 때문에 빠르게 비밀번호를 찾을 것입니다.
출력에서 크랙된 비밀번호를 볼 수 있습니다.
...
Session..........: hashcat
Status...........: Cracked
...
b68137c355d785422120884212515e86:2024labex
...
마스크 + 워드 리스트 모드를 사용하여 두 번째 해시를 성공적으로 크랙했습니다.
이전과 마찬가지로 --show 옵션을 사용하여 결과를 볼 수 있습니다.
hashcat -m 0 --show ~/project/hash2.txt
출력:
b68137c355d785422120884212515e86:2024labex
두 하이브리드 모드의 효과 비교
이 마지막 실습 단계에서는 주어진 비밀번호 패턴에 대해 잘못된 하이브리드 모드를 사용했을 때 어떤 일이 발생하는지 살펴보겠습니다. 이를 통해 올바른 공격 전략을 선택하는 것의 중요성을 강조할 것입니다.
먼저, 마스크 + 워드 리스트 (-a 7) 모드를 사용하여 원래 해시 (hash.txt, labex2024용) 를 크랙해 보겠습니다. 이 모드는 숫자를 앞에 추가하는데, 이 비밀번호에는 올바르지 않은 방식입니다.
hashcat -m 0 -a 7 ~/project/hash.txt ~/project/wordlist.txt ?d?d?d?d
Hashcat 이 실행되지만, 0000labex, 0001labex 등과 같은 후보를 시도할 것입니다. 올바른 비밀번호는 labex2024이므로 이 공격은 실패할 것입니다. 10,000 가지 조합을 모두 확인한 후, 프로세스는 성공 없이 모든 조합을 시도했음을 의미하는 Exhausted 상태로 종료될 것입니다. 완료될 때까지 기다리거나 q를 눌러 종료할 수 있습니다.
다음으로, 워드 리스트 + 마스크 (-a 6) 모드를 사용하여 두 번째 해시 (hash2.txt, 2024labex용) 를 크랙해 보겠습니다. 이 모드는 숫자를 뒤에 추가하는데, 이 비밀번호에도 올바르지 않은 방식입니다.
hashcat -m 0 -a 6 ~/project/hash2.txt ~/project/wordlist.txt ?d?d?d?d
마찬가지로 이 공격은 labex0000, labex0001 등과 같은 후보를 시도하며, 역시 실패하고 Exhausted 상태로 종료될 것입니다.
이 실험은 중요한 점을 보여줍니다. 하이브리드 공격의 성공은 비밀번호 구조를 올바르게 식별하는지에 전적으로 달려 있습니다. 잘못된 모드를 사용하면 올바른 비밀번호를 얻지 못하고 시간과 리소스만 낭비하게 됩니다.
요약
이 실습에서는 Hashcat 의 강력한 하이브리드 공격 기능을 실질적으로 경험했습니다. 예측 가능한 패턴을 따르는 비밀번호를 효율적으로 크랙하기 위해 워드 리스트와 마스크를 결합하는 방법을 배웠습니다.
구체적으로 다음을 배웠습니다.
- 두 가지 하이브리드 공격 모드 간의 근본적인 차이점: 패턴을 뒤에 추가하는 워드 리스트 + 마스크 (
-a 6) 와 패턴을 앞에 추가하는 마스크 + 워드 리스트 (-a 7). - 대상 해시 파일과 기본 워드 리스트를 생성하여 공격을 준비하는 방법.
- 두 가지 유형의 하이브리드 공격을 실행하여 비밀번호를 성공적으로 크랙하는 방법.
- 의심되는 비밀번호 구조에 따라 올바른 공격 모드를 선택하는 것의 중요성. 잘못된 모드를 사용하면 실패로 이어집니다.
하이브리드 공격은 모든 비밀번호 감사자의 도구 상자에서 필수적인 기술이며, 타겟팅된 방법과 무차별 대입 방법 간의 현명한 균형을 제공합니다.


