Hashcat 으로 해시 크래킹

HydraBeginner
지금 연습하기

소개

이 랩에서는 세계에서 가장 빠른 비밀번호 복구 도구인 Hashcat 을 사용하여 암호화 해시를 크래킹하는 방법을 배우게 됩니다. Hashcat 설치, 해시 파일 준비, GPU 가속 구성, 그리고 샘플 MD5 해시에 대한 무차별 대입 공격 실행을 실습할 것입니다.

실습을 통해 성능을 최적화하면서 실제 비밀번호 예제를 크래킹하는 과정을 안내받을 것입니다. 비밀번호 복구 및 보안 테스트를 위한 필수적인 사이버 보안 기술에 대한 실질적인 경험을 얻게 될 것입니다.

Hashcat 설치

이 단계에서는 세계에서 가장 빠른 비밀번호 복구 도구인 Hashcat 을 설치합니다. Hashcat 은 무차별 대입 (brute-force), 사전 (dictionary), 규칙 기반 공격과 같은 다양한 공격 방법을 통해 해시를 크래킹하는 데 사용되는 강력한 유틸리티입니다.

시작하기 전에 해시가 무엇인지 이해해 봅시다. 해시는 입력 (예: 비밀번호) 을 받아 스크램블된 출력을 생성하는 수학적 함수에 의해 생성된 고정 길이 문자열입니다. 비밀번호 시스템은 보안을 위해 일반 텍스트 비밀번호 대신 이러한 해시를 저장합니다. Hashcat 은 저장된 해시와 일치하는 다양한 조합을 시도하여 원래 비밀번호를 복구하는 데 도움을 줍니다.

먼저, 올바른 작업 디렉토리에 있는지 확인해야 합니다. ~/project 디렉토리는 모든 랩 작업을 수행할 곳입니다.

cd ~/project

이제 Ubuntu 의 패키지 관리자를 사용하여 Hashcat 을 설치합니다. 패키지 관리자는 종속성과 함께 소프트웨어를 다운로드하고 설정하는 것을 처리합니다. 두 개의 명령을 함께 실행합니다. 먼저 패키지 목록을 업데이트 (update) 한 다음 Hashcat 을 설치 (install) 합니다.

sudo apt-get update && sudo apt-get install -y hashcat

-y 플래그는 설치를 자동으로 확인하여 프로세스 중에 'yes'를 입력할 필요가 없도록 합니다.

설치가 완료된 후, Hashcat 의 버전을 확인하여 제대로 설치되었는지 확인해 보겠습니다. 이는 소프트웨어가 사용 준비가 되었는지 확인하는 좋은 방법입니다.

hashcat --version

다음과 같은 설치된 버전 번호가 표시되어야 합니다.

v6.2.6

이 버전 번호를 확인하면 Hashcat 이 시스템에 올바르게 설치되었음을 의미합니다. 다음 단계에서는 실제 해시 파일로 작업하고 크래킹 작업을 수행하는 데 사용할 것입니다. 버전 번호는 기능이 버전 간에 다를 수 있으므로 문서를 찾거나 문제 해결 시에도 유용합니다.

해시 파일 준비

이 단계에서는 후속 단계에서 크래킹에 사용될 샘플 해시 파일을 생성합니다. 해시는 입력 데이터를 나타내는 암호화 알고리즘에 의해 생성된 고정 길이 문자열입니다. 해시 파일에는 Hashcat 을 사용하여 크래킹을 시도할 이러한 암호화 해시가 포함되어 있습니다.

먼저, 올바른 작업 디렉토리에 있는지 확인합니다. cd 명령은 현재 디렉토리를 변경합니다.

cd ~/project

MD5 해시를 포함하는 간단한 텍스트 파일을 만들어 보겠습니다. MD5 는 128 비트 해시 값을 생성하는 널리 사용되는 암호화 해시 함수입니다. nano 텍스트 편집기를 사용하여 새 파일을 생성하고 편집합니다.

nano hashes.txt

다음 샘플 MD5 해시를 파일에 추가합니다. 이것들은 알려진 평문 값을 가진 일반적인 테스트 해시입니다 (Ctrl+O 를 눌러 저장하고 Ctrl+X 를 눌러 nano 를 종료합니다).

5f4dcc3b5aa765d61d8327deb882cf99  ## password: "password"
098f6bcd4621d373cade4e832627b4f6  ## password: "test"

또는 echo 명령을 사용하여 파일을 직접 생성할 수 있습니다. > 연산자는 새 파일을 생성하고, >>는 기존 파일에 추가합니다.

echo "5f4dcc3b5aa765d61d8327deb882cf99" > hashes.txt
echo "098f6bcd4621d373cade4e832627b4f6" >> hashes.txt

cat 명령을 사용하여 해시 파일의 내용을 확인합니다. 이 명령은 터미널에 파일 내용을 표시합니다.

