Oma labra tunkeutumistestaukseen (h1)

Tämä blogipostaus on osa Haaga-Helian Tunkeutumistestaus-kurssia, jonka Tero Karvinen pitää keväällä 2023.

Ensimmäisen kurssiviikon tehtävät:

Tehtäviä saa aloittaa vasta, kun on hyväksynyt kurssin säännöt. Koneet on eristettävä Internetistä hyökkäysten harjoittelun ajaksi.

  • x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva.)
    • Darknet Diaries tai Herrasmieshakkerit podcast, yksi vapaavalintainen jakso jommasta kummasta. Voi kuunnella myös lenkillä, pyykkiä viikatessa tms. Siisti koti / hyvä kunto kaupan päälle.
  • a) Asenna Kali virtuaalikoneeseen
  • b) Asenna Metasploitable 2 virtuaalikoneeseen
  • c) Tee koneille virtuaaliverkko, jossa
    • Kali saa yhteyden Internettiin, mutta sen voi laittaa pois päältä
    • Kalin ja Metasploitablen välillä on host-only network, niin että porttiskannatessa ym. koneet on eristetty internetistä, mutta ne saavat yhteyden toisiinsa
  • d) Etsi Metasploitable porttiskannaamalla (db_nmap -sn). Tarkista selaimella, että löysit oikean IP:n – Metasploitablen etusivulla lukee Metasploitable.
  • e) Porttiskannaa Metasploitable huolellisesti (db_nmap -A)
  • f) Murtaudu Metasploitablen VsFtpd-palveluun Metasploitilla (search vsftpd, use 0, set RHOSTS – varmista osoite huolella, exploit, id)
  • n) Vapaaehtoinen: Murtaudu johonkin toiseen Metasploitablen palveluun.
  • m) Vapaaehtoinen, vaikea: Asenna ja korkkaa Metasploitable 3. Karvinen 2018: Install Metasploitable 3 – Vulnerable Target Computer

(Karvinen 2023)

x) Tiivistelmä

Herrasmieshakkerit: Haavoittuvuuksien metsästäjä, vieraana Harry Sintonen

Herrasmieshakkereiden 35. jakso haavoittuvuuksien metsästäjä Harry Sintosesta on kuunneltavissa muun muassa SoundCloudista. En ole kuunnellut aiemmin tietoturvapodcasteja, joten päätin aloittaa kevyesti kotimaisesta vaihtoehdosta ja siirtyä sen jälkeen Darknet Diaries -podcastin pariin.

Kun uutisissa tulee vastaan jokin uusi laite tai Harry Sintonen on ostanut itselleen uuden laitteen, hän tutustuu siihen ja tutkii, miten laite on rakennettu ja miten se toimii. Näin hän päätyy arkisissa yhteyksissä mahdollisten haavoittuvuuksien äärelle.

Harryn prosessi:

  • Minkälainen laite ja miltä se näyttää? Mihin sitä yleensä käytetään? Miten se toimii? Onko laitteessa jotain erikoista?
  • Jos laitteessa tulee vastaan jotain pieniä virheitä ja varsinkin, jos virheitä löytyy useampia, Harrylle tulee intuitio, että laitteessa on mahdollisesti ongelma eli haavoittuvuus.
  • Onko valmistajalla jaossa laitteelle käyttöjärjestelmäpäivitystä? Päivitystiedoston kautta voi päästä käsiksi koodiin ja saa käsityksen siitä, miten laite toimii ja onko siinä kenties jotain virheellisesti tehtyä. Joskus Harry myös kokeilee, ottaako laite yhteyttä verkkoon ja jos kyllä, hän tutkii, onko liikenne salattua vai ei ja kenelle laite juttelee. Myös verkkopohjainen käyttöliittymä, jonka kautta käyttäjä voi antaa laitteelle ohjeita, voi olla ongelma, jos väärä taho pääsee väliin antamaan epätoivottuja komentoja laitteelle.
  • Laitteen koodauksessa kerroksellisuus ja tiimityö voi myös näkyä, joten ei voi luottaa siihen, miltä koodi vaikuttaa lyhyen pätkän perusteella. On mahdollista, että koodia on täydennetty ja uusia liitännäisiä lisätty jopa eri vuosikymmenillä. Lisäksi koodi voi olla monien eri henkilöiden kirjoittamaa: yhdessä kohdassa voi näkyä taitavan ja osaavan tiimin jäsenen käden jälki, kun taas toisessa kohdassa koodia on voinut kirjoittaa vähemmän kokenut henkilö ja koodi olla senmukaista.

