소개
Hashcat 은 강력하고 다재다능한 비밀번호 복구 도구입니다. 가장 효과적인 기능 중 하나는 규칙 기반 공격 (rule-based attack) 으로, 단어 목록 (wordlist) 에 조작을 가하여 방대한 수의 비밀번호 후보를 생성할 수 있습니다. 미리 만들어진 규칙 파일 (rule files) 을 사용하는 대신, 특정 대상에 맞게 사용자 정의 규칙 (custom rules) 을 직접 만들 수 있습니다.
이 랩에서는 Hashcat 의 규칙 구문 (rule syntax) 의 기본 사항을 배우고 처음부터 사용자 정의 규칙 파일을 만들 것입니다. 단어의 첫 글자를 대문자로 만들고 연도를 추가하는 규칙을 작성한 다음, 이 사용자 정의 규칙 파일을 샘플 비밀번호 크래킹 공격에 사용할 것입니다.
'$' 추가 및 '^' 앞에 붙이기와 같은 기본 규칙 구문 학습
이 단계에서는 Hashcat 규칙의 기본 구문에 대해 배웁니다. 규칙은 단어 목록 (wordlist) 의 단어를 Hashcat 이 어떻게 조작할지 알려주는 간단한 단일 문자 명령입니다. 가장 기본적인 규칙 두 가지는 문자를 앞에 붙이거나 뒤에 추가하는 것입니다.
^x: 단어의 시작 부분에 문자x를 앞에 붙입니다.$x: 단어의 끝 부분에 문자x를 뒤에 추가합니다.
전체 공격을 실행하지 않고 이러한 규칙이 어떻게 작동하는지 보려면 --stdout 옵션을 사용할 수 있습니다. 이 옵션은 규칙 조작의 출력을 터미널에 직접 출력합니다.
먼저, 추가 규칙을 테스트해 보겠습니다. 각 단어에 숫자 1을 추가하는 임시 규칙 파일을 만들 것입니다.
echo '$1' > temp_rule.txt
이제 이 규칙을 사용하여 wordlist.txt에 대해 Hashcat 을 실행합니다. --force 플래그는 VM 과 같이 지원되지 않는 환경을 감지하더라도 Hashcat 을 실행하도록 하는 데 사용됩니다.
hashcat --force --stdout wordlist.txt -r temp_rule.txt
단어 목록의 단어 뒤에 1이 추가된 것을 볼 수 있습니다.
password1
다음으로, 앞에 붙이기 규칙을 테스트해 보겠습니다. 문자 A를 앞에 붙이는 규칙을 만들 것입니다.
echo '^A' > temp_rule.txt
이 새 규칙으로 Hashcat 을 다시 실행합니다.
hashcat --force --stdout wordlist.txt -r temp_rule.txt
이제 출력에서 단어의 시작 부분에 문자 A가 표시됩니다.
Apassword
이해를 확실히 하기 위해 다른 문자로 자유롭게 실험해 보세요. 완료되면 임시 파일을 제거할 수 있습니다.
rm temp_rule.txt
새 사용자 정의 규칙 파일 생성
이 단계에서는 공격에 사용할 모든 사용자 정의 규칙을 담을 새롭고 비어 있는 파일을 생성합니다. 명확성을 위해 규칙 파일에 .rule 확장자를 부여하는 것이 일반적인 관행입니다.
현재 작업 디렉토리인 ~/project에 labex.rule이라는 파일을 생성할 것입니다. touch 명령을 사용하여 빈 파일을 쉽게 만들 수 있습니다.
터미널에서 다음 명령을 실행합니다.
touch labex.rule
파일이 성공적으로 생성되었는지 확인하려면 ls 명령을 사용하여 디렉토리 내용을 나열할 수 있습니다.
ls
출력에서 hashes.txt 및 wordlist.txt 파일과 함께 labex.rule이 나열된 것을 볼 수 있습니다.
hashes.txt labex.rule wordlist.txt
이제 사용자 정의 규칙을 위한 전용 파일이 준비되었습니다.
첫 글자 'c'를 대문자로 만드는 규칙 추가
이 단계에서는 labex.rule 파일에 첫 번째 규칙을 추가합니다. 매우 일반적인 비밀번호 패턴은 단어의 첫 글자를 대문자로 만드는 것입니다. Hashcat 에는 이를 위한 특정 규칙이 있습니다.
c: 단어의 첫 글자를 대문자로 만들고 나머지 모든 글자는 소문자로 만듭니다.
이 규칙을 labex.rule 파일에 추가할 것입니다. echo 명령과 단일 리디렉션 >를 결합하면 이전에 있던 내용을 덮어쓰면서 파일에 내용을 빠르게 작성할 수 있습니다.
echo 'c' > labex.rule
이제 새 규칙 파일의 효과를 보기 위해 테스트해 보겠습니다. 출력을 미리 보기 위해 --stdout 옵션을 다시 사용합니다.
hashcat --force --stdout wordlist.txt -r labex.rule
출력은 c 규칙에 지정된 대로 첫 글자가 대문자로 된 password 단어여야 합니다.
Password
첫 번째 사용자 정의 규칙을 성공적으로 생성하고 테스트했습니다.
연도 ' $2 $0 $2 $4'를 추가하는 규칙 추가
이 단계에서는 규칙을 더 복잡하게 만들 것입니다. 여러 규칙 명령을 한 줄에 결합하여 더 구체적인 비밀번호 후보를 만들 수 있습니다. 첫 글자를 대문자로 만드는 것뿐만 아니라 예를 들어 2024와 같은 연도를 추가하도록 규칙을 수정할 것입니다.
특정 문자를 추가하려면 $ 명령 다음에 문자를 사용합니다. 예를 들어 $2는 숫자 2를 추가합니다. 2024 문자열을 만들려면 2, 0, 2, 4를 순서대로 추가해야 합니다.
결합된 규칙은 다음과 같습니다. c $2 $0 $2 $4. 이는 Hashcat 에 먼저 대문자화 (c) 를 수행한 다음 지정된 문자를 순서대로 추가하도록 지시합니다.
이 새롭고 더 강력한 규칙으로 labex.rule 파일을 업데이트해 보겠습니다.
echo 'c $2 $0 $2 $4' > labex.rule
이제 업데이트된 규칙 파일을 테스트하여 결합된 명령의 결과를 확인합니다.
hashcat --force --stdout wordlist.txt -r labex.rule
출력은 이제 대문자로 된 단어 뒤에 연도 2024가 붙어야 합니다.
Password2024
이를 통해 규칙을 연쇄적으로 연결하여 복잡하고 표적화된 비밀번호 패턴을 만드는 방법을 보여줍니다.
샘플 공격에 사용자 정의 규칙 파일 테스트
이 단계에서는 완성된 사용자 정의 규칙 파일인 labex.rule을 사용하여 실제 비밀번호 크래킹 공격을 수행합니다. hashes.txt 파일에 제공된 샘플 MD5 해시를 대상으로 합니다.
공격 명령은 해시 유형, 공격 모드, 해시 파일, 단어 목록, 그리고 마지막으로 사용자 정의 규칙 파일을 지정합니다.
-m 0: 해시 유형이 MD5 임을 지정합니다.-a 0: 공격 모드가 "Straight" 또는 사전 공격임을 지정합니다.hashes.txt: 크래킹할 해시가 포함된 파일입니다.wordlist.txt: 기본으로 사용할 사전 파일입니다.-r labex.rule: 단어 목록에 적용할 사용자 정의 규칙 파일을 지정합니다.
공격을 시작하려면 다음 명령을 실행합니다.
hashcat --force -m 0 -a 0 hashes.txt wordlist.txt -r labex.rule
Hashcat 이 시작되어 단어 password에 규칙 c $2 $0 $2 $4를 적용하여 Password2024를 생성하고, 이를 해싱한 다음 hashes.txt의 해시와 비교합니다. 일치하는 항목을 찾아 크래킹된 비밀번호를 보고합니다.
공격이 완료된 후 (매우 빠르게 완료되어야 함), --show 옵션을 사용하여 크래킹된 비밀번호를 볼 수 있습니다.
hashcat --force -m 0 --show hashes.txt
출력에는 해시와 그에 해당하는 크래킹된 평문 비밀번호가 표시됩니다.
a915550249347678553a332349443648:Password2024
축하합니다! 사용자 정의 규칙을 성공적으로 만들고 이를 사용하여 비밀번호를 크래킹했습니다!
요약
이 실습에서는 Hashcat 에서 사용자 정의 규칙을 만드는 데 필수적인 기술을 배웠습니다. 문자를 앞에 붙이는 (^) 및 뒤에 붙이는 ($) 기본 구문을 이해하는 것부터 시작했습니다. 그런 다음 자체 규칙 파일인 labex.rule을 만들고 점진적으로 더 복잡한 규칙으로 채웠습니다.
단어의 첫 글자를 대문자로 만드는 규칙 (c) 을 성공적으로 작성한 다음, 연도를 추가하기 위해 명령을 연결하여 ($2 $0 $2 $4) 이를 향상시켰습니다. 마지막으로 이 사용자 정의 규칙을 실제 공격 시나리오에 적용하여 MD5 해시를 성공적으로 크래킹했습니다.
이 지식은 Hashcat 의 강력한 규칙 엔진을 마스터하기 위한 디딤돌이 되어, 매우 표적화되고 효율적인 비밀번호 크래킹 전략을 만들 수 있게 해줍니다.


