Metasploit 에서 Staged 와 Stageless 페이로드 이해 및 사용법

Kali LinuxBeginner
지금 연습하기

소개

Metasploit Framework 를 사용한 침투 테스트에서 페이로드 (payload) 는 취약점이 성공적으로 악용된 후 대상 시스템에서 실행되는 코드입니다. 다양한 유형의 페이로드를 이해하는 것은 성공적인 침투 테스트를 위해 매우 중요합니다. 페이로드의 두 가지 주요 범주는 "staged"와 "stageless"입니다.

Staged 페이로드는 두 부분으로 전송됩니다. 작고 초기적인 "stager"와 더 크고 최종적인 "stage"입니다. Stager 의 역할은 공격자의 기계로 연결을 설정한 다음 페이로드의 나머지 부분을 다운로드하는 것입니다. 반면에 stageless 페이로드는 대상에서 실행하는 데 필요한 모든 코드를 포함하는 단일의 자체 포함 패키지입니다.

이 랩에서는 두 가지 유형 모두에 대한 실습 경험을 쌓게 됩니다. Metasploit 콘솔을 사용하여 각 페이로드 유형을 선택하고, 특히 크기 면에서 주요 차이점을 관찰하며, 각 페이로드를 사용할 때의 장단점에 대해 배우게 됩니다.

exploit 및 windows/meterpreter/reverse_tcp와 같은 staged 페이로드 선택

이 단계에서는 Metasploit Framework 콘솔을 실행하고 일반적인 exploit 핸들러를 선택합니다. 그런 다음 일반적인 staged 페이로드를 사용하도록 구성합니다. exploit/multi/handler 모듈을 사용하는 이유는 특정 취약한 대상이 필요 없이 페이로드를 시연하는 데 완벽한 범용 리스너이기 때문입니다.

먼저 터미널을 열고 Metasploit 콘솔을 시작합니다. 시작 배너를 건너뛰기 위해 -q (quiet) 플래그를 사용합니다.

msfconsole -q

Metasploit 프롬프트 (msf6 >) 가 표시되면 exploit 핸들러를 선택해야 합니다.

use exploit/multi/handler

다음으로 페이로드를 설정합니다. staged 페이로드의 이름은 일반적으로 platform/stage/stager 형식으로 지정됩니다. 예를 들어, windows/meterpreter/reverse_tcp는 플랫폼이 Windows 이고, 최종 페이로드 (stage) 는 Meterpreter 이며, 초기 연결 방법 (stager) 은 reverse TCP 쉘임을 의미합니다.

다음 명령으로 staged 페이로드를 설정합니다.

set payload windows/meterpreter/reverse_tcp

payload => windows/meterpreter/reverse_tcp라는 확인 메시지가 표시됩니다. 확실히 하기 위해 현재 구성을 볼 수 있습니다.

show options

옵션에 페이로드가 나열된 것을 볼 수 있습니다. 실제로 exploit 을 실행하는 것이 아니라 페이로드의 속성을 검사하는 것이므로 LHOST 또는 LPORT를 설정할 필요가 없습니다.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

staged 페이로드의 작은 크기 관찰

이 단계에서는 info 명령을 사용하여 선택한 staged 페이로드의 세부 정보를 검사합니다. 가장 중요한 세부 정보는 크기입니다.

Metasploit 콘솔에서 windows/meterpreter/reverse_tcp 페이로드가 선택된 상태에서 info 명령을 입력합니다.

info

Metasploit 는 페이로드의 이름, 플랫폼, 아키텍처 및 크기를 포함한 자세한 정보를 표시합니다. 출력을 스크롤하여 "Payload size" 줄을 찾습니다.

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Stager
     Module: payload/windows/meterpreter/reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 354
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (staged).
  Listen for a connection from the stager and send the second stage.

Total size가 매우 작다는 점 (예: 354 바이트) 에 주목하십시오. 이것이 staged 페이로드의 핵심 특징입니다. 이 작은 코드 조각인 stager 는 사용자의 기계에 연결하여 훨씬 더 큰 Meterpreter 스테이지를 다운로드하기 위한 것입니다. 이 작은 크기는 특정 exploit 의 엄격한 메모리 제약 조건에 맞추는 데 이상적입니다.

windows/meterpreter_reverse_tcp와 같은 exploit 및 stageless 페이로드 선택

이제 staged 페이로드와 다른 점을 보기 위해 stageless 페이로드로 전환해 보겠습니다. stageless 페이로드의 이름은 일반적으로 platform/payload_type 형식으로 지정되며, 두 번째 슬래시 / 대신 밑줄 _을 사용합니다. 이 명명 규칙은 페이로드를 빠르게 식별하는 데 도움이 됩니다.

동일한 msfconsole 세션에서 set payload 명령을 다시 사용하지만 이번에는 stageless 버전인 windows/meterpreter_reverse_tcp를 사용합니다.

set payload windows/meterpreter_reverse_tcp

payload => windows/meterpreter_reverse_tcp라는 확인 메시지가 표시됩니다. 이름에 밑줄이 있는 것을 확인하십시오. 이 단일 페이로드는 전체 Meterpreter 서버와 연결 로직을 하나의 패키지로 포함합니다.

변경 사항을 확인하기 위해 옵션을 다시 확인해 보겠습니다.

show options

