Meterpreter hashdump 를 사용하여 비밀번호 해시 덤프하기

Kali LinuxBeginner
지금 연습하기

소개

이 랩에서는 가장 일반적인 후속 공격 기법 중 하나인, 침해된 Windows 대상에서 비밀번호 해시를 덤프하는 방법을 배우게 됩니다. 구체적으로 Metasploit 의 Meterpreter 페이로드에서 사용 가능한 hashdump 명령어를 사용할 것입니다. 이렇게 얻은 해시는 오프라인에서 크랙하여 사용자 비밀번호를 알아낼 수 있으며, 이를 통해 네트워크 내에서 추가적인 권한 상승 또는 측면 이동이 가능해집니다.

이 교육 실습을 위해, 우리는 시뮬레이션된 Metasploit Framework 환경에서 작업할 것입니다. 이를 통해 복잡한 피해자/공격자 네트워크를 설정할 필요 없이 정확한 명령어와 워크플로우를 배울 수 있습니다. 시뮬레이션된 Windows 머신에서 미리 설정된 Meterpreter 세션으로 시작하게 됩니다.

여러분의 목표는 다음과 같습니다:

  • 활성 Meterpreter 세션에 접근합니다.
  • hashdump 명령어를 사용하여 비밀번호 해시를 추출합니다.
  • 덤프된 해시의 구조를 이해합니다.
  • 향후 사용을 위해 해시를 파일로 저장합니다.

SYSTEM 권한으로 Meterpreter 세션 확보

이 단계에서는 시뮬레이션된 Metasploit 콘솔을 시작하고 미리 존재하는 Meterpreter 세션과 상호 작용합니다. 실제 시나리오에서는 이 세션을 확보하는 것이 대상 머신에서의 취약점 공격을 포함합니다. 이 랩에서는 세션이 여러분을 위해 준비되었습니다.

먼저, 설정 스크립트에 의해 생성된 시뮬레이션 디렉토리로 이동합니다.

cd ~/project/metasploit-simulation

이제 msfconsole 스크립트를 실행하여 시뮬레이션된 Metasploit 콘솔을 시작합니다.

./msfconsole

환영 배너와 msf6 > 프롬프트가 표시되어야 합니다. 이는 Metasploit 의 메인 콘솔에 있음을 나타냅니다. 활성 세션을 보려면 -l (list) 플래그와 함께 sessions 명령어를 사용합니다.

sessions -l

다음과 같은 출력을 보게 되며, ID 가 1 인 활성 세션이 하나 있음을 보여줍니다.

Active sessions
===============

  Id  Name  Type                     Information                  Connection
  --  ----  ----                     -----------                  ----------
  1         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ WIN-PC  10.0.2.15:4444 -> 10.0.2.16:49152

출력은 Windows 시스템에서 가장 높은 권한 수준인 NT AUTHORITY\SYSTEM으로 실행되는 meterpreter 세션을 가지고 있음을 보여줍니다. 이는 해시 덤프에 매우 중요합니다.

이제 해당 세션 ID 를 사용하여 상호 작용합니다.

sessions -i 1

프롬프트가 msf6 >에서 meterpreter >로 변경되며, 이제 대상 머신에서의 Meterpreter 세션 내부에 있음을 확인합니다.

필요한 경우 priv 표준 API 확장 로드

이 단계에서는 priv 확장을 로드합니다. 이 Meterpreter 확장은 권한 상승 및 비밀번호 해시가 저장되는 Security Account Manager (SAM) 데이터베이스와 같은 운영 체제의 민감한 부분에 접근하기 위한 명령어를 제공합니다.

많은 최신 Meterpreter 페이로드는 명령이 호출될 때 필요한 확장을 자동으로 로드하지만, 수동으로 로드하는 방법을 아는 것은 좋은 습관입니다. 이를 통해 필요한 기능을 확보할 수 있습니다.

meterpreter > 프롬프트 내에서 다음 명령어를 입력하여 priv 확장을 로드합니다:

load priv

시뮬레이터는 확장이 성공적으로 로드되었음을 확인할 것입니다.

[+] Loading extension priv...
[+] Loaded extension: priv

priv 확장이 로드됨으로써 이제 hashdump와 같은 명령어에 접근할 수 있습니다.

hashdump 후반 작업 모듈 실행

이 단계에서는 hashdump 명령을 실행합니다. 이 명령어는 priv 확장을 로드한 주된 이유입니다. 이 명령어는 시스템 메모리에서 직접 SAM 데이터베이스를 읽어 디스크 상의 보호 기능을 우회합니다. 이는 우리의 세션이 SYSTEM 권한으로 실행되고 있기 때문에 가능합니다.

이제 Meterpreter 프롬프트에 있고 priv 확장을 로드했으므로, 간단히 hashdump 명령을 실행합니다.

hashdump

명령이 실행되고 사용자 이름과 해당 비밀번호 해시 목록이 화면에 출력됩니다.

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

