hashcat 개요
- 해시를 크래킹해주는 툴이다.
- JWT의 서명용 시크릿 키를 찾아주는 용도로도 사용할 수 있다.
- 알려진 시크릿 키 리스트를 사용해서 브루트포싱할 수 있다. 예를 들면, JWT 시크릿 키 리스트를 사용해서 브루트포싱할 수 있다.
- 서명값이 일치하는 것이 있으면 출력해준다.
필요한 실행환경
- hashcat을 돌리기 위해서는 GPU 프로그래밍 언어 실행환경이 필요하다. 따러서 GPU 하드웨어가 달린 서버나 PC위에서 돌려야 한다.
- OpenCL, HIP, CUDA 중에서 적어도 하나를 실행할 수 있는 환경이 필요하다.
- OpenCL을 위키피디아에서 찾아보면
OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크
라고 설명되어 있다. - 속도를 높이기 위해서 병렬처리를 사용해야 하는데 그 때 필요한 것으로 생각된다.
- CUDA를 돌리기 위해서는 NVIDIA GPU가 필요하고, HIP은 CUDA와 같은 용도로 AMD에서 만든 것이다.
- 만약 이런 실행환경 없이 hashcat을 실행하면 다음과 같은 에러 메세지가 출력된다.
ATTENTION! No OpenCL, HIP or CUDA installation found.
You are probably missing the CUDA, HIP or OpenCL runtime installation.
* AMD GPUs on Linux require this driver:
"AMD ROCm" (4.5 or later)
* Intel CPUs require this runtime:
"OpenCL Runtime for Intel Core and Intel Xeon Processors" (16.1.1 or later)
* NVIDIA GPUs require this runtime and/or driver (both):
"NVIDIA Driver" (440.64 or later)
"CUDA Toolkit" (9.0 or later)
Started: Thu Feb 9 01:51:23 2023
Stopped: Thu Feb 9 01:51:23 2023
설치
- 깃 허브 페이지를 보면, 다운로드 가능한 바이너리 파일을 제공해주고 있다. 그 것을 바로 사용하면 된다.
- 나는 Python의 pip을 사용해서 설치하였다.
pip install hashcat
기동 테스트
hashcat
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
Try --help for more help.
간단한 사용법
- 다음 명령으로 JWT의 시크릿 키를 얻을 수 있는지 테스트할 수 있다.
hashcat -a 0 -m 16500 <jwt> <wordlist>
-a
옵션은--attack-mode
를 가리킨다.
- [ Attack Modes ] -
# | Mode
===+======
0 | Straight
1 | Combination
3 | Brute-force
6 | Hybrid Wordlist + Mask
7 | Hybrid Mask + Wordlist
9 | Association
-m
옵션은--hash-type
을 가리킨다.- 여러가지 선택가능한 해시 타입이 있는 가운데, 16500은 JWT를 의미한다.
16500 | JWT (JSON Web Token) | Network Protocol
참고 링크
- https://pypi.org/project/hashcat/
- https://portswigger.net/web-security/jwt