Hashcat 사용기
두비니
·2022. 12. 20. 06:51
Hashcat 사용기
수업 실습 중 재미있는 툴을 알게되어서 간단한 글을 작성해보려고 합니다.
Hashcat이라고 하는 브루트포싱 툴인데, 이것저것 가능하더라구요.
1. Installation
sudo apt install hashcat
2. Usage
Hashcat은 기능이 많아서 각각 설명하기에는 너무 길어집니다. 시간이 많고 궁금하신 분들은 hashcat --help를 통해서 정독시간을 가지시면 될 것 같습니다.
저는 많이 쓰이는 옵션만 간단하게 짚고 넘어가도록 하겠습니다.
쭉 가볍게 읽고, 아래 example에서 직접 해보면서 이해 안되는 부분이 있다면 돌아와도 좋을 것 같습니다.
Hash Type (-m)
가장 먼저 해시 함수의 종류입니다. 엄청 많이 있는데, 가장 핵심적인 친구들만 적어보도록 하겠습니다.
전체는 hashcat --help를 통해서 보기.
사용하는건 -m 0 이런식으로 옵션을 넣어줍니다.
0 | MD5 | Raw Hash
100 | SHA1 | Raw Hash
1410 | sha256($pass.$salt) | Raw Hash, Salted and/or Iterated
1420 | sha256($salt.$pass) | Raw Hash, Salted and/or Iterated
1430 | sha256(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated
1440 | sha256($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated
1710 | sha512($pass.$salt) | Raw Hash, Salted and/or Iterated
1720 | sha512($salt.$pass) | Raw Hash, Salted and/or Iterated
1730 | sha512(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated
1740 | sha512($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated
1000 | NTLM | Operating Systems
Attack mode (-a)
- [ Attack Modes ] -
# | Mode
===+======
0 | Straight
1 | Combination
3 | Brute-force
6 | Hybrid Wordlist + Mask
7 | Hybrid Mask + Wordlist
공격 모드입니다. 순서대로 다음과 같습니다.
- Straight: Dictionary attack
- Combination: 지정한 wordlist 안에서 조합하여 공격
- Brute-force: 브루트포싱. 지정한 패턴 안에서 하도록 할 수 있음
- Hybrid Wordlist + Mask: Combination + 지정한 패턴으로 브루트포싱
- Hybrid Mask + Wordlist: 지정한 패턴 + Combination으로 브루트포싱
Charset (?)
- [ Built-in Charsets ] -
? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
d | 0123456789
h | 0123456789abcdef
H | 0123456789ABCDEF
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
a | ?l?u?d?s
b | 0x00 - 0xff
Mask 지정시 사용할 수 있는 옵션입니다.
?u?l?l?l, ?l?l?l?d?d?s, ?a?a?a?a 등의 형태로 사용될 수 있으며, 각각 뜻은 다음과 같습니다.
- ?u?l?l?l : 총 4글자 비밀번호, 첫 글자는 알파벳 대문자, 나머지는 모두 소문자 (ex. Abcd, Dccc, Vwen)
- ?l?l?l?d?d?s : 총 6글자 비밀번호, 첫 3글자는 알파벳 소문자, 다음 2글자는 숫자, 마지막은 특수문자 (ex. dkw12!)
- ?a?a?a?a : 총 4글자, 모든 글자 해당 (ex. 1cA$, G4s!, 3451)
기타
--pw-min 1 --pw-max 5 : 문자 길이 지정 (이 경우 1~5길이 안에서 비밀번호 찾기)
‐‐increment-min=5 : 최소 길이 지정. (5자리부터 시작)
3. Examples
Hashcat도 워낙 옵션이 많아서 예시를 쓰려면 엄청 많은 예시가 나오겠지만,
본 글에서는 Bruteforcing만 다뤄보도록 하겠습니다.
먼저 테스트용으로 MD5 해시값을 저장해보도록 할게요.
먼저 기존 정보에 대해 알고있다고 가정하여 Hashcat을 사용해보도록 하겠습니다.
hashcat --force -a 3 -m 0 1.hash ?l?l?l?l?l?l?d
각각 옵션은 다음 뜻입니다.
- --force : -D를 사용하여 processing unit을 지정해줘도 에러가 발생하는 경우 이를 설정하면 됩니다. 없어도 잘 되면 굳이 넣을 필요 없음
- -a -3 : Bruteforcing 사용
- -m -0 : 해싱 방법으로 MD5 선택
- 1.hash : 공격 대상
- ?l?l?l?l?l?l?d : 처음 6자리는 알파벳 소문자, 마지막 자리는 숫자
이를 실행시키면 시간이 지난 뒤, 다음과 같이 패스워드를 찾아낸 것을 볼 수 있습니다.
만약 아무것도 모른다는 가정 하에 무지성 브루트포싱을 하고싶다면 ?l?l?l?l?l?l?d 옵션을 제외하고 하면 됩니다.
4. Conclusion
보통 password cracking 툴로 JackTheRipper를 많이 쓰는데, hashcat도 다양한 기능들이 있어 재미있게 사용해보았습니다.
기회가 된다면 둘의 비교글도 올리고 싶네요. (과연 언제가 될랑가 모르겠다만,,,,ㅎ)
감사합니다.
끝!
5. 참고
https://securiumsolutions.com/blog/how-to-use-hashcat-the-powerful-cracking-tool/
https://resources.infosecinstitute.com/topic/hashcat-tutorial-beginners/
https://in.security/2022/06/20/hashcat-pssw0rd-cracking-brute-force-mask-hybrid/
'Crypto' 카테고리의 다른 글
Hashing with Salt and Pepper (1) | 2023.01.04 |
---|---|
Rainbow Table Attack 알아보기 (0) | 2023.01.03 |
공개키 암호에 대한 이모저모 (1) - based on 소인수분해 (0) | 2021.07.08 |
base64 encoding 알아보기 (좀 필요 이상으로 많이) (0) | 2021.07.07 |
Weiner's Attack cheat sheet (0) | 2021.05.15 |