Vaikka Harry on löytänyt paljon erilaisia haavoittuvuuksia, hän toteaa, että tietoturva-asioissa on menty eteenpäin ja tietoturva-aukkoja on yhä vaikeampi löytää. Tosin IoT-laitteissa haavoittuvuuksia löytyy harmillisen paljon, vaikka myös hyvin tehtyjä IoT-laitteita on olemassa.

a) Kali Linuxin asentaminen virtuaalikoneeseen

Etsin ensimmäiseksi Kalin verkkosivuilta osoitteessa kali.org jakelupaketin eli distron asennettavaksi virtuaalikoneeseen. Kalin etusivulta osui heti silmänä Download-linkki ja sen takaa eri jakelupaketteja tarkoituksen mukaan. Valitsin virtuaalikoneeseen (Virtual Machines) suositellun version. Tämän jälkeen piti valita vielä joko 64- tai 32-bittinen käyttöjärjestelmä ja tietää, mihin virtuaalikoneeseen tarkallaan olisi tarkoitus asentaa Kali. Valitsin kannettavan tietokoneeni mukaisesti 64-bittisen käyttöjärjestelmän VirtualBoxille ja latasin tiedoston, mikä otti aikaa muutaman minuutin.

Kalin asennustiedoston latausta odotellessa tarkistin, millä mallilla Oraclen VirtualBox-ohjelma on tietokoneellani. Muistin, että olen asentanut sen jo  aiemmin, mutta edellisestä käyttökerrasta on jo aikaa. Avatessani VirtualBoxin sainkin heti ilmoituksen, että uusi versio 7.0.6 on julkaistu ja asennustiedosto on saatavana VirtualBoxin verkkosivuilta. Niinpä laitoin myös VirtualBoxin uusimman version asennustiedoston latautumaan.

Kun tiedostot olivat latautuneet, suljin VirtualBox-ohjelman ja käynnistin uuden version ohjatun asennuksen:

VirtualBox-ohjelman ohjattu asennus

Asennuksen aikana varoitettiin Internet-yhteyden katkeamisesta hetkellisesti. Muuten asennuksessa ei ollut mitään ihmeellistä, vaan klikkailin eteenpäin ja totesin VirtualBoxin oletusasetusten olevan sopivat minullekin. Parin minuutin odottelun jälkeen VirtualBoxin uusin versio oli asentunut tietokoneelleni. Pelkäsin, että asennuksen yhteydessä VirtualBox nollautuisi ja aiemmin virtuaalikoneelle asentamani WebGoat ja Zap katoaisivat, mutta ilokseni vanha virtuaalikone oli edelleen tallessa ja vain ympärillä oleva VirtualBox päivitetty.

Aloitin uuden virtuaalikoneen luomisen klikkaamalla New-painiketta VirtualBoxin aloitusnäkymässä:

Uuden virtuaalikoneen luominen

Avautui ikkuna, jossa piti syöttää uuden virtuaalikoneen tiedot ja määrittää myös ISO-kuva, jolta käyttöjärjestelmä asennetaan virtuaalikoneeseen. Tässä kohtaa tuli mutka matkaan, sillä en ollut tajunnut aiemmin ajatella ISO-kuvaa, olin vain tyytyväisesti ladannut Kalin verkkosivuilta VirtualBoxille tarkoitetun 64-bittisen käyttöjärjestelmän asennustiedoston. Niinpä kaivoin vanhat muistiinpanoni Linux-palvelimet -kurssilta esille ja palauttelin mieleeni, miten olen aiemmin tehnyt ISO-kuvatiedostoja Rufus-ohjelmalla (Lehto 2022).

