Metasploit ja kumppanit

Kybertappoketju, nmap, metasploit ja harjoitusmaalit - Tunkeutumistestaus viikkotehtävä 2

TLDR

Tehtävässä asensin metasploit2 haavoittuvan järjestelmän ja tunkeuduin siihen msfconsolen sekä SQLinjectionin avulla. Asensin VulnHubista harjoitusmaalin ja kokeilin tunkeutua siihen tuloksetta.

Tehtävänanto

Lue artikkelit ja tee muistiinpanot - Tehtävä Z

Ensimmäisenä tehtävänä oli lukea Hutchins et al 2011: Intelligence-Driven Computer Network Defense Informed by Analysis of Adversary Campaigns and Intrusion Kill Chains , sekä Jaswal 2020: Mastering Metasploit - 4ed: Chapter 1: Approaching a Penetration Test Using Metasploit ja tehdä näistä muistiinpanoja muutamalla ranskalaisella viivalla per artikkeli ja/tai video.

Cyber kill chain

  • Tehokas hyökkääminen vaatii suunnitelmallisuutta
  • Jokainen edellinen kohta listasta suoritettava, jotta seuraavaan voi siirtyä. Siksi tätä kutsutaan ketjuksi
  • Puolustautuessa hyökkäyksiltä on tärkeää ymmärtää, kuinka hyökkäys tapahtui
  • Suosituimmat tavat toimittaa vihamielinen ohjelma kohdekoneeseen vuosina 2004-2010 olivat
    • Sähköpostin liitetiedostot
    • Verkkosivut
    • USB-laitteet

Mastering Metasploit

  • Metasploit helpottaa tekee useiden järjestelmien testaamisesta kerralla helpompaa
  • Testauksessa tärkeää määrittää kohde, sekä testauksen laajuus
  • Metasploit tukee käyttäjän itse luomia moduuleja, sekä on avoimen lähdekoodin softaa

Listaa työkaluja ja tekniikoita jotka sopivat kuhunkin kybertappoketjun kohtaan - Tehtävä A

Seuraavaksi vuorossa oli listata tappoketjun seitsemään kohtaan sopivia työkaluja tai tekniikoita, sekä kokeilla 1-3 niistä työkaluista. Työkalujen kokeilun hoidan tehtävässä b.

  • Reconnaissance - Tiedustelu
    • Tiedustelua voi tehdä passiivisesti. Esimerkiksi selata kohteen webbisivuja tai työntekijöiden linkedin profiileja kerätäkseen tietoa
    • Aktiivisessa tiedustelussa käytetään esimerkiksi porttiskanneria saadakseen tietoa palvelimen palomuurin avoimista porteista.
  • Weaponization - Aseistus
    • Esimerkiksi pdf tiedoston muuttaminen haitalliseksi, tai office tuotepaketin ohjelman haitallisen makron valmistaminen
    • Metasploitista löytyy lista käyttövalmiita hyötykuormia, joita voi käyttää haavoittuviin järjestelmiin
  • Delivery - Toimitus
    • Nimensä mukaisesti vihamielinen hyötykuorma toimitetaan kohdejärjestelmään
    • Esimerkiksi aikaisemman listan mukaan sähköpostin liitetiedostona
  • Exploitation - Hyväksikäyttö
    • Toimituksen jälkeen aseistettua ohjelmaa käytetään kohdejärjestelmässä. Eli hyväksikäytetään haavoittuvuutta
  • Installation - Asennus
    • Asennetaan kohdejärjestelmään takaovi, jonka avulla hyökkääjät pääsevät haavoittuneeseen järjestelmään uudestaan
  • Command and Control - Käske ja hallitse
    • Kun takaovi on asennettu, pääsee hyökkääjät suorittamaan komentoja kohdejärjestelmässä
    • Esimerkiksi Meterpreter
  • Actions on objectives - Kohdejärjestelmässä suoritettavat tehtävät
    • Tämä vaihe riippuu siitä, mitä hyökkääjä on aluperin halunnut tehdä kohdejärjestelmässä
    • Esimerkiksi Smart hashdump salasanahashien saamiseksi

Asenna Metasploitable2 ja murtaudu siihen useilla tavoilla - Tehtävä B

Metasploitable2 asennus virtualboxiin oli erittäin suoraviivainen. Ensin täytyi ladata Metasploitable2 asennuspaketti. Tämä on saatavilla täältä. Latauksen jälkeen zip tiedosto täytyy purkaa ja puretusta kansiosta löytyy Virtual machine disk format muodossa oleva tiedosto. Tätä käytetään Virtualboxissa kovalevyn valinnassa.

metasploitable asennus

Ennen Metasploitable2 käynnistämistä täytyy virtualboxin asetuksista muuttaa tämän kyseisen boxin verkkokortti Host-Only adapteriksi. Näin haavoittuva Metasploitable2 ei saa otettua yhteyttä internetiin vaan liikenne pysyy paikallisten virtuaalikoneiden sisällä.

metasploitable verkkokorrti

Vastaavasti Kalin asetuksista täytyy lisätä uusi verkkokortti joka on vastaavasti Host-only adapter. Harjoitusten suorittamisen ajaksi voi Kalin NAT verkkokortista ottaa “johdon irti”. Tämä on käytännössä sama, kun vetäisit ethernet kaapelin irti tietokoneestasi. Näin varmistetaan, ettei vahingossa oteta yhteyttä muualle kuin paikallisverkossa olevaan Metasploitable2 virtuaalikoneeseen.

kaliverkkokortti

Kävin tarkistamassa metasploitable2 sen paikallisen IP osoitteen, jotta tiedän mihin kohdistan hyökkäykset. Metasploitable2 pääsee kirjautumaan sisään msfadmin:msfadmin tunnuksella.

metasploitable2ip

Seuraavaksi tarkistin, etten voinut ottaa yhteyttä googlen dns palelimeen (eli ulkopuoliseen internettiin) ja sainko vastauksen metasploitable2 koneelta

pingpong

Tiedustelua

$ sudo msfconsole komennolla avasin metasploitablen komentorivillä ajettavan ohjelman ja varmistin yhteyden tietokantaan. Seurasin täältä löytyneitä ohjeita tietokannan käyttöönotossa

msfdb

Loin myös uuden workspacen msfconsolen sisään workspace -a metasploitable2 komennolla.

msfworkspace

Nyt pystyn ajamaan db_nmap komentoa, joka tallentaa nmap skannauksen tuloksen suoraan tietokantaan.

msf6 > db_nmap -sV 192.168.56.101

Tämä komento ajaa porttiskannauksen versioiden tarkastuksella Metasploitable2 virtuaalikoneen osoitteeseen paikallisessa verkossani. Mikäli lukija kokeilee tätä itse tulee huomioida, ettei Metasploitable2 osoite todennäköisesti ole sama. Tarkista kohteen osoite ennen kuin ajat mitään komentoja.

dbnmap

Services ja hosts komennoilla voi hakea tietokannasta nmap skannauksen tuloksia

serviceshosts

Exploitin etsiminen ja hyökkäys

Seurasin luennolla näytettyä esimerkkiä ja etsin portissa 21 olevan ftp palvelun versiolla mahdollisia exploitteja

msf6 > search vsftpd 2.3.4

vsftp

Seuraavaksi valitsin ainoan tarjolla olevan exploitin, asetin kohteen ja exploit komennolla kokeilin pääsisikö kerrasta sisään

imin

Näin saimme root käyttäjän virtuaaliboxiimme.

Seuraavaksi siirsin tämän shellin taustaprosessiksi ctrl+z näppäinyhdistelmällä ja yritin ylentää kohdejärjestelmän komentokehotteen meterpreter shelliksi

sessions -u 1

metpret

Tämä ei kuitenkaan vaikuttanut onnistuvan.

Seuraava portti

Etsin netistä tietoa metasploitable2 järjestelmän haavoittuvuuksista, ja metasploitable2 omasta documentaatiosta löytyi esimerkki myös portissa 6667 pyörivästä palvelusta. Sivuston ohjeesta poiketen täyty lisätä hyötykuorma tähän exploittiin itse. show payloads komennolla saa listan tarjolla olevista hyötykuormista. Valitsin vaihtoehdon 5

payloads

failure

Takaisin sain ilmoituksen, ettei komentorivisessiota saatu avattua. Täytyy palata tähän kohtaan myöhemmin takaisin.

Mutilidae

Siirryin kalin verkkoselaimella virtuaalikoneen osoitteeseen ja valitsin sieltä Mutilidaen johon koitan päästä murtautumaan.

msp2ip

mutilidae

Testasin ensimmäisenä Sqlinjectiota sisäänkirjautumis lomakkeen käyttäjänimi kohtaan

' OR 1=1-- 

Vastauksena sain virheilmotuksen

sqlierror

Googletin virheilmoituksen ja tästä youtube videosta ilmeni, että metasploitable2 virtuaalikoneen asetuksissa on säädettävää.

config

Vaihdoin siis $dbname riville tietokannan nimeksi owasp10 alkuperäisen metasploit sijaan.

Palasin mutilidaen sivulle, nollasin tietokannan Reset DB napilla ja yritin sqlinjectiota uudestaan

iminagain

Asenna jokin virtuaalikone vulnhubista ja tunkeudu siihen - Tehtävä C

Viimeisenä vuorossa oli asentaa VulnHubista jokin virtuaalikone ja tunkeutua siihen. Valitsin tätä tehtävää varten Bluemoon 2021 boksin. Ladattu tiedosto täytyi importata virtualboxiin. Virtualboxissa File -> import Appliance. Tuontia hyväksyttäessä poistin valinnan usb controllerista ja hyväksyin muut. Asennuksen jälkeen ennen ensimmäistä käynnistystä muutin asetuksista bluemoonin verkkoadapterin Metasploitable2 tapaan Host-only Adapteriksi.

Koneen ip osoitteen etsiminen

Tätä varten käytin $ netdiscover -r 192.168.56.0/16 komentoa etsiäkseni bluemoonin osoitteen paikallisesta verkosta. Vastaukseksi sain kolme osoitetta

192.168.56.1
192.168.56.100
192.168.56.103

Testasin näitä selaimessa ja jokaisessa luki sivuston titlenä BlueMoon:2021. 103 loppuisesta osoitteesta aukesi seuraava sivu

bluemoonetusivu

Jälleen kerran muistutan lukijaa, että osoitteet jotka näkyvät minulle ei todennäköisesti ole samat kuin lukijalla.

Seuraavaksi avasin msfconsolen, loin uuden workspacen nimeltä bluemoon ja tein db_nmap skannauksen 103 päätteiseen osoitteeseen.

Vastauksena tuli takaisin seuraavat palvelut

servicesbluemoon

Etsin metasploitista avoimien palveluiden versioilla mahdollisia exploitteja tuloksetta.

Muistelin, että luennolla mainittiin wfuzz olisi kalissa jo valmiina. Päätin kokeilla tätä wfuzzin common.txt sanalistan avulla.

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.56.103/FUZZ

Wfuzz toimi erittäin nopeasti, mutta kaikki vastaukset olivat 404 (not found).

wfuzz

Luennoilla emme ole kerinneet käymään vielä enempää tunkeutumistekniikoita ja kello on tätä raporttia kirjoittaessa 02:00. Suljen siis koneeni tältä erää ja palaan tämän boxin pariin, kun tiedän enemmän.

Edit 13.4.2021

Tunnilla sain uutta tietoa Bluemoon boxin suhteen. Luennolla omia ratkaisujaan esitteli Anton. Itse en ollut löytänyt apua tähän tehtävään googlen avulla, mutta onneksi hän oli! Seuraan nyt siis hänen ratkaisuaan, jotta pääsen etenemään Bluemoonissa.

Wfuzzin avulla en ollut löytänyt hidden_text tiedostoa. Tämän sisältä löytyi linkki ja .png kuva

png

Latasin tämän wget komennolla, ja muutin qrkoodin tekstiksi käyttäen zbarimg ohjelmaa.

zbarimg

Näiden tietojen avulla pääsin kirjautumaan ftp:n kautta sisään. Kirjautumisen jälkeen tiedostoja listatessa ftp ilmoitti "500 Illegal PORT command virheilmoituksen. Löysin ratkaisun ongelmaan täältä. ftp>ls komennolla löytyi kaksi tiedostoa. Latasin nämä molemmat paikalliselle koneelle ftp>get "tiedoston nimi" komennon avulla

ftp

information.txt tiedoston sisätltä löytyi kehotus robin nimiselle henkilölle päivittää hänen salasanansa. Kirjoittaja on ollut niin ystävällinen, että on antanut hänelle listan salasanoista joita voisi käyttää.

info

Hydran avulla voi kokeilla ladattua salasanalistaa ssh kirjautumiseen

hydra -l robin -P p_lists.txt -t 4 ssh://192.168.56.103

Hydra löysikin salasanan oikein nopeasti

passwd

Salasana oli toimiva ja näin sai user flagin löydettyä

usrflag

$ sudo -l komennolla voimme tarkistaa onko käyttäjällä sudo-oikeuksia, sekä mitä komentoja käyttäjä pystyy ajamaan sudona.

Robin käyttäjä voi siis ajaa jerry käyttäjän kautta yhden sudo komennon, joka on feedback.sh scripti.

sudo-l

$ sudo -u jerry /home/robin/projects/feedback.sh

Näin saimme suoritettua feedback.sh komennon jerry käyttäjällä. Kirjoitin bash jälkimmäiseen kenttään ja sain komentokehotteen jerry käyttäjänä

jerry

Jerry käyttäjä on docker ryhmän jäsen, joten alpine containerin avulla voimme saada pääsyn tietojärjestelmän juureen tietämättä jerryn salasanaa.

docker run -it --rm -v /:/mnt alpine

root.txt

Yritin ensimmäisellä kerralla tehtävää tehdessäni etsiä läpikävelyä Bluemoonista, mutta en sellaista löytänyt. Onneksi Anton oli löytänyt tämän blogipostauksen, josta löytyi apua. Omin apuineni en todennäköisesti olisi selvinnyt tästä boxista, vaikka vastaus on näin jälkeenpäin melko yksinkertainen.

/Edit 13.4.2021

Linkkejä