Crunch란?
Crunch는 특정 규칙에 따라 패스워드 사전을 생성하는 리눅스 기반 도구로, 침투 테스트 및 보안 평가에서 브루트포스 공격 시 유용하게 활용됩니다. 지정된 문자 집합과 길이 범위 내에서 조합 가능한 모든 비밀번호 조합을 생성할 수 있으며, 출력 형식도 다양하게 지원합니다.
기본 구조
crunch <최소길이> <최대길이> [문자집합] [옵션]
- 최소길이: 생성할 문자열의 최소 길이 (필수)
- 최대길이: 생성할 문자열의 최대 길이 (필수)
- 문자집합: 사용할 문자 목록 (생략 시 기본값: 소문자 a-z)
- 옵션: 출력 방식, 형식 지정 등 다양한 설정 가능
주요 옵션 설명
| 옵션 | 설명 |
|---|---|
-o 파일명 |
결과를 지정한 파일에 저장 |
-b 크기 |
출력 파일의 최대 크기 제한 (예: 50mb) |
-c 숫자 |
생성할 라인 수 제한 |
-t 형식 |
출력 형식 지정 (%, ^, @, , 사용) |
-f 파일경로 |
미리 정의된 문자셋 파일 로드 (기본 위치: /usr/share/crunch/charset.lst) |
-e 문자열 |
지정 문자열 도달 시 생성 중단 |
-s 문자열 |
지정 문자열부터 생성 시작 |
-p 항목들 |
입력된 항목들의 순열(permutation) 생성 |
-z |
생성 후 gzip, bzip2 등으로 압축 |
형식 기호 (Placeholder)
@→ 소문자 알파벳 (a-z),→ 대문자 알파벳 (A-Z)%→ 숫자 (0-9)^→ 특수문자 (!@#$%^&* etc.)
공백이나 쉼표 포함 시 전체 형식을 따옴표로 감싸야 함.
실제 사용 예시
예제 1: 기본 소문자 조합 생성
1~3자리 소문자 조합을 생성하여 파일에 저장:
crunch 1 3 -o lowercase_dict.txt
확인:
cat lowercase_dict.txt | head -10
예제 2: 숫자만 사용한 사전 생성
3자리 숫자 조합 생성:
crunch 3 3 0123456789 -o digits_3.txt
예제 3: 고정 접두사 + 변수 조합
"admin" 다음에 두 자리 숫자가 오는 형식의 비밀번호 생성:
crunch 7 7 -t admin%% -o admin_pass.txt
예제 4: 사용자 정의 문자셋 적용
특정 문자셋 파일에서 "numeric" 그룹을 불러와 4자리 숫자 생성:
crunch 4 4 -f /usr/share/crunch/charset.lst numeric -o num_custom.txt
예제 5: 순열 기반 생성
"red", "blue", "green" 세 단어의 모든 순서 조합 생성:
crunch 1 1 -p red blue green -o color_perm.txt
※ 이 경우 최소/최대 길이는 무시되며, 입력 요소의 전체 순열이 생성됨.
예제 6: 조건부 생성 (시작 및 종료 지정)
"startkey"부터 시작하여 "endkey"에서 멈추는 조합 생성:
crunch 5 5 -t abc%% -s startkey -e endkey -o range_output.txt
예제 7: 파일 분할 및 압축
각 20MB씩 분할하고, 최종적으로 gzip으로 압축:
crunch 8 8 %^@, -b 20mb -z gzip -o split_compressed
사회공학 기반 맞춤형 사전 전략
실제 공격 시 일반적인 사전보다 타겟 정보를 기반으로 한 맞춤형 사전이 더 효과적입니다.
단계별 접근법
- 정보 수집: 관리자 이름, 생년월일, 이메일, 조직명, 애완동물 이름 등 개인 관련 정보 확보
- 패턴 추론: 흔히 사용되는 패스워드 패턴 분석 (예: 이름+생일, 회사이름+!)
- 사전 생성: 수집된 정보 기반으로 실제 가능성 있는 조합 생성
예시 시나리오: 관리자 이름이 "김철수", 생년월일 1992년으로 파악된 경우
crunch 10 10 -t kimcs92%% -o target_dict.txt
또는 닉네임 "tiger"와 결합:
crunch 8 8 -t tiger%92 -o nickpass.txt
Kali Linux 환경에서의 실행
Crunch는 기본적으로 Kali Linux에 사전 설치되어 있습니다. 업데이트 또는 재설치가 필요할 경우:
sudo apt update && sudo apt install crunch
버전 확인:
crunch -version