cat hashes.txt

터미널에 두 개의 MD5 해시가 표시되어야 합니다. 이 파일은 Hashcat 을 구성하고 무차별 대입 공격을 실행할 때 다음 단계에서 해시 크래킹의 대상 역할을 합니다. 알려진 테스트 해시를 사용하면 크래킹 설정이 올바르게 작동하는지 확인할 수 있습니다.

GPU 지원 설정

이 단계에서는 더 빠른 해시 크래킹을 위해 GPU 가속을 활용하도록 Hashcat 을 구성합니다. Hashcat 은 CPU 와 GPU 리소스를 모두 활용할 수 있지만, GPU 는 수천 개의 작은 코어를 포함하여 동시에 많은 계산을 수행할 수 있기 때문에 비밀번호 크래킹에 특히 효과적입니다. 이러한 병렬 처리 능력은 무차별 대입 공격에서 GPU 를 CPU 보다 훨씬 빠르게 만듭니다.

GPU 지원을 구성하기 전에 먼저 Hashcat 에서 사용할 수 있는 하드웨어 장치를 확인해 보겠습니다. 다음 명령을 실행하여 감지된 모든 OpenCL 장치를 나열합니다.

hashcat -I

이 명령은 사용 가능한 OpenCL 장치를 표시합니다. LabEx VM 환경에서는 다음과 유사한 출력을 볼 수 있습니다.

OpenCL Platform #1: NVIDIA Corporation
* Device #1: NVIDIA GeForce GTX 1080 Ti, 10240/11264 MB allocatable, 28MCU

출력은 모델 및 메모리 용량을 포함한 GPU 세부 정보를 보여줍니다. 이제 Hashcat 의 성능을 최적화하기 위해 구성 파일을 만들겠습니다. 구성 파일은 설정을 자동화하여 매번 입력할 필요가 없도록 합니다.

다음 명령으로 구성 파일을 생성하고 편집합니다.

nano ~/.hashcat/hashcat.conf

다음 구성을 추가합니다 (Ctrl+O 를 눌러 저장하고 Ctrl+X 를 눌러 종료합니다).

--force
--opencl-device-types=1,2
--workload-profile=4

각 매개변수가 무엇을 하는지 이해해 보겠습니다.

  • --force는 잠재적인 문제가 감지되더라도 Hashcat 이 계속 실행되도록 지시합니다 (랩 환경에서 유용함).
  • --opencl-device-types=1,2는 처리를 위해 CPU (유형 1) 및 GPU (유형 2) 장치를 모두 활성화합니다.
  • --workload-profile=4는 전력 절약보다 속도를 우선시하는 최고 성능 프로필을 설정합니다.

모든 것이 올바르게 작동하는지 확인하려면 벤치마크 테스트를 실행합니다.

hashcat -b

벤치마크는 다양한 해시 알고리즘을 테스트하고 다음과 같은 성능 지표를 표시합니다.

Speed.#1.........: 12345.7 MH/s (98.23ms) @ Accel:1024 Loops:1024 Thr:256 Vec:1

이 숫자는 시스템이 초당 시도할 수 있는 해시 수를 보여줍니다. 값이 높을수록 크래킹 속도가 빠릅니다. 벤치마크는 GPU 가속이 활성화되어 있으며 실제 무차별 대입 공격을 수행할 다음 단계에서 사용할 준비가 되었음을 확인합니다.

무차별 대입 공격 실행

이 단계에서는 이전에 준비한 MD5 해시를 크래킹하기 위해 Hashcat 을 사용하여 무차별 대입 공격을 실행합니다. 무차별 대입 공격은 올바른 비밀번호를 찾을 때까지 가능한 모든 문자 조합을 체계적으로 확인하는 시행착오 방식입니다. 이 접근 방식은 비밀번호 구조에 대한 정보가 없을 때 특히 유용합니다.

먼저, 해시 파일을 저장한 작업 디렉토리로 이동합니다. 이렇게 하면 Hashcat 이 크래킹하려는 파일에 액세스할 수 있습니다.

cd ~/project

이제 공격을 위해 설계된 특정 매개변수를 사용하여 Hashcat 을 사용합니다.

  • -m 0은 Hashcat 에 MD5 해시로 작업하고 있음을 알려줍니다 (각 해시 유형에는 Hashcat 에 특정 번호가 있습니다).
  • -a 3은 공격 모드를 무차별 대입으로 설정합니다.
  • ?a?a?a?a는 비밀번호 마스크를 정의합니다. 즉, 다음을 포함할 수 있는 정확히 4 자리의 비밀번호를 찾고 있습니다.
    • 소문자 (a-z)
    • 대문자 (A-Z)
    • 숫자 (0-9)
    • 특수 문자 (!@#$% 등)

다음 명령으로 무차별 대입 공격을 실행합니다.

hashcat -m 0 -a 3 hashes.txt ?a?a?a?a --force

Hashcat 이 실행되면 터미널에 실시간 통계가 표시됩니다. 이 출력은 크래킹 진행 상황을 모니터링하는 데 도움이 됩니다.

Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: [timestamp]
Speed.#1.........: [speed] H/s
Recovered........: 0/2 (0.00%)
Progress.........: [progress]
Rejected.........: 0
Restore.Point....: 0

크래킹 속도 (H/s) 는 시스템이 초당 수행하는 해시 계산 횟수를 보여줍니다. 진행률 표시기는 남은 시간을 추정하는 데 도움이 됩니다. 4 자리 비밀번호의 경우 하드웨어에 따라 몇 분 정도 걸릴 수 있습니다.

공격이 완료되면 결과를 확인할 수 있습니다. 다음 명령은 성공적으로 크래킹된 모든 비밀번호를 표시합니다.

hashcat -m 0 hashes.txt --show

성공적인 출력은 각 해시를 발견된 평문 비밀번호와 쌍으로 표시합니다.

5f4dcc3b5aa765d61d8327deb882cf99:password
098f6bcd4621d373cade4e832627b4f6:test

이 출력은 Hashcat 이 테스트 파일의 두 MD5 해시를 원래 비밀번호로 성공적으로 되돌렸음을 확인합니다. 첫 번째 열은 시작한 해시를 보여주고, 두 번째 열은 해당 해시를 생성한 실제 비밀번호를 보여줍니다.

크래킹된 해시 검증

이 마지막 단계에서는 무차별 대입 공격의 결과를 확인하고 분석합니다. Hashcat 은 성공적으로 크래킹된 비밀번호를 "potfile"이라는 특수 파일에 자동으로 저장합니다. 이는 크래킹 세션 동안 복구한 모든 비밀번호의 데이터베이스 역할을 합니다. 어떤 비밀번호가 성공적으로 크래킹되었는지 확인하기 위해 이를 검토합니다.

먼저, 해시 파일을 저장한 작업 디렉토리로 이동합니다. 이렇게 하면 올바른 파일로 작업하고 있는지 확인합니다.

cd ~/project

공격에서 크래킹된 모든 해시를 보려면 Hashcat 과 함께 --show 플래그를 사용합니다. 이 명령은 hashes.txt 파일에서 MD5 해시 (모드 0) 를 특별히 찾고 potfile 에서 발견된 일치 항목을 표시합니다.

hashcat -m 0 hashes.txt --show

다음과 유사한 출력을 볼 수 있으며, 크래킹된 평문 비밀번호가 뒤따르는 원래 해시가 표시됩니다.

5f4dcc3b5aa765d61d8327deb882cf99:password
098f6bcd4621d373cade4e832627b4f6:test

크래킹 세션에 대한 보다 포괄적인 이해를 위해 --status 플래그는 귀중한 통계를 제공합니다. 이는 크래킹된 해시 수, 해시 유형 및 성능 지표를 보여줍니다.

hashcat -m 0 hashes.txt --status

다음과 같은 중요한 정보가 표시됩니다.

Session.Name.....: hashcat
Status..........: Exhausted
Hash.Name.......: MD5
Hash.Target.....: hashes.txt
Time.Started....: [timestamp]
Time.Estimated..: [timestamp]
Recovered.......: 2/2 (100.00%)
Progress.......: [progress]
Speed.#1.......: [speed] H/s

나중에 저장하고 검토할 수 있는 크래킹 세션의 전체 보고서를 생성하려면 다음 명령을 사용합니다. 첫 번째 명령은 형식이 지정된 보고서 파일을 만들고, 두 번째 명령은 해당 내용을 표시합니다.

hashcat -m 0 hashes.txt --outfile-format=2 --outfile=results.txt
cat results.txt

보고서에는 크래킹된 각 해시에 대한 자세한 정보 (해시 유형, 평문 비밀번호 및 각 해시를 크래킹하는 데 걸린 정확한 시간 포함) 가 포함됩니다. 이 문서는 크래킹 성능을 분석하거나 다른 사람과 결과를 공유해야 할 때 특히 유용합니다.

요약

이 랩에서는 패키지 관리자를 업데이트하고 버전을 확인하여 강력한 비밀번호 복구 도구인 Hashcat 을 설치하고 구성하는 방법을 배웠습니다. 또한 샘플 MD5 해시가 포함된 해시 파일을 준비하고 기본 Linux 명령을 사용하여 해당 내용을 확인했습니다.

또한 성능 최적화를 위해 Hashcat 의 GPU 지원을 살펴보고 샘플 해시를 크래킹하기 위해 무차별 대입 공격을 수행했습니다. 이 실습을 통해 비밀번호 복구 및 취약성 평가 시나리오에서 Hashcat 의 필수적인 역할을 보여주었습니다.