Hashcat 도구를 사용하여 암호를 해독하는 방법은 무엇입니까?

윤리적 해킹에서의 암호 해독 중요성

윤리적 해킹 및 침투 테스트에서 시스템이나 서버 접근을 위한 암호 크래킹은 매우 중요한 과정입니다.

시스템 및 데이터베이스에 저장된 암호는 대부분 일반 텍스트 형식이 아닌 해시 형태로 저장됩니다.

데이터베이스에 저장되는 비밀번호는 항상 해시 처리되며, 검증 시 해시 값을 비교하여 확인합니다.

각 시스템은 사용하는 암호화 방식에 따라 암호 해시를 서로 다른 방식으로 저장합니다. 따라서 해시를 획득하면, 모든 암호를 쉽게 해독할 수 있습니다.

본문에서는 강력하고 유용한 명령줄 도구인 Hashcat을 활용하여 암호 해시를 해독하는 방법에 대해 알아보겠습니다.

그럼 시작해 볼까요?

시작하기 전에 먼저…

해시 함수란 무엇일까요?

해싱은 해시 함수라고 불리는 수학적인 함수를 사용하여 입력된 일반 텍스트를 고정된 길이의 텍스트 문자열로 변환하는 과정입니다. 텍스트의 길이와 상관없이 특정 알고리즘을 통해 임의의 숫자와 알파벳 조합으로 바꿀 수 있습니다.

  • 입력 값은 해시하고자 하는 메시지입니다.
  • 해시 함수는 MD5, SHA-256 등과 같이 문자열을 해시 값으로 변환하는 암호화 알고리즘입니다.
  • 마지막으로 해시 값은 결과로 도출됩니다.

Hashcat 소개

Hashcat은 현존하는 가장 빠른 암호 복구 도구 중 하나입니다. 짧은 시간 안에 복잡한 암호를 해독할 수 있도록 설계되었으며, 사전 공격(단어 목록 공격)과 무차별 대입 공격을 모두 지원합니다.

Hashcat에는 CPU 기반 버전과 GPU(그래픽 처리 장치) 기반 버전이 있습니다. GPU 기반 도구는 CPU보다 훨씬 짧은 시간 안에 해시를 해독할 수 있습니다. GPU 드라이버 요구 사항은 공식 웹사이트에서 확인할 수 있습니다.

주요 특징

  • 무료 및 오픈 소스
  • 200가지 이상의 해시 유형 지원
  • Linux, Windows, macOS 등 다양한 운영체제 지원
  • CPU 및 GPU를 활용한 다중 플랫폼 지원
  • 동시에 여러 해시 크래킹 가능
  • 자동 성능 튜닝, 헥스 솔트 및 헥스 문자 집합 파일 지원
  • 내장된 벤치마킹 시스템 사용 가능
  • 분산 크래킹 네트워크 지원을 위한 오버레이 기능

더 많은 기능은 공식 웹사이트에서 확인할 수 있습니다.

Hashcat 설치 방법

먼저 Linux 시스템이 최신 프로그램 및 도구로 업데이트되었는지 확인해야 합니다.

터미널을 열고 다음 명령을 실행하세요.

sudo apt update && sudo apt upgrade

Hashcat은 일반적으로 Kali Linux에 사전 설치되어 있습니다. 비밀번호 크래킹 섹션에서 해당 도구를 찾을 수 있습니다. 만약 수동 설치가 필요한 경우에는 터미널에 다음 명령을 입력하십시오.

sudo apt-get install hashcat

Hashcat 사용법

Hashcat을 사용하기 위해서는 먼저 암호 해시가 필요합니다. 만약 해독할 해시가 없다면, 먼저 해시를 생성해야 합니다.

명령줄을 사용하여 해시를 생성하려면 다음과 같은 형식을 따르십시오.

echo -n "입력값" | 알고리즘 | tr -d "-">>결과파일명

예를 들어, 아래에서는 md5 알고리즘을 사용하여 몇 가지 단어를 해시로 변환하는 방법을 보여줍니다.