출력에 새로 선택된 stageless 페이로드가 반영됩니다.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter_reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port

...

이제 staged 페이로드에서 stageless 페이로드로 성공적으로 전환했습니다.

stageless 페이로드의 더 큰 크기 관찰

이 단계에서는 방금 선택한 stageless 페이로드를 검사하고 그 크기를 2 단계의 staged 페이로드와 비교합니다.

이전과 마찬가지로 info 명령을 사용하여 현재 페이로드에 대한 세부 정보를 가져옵니다.

info

출력을 검사하고 "Payload size" 줄을 찾습니다.

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Inline
     Module: payload/windows/meterpreter_reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 999335
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (inline).
  This payload is a single executable and does not need to download a
  second stage.

보시다시피 Total size는 몇백 바이트에 불과했던 staged 페이로드 크기에 비해 훨씬 큽니다 (예: 999335 바이트 또는 거의 1MB). 이는 stageless 페이로드가 전체 Meterpreter 기능을 포함하기 때문입니다. 실행 후 다른 것을 다운로드할 필요가 없습니다.

이제 주요 차이점을 확인했으므로 Metasploit 콘솔을 종료할 수 있습니다.

exit

각 페이로드 유형의 장단점 논의

이 마지막 단계에서는 staged 및 stageless 페이로드의 장점과 단점을 요약합니다. 이러한 절충점을 이해하는 것은 특정 시나리오에 맞는 올바른 도구를 선택하는 데 중요합니다. 이 단계에서는 실행할 명령이 없으며 개념적 이해를 위한 것입니다.

Staged 페이로드 (예: windows/meterpreter/reverse_tcp)

장점:

  • 작은 크기: 초기 스테이저 (stager) 는 매우 작습니다. 이는 exploit 의 페이로드 버퍼 크기나 메모리 공간이 매우 제한적인 경우 상당한 이점입니다.
  • 초기 단계의 은밀성: 작은 스테이저는 크고 기능이 풍부한 페이로드에 비해 간단한 시그니처 기반 백신 솔루션에 탐지될 가능성이 낮을 수 있습니다.

단점:

  • 여러 연결: 메인 스테이지를 다운로드하기 위해 두 번째 연결이 필요합니다. 이는 더 많은 네트워크 트래픽을 발생시키고 방화벽, 침입 탐지 시스템 (IDS) 또는 네트워크 관리자가 공격을 탐지하고 차단할 수 있는 또 다른 기회를 제공합니다.
  • 안정성 낮음: 연결이 불안정할 수 있습니다. 두 번째 스테이지가 다운로드되는 동안 연결이 끊어지면 exploit 가 실패합니다.
  • 콜백 문제: 대상 시스템은 스테이지를 다운로드하기 위해 네트워크를 통해 공격자 시스템에 도달할 수 있어야 하며, 이는 매우 제한적인 네트워크에서 문제가 될 수 있습니다.

Stageless 페이로드 (예: windows/meterpreter_reverse_tcp)

장점:

  • 신뢰성 및 안정성: 모든 것이 하나의 패키지에 포함되어 있으므로 페이로드가 더 자체 포함적이고 안정적입니다. 단 한 번의 연결만 설정하면 되며, 실행되면 더 많은 구성 요소를 다운로드하는 데 의존하지 않습니다.
  • 제한된 환경에서 작동: 페이로드가 대상에 전달되면 다른 것을 다운로드할 필요 없이 실행될 수 있으며, 이는 대상의 아웃바운드 인터넷 액세스가 제한적이거나 전혀 없는 경우 유용합니다.

단점:

  • 큰 크기: 큰 크기가 가장 큰 단점입니다. 많은 exploit 에서 허용하는 메모리 공간에 맞지 않을 수 있어 해당 경우에 사용할 수 없습니다.
  • 탐지 용이성: 크고 단일한 실행 파일은 백신 및 보안 솔루션이 크기와 시그니처를 기반으로 악성으로 분석하고 플래그를 지정하기가 더 쉽습니다.

요약하자면, 크기 제약이 있는 exploit 를 다룰 때는 staged 페이로드를 선택해야 합니다. 신뢰성이 가장 중요하고 exploit 방식이 더 큰 페이로드 크기를 처리할 수 있을 때는 stageless 페이로드를 선택해야 합니다.

요약

이 실습에서는 Metasploit Framework 내에서 staged 및 stageless 페이로드 간의 근본적인 차이점을 탐구했습니다.

msfconsole을 실행하고 staged 페이로드인 windows/meterpreter/reverse_tcp를 선택하는 것으로 시작했습니다. 경량 스테이저 (stager) 로 설계된 매우 작은 크기를 관찰했습니다. 그런 다음 해당 stageless 버전인 windows/meterpreter_reverse_tcp로 전환했으며, 전체 페이로드를 단일 패키지에 포함하므로 크기가 훨씬 더 큰 것을 확인했습니다.

마지막으로 각 유형의 장단점을 검토하면서 크기, 은밀성 및 신뢰성 간의 절충이 있음을 배웠습니다. Staged 페이로드는 작지만 두 번째 연결이 필요하며, stageless 페이로드는 크지만 더 안정적이고 자체 포함적입니다. 이 지식은 침투 테스트 작업 중에 효과적인 결정을 내리는 데 필수적입니다.