hashcat 사용법


hashcat 사용법
다양한 종류의 패스워드를 복원할 수 있는 hashcat 사용법에 대해서 설명드립니다. hashcat 설치 방법과 옵션, Mask 설정 방법 등 hashcat 명령어 사용법에 대해서 예제와 함께 설명드립니다.

hashcat 사용법

hashcat 소개

Hashcat은 GPU를 기반으로 하여 빠르게 패스워드를 크랙 할 수 있는 툴로 다양한 암호화 알고리즘을 지원하고 있습니다.
CPU 또한 지원하지만 GPU 대비 속도가 느립니다. GPU 를 사용할 경우 빠르게 패스워드를 찾아 낼 수 있으며 여러개의 GPU가 존재할 경우 각각 GPU 별로 나눠서 분산 처리를 할 수 있습니다.

패스워드에 대한 길이와 구성 문자등에 대한 힌트가 있을 경우 세부적으로 규칙을 정의하여 패스워드를 검색해 나갈 수 있습니다.

다양한 옵션이 지원되는 만큼 hashcat 사용법이 조금 어려울 수 있는데, 예제를 통해서 함께 설명 드리도록 하겠습니다.

hashcat 설치

hashcat을 설치하여 사용하기 위해서는 먼저 GPU 드라이버를 설치해 주셔야 합니다. NVIDIA GPU를 사용하고 계신 경우 아래의 글을 참고하여 드라이버를 설치 할 수 있습니다.

우분투에서 NVIDIA 드라이버 설치 방법

드라이버 설치 후 nvidia-smi 명령어를 실행하면 다음과 같이 GPU 목록을 확인 할 수 있습니다.

hashcat 사용법

그 다음 우분투 리눅스 환경일 경우 아래의 명령어를 이용하여 hashcat을 설치 할 수 있습니다.

$ apt install hashcat

패키지가 설치 된 후에 다음은 명령어를 실행하여, 버전이 출력된다면 제대로 설치가 이뤄진 것입니다.

$ hashcat --version

hashcat 옵션

먼저 hashcat에서 지원되는 옵션을 확인하기 위해서는 다음 명령어를 실행하면 됩니다.

$ hashcat --help

해쉬 유형, 검색 모드, 문자 코드 등 주요 옵션에 대해서 설명드리도록 하겠습니다.

해쉬 유형

계산해서 찾아낼 패스워드의 해쉬 유형입니다. -m 옵션을 지정하여 사용할 수 있습니다. 예를 들어 md5 알고리즘의 해쉬값의 패스워드를 복원하기 위해서는 0 값을 지정하면 됩니다.

- [ Hash modes ] -

      # | 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
  10800 | SHA-384                                          | Raw Hash
   1700 | SHA-512                                          | Raw Hash

검색 모드

패스워드를 검색하는 방법을 지정하는 옵션으로 -a 옵션명을 사용합니다. 주로 사용되는 옵션 값은 Brute-force으로 3 값을 사용합니다.

- [ Attack Modes ] -

  # | Mode
 ===+======
  0 | Straight
  1 | Combination
  3 | Brute-force
  6 | Hybrid Wordlist + Mask
  7 | Hybrid Mask + Wordlist

패스워드 문자셋

hashcat에서 사용되는 문자셋 입니다. 패스워드를 찾기 위해 시도할 문자를 정의할 때 사용됩니다.

- [ Built-in Charsets ] -

  ? | Charset
 ===+=========
  l | abcdefghijklmnopqrstuvwxyz
  u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
  d | 0123456789
  h | 0123456789abcdef
  H | 0123456789ABCDEF
  s |  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  a | ?l?u?d?s
  b | 0x00 - 0xff

hashcat 사용법

hashcat을 이용하여 어떻게 패스워드를 찾아 낼 수 있는지 예제를 통해서 설명드리도록 하겠습니다. 다음과 같이 hello 문자열의 md5를 계산하여, 계산된 md5로부터 문자열을 찾아내 보도록 하겠습니다.

$ echo -n "hello" | md5sum

위에서 확인된 hash 값을 다음과 같이 파일로 저장합니다.

$ echo "5d41402abc4b2a76b9719d911017c592" > example.hash

그리고 다음 명령어로 hashcat을 실행합니다. hashcat 명령어를 실행하는데 사용되는 옵션은 다음과 같습니다.

  • -a 3 : 패스워드 검색 방밥으로 Brute-force 모드(3) 를 사용합니다.
  • -m 0 : 해쉬 알고리즘으로 MD5을 사용합니다.
  • example.hash : 해쉬 파일이 저장된 경로 입니다.
  • ?a x 6 : 하나의 ?a 는 (?l?u?d?s) 으로 소문자, 대문자, 숫자, 특수기호 의 하나의 문자를 의미하며 ?a 여섯개 있으므로 6자리의 이 문자들을 검색합니다.
$ hashcat -a 3 -m 0 example.hash ?a?a?a?a?a

위의 명령어를 실행한 결과는 아래와 같습니다. 실행 중간에 아래와 같이 md5 값으로 부터 원래의 문자열을 찾은 것을 확인 할 수 있습니다.

5d41402abc4b2a76b9719d911017c592:hello

찾아낸 패스워드는 해쉬 값과 같이 ~/.hashcat/hashcat.potfile 위치에 저장되게 됩니다. 동일한 해쉬값을 검색할 경우는 다시 연산을 통해서 패스워드를 찾아내지 않고 potfile에 저장된 내용을 출력합니다.

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)