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/