hashcat 간단 정리
가끔 인젝션으로 해쉬값을 빼낸 후 크랙을 해야 할 경우가 있다.
(거의 대부분 데이터베이스에 비밀번호는 해쉬값 또는 암호화 해서 넣어놓기 때문에 사실 거의 필수적으로)
john-the-ripper 를 가장 많이 쓰고 또 유명하지만 간혹 점검 환경에 의해 사용하지 못할수도 있기에 hashcat 도 간략히 정리해둔다.
hashcat 기본
hyunmini@~$ hashcat -h
hashcat - advanced password recovery
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
- [ Options ] -
Options Short / Long | Type | Description | Example
================================+======+======================================================+=======================
-m, --hash-type | Num | Hash-type, see references below | -m 1000
-a, --attack-mode | Num | Attack-mode, see references below | -a 3
-V, --version | | Print version |
-h, --help | | Print help |
--quiet | | Suppress output |
--hex-charset | | Assume charset is given in hex |
--hex-salt | | Assume salt is given in hex |
...
옵션이 어마어마하게 많기 때문에 가장 중요한 몇가지만 정리해둔다.
-m : 크랙하려는 해시가 어떤 것인지 지정
# | Name | Category ======+==================================================+================================
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
5100 | Half MD5 | Raw Hash
100 | SHA1 | Raw Hash
1300 | SHA-224 | Raw Hash
1400 | SHA-256 | Raw Hash
...
-a : attack mode, brute/dictionay/hybrid 등
- [ Attack Modes ] -
# | Mode
===+======
0 | Straight
1 | Combination
3 | Brute-force
6 | Hybrid Wordlist + Mask
7 | Hybrid Mask + Wordlist
3 은 무작위 대입, 6은 워드리스트 + 마스크 요 2개 정도가 많이 사용될 듯 하다.
mask 는 문자열 타입을 지정해주는 기능인데, 아래와 같이 미리 지정된 문자열 셋이 있고, 직접 지정해줄 수도 있다.
Charset (mask 지정시 사용)
- [ Built-in Charsets ] -
? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
d | 0123456789
h | 0123456789abcdef
H | 0123456789ABCDEF
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
a | ?l?u?d?s
b | 0x00 - 0xff
?l?l?l // 소문자로만 이루어진 3개의 글자 - ex: abc, adm, tes,...
?l?l?l?d // 소문자 3글자, 숫자1글자 - ex: abc0, kkk5,...
?l?l?l?l?l?l?l?s // 소문자7글자, 특수문자1글자 - ex: testabc!,...
...
-D : 크랙 연산에 사용할 processing unit 지정(CPU, GPU)
# | Device Type
===+=============
1 | CPU
2 | GPU
3 | FPGA, DSP, Co-Processor
GPU 있다면 2, CPU 면 1 로 지정. 가끔 디바이스가 없다며 에러가 날 때가 있는데, --force 옵션을 추가로 적어주면 그냥 CPU로 지정되는듯 하다.
이외 유용한 옵션들
--pw-min 6 --pw-max 9 // 크랙 시도 문자 길이 지정
경험상 10자리 이상은 일반 PC에서는 크랙이 어려움. 다만 dictionary + brute 라면 어느정도 크랙 가능, 또는 GPU로 돌리면 10자리 정도도 어느정도 크랙 가능
-i --increment-min=4 --increment-min=8 // mask 길이값을 변경해가면서 시도함
사용 예시
# hashcat -a 3 -m 0 example0.hash ?a?a?a?a?a?a // bruteforce 6 length
# hashcat -m 0 -a 1 hash.lst dict.txt // combine(dictionary + straight ?)
# hashcat -m 1400 -a 6 hash.lst dict.txt ?l?l?l?l?l?l?a?a // hybrid ( dict + brute mask )
이상. 또 필요한 부분이 있으면 정리..
'Pentesting' 카테고리의 다른 글
kali 한글 및 apt-get 에러 해결방법 (0) | 2016.08.25 |
---|---|
모의해킹에서의 파워쉘 활용 (0) | 2016.02.27 |
msfpayload 백신 탐지 우회 (2) | 2016.02.25 |
모의해킹을 편하게 해주는 유용한 취약점(1) - 톰캣 관리자 페이지를 이용한 웹쉘업로드 (0) | 2014.04.30 |
Metasploit 개발을 위한 문서&사이트 (0) | 2012.09.02 |