Hashcat 에서 PRINCE 공격 모드 사용하기

Kali LinuxBeginner
지금 연습하기

소개

Hashcat 은 강력하고 다재다능한 비밀번호 복구 도구로, 속도와 다양한 해싱 알고리즘 및 공격 모드 지원으로 널리 알려져 있습니다. 가장 혁신적인 기능 중 하나는 PRINCE (Probabilistic Relevant Incremental Nonce-based Candidate-generator Extension) 공격입니다.

단순히 목록에서 단어를 시도하는 표준 사전 공격과 달리, PRINCE 공격은 주어진 단어 목록의 단어들을 다양한 방식으로 조합하여 새로운 비밀번호 후보를 생성합니다. 이는 기억하기 쉽지만 겉보기에는 복잡해 보이는 비밀번호를 만드는 일반적인 패턴인 두 개 이상의 사전 단어 연결에 대해 매우 효과적입니다.

이 랩에서는 Hashcat 의 PRINCE 공격 모드의 기본 사항을 배우게 됩니다. 단어 목록을 준비하고, 샘플 해시에 대해 PRINCE 공격을 실행하고, 생성된 후보를 분석하고, 마지막으로 규칙 파일과 결합하여 더욱 복잡한 비밀번호 변형을 처리하는 방법을 배우게 됩니다.

PRINCE 를 이용한 확률적 단어 생성 이해하기

이 단계에서는 PRINCE 공격 모드의 핵심 개념을 배우게 됩니다. PRINCE 공격은 Hashcat 에서 공격 모드 플래그 -a 8로 지정됩니다. 이 공격의 강점은 방대한 사전 대신 더 작은 단어 목록에서 새로운 비밀번호 후보를 생성하는 데 있습니다. 알고리즘적으로 소스 목록의 단어들을 조합하여 훨씬 더 크고 복잡한 잠재적 비밀번호 세트를 생성합니다.

예를 들어, 단어 목록에 "apple"과 "pie"가 있다면, PRINCE 는 "apple", "pie", "applepie", "pieapple", "appleapple" 등과 같은 후보를 생성할 수 있습니다.

먼저 Hashcat 의 도움말 메뉴에서 PRINCE 공격 모드 옵션을 확인하는 것부터 시작하겠습니다. 광범위한 도움말 출력을 필터링하기 위해 grep을 사용하여 관련 줄을 찾을 수 있습니다.

터미널에서 다음 명령을 실행하십시오.

hashcat --help | grep "PRINCE"

PRINCE 공격 모드를 정의하는 줄이 표시되어 가용성과 해당 공격 모드 번호를 확인할 수 있습니다.

      8 | PRINCE

이는 -a 8이 PRINCE 공격을 호출하는 올바른 플래그임을 확인시켜 줍니다.

작은 기본 단어 목록 준비하기

이 단계에서는 작은 기본 단어 목록을 만들게 됩니다. PRINCE 공격의 효과는 입력 단어 목록의 품질과 직접적으로 관련이 있습니다. 작고 잘 선택된 단어 목록이라도 매우 강력할 수 있습니다. 이 랩에서는 몇 가지 간단한 단어가 포함된 파일을 만들 것입니다.

랩의 첫 번째 부분에 대한 대상 비밀번호는 "labexrocks"입니다. 따라서 단어 목록에는 기본 단어 "labex"와 "rocks"가 포함되어야 합니다.

현재 디렉토리 (~/project) 에 wordlist.txt라는 파일을 생성하기 위해 출력 리디렉션과 함께 echo 명령을 사용합니다.

echo -e "labex\nrocks\npass\nword" > wordlist.txt

-e 플래그는 백슬래시 이스케이프의 해석을 활성화하므로 \n은 각 단어에 대해 새 줄을 생성합니다.

이제 cat 명령을 사용하여 새로 생성된 단어 목록의 내용을 확인하십시오.

cat wordlist.txt

파일이 올바르게 생성되었음을 확인하는 다음 출력이 표시되어야 합니다.

labex
rocks
pass
word

이제 PRINCE 공격을 위한 기본 단어 목록이 준비되었습니다.

-a 8 을 이용한 PRINCE 공격 실행하기

이 단계에서는 생성한 단어 목록을 사용하여 샘플 MD5 해시를 크랙합니다. 이 랩의 설정 스크립트는 이미 "labexrocks" 비밀번호의 MD5 해시가 포함된 hash.txt라는 파일을 생성했습니다.

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

  • hashcat: 실행 파일입니다.
  • -m 0: 해시 모드를 지정합니다. 0은 MD5 에 해당합니다.
  • -a 8: 공격 모드를 지정하며, 이는 PRINCE 입니다.
  • hash.txt: 대상 해시가 포함된 파일입니다.
  • wordlist.txt: 기본 단어 목록입니다.

이제 터미널에서 전체 명령을 실행하십시오.

hashcat -m 0 -a 8 hash.txt wordlist.txt

Hashcat 이 초기화되고 공격을 시작합니다. 단어 목록이 작고 비밀번호가 목록의 단어들을 직접 조합한 것이므로, 과정은 매우 빠를 것입니다. 세부 정보를 보여주는 출력과 가장 중요한 크랙된 비밀번호를 볼 수 있습니다.

출력은 다음과 유사하게 표시됩니다 (일부 세부 정보는 다를 수 있습니다).

...
Dictionary cache built:
* Filename..: wordlist.txt
* Passwords.: 4
* Bytes.....: 22
* Keyspace..: 468