Kalin asennustiedostoni oli pakattu 7-Zip -ohjelmalla, eikä Rufus osannut hyödyntää 7z-muotoista tiedostoa ISO-kuvan tekemiseen. Niinpä latasin tietokoneelleni myös 7-Zip -ohjelman ja purin Kalin asennustiedoston, mutta sekään ei auttanut ISO-kuvan tekemisessä. Alkoi jo epäilyttää, olenko aivan hakoteillä, ja etsin käsiini Tuomas Valkamon kurssiraportin Kalin asentamisesta VirtualBoxiin. Valkamon muistiinpanojen myötä jätin uuden virtuaalikoneen luomisen sikseen ja vain lisäsin Kalin asennustiedoston VirtualBoxiin (Valkamo 2022).

Asentamassa Kali Linuxia VirtualBoxiin

Yllättäen Kali sujahti oikein nätisti omaksi virtuaalikoneekseen ilman mitään lisäkysymyksiä tai ongelmia: riitti vain klikata Add-painiketta, kaivaa tietokoneen syövereistä 7-Zipillä purettu Kalin asennuskansio auki ja sieltä avata virtuaalikoneelle määritelty tiedosto, minkä jälkeen VirtualBox hoiti loput.

Kali Linux asennettuna onnistuneesti VirtualBoxiin

Sain taas muistutuksen, miten Windows-käyttäjällä voi olla tauon jälkeen suuria haasteita Linuxin kanssa, mutta kun löytää taas oikean tavan tehdä asioita, Linux ei ole lainkaan niin vaikea käyttöjärjestelmä kuin miltä aluksi tuntui.

Kun sitten yritin käynnistää Kalia VirtualBoxissa, tunsin oloni taas typeräksi, sillä minulla ei ollut hajuakaan tunnuksista Kaliin kirjauduttaessa. Onneksi VirtualBoxin ihmetteleminen tuotti tulosta, sillä Settings-painikkeesta avautui ikkuna ja klikkailemalla General → Description löytyivät myös kaipaamani tiedot Kalin käyttäjätunnuksesta ja salasanasta:

Tunnukset Kaliin kirjautumiseksi

Käynnistin Kali-virtuaalikoneeni testatakseni, toimivatko löytämäni tunnukset ja itse Kali:

klikkaus hiiren oikealla näppäimellä virtuaalikonetta → Start → Normal Start

Kalin käynnistäminen VirtualBoxissa

Kali-virtuaalikone aukesi kuin aukesikin onnistuneesti:

Kali Linuxin työpöytä

b) Metasploitable2:n asentaminen virtuaalikoneeseen

Latasin Metasploitable2:n, mikä kesti viitisen minuuttia. Lataussivustolla muistutettiin, että Metasploitable2 on tarkoituksella haavoittuva Linux-virtuaalikone, joka on tarkoitettu tietoturvatestauksen työkalujen ja tunkeutumistestauksen tekniikoiden harjoittelemiseen. Lisäksi huomautetaan, ettei Metasploitable2:sta ole suotavaa käyttää koskaan muualla kuin luotettavassa verkossa – mieluiten NAT- tai Host-only -moodissa, jos on epävarma verkon luotettavuudesta.

Metasploitable2
Oletuskäyttäjä: msfadmin
Oletussalasana: msfadmin

(Slashdot Media 2023)

Purin Metasploitable2:n zip-muotoisen asennustiedoston ja yritin lisätä sen VirtualBoxiin niin Add-, New- kuin Import-painikkeellakin, mutta joka kerta törmäsin samaan ongelmaan, että puretusta kansiosta ei löytynyt virtuaalikonemääritykseen tarkoitettua tiedostoa, vaikka sellainen oikeasti oli kansiossa.

Metasploitable2:n asentaminen virtuaalikoneeseen

Kurkin myös, miten kurssikaverit olivat onnistuneet Metasploitable2:n asentamisessa virtuaalikoneeseen, ja raporttien mukaan he olivat käyttäneet samoja vaihtoehtoja, joita olin jo kokeillut useampaan kertaan tuloksetta. Niinpä ei auttanut muu kuin jättää tämä tehtävä kesken ja kysyä seuraavalla luennolla vinkkejä ongelman selättämiseen.