시뮬레이션된 Windows 머신에서 비밀번호 해시를 성공적으로 추출했습니다. 다음 단계에서는 이 출력의 구조를 분석할 것입니다.

SAM 데이터베이스에서 덤프된 NTLM 해시 관찰

이 단계에서는 hashdump 명령의 출력을 해석하는 방법을 배웁니다. 이 형식을 이해하는 것은 수집한 해시를 어떻게 처리해야 하는지 아는 데 필수적입니다.

이전 단계에서 생성한 출력의 한 줄을 살펴보겠습니다:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

이 문자열은 콜론으로 구분되며 여러 필드로 구성됩니다:

  1. 사용자 이름 (Username): Administrator

    • 이것은 사용자 계정 이름입니다.
  2. 상대 식별자 (Relative Identifier, RID): 500

    • 이것은 도메인 내 계정의 고유 ID 입니다. RID 500은 항상 기본 관리자 계정입니다.
  3. LM 해시 (LM Hash): aad3b435b51404eeaad3b435b51404ee

    • 이것은 이전 LAN Manager 인증 프로토콜의 해시입니다. 최신 Windows 시스템에서는 종종 비어 있거나 "null" 해시로 표시됩니다. 이 특정 값은 LM 해시가 저장되지 않았음을 나타냅니다.
  4. NTLM 해시 (NTLM Hash): 31d6cfe0d16ae931b73c59d7e0c089c0

    • 이것은 모든 최신 버전의 Windows 에서 사용되는 NT LAN Manager 해시입니다. 이것은 John the Ripper 또는 Hashcat 과 같은 오프라인 비밀번호 크래킹 도구에서 사용할 해시입니다.
  5. 주석 및 홈 디렉터리 (Comment and Home Directory): :::

    • 이 마지막 세 필드는 일반적으로 비어 있으며 크래킹에 사용되지 않습니다.

이 출력을 관찰함으로써 활성 사용자 계정을 식별할 수 있으며, 가장 중요하게는 비가역적인 형식으로 비밀번호를 나타내는 NTLM 해시를 식별할 수 있습니다.

오프라인 크래킹을 위해 해시를 파일로 저장

이 마지막 단계에서는 수집된 해시를 텍스트 파일로 저장합니다. 침해된 시스템에서 증거와 획득한 정보를 나중에 분석하고 사용하기 위해 저장하는 것은 일반적인 절차입니다. 해시를 파일에 저장하면 비밀번호 크래킹 소프트웨어에 쉽게 입력할 수 있습니다.

먼저, 시뮬레이션된 msfconsole 환경을 종료하여 일반 Linux 셸로 돌아가야 합니다. meterpreter > 프롬프트에서 exit를 입력하여 msf6 > 프롬프트로 돌아간 다음, 다시 exit를 입력합니다.

exit

이제 meterpreter > 프롬프트로 돌아왔을 것입니다. 시뮬레이션을 종료하려면 다시 exit를 입력합니다.

exit

이제 ~/project/metasploit-simulation 디렉터리로 돌아왔을 것입니다.

다음으로, nano 텍스트 편집기를 사용하여 hashes.txt라는 새 파일을 생성합니다.

nano hashes.txt

이제 터미널에서 해시 출력 (3 단계의 hashdump 명령 출력) 을 복사하여 nano 편집기에 붙여넣습니다. 내용은 다음과 같이 표시되어야 합니다:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

nano를 종료하려면 Ctrl+X를 누르고, 변경 사항을 저장하려면 Y를 누른 다음, 파일 이름을 확인하려면 Enter를 누릅니다.

파일이 올바르게 저장되었는지 확인하려면 cat 명령으로 내용을 표시할 수 있습니다.

cat hashes.txt

비밀번호 해시를 파일로 성공적으로 저장했으며, 오프라인 크래킹을 위해 준비되었습니다.

요약

이 실습에서는 시뮬레이션된 Meterpreter 세션을 사용하여 고전적인 후속 공격 (post-exploitation) 기법을 성공적으로 수행했습니다.

다음과 같은 내용을 배웠습니다:

  • Metasploit Framework 콘솔에서 세션을 탐색하고 상호 작용하는 방법.
  • 추가 기능을 얻기 위해 priv와 같은 Meterpreter 확장 프로그램을 로드하는 방법.
  • Windows 대상에서 NTLM 비밀번호 해시를 추출하기 위해 hashdump 명령을 실행하는 방법.
  • 덤프된 해시의 형식을 이해하고 사용자 이름, RID 및 NTLM 해시를 식별하는 방법.
  • 수집된 해시를 파일로 저장하여 오프라인에서 비밀번호 크래킹 도구와 함께 사용하는 방법.

이 기술은 침투 테스트의 기본적인 부분으로, 종종 네트워크 전반에 걸쳐 접근 권한을 확장하는 데 필요한 열쇠를 제공합니다.