┌──(root💀kali)-[/home/writer/Desktop]
└─# echo -n "koreantech.org" | md5sum | tr -d "-">>crackhash.txt
echo -n "password123" | md5sum | tr -d "-">>crackhash.txt
echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt
echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt
echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt

이렇게 생성된 해시는 crackhash.txt 파일에 저장됩니다.

이제 해당 파일에 저장된 해시를 확인해 보겠습니다.

┌──(root💀kali)-[/home/writer/Desktop]
└─# cat crackhash.txt

066d45208667198296e0688629e28b14
482c811da5d5b4bcd497ffeaa98491e3
72a2bc267579aae943326d17e14a8048
2192d208d304b75bcd00b29bc8de5024
caae8dd682acb088ed63e2d492fe1e13

이제 해독할 해시가 준비되었습니다. 원하시는 알고리즘을 사용하여 해시를 생성할 수 있습니다.

다음 단계는 Linux 시스템에서 Hashcat 도구를 실행하는 것입니다. Hashcat을 사용하려면 다음 명령어를 입력하세요.

hashcat --help

이 명령어를 통해 도구 실행에 필요한 모든 옵션을 확인할 수 있습니다. 터미널에서 다양한 공격 및 해시 모드를 찾을 수 있습니다.

명령어의 일반적인 형식은 다음과 같습니다.

hashcat -a 공격모드번호 -m 해시모드번호 해시파일 단어목록파일

여기서 ‘공격모드번호’와 ‘해시모드번호’는 사용할 특정 공격 및 해시 모드를 나타냅니다. 터미널에서 스크롤하여 MD4의 경우 0, SHA256 알고리즘의 경우 1740과 같이 각 공격 및 해시 모드에 해당하는 정확한 숫자를 찾을 수 있습니다.

본문에서 사용할 단어 목록은 rockyou 단어 목록입니다. 일반적으로 /usr/share/wordlists 경로에서 해당 단어 목록을 찾을 수 있습니다.

다음과 같이 locate 명령어를 사용하여 해당 단어 목록의 경로를 찾을 수도 있습니다.

┌──(root💀kali)-[/home/writer]
└─# locate rockyou.txt

이제 단어 목록 파일을 사용하여 해시를 크랙하려면 다음 명령어를 사용하십시오.

hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt

이 명령을 실행하면 ‘토큰 길이 예외’와 같은 런타임 오류가 발생할 수 있습니다.

이러한 오류를 해결하려면 각 해시를 별도의 파일에 저장해야 합니다. 이는 CPU 또는 GPU 속도가 느릴 때 발생하는 문제입니다. 컴퓨터에 고속 프로세서가 있다면 하나의 파일에 모든 해시를 넣어 동시에 해독할 수 있습니다.

오류를 수정하고 나면 결과는 다음과 같습니다.

┌──(root💀kali)-[/home/writer/Desktop]
└─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt
hashcat (v6.1.1) starting...

OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=============================================================================================================================
* Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Dictionary cache built:
* Filename..: rockyou.txt
* Passwords.: 14344405
* Bytes.....: 139921671
* Keyspace..: 14344398
* Runtime...: 1 sec

8276b0e763d7c9044d255e025fe0c212: [email protected]
                                                 
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 8276b0e763d7c9044d255e025fe0c212
Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs)
Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs)
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4096/14344398 (0.03%)
Rejected.........: 0/4096 (0.00%)
Restore.Point....: 0/14344398 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 123456 -> pampam

Started: Sun Dec 12 08:06:13 2021
Stopped: Sun Dec 12 08:06:16 2021

위 결과를 통해 딕셔너리 캐시 내역 이후 해시가 크랙되었고, 비밀번호가 성공적으로 노출되었음을 확인할 수 있습니다.

결론

Hashcat을 사용한 암호 해독 방법에 대한 이해를 높이는 데 도움이 되었기를 바랍니다.

침투 테스트를 위한 다양한 무차별 대입 도구 및 최고의 침투 도구에 대해 더 알고 싶을 수도 있습니다.