2d4a2b23999534c734b26e1b31b5579d:labexrocks

Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 2d4a2b23999534c734b26e1b31b5579d
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Mode.......: PRINCE
Speed.#*.........: ...
Recovered........: 1/1 (100.00%) Digests
Progress.........: 468/468 (100.00%)
Rejected.........: 0/468 (0.00%)
Restore.Point....: 468/468 (100.00%)
Restore.Sub.#*...: ...
Candidate.Engine.: PRINCE
Candidates.#*....: ...
Hardware.Mon.#*..: ...
...

2d4a2b23999534c734b26e1b31b5579d:labexrocks 줄은 원본 해시와 복구된 비밀번호를 명확하게 보여줍니다. PRINCE 공격을 성공적으로 사용하여 비밀번호를 크랙했습니다.

생성된 후보 비밀번호 분석하기

이 단계에서는 PRINCE 가 백그라운드에서 무엇을 하고 있는지 탐색합니다. 해시를 크랙하는 대신, Hashcat 이 생성하는 비밀번호 후보를 콘솔에 출력하도록 지시할 수 있습니다. 이는 --stdout 플래그를 사용하여 수행됩니다. 기본 단어 목록이 어떻게 변환되는지 이해하는 데 매우 좋은 방법입니다.

wordlist.txt와 함께 --stdout을 사용하여 생성된 후보를 살펴보겠습니다.

hashcat --stdout -a 8 wordlist.txt

이 명령은 화면에 많은 수의 조합을 출력합니다. 출력을 더 관리하기 쉽게 하려면 head 명령으로 파이프하여 처음 10 줄만 볼 수 있습니다.

hashcat --stdout -a 8 wordlist.txt | head -n 10

출력은 PRINCE 가 생성한 몇 가지 초기 후보를 보여줍니다.

pass
word
labex
rocks
passpass
password
passlabex
passrocks
wordpass
wordword

보시다시피, PRINCE 는 원래 단어에서 시작하여 새로운 조합을 만들기 시작합니다. 이전에 크랙했던 비밀번호 "labexrocks"는 이 목록의 더 아래쪽에서 생성될 것입니다. 이는 PRINCE 가 작은 단어 목록을 훨씬 더 크고 효과적인 비밀번호 추측 세트로 확장하는 능력을 보여줍니다.

PRINCE 공격과 규칙 파일 결합하여 복잡성 높이기

이 단계에서는 규칙 파일과 결합하여 PRINCE 공격을 더욱 강력하게 만드는 방법을 배웁니다. 규칙 파일은 PRINCE 가 생성하는 각 후보 비밀번호에 특정 변형을 적용합니다. 이를 통해 대소문자 변경, 숫자 추가 또는 특수 문자 추가와 같은 일반적인 변형을 테스트할 수 있습니다.

랩 설정에서 해시 파일 hash2.txt (비밀번호 "Labexrocks"용) 와 best64.rule이라는 일반적인 규칙 파일이 제공되었습니다. 이 규칙 파일에는 가장 효과적인 비밀번호 변형 규칙 64 개가 포함되어 있습니다.

공격 흐름은 다음과 같습니다.

  1. PRINCE 가 후보를 생성합니다 (예: "labexrocks").
  2. Hashcat 이 해당 후보에 best64.rule의 규칙을 적용합니다 (예: 첫 글자 대문자 변경 -> "Labexrocks").
  3. 수정된 후보가 해시와 비교하여 테스트됩니다.

PRINCE 공격과 규칙 파일을 결합하려면 -r 플래그 뒤에 규칙 파일 경로를 추가하면 됩니다.

다음 명령을 실행하십시오.

hashcat -m 0 -a 8 hash2.txt wordlist.txt -r best64.rule

Hashcat 은 이제 PRINCE 공격을 실행하지만, 생성된 각 후보는 테스트되기 전에 best64.rule의 규칙에 의해 수정됩니다.

출력에서 성공적인 크랙을 볼 수 있습니다.

...
15895e67271a552214b5e422d5752e47:Labexrocks

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

복구된 비밀번호는 "Labexrocks"입니다. 이는 PRINCE 가 "labexrocks"를 생성했고, best64.rule의 규칙 중 하나가 첫 글자를 대문자로 변경하여 대상 비밀번호와 일치했기 때문에 발견되었습니다. 이러한 공격 모드의 조합은 실제 시나리오에서 매우 효과적입니다.

요약

이 랩에서는 Hashcat 에서 PRINCE 공격 모드를 사용하는 방법을 성공적으로 배웠습니다. 사용 가능한 가장 창의적이고 효과적인 비밀번호 크랙 기술 중 하나에 대한 실습 경험을 쌓았습니다.

다음 내용을 배웠습니다.

  • PRINCE 공격 (-a 8) 의 개념과 확률적으로 비밀번호 후보를 생성하는 방법을 이해했습니다.
  • 공격의 기반으로 사용할 간단하고 표적화된 단어 목록을 준비했습니다.
  • 단어를 연결하여 형성된 비밀번호를 크랙하기 위해 기본적인 PRINCE 공격을 실행했습니다.
  • --stdout 플래그를 사용하여 PRINCE 가 생성한 후보를 분석하고 그 논리를 이해했습니다.
  • PRINCE 공격과 규칙 파일 (-r) 을 결합하여 대소문자 변경과 같은 변형이 있는 더 복잡한 비밀번호를 크랙했습니다.

PRINCE 공격은 특히 여러 단어로 만들어진 비밀번호를 다룰 때 모든 보안 전문가의 무기고에 있는 강력한 도구입니다. 이 공격의 사용법과 다른 공격 모드와의 조합을 숙달하면 비밀번호 복구 능력을 크게 향상시킬 수 있습니다.