소개
Crunch 는 사용자 정의 단어 목록 (wordlist) 을 생성하는 강력하고 유연한 명령줄 도구입니다. 이러한 단어 목록은 사이버 보안 분야, 특히 암호 강도 감사 및 무차별 대입 공격 (brute-force attack) 을 수행하는 침투 테스터 및 보안 전문가에게 필수적입니다. 정적이고 미리 만들어진 단어 목록과 달리 Crunch 를 사용하면 알려진 패턴, 문자 세트 및 길이 요구 사항을 기반으로 매우 구체적인 목록을 생성하여 공격 효율성을 크게 높일 수 있습니다.
이 실습에서는 Crunch 의 기본 사항을 배우게 됩니다. 기본 구문 이해부터 시작하여 간단한 단어 목록 생성, 사용자 정의 문자 세트 사용, 패턴 기반 목록 생성, 그리고 마지막으로 출력을 다른 명령줄 도구로 직접 파이핑 (piping) 하는 방법을 배우게 됩니다.
Crunch 도구의 구문 이해하기
이 단계에서는 crunch 명령의 기본 구문과 도움말 메뉴에 액세스하는 방법을 배우게 됩니다. 명령의 기본 구조를 이해하는 것이 기능을 마스터하는 첫 번째 단계입니다.
crunch의 기본 구문은 다음과 같습니다.
crunch <min-len> <max-len> [characterset] [options]
<min-len>: 생성할 단어의 최소 길이입니다.<max-len>: 생성할 단어의 최대 길이입니다.[characterset]: (선택 사항) 단어 생성에 사용할 문자 세트입니다. 지정하지 않으면crunch는 기본적으로 소문자를 사용합니다.[options]: (선택 사항) 파일을 저장하거나 패턴을 사용하는 것과 같이 출력을 제어하는 다양한 플래그입니다.
사용 가능한 모든 옵션을 보고 도구에 대한 포괄적인 개요를 얻으려면 --help 플래그를 사용할 수 있습니다. 도움말 메뉴를 살펴보겠습니다. 이 실습의 모든 작업은 기본 ~/project 디렉토리에서 수행됩니다.
터미널에서 다음 명령을 실행하십시오.
crunch --help
그러면 모든 플래그와 해당 설명이 나열된 자세한 출력이 표시됩니다. 잠시 시간을 내어 살펴보십시오. 더 고급 기능을 탐색하려는 경우 훌륭한 참조 자료가 될 것입니다.
crunch version 3.6
Crunch는 지정한 기준에 따라 단어 목록을 만들 수 있습니다. crunch의 출력은 화면, 파일 또는 다른 프로그램으로 보낼 수 있습니다.
사용법: crunch <min-len> <max-len> [options]
여기서 min-len과 max-len은 숫자입니다.
... (출력 생략) ...
이제 기본 구문과 도움말을 찾는 방법을 알았으므로 첫 번째 단어 목록을 생성할 준비가 되었습니다.
고정 길이의 간단한 단어 목록 생성하기
이 단계에서는 고정 길이의 첫 번째 단어 목록을 생성합니다. 이것은 crunch의 가장 일반적인 용도 중 하나입니다. 최소 길이와 최대 길이가 같으면 crunch는 해당 특정 길이에 대한 모든 가능한 조합을 생성합니다.
기본적으로 crunch는 단어 목록을 표준 출력 (터미널 화면) 으로 출력합니다. 목록이 크면 부담스럽고 유용하지 않을 수 있습니다. 더 나은 방법은 -o 옵션을 사용하여 출력을 파일로 저장하는 것입니다.
기본 소문자 알파벳을 사용하여 모든 가능한 3 자리 단어를 생성하고 3char.txt라는 파일에 저장해 보겠습니다.
다음 명령을 실행하십시오.
crunch 3 3 -o 3char.txt
이 명령은 crunch에게 최소 길이 3, 최대 길이 3 의 단어를 생성하고 결과를 3char.txt에 출력하도록 지시합니다. 터미널에서 생성된 목록에 대한 몇 가지 통계를 볼 수 있습니다.
Crunch will now generate the following amount of data: 20280 bytes, 19 KB, 0 MB, 0 GB
Crunch will now generate the following number of lines: 17576
파일이 올바르게 생성되었는지 확인하려면 head 명령을 사용하여 파일의 처음 몇 줄을 볼 수 있습니다.
head -n 5 3char.txt
알파벳 순서 목록의 시작 부분이 표시되어야 합니다.
aaa
aab
aac
aad
aae
첫 번째 단어 목록을 성공적으로 생성하고 저장했습니다.
특정 문자 세트를 사용한 단어 목록 생성하기
이 단계에서는 단어 목록에 사용자 지정 문자 세트를 지정하는 방법을 배우게 됩니다. 이는 비밀번호에 포함될 수 있는 문자 (예: 숫자만 포함하거나 특정 문자만 포함) 에 대한 정보가 있을 때 매우 유용합니다.
문자 세트를 지정하려면 길이 인수 뒤에 사용하려는 문자열을 명령 끝에 추가하면 됩니다.
0, 1, 2, 3 숫자만 사용하여 4 자리 PIN 코드 목록을 생성해 보겠습니다. 이 목록을 4digit.txt라는 파일에 저장할 것입니다.
이 명령을 실행하십시오.
crunch 4 4 0123 -o 4digit.txt
여기서 4 4는 길이를 정확히 4 자로 설정하고, 0123은 사용자 지정 문자 세트를 제공하며, -o 4digit.txt는 출력을 저장합니다.
생성된 파일의 시작 부분을 검사하여 출력을 확인해 보겠습니다.
head -n 5 4digit.txt
출력에는 지정된 숫자만 사용하여 생성된 첫 다섯 가지 조합이 표시됩니다.
0000
0001
0002
0003
0010
보시다시피 crunch는 이제 제공한 문자만 사용하므로 생성된 단어 목록을 훨씬 더 효과적으로 제어할 수 있습니다.
-t 플래그를 사용하여 패턴 기반 단어 생성하기
이 단계에서는 -t 플래그를 사용하여 특정 패턴 기반의 단어 목록을 생성하는 방법을 배웁니다. 이것은 Crunch 의 가장 강력한 기능 중 하나로, 비밀번호 구조의 일부를 알고 있다면 매우 타겟팅된 단어 목록을 만들 수 있습니다.
-t 플래그는 다양한 문자 유형을 나타내기 위해 특수 플레이스홀더를 사용합니다.
@는 소문자로 대체됩니다.,는 대문자로 대체됩니다.%는 숫자로 대체됩니다.^는 기호로 대체됩니다.
비밀번호가 "user"로 시작하고, 두 개의 숫자가 오고, 마지막에 하나의 대문자로 끝난다고 가정해 봅시다. 패턴은 user%%,가 됩니다. 총 길이는 7 자입니다 ("user"에 4 자, %%에 2 자, ,에 1 자).
이 패턴을 기반으로 단어 목록을 생성하여 pattern.txt에 저장해 보겠습니다.
crunch 7 7 -t user%%, -o pattern.txt
이 명령은 crunch에게 정확히 7 자 길이의 단어를 생성하고 user%%, 패턴을 따르도록 지시합니다.
이제 출력 파일의 처음 몇 줄을 살펴보겠습니다.
head -n 5 pattern.txt
출력은 정의한 패턴과 일치할 것입니다.
user00A
user00B
user00C
user00D
user00E
이 방법은 단어 목록의 크기와 무차별 대입 공격에 필요한 시간을 극적으로 줄여주며, 가능한 비밀번호 후보에만 집중합니다.
Crunch 출력 직접 Hashcat 으로 파이핑하기
이 단계에서는 crunch의 출력을 다른 도구로 직접 파이핑하는 강력한 기술을 배우게 됩니다. 이는 잠재적으로 거대한 단어 목록을 디스크에 쓰는 것을 피하여 공간과 시간을 절약하기 때문에 매우 효율적입니다. 단어는 실시간으로 생성되어 다음 프로그램으로 "파이핑"(전송) 됩니다.
crunch는 종종 Hashcat 또는 John the Ripper 와 같은 비밀번호 크래킹 도구와 함께 사용되지만, 여기서는 간단한 grep 명령을 사용하여 이 프로세스를 시뮬레이션할 것입니다. grep은 텍스트를 검색하는 도구이며, 파이핑 개념을 시연하는 데 사용될 것입니다.
비밀번호가 labex23이라고 가정해 봅시다. 비밀번호가 "labex"로 시작하고 두 개의 숫자가 뒤따른다고 추측합니다.
이 패턴과 일치하는 단어를 생성하고 이를 grep으로 직접 파이핑하여 대상 비밀번호가 생성된 목록에 있는지 확인할 수 있습니다. 파이프 기호 |는 한 명령의 출력을 다른 명령의 입력에 연결하는 데 사용됩니다.
다음 명령을 실행하십시오.
crunch 7 7 -t labex%% | grep "labex23"
이 명령은 두 가지 작업을 수행합니다.
crunch 7 7 -t labex%%는 "labex"로 시작하고 두 개의 숫자가 뒤따르는 모든 7 자 단어 (예:labex00,labex01, ...) 를 생성합니다.|파이프는 생성된 각 단어를grep "labex23"명령으로 보내고, 이 명령은 해당 단어가 "labex23"과 일치하는지 확인합니다.
일치하는 항목이 발견되면 grep은 이를 터미널에 출력합니다.
labex23
실시간으로 단어 목록을 성공적으로 생성하고 다른 도구로 처리했습니다. 이는 효율적인 보안 테스트를 위한 핵심 기술입니다.
요약
이 실습을 완료하신 것을 축하드립니다! 여러분은 맞춤형 단어 목록 생성에 유용한 도구인 crunch 사용에 대한 기본적인 기술을 습득했습니다.
이 실습에서는 다음을 배웠습니다.
crunch명령의 기본 구문 이해하기.- 고정된 길이의 간단한 단어 목록을 생성하고 파일에 저장하기.
- 더 타겟팅된 단어 목록을 만들기 위해 사용자 정의 문자 세트 지정하기.
-t플래그를 사용하여 알려진 패턴 기반 단어 생성하기.crunch의 출력을grep과 같은 다른 명령줄 도구로 직접 파이핑하여 파일을 저장하지 않고 실시간으로 처리하기.
이러한 기술은 사이버 보안의 많은 작업, 특히 비밀번호 감사 및 침투 테스트에서 기초가 됩니다. 맞춤형 단어 목록을 생성함으로써 보안 평가의 효율성과 성공률을 크게 향상시킬 수 있습니다.


