Hashcat으로 압축파일 비밀번호 크래킹
지원하는 압축 형식
ZIP 파일
- 전통적 ZIP 암호화:
-m 17200 (PKZIP)
- AES 암호화 ZIP:
-m 13600 (WinZip AES)
RAR 파일
- RAR3:
-m 12500
- RAR5:
-m 13000
7-Zip 파일
ZIP 파일 크래킹
1. 해시 추출
zip2john 사용
zip2john archive.zip > zip.hash
cat zip.hash
hashcat 형식으로 변환
sed 's/.*:\$pkzip2\$/\$pkzip2\$/' zip.hash > zip_hashcat.hash
python3 -c "
import zipfile
z = zipfile.ZipFile('archive.zip')
print('Hash extraction needed - use zip2john')
"
2. 크래킹 실행
기본 사전 공격
hashcat -m 17200 -a 0 zip.hash /usr/share/wordlists/rockyou.txt
hashcat -m 13600 -a 0 zip.hash /usr/share/wordlists/rockyou.txt
규칙 적용
hashcat -m 17200 -a 0 zip.hash wordlist.txt -r /usr/share/hashcat/rules/best64.rule
hashcat -m 17200 -a 0 zip.hash names.txt -r zip_custom.rule
브루트포스 공격
hashcat -m 17200 -a 3 zip.hash ?d?d?d?d
hashcat -m 17200 -a 3 zip.hash ?l?l?l?l?l?l
hashcat -m 17200 -a 3 zip.hash company?d?d?d?d
RAR 파일 크래킹
1. RAR 버전 확인
rar l archive.rar | head -10
unrar l archive.rar | head -10
hexdump -C archive.rar | head -1
2. 해시 추출
rar2john archive.rar > rar.hash
cat rar.hash
3. 크래킹 실행
hashcat -m 12500 -a 0 rar.hash /usr/share/wordlists/rockyou.txt
hashcat -m 13000 -a 0 rar.hash wordlist.txt -w 3
hashcat -m 13000 -a 3 rar.hash ?l?l?l?l?d?d
7-Zip 파일 크래킹
1. 해시 추출
7z2john archive.7z > 7z.hash
cat 7z.hash
2. 크래킹 실행
hashcat -m 11600 -a 0 7z.hash /usr/share/wordlists/rockyou.txt
hashcat -m 11600 -a 0 7z.hash wordlist.txt -w 3 -O
실전 예시
시나리오 1: 기업 문서 ZIP
cat > company_words.txt << 'EOF'
company
document
secret
confidential
project
2023
2024
2025
EOF
cat > company.rule << 'EOF'
# 첫 글자 대문자
c
# 대문자 + 연도
c $2$0$2$3
c $2$0$2$4
c $2$0$2$5
# 느낌표 추가
c $!
c $2$0$2$3 $!
EOF
hashcat -m 17200 -a 0 zip.hash company_words.txt -r company.rule
시나리오 2: 개인 백업 파일
cat > personal.txt << 'EOF'
password
admin
backup
family
photos
documents
important
EOF
hashcat -m 17200 -a 6 zip.hash personal.txt ?d?d?d?d
시나리오 3: CTF 문제
cat > ctf_words.txt << 'EOF'
flag
ctf
hack
cyber
security
challenge
EOF
hashcat -m 17200 -a 0 zip.hash ctf_words.txt -r /usr/share/hashcat/rules/best64.rule
성능 최적화
GPU 활용
hashcat -m 17200 -a 0 zip.hash wordlist.txt \
-w 4 \
-O \
--status \
--status-timer=30
메모리 관리
split -l 1000000 huge_wordlist.txt wordlist_part_
for part in wordlist_part_*; do
hashcat -m 17200 -a 0 zip.hash "$part"
if [ $? -eq 0 ]; then
echo "Password found with $part"
break
fi
done
압축 형식별 특징
ZIP 파일
- 속도: 빠름
- 보안: 상대적으로 약함 (전통적 암호화)
- 팁: WinZip AES는 더 강력하지만 여전히 크래킹 가능
RAR 파일
- RAR3: 중간 속도, 중간 보안
- RAR5: 매우 느림, 강력한 보안
- 팁: RAR5는 시간 제한을 두고 크래킹
7-Zip 파일
- 속도: 느림
- 보안: 강함 (AES-256)
- 팁: 강력한 GPU와 효율적인 워드리스트 필요
자동화 스크립트
압축파일 자동 크래킹
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <archive_file>"
exit 1
fi
ARCHIVE="$1"
EXT="${ARCHIVE##*.}"
case "$EXT" in
"zip")
echo "Cracking ZIP file..."
zip2john "$ARCHIVE" > "${ARCHIVE}.hash"
hashcat -m 17200 -a 0 "${ARCHIVE}.hash" /usr/share/wordlists/rockyou.txt
;;
"rar")
echo "Cracking RAR file..."
rar2john "$ARCHIVE" > "${ARCHIVE}.hash"
hashcat -m 12500 -a 0 "${ARCHIVE}.hash" /usr/share/wordlists/rockyou.txt
;;
"7z")
echo "Cracking 7-Zip file..."
7z2john "$ARCHIVE" > "${ARCHIVE}.hash"
hashcat -m 11600 -a 0 "${ARCHIVE}.hash" /usr/share/wordlists/rockyou.txt
;;
*)
echo "Unsupported format: $EXT"
exit 1
;;
esac
주의사항
합법성
- 본인 소유 파일만 크래킹
- 침투 테스트 범위 내에서만 사용
- 적절한 권한 획득 후 진행
성능 고려
- RAR5: 매우 느려서 현실적 시간 내 불가능할 수 있음
- 7-Zip: GPU 가속 필수
- ZIP: 상대적으로 빠르지만 워드리스트 품질이 중요
실용적 팁
- 워드리스트 우선순위: 파일 이름, 폴더명, 관련 키워드 먼저
- 규칙 적용: 연도, 특수문자 조합 시도
- 시간 제한: 24-48시간 내 결과 없으면 다른 방법 고려
- 하이브리드 공격: 워드리스트 + 숫자 조합이 효과적