Luennolla 3.4.2023 ratkottiin ongelmatilanteita, ja minäkin sain lopulta Metasploitable2:n asennettua seuraavilla askelilla:

    1. Olin jo aiemmin ladannut Metasploitable2:n asennustiedoston ja purkanut zip-tiedoston.
    2. Loin VirtualBoxissa uuden virtuaalikoneen klikkaamalla Machine → New ja annoin uudelle virtuaalikoneelle nimeksi Metasploitable2.Metasploitable2:n asennus vaiheittain
    3. Valitsin Metasploitable2-virtuaalikoneen tyypiksi Linux ja versioksi 64-bittisen Ubuntun.
    4. Asetin virtuaalikoneen muistin määräksi 4096 MB.Metasploitable2:n asennus vaiheittain
    5. Valitsin kovalevyksi aiemmin lataamani Metasploitable2:n asennustiedoston, jonka tiedostotyyppi oli virtuaalikoneille tarkoitettu ”Virtual Machine Disk Format”.
      Metasploitable2:n asennus vaiheittain
      Metasploitable2:n asennus vaiheittain
      Metasploitable2:n asennus vaiheittain
    6. Finish-painikkeella VirtualBox muodosti Metasploitable2:sta virtuaalikoneen.Metasploitable2:n asennus vaiheittain

Käynnistin Metasploitable2-virtuaalikoneen Start-painikkeella, kirjauduin ylempänä mainituilla tunnuksilla sisään ja sain varmistuksen, että Metasploitable2 tosiaan toimii.

Metasploitable2 asennettuna

(Hurri 2023)

c) Virtuaaliverkon tekeminen

Tehtävänä on luoda virtuaaliverkko Kalin ja Metaspolitable2:n välille siten, että Kali saa yhteyden Internettiin mutta yhteyden voi myös laittaa pois päältä. Lisäksi Kalin ja Metasploitable2:n välillä tulee olla ”host-only network”, jotta porttiskannauksen aikana virtuaalikoneet on eristetty Intenetistä mutta ne saavat kuitenkin yhteyden toisiinsa.

Virtuaalikoneen tapaan myös virtuaaliverkon luominen tapahtuu VirtualBoxissa. File-painikkeen takaa klikkasin Tools → Network Manager, jolloin VirtualBoxiin avautui näkymä ”Host-only Networks”:

Virtuaaliverkon luominen vaiheittain

Loin uuden host-only -tyyppisen virtuaaliverkon Create-painikkeella, jolloin näkymään ilmestyi virtuaaliverkko nimeltä ”VirtualBox Host-Only Ethernet Adapter #2”. Uudessa virtuaaliverkossani ei kuitenkaan ollut DHCP Server sallittu (”Disabled”). Niinpä klikkasin ensin valituksi uuden virtuaaliverkon ja sen jälkeen Properties-kuvakkeen kautta lisäsin täpän ”Enable Server” -kohtaan:

Virtuaaliverkon luominen vaiheittain

Klikkaamalla Apply-painiketta myös uuden virtuaaliverkkoni kohdalla DHCP Server muuttui sallituksi:

Virtuaaliverkon luominen vaiheittain

Lopuksi Kali- ja Metasploitable2-virtuaalikoneet piti vielä yhdistää virtuaaliverkkoon. Kalin asetuksissa pääsin muokkaamaan verkkoyhteysasetuksia:

Kali-virtuaalikone → Settings → Network → Adapter 2 → Host-only Adapter ja äsken luotu virtuaaliverkko ”VirtualBox Host-Only Ethernet Adapter #2” → OK.

Kali-virtuaalikone yhdistetään virtuaaliverkkoon

Kalin verkkoasetuksissa Adapter 1 oli määritelty oletuksena NAT:ksi, minkä myötä virtuaalikoneella pääsee halutessaan myös Internettiin:

Kali-virtuaalikoneella määritelty Internet-yhteys

Myös Metasploitable2:lle oli oletuksena määritelty verkkoasetuksissa NAT ja siis pääsy Internettiin, mitä en missään nimessä halua vahinkojen välttämiseksi. Niinpä muutin Metasploitable2-virtuaalikoneen verkkoasetuksissa virtuaaliverkon Adapter 1:ksi, minkä myötä Metasploitable2:lla on pääsy vain ja ainoastaan virtuaaliverkkoon mutta ei julkiseen Internettiin.

Metasploitable2-virtuaalikone → Settings → Network → Adapter 1 → Host-only Adapter → äsken luotu virtuaaliverkko ”VirtualBox Host-Only Ethernet Adapter #2” → OK.

Metasploitable2:lle määritelty yhteys virtuaaliverkkoon

Nyt, kun Kali- ja Metasploitable2-virtuaalikoneet on asetettu samaan virtuaaliverkkoon, niiden on mahdollista saada yhteys toisiinsa. Kun Kalin ottaa irti Internetistä, virtuaalikoneet saavat edelleen yhteyden toisiinsa esimerkiksi porttiskannausta varten mutta ovat eristettyjä Internetistä.

d) Metasploitable2:n etsiminen porttiskannaamalla

Tehtävänä on etsiä Metasploitable2 porttiskannaamalla hyödyntäen komentoa ”db_nmap -sn”. Lopuksi tulee tarkistaa selaimella, että löydetty IP-osoite on oikea ja Metasploitablen etusivulla lukee tosiaan Metasploitable.

Käynnistin Kali-virtuaalikoneen ja testasin pingaamalla sekä osoitetta google.fi että Googlen DNS-palvelinta IP-osoitteessa 8.8.8.8, toimiiko Internet-yhteys:

$ ping google.fi
$ ping 8.8.8.8

Kali-virtuaalikoneessa Internet-yhteys toimii

Molemmissa tapauksissa Kali lähetti ja vastaanotti yhtä monta pakettia, joten Kali-virtuaalikoneen Internet-yhteys toimi. Näppäinyhdistelmällä Ctrl + C lopetin pingaamisen, muuten se olisi jatkunut ties kuinka pitkään.

Koska olin aikeissa aloittaa porttiskannauksen Kalin ja Metasploitablen välillä, ei kumpikaan vituaalikone saanut olla yhteydessä Internettiin turvallisen tunkeutumistestausharjoittelun takaamiseksi. Metasploitable2:lla ei ollut mahdollisuuttakaan olla Internettiin yhteydessä, koska se oli aiemmin kytketty vain virtuaaliverkkoon, mutta Kali sen sijaan täytyi ottaa irti Internetistä. Kali-virtuaalikoneen näytön oikeassa alareunassa on verkkoasetusten kuvake (Network Settings), josta klikkasin ”Connect Network Adapter 1”:stä, jolloin väkänen lähti pois sinisen kuvion päältä ja näin adapteri 1 eli NAT oli kytketty pois päältä Kalissa. Sen sijaan adapteri 2:n sinisen kuvion päällä on väkänen, mikä tarkoittaa adapteri 2:n eli virtuaaliverkon olevan kytkettynä Kali-virtuaalikoneeseen.

Kali irrotetaan Internetistä

Testasin pingaamalla uudestaan google.fi ja 8.8.8.8, mutta tällä kertaa sain toivotun tuloksen, että Internet-yhteyttä ei saatu:

Kali-virtuaalikone ei ole enää Internetissä

Kun Kali oli käyttövalmiina, käynnistin Metasploitable2-virtuaalikoneen, kirjauduin ja tarkistin Kalin tapaan, ettei Metasploitable2 ole kytkettynä Internettiin:

$ ping google.fi
$ ping 8.8.8.8

Metasploitable2-virtuaalikone ei ole kytketty Internettiin

Vastauksena pingaukseen tuli jälleen toivotusti ”Network is unreachable” ja ”unknown host”, joten myös Metasploitable2-virtuaalikone oli irti Internetistä, kuten oli tarkoituskin.

Porttiskannausta varten tarvitsin Metasploitable2-virtuaalikoneen IP-osoitteen, jonka saa selville komennolla ”ifconfig” (Karvinen 2023). Windows-käyttäjän on syytä olla tarkkana komennon kirjoitusasun suhteen, sillä Linux ei ymmärrä ipconfig-komentoa ja yhden kirjaimen erolla on todellakin väliä:

$ ifconfig

Metasploitable2 ifconfig

Tämän jälkeen siirryin Metasploitable2:sta takaisin Kaliin ja aloitin porttiskannauksen alustamalla Metasploitablen tietokannan komennolla

$ sudo msfdb init

Metasploitable2 tietokannan alustus

Tämän jälkeen yritin ottaa Kalilla yhteyttä samassa virtuaaliverkossa olevaan Metasploitable2-virtuaalikoneeseen ja avata Metasploitablen konsolin komennolla

$ sudo msfconsole

Punaisten tekstien perusteella luulin jo, että yritykseni meni pieleen, vaikka kalin sijaan rivin alkuun ilmestyi ”msf6 > ”, mikä viittasi kuitenkin siihen, että olisin saanut Metasploitablen konsolin auki. Testasin vielä konsolissa komentoa

$ db_status,

joka vahvisti, olin tosiaan saanut postgresql-tyyppisen yhteyden Metasploitable2-virtuaalikoneen konsoliin. PostgreSQL viittaa käsittääkseni tässä vain tietynlaiseen tietokantaan, jonka toiminta perustuu siihen, että tietokantaa käyttääkseen täytyy tietää PostgreSQL-tietokannan IP-osoite (PostgreSQL 2023).

Loin seuraavaksi tätä 1d-harjoitusta varten tietokantaan oman työtilan tai ikään kuin lohkon komennolla

$ workspace –add harjoitus1d

msf workspace

(Komennolla ”$ workspace -h” sai kätevästi näkyviin listan workspaceen liittyvistä eri komennoista.)

Tutkin vielä harjoituksen vuoksi, minkälaisia tuloksia saisin hosts- ja services-komennoilla:

$ hosts
$ services

Tämän jälkeen ryhdyin porttiskannaamaan nmap-komennon avulla. Olin jo aiemmin selvitellyt Metasploitable2:n IP-osoitetta, joten sen perusteella valitsin skannattavan IP-osoitteen. Luennolla mainittiin, että todellisessa tilanteessa porttiskannaus kannattaisi rajata vain kohtuulliseen määrään IP-osoitteita, muuten verkkoyhteys voi hidastua merkittävästikin kuorman alla, mikä taas herättää epäilyt siitä, että verkossa tapahtuu jotakin normaalista poikkeavaa. Nyt, kun operoin VirtualBoxin virtuaaliverkossa ja molemmat virtuaalikoneeni ovat irti Internetistä, tällä ei luulisi olevan juurikaan merkitystä. Jotta konsolin tulosteiden määrä pysyisi kuitenkin kohtuullisena, rajasin porttiskannausta mahdollisimman tehokkaasti.

Epävarmuus iski, joten kaivoin vielä Metasploitable2:n konsolilla virtuaalikoneen IP-osoitteen:

$ ip a

Tulosteessa eth1 viittaa Metasploitable2-virtuaalikoneeseen ja inet-kohdassa mainitaan sen IP-osoitteeksi 192.168.96.3/24. Tämä on lähes sama kuin aiemmin ifconfig-komennolla saatu IP-osoite 192.168.96.4, ja kun maski on 255.255.255.0, voi IPv4-osoitteen viimeinen osa vaihdella samassa verkossa olevien laitteiden kesken. Koska numeroon 4 päättyvä IP-osoite oli mainittu ifconfig-komennon tulosteessa eth0:n kohdalla, voi olla, että kyse oli Metasploitable2:n kanssa samassa virtuaaliverkossa olevan Kalin IP-osoitteesta.

Äskeisen perusteella porttiskannaan Metasploitable2:n IP-osoitteeseen 192.168.96.3/24. Minulle tuli kuitenkin kirjoitusvirhe, minkä seurauksena konsoliyhteys Metasploitable2:een katosi ja jouduin avaamaan yhteyden uudestaan komennolla

$ msfconfig

Tällä kertaa ei ollut epäilystäkään, etteikö yhteyttä olisi saatu heti ensi yrittämällä, sillä konsoliin ilmestyi jännittävä tekstistä muodotettu kuva ja rivin alkuun teksti ”msf > ”:

Metasploitable2:n konsoliyhteys auki

Skannasin IP-osoitteen ja sain liudan tietoja virtuaaliverkosta:

$ db_nmap -sn 192.168.96.3/24

(Kokeilin myös komentoa

$ nmap -sn 192.168.96.3/24

ja se toi käytännössä saman tuloksen, joten ilmeisesti ei ole suurta merkitystä, käyttääkö komennon alussa muotoa db_nmap vai vain nmap.)

Hain uudelleen hosts-tiedot, ja näin porttiskannauksen jälkeen sain tulosteeseen myös tutunnäköiset IP-osoitteet:

$ hosts

Address-otsikon alla olevista IP-osoitteista arvelin ylemmän (192.168.96.3) liittyvän mahdollisesti Kali-virtuaalikoneeseen ja alemman (192.168.96.4) Metasploitable2-virtuaalikoneeseen. Kun kirjoitin Firefox-selaimessa IP-osoitteen 192.168.96.4 osoiteriville ja painoin Enter, selaimeen avautui Metasploitable2:n etusivu:

Olin siis löytänyt Metasploitable2:lle aivan oikean IP-osoitteen.

e) Metasploitablen huolellinen porttiskannaus

Tehtävänä oli porttiskannata Metasploitable huolellisesti komentoa ”db_nmap -A” käyttäen.

Tarkistin ensin, että sekä Kali-virtuaalikoneeni että Metasploitable2-virtuaalikone oli kytketty irti julkisesta Internetistä. Kun pingausyritykseni

ping google.com
ping 8.8.8.8

saivat aikaan vain ilmoituksia yhteysongelmista, olin tyytyväinen.

Tarkistin Metasploitable2-virtuaalikoneen IP-osoitteen:

$ ifconfig

Tämän jälkeen testasin, saanko Kali-virtuaalikoneella yhteyden Metasploitable2:een IP-osoitteella 192.168.96.4:

ping 192.168.96.4

Yhteys Kalin ja Metasploitable2:n välillä näytti toimivan, sillä Kali lähetti 5 pakettia Metasploitable2:lle ja myös vastaanotti saman määrän paketteja. Avasin Metasploitin komennolla

$ sudo msfdb run

ja vahvistin aikomukseni syöttämällä Kali-virtuaalikoneeni salasanan (Metasploit ei suostu käynnistymään ilman sudo-/root-oikeuksia). Metasploit käynnistyi ja tein samantien myös MS2-nimisen ”työtilan” tälle harjoitukselle komennolla

$ workspace --add MS2

Tämän jälkeen kokeilin Metasploitin avulla porttiskannata Metasploitable2-virtuaalikoneen huolellisesti:

$ db_nmap -A 192.168.96.4

Ehdin jo säikähtää, ettei porttiskannaus onnistunutkaan, mutta olinkin vain turhan kärsimätön. Kun jaksoin odottaa riittävän kauan, että Metasploit sai porttiskannauksen tehtyä, terminaaliin ilmestyi liuta tekstiä:

Porttiskannaamalla Metasploitable2:sta sai tosiaan paljon erilaista tietoa. Metasploitable2:sta näytti löytyvän muun muassa FTP (file transfer protocol) eli tiedostonsiirtoprotokolla IP-osoitteesta 192.168.96.3, Linux-pohjainen Telnet portista 23, SMTP-palvelin eli lähtevän sähköpostin palvelin portista 25, Apache-palvelin portista 80 ja Ubuntu-pohjainen MySQL-tietokanta portista 3306. Tulosteen loppupuolelta löytyi lisäksi tietoja Metasploitable2:n Debian-pohjaisesta Samba-käyttöjärjestelmästä ja jopa smb-security-mode -tietoja. En ole aivan varma, mihin kaikkeen noita tietoja voisi hyödyntää, mutta se lienee ainakin kiinnostava tieto murtautujan näkökulmasta, että käytössä on guest-tunnus ja autentikoinnin taso on user, jos murtautujan olisi tarvetta yrittää korottaa oikeuksiaan.

f) Metasploitablen VsFtpd-palveluun murtautuminen Metasploitilla

Tehtävänä oli murtautua Metasploitable2:n VsFtpd-palveluun käyttäen Metasploitia. Tutkin edellisen tehtävän kuvaa, oliko porttiskannatussa listassa mainittu VsFtpd-palvelua. VsFtpd tulee sanoista Very Secure FTP Daemon, jota on tituleerattu turvallisimmaksi ja nopeimmaksi FTP-palvelimeksi, ja se käyttää oletusarvoisesti portteja 20 ja 21 (The Geek Diary s. a.). FTP tosiaan löytyi porttiskannaustulosteesta portin 21 kohdalta, ja tarkemmin tietoja tutkiessa huomasin, että myös vsftpd 2.3.4 oli mainittu. Toki vieläkin helpommalla tiedot VsFtpd:stä olisi voinut löytää ihan vain pyytämällä konetta etsimään, jolloin se myös värikoodaa etsittävän sanan:

$ search vsftpd

Yllä olevassa kuvassa VsFtpd:n kohdalla sarakkeessa # on numero 0. Tämän perusteella valitsin exploitiksi 0 komennolla

$ use 0

ja valittu exploit tulikin näkyviin terminaalin riville tekstinä ”exploit(unix/ftp/vsftpd_234_backdoor)”. Ilmeisesti hyökkäyksessä yritetään siis päästä FTP:n takaoven kautta sisään. Tarkistin vielä hyökkäyksen asetuksista, mitä tietoja vielä tulisi asettaa eli mitkä tiedot ”Current Setting” -sarakkeessa ovat tyhjiä (Hurri 2023):

$ options

Hyökkäys oli suuntautumassa porttiin 21, jonka piti tosiaan olla VsFtpd:n portti. Hyökkäyksen kohde eli RHOSTS puuttui vielä, joten asetin siihen Metasploitable2:n IP-osoitteen, johon hyökkäyksen tuli kohdistua:

$ set RHOSTS 192.168.96.4

Kun valmistelut oli tehty, käynnistin hyökkäyksen:

$exploit

Terminaaliin tulostuvista tiedoista näin, että exploit-komento kohdistettiin kohteeseen 192.168.96.4:21 kuten pitikin. ”Found shell” ja ”Command shell session 2 opened”, joiden perusteella aikani ihmeteltyäni tajusin, että hyökkäys oli onnistunut ja olin päässyt käsiksi Metasploitable2-virtuaalikoneen terminaaliin (tarkistaessa, miltä Metasploitable2:n terminaalissa näytti, ruudulla näkyi vain mustaa). Tarkistin vielä, millä käyttäjätunnuksella olin päässyt sisään:

$id

Metasploitable2 ilmoitti minun käyttävän root-tunnuksia (uid = user id).

Hyökkäys oli siis onnistunut ja Metasploitable2 oli korkattu.

Lähteet

Hurri, S. 2023. Tunkeutumistestaus – Harjoitus 1. Luettu: 11.4.2023. Luettavissa: https://santtuhurri.wordpress.com/2023/03/27/tunkeutumistestaus-harjoitus-1/.

Karvinen, T. 2023. Penetration testing course 2023. Luettu: 1. – 2.4.2023. Luettavissa: https://terokarvinen.com/2023/tunkeutumistestaus-2023-kevat/.

Lehto, S. 2022. Sukellus Linuxin maailmaan (h1). Luettu: 2.4.2023. Luettavissa: https://susannalehto.fi/2022/sukellus-linuxin-maailmaan-h1/.

PostgreSQL 2023. PostgreSQL: The World’s Most Advanced Open Source Relational Database. Luettu: 11.4.2023. Luettavissa: https://www.postgresql.org/.

Slashdot Media 2023. Metasploitable. Luettu: 2.4.2023. Luettavissa: https://sourceforge.net/projects/metasploitable/.

The Geek Diary s. a. CentOS / RHEL : How to configure vsftpd to use ports other than the default ports 20 and 21. Luettu: 11.5.2023. Luettavissa: https://www.thegeekdiary.com/centos-rhel-how-to-change-vsftpd-port-number-from-the-default-port-numbers-20-and-21/.

Valkamo, T. 2022. Getting Started with Pen Testing. Luettu: 2.4.2023. Luettavissa: https://tuomasvalkamo.com/PenTestCourse/week-1/.

Artikkelin a- ja b-osioita on täydennetty 2.4.2023, b-d -osioita täydennetty 11.4.2023 sekä e- ja f-osioita täydennetty 11.5.2023.

Kommentoi

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *