Tunkeutumistestaus – h4

Tunkeutumistestaus

http://terokarvinen.com/2018/penetration-testing-course-autumn-2018

Teen virtuaalikoneella, johon on asennettu Kali 2018-2.

Harjoitusympäristönä käytetään Hacktheboxin verkkoa.

https://www.hackthebox.eu/home/rules

h4

1. Korkkaa Poison. Jos et pääse root shelliin asti, kuvaile, mihin pääsit ja mitä johtolankoja jäi tutkimatta.

Koska kyse on Hacktheboxin ”eläköityneestä” koneesta, ei teksti ole salasanan takana.

Aikaisemmalla tunnilla saatiin kaivettua toimiva käyttäjätunnus ja salasana, Charix – Charix!2#4%6&8(0.

Nämä saatiin kaivettua 10.10.10.84 sivun php testauksesta pwdbackup.txt tiedostosta. Salattu merkkijono pitää purkaa 13 kertaa base64 salauksella. Käyttäjänimen löysimme puhtaasti arvailemalla, mutta jälkikäteen selvisi, että sen olisi saanut myös php testauksen kautta, /etc/passwd.

Tutkitaan, josko koneelta löytyisi jotain mielenkiintoista, mitä kautta pääsisimme kiinni roottiin.

/bin kansiosta löytyy muutama erikoinen ohjelma, test ja [. Tekstieditorilla avaaminen ei paljasta lisää tietoja. Test komento ei tunnu tekevän mitään, mutta se ei myöskään heitä virheitä. Luultavasti siis test vaatii jotain muuta toimiakseen. Joka tapauksessa, en näytä saavan siitä mitään irti ainakaan tässä vaiheessa. [ sen puolestaan  onkin mielenkiintoisempi, kun annetaan komentokehotteeseen komento

% [ , joka tulostaa tekstin [: missing ]. Tässä vaiheessa tuli mieleen kokeilla, mitä [ manuaali sanoo. Pettymyksekseni manuaalista selviää, että molemmat test ja [ ovat jonkinlaisia arvojen testaus ohjelmia, mutta en ole tästä lainkaan varma. Joka tapauksessa, en todennäköisesti tee näillä ohjelmilla mitään.

Topilla kun selataan prosesseja, listasta löytyy muutama prosessi, jotka eivät ole minulle tuttuja, Xvnc, csh ja twm. Näistä Xvnc ja twm pyöri rootin kautta. Xvnc lienee jokin versio VNC etätyöpöytäohjelmasta. Googlauksen perusteella myös twm työpöytään, joten on ilmeistä, että koneella on graafinen työpöytä. Laitetaan talteen myöhempää varten.

/etc kansiosta löytyy kiinnostavana tiedostona pwd.db ja X11. X11 vahvistaa aiempaa luuloa, että koneella on käytössä graafinen työpöytä.

Pwd.db paljastaa tekstieditorin kautta satunnaisia kiinnostavia sanoja, jotka saattaisi ehkä olla salasanoja, otetaan talteen seuraavat: root, toor, Bourne-again, Superuser.

Charixin kotikansiosta löytyy Secret.zip tiedosto, jonka kopioin virtuaalikoneelle ja purettuani avasin nanolla, ruutuun ilmestyy vain pari kummallista merkkiä, mutta se vaikuttaa muuten tyhjältä. En osaa sanoa tässä vaiheessa mikä merkitys tiedostolla on.

Seuraavaksi katsotaan, josko pääsemme katsomaan portit läpi sisältäpäin. Joudun konsultoimaan apua FreeBSDn kohdalla:

https://www.cyberciti.biz/tips/freebsd-lists-open-internet-unix-domain-sockets.html

Eli komennolla

% sockstat -4 -l

saamme näkyviin avoimet IPv4 socketit. Eli näemme, mitkä prosessit lähettävät ja vastaanottavat yhteyksiä ulkopuolelta.

Kiinnostavilta näyttävät rootin Xvnc yhteydet porteista 5901 ja 5801. Vnc sessio portissa 5901 tarkoittaa sitä, että siihen voisi luultavasti kuka vain yhdistää ja päästä käsiksi rootin konsoliin.

Xvnc vaikuttaa tässä vaiheessa hyvin epäilyttävältä, sillä olen joskus kuullut paljon juttua siitä, miten huonosti Vnc toimii ainakin Windowsilla tietoturvansa puolesta. Kalista löytyy valmiiksi xtightvncviewer, mutta kaikki yhteydet jäävät palomuuriin kiinni. Tässä vaiheessa Roope vinkkasi SSH tunnelingista, jota lähdin selvittelemään.

https://roopelinux.wordpress.com/

https://www.cl.cam.ac.uk/research/dtg/attarchive/vnc/sshvnc.html

https://community.time4vps.eu/discussion/120/how-to-connect-to-vnc-server-ussing-ssh-tunnel

Komennolla

$ ssh -L 5902:localhost:5902 -N -f -l charix 10.10.10.84

-N määrittelee, että ei tehdä mitään muuta kuin forwardataan portti

-l täsmentää, että kirjaudutaan charix käyttäjällä

-f määrittelee, että ssh menee taustalle heti yhteyden muodostamisen jälkeen. Tällöin samasta ikkunasta voidaan jatkaa tekemisiä.

Luodaan tunneli Vnclle, jota yhdistämisen jälkeen kuunnellaan:

$ vncviewer localhost:5902

Näin saimme charixin työpöydän näkyviin.

Roope vinkkasi, että oli itse selvittänyt ongelman selaamalla VNC:n manuaaleja, jotenka:

https://www.freebsd.org/cgi/man.cgi?query=Xvnc&sektion=1&apropos=0&manpath=FreeBSD+7.2-RELEASE+and+Ports

https://www.freebsd.org/cgi/man.cgi?query=vncviewer&sektion=1&apropos=0&manpath=FreeBSD+7.2-RELEASE+and+Ports

https://www.freebsd.org/cgi/man.cgi?query=Xvnc&sektion=1&apropos=0&manpath=FreeBSD+7.2-RELEASE+and+Ports

VNC manuaaleja selattuani luulen, että charixin kotikansiossa oleva secret.zip sisältää vnc avaimen, millä päästään yhdistämään rootin valmiiksi auki olevaan istuntoon portissa 5901.

Siispä avataan SSH tunneli 10.10.10.84 porttiin 5901, jossa rootilla on VNC server auki:

$ ssh -L 5904:localhost:5901 -N -f -l charix 10.10.10.84

Kun portti on avattu, yhdistetään käyttämällä secret avainta:

$ vncviewer -passwd secret localhost:5904

ja sisällä ollaan roottina.

Ongelmia tuotti selkeästi tuo SSH tunnelien käyttö. Kun oivalsi niiden toiminnan, homma selkeytyi huomattavasti. Tiedonkeruussa paljastui jonkun verran kiinnostavia asioita, kuten ohjelmat ja test, joista ei kuitenkaan ilmeisesti ole apua tässä harjoituksessa. Lisäksi pwd.db jäi tutkimatta tarkemmin. Nyt jälkikäteen SQLite ei osannut sitä avata, joten ensiksi pitäisi selvittää, minkälainen tiedosto se on.

 

  1. CTF walkthrough. Katso Youtubesta jokin CTF walkthrough. Mitä opit, mitä ideoita sait?

https://www.youtube.com/watch?v=rs4zEwONzzk – HTB Poison, katsottu roottaamisen jälkeen

https://www.youtube.com/watch?v=82S8wFSypB4 – Vulnhub – Basic Pentesting 1

https://www.youtube.com/watch?v=uxx44x8ar3E – Vulnhub – Blackmarket

https://www.youtube.com/watch?v=pRcrSSiF_7w – Vulnhub – Mr. Robot

Kokeillaan PHPInfo File Inclusion exploittia skriptin kautta, hakemalla skriptin pohja täältä:

https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/File%20Inclusion%20-%20Path%20Traversal/phpinfolfi.py

Skriptin muokkauksia on vaikea kuvailla tarkkaan tekstinä, on huomattavasti helpompaa katsoa HTB Poison videolta n. 13-15 minuutin kohdalta, mitä videon tekijä tekee.

Payload kenttä tyhjennetään, ja lisätään siihen väliin oma payload skripti:

 /usr/share/laudanum/php/php-reverse-shell.php. 

Huom, tiedostopolun kopiointi ei riitä, koko .php tiedoston sisältö täytyy kopioida Payload kentän jättämään tyhjiöön.

Vaihdetaan videon mukaan portiksi ja ip-osoitteksi oma, mihin shell avataan.

Korjataan myös skriptin käyttämät polut videon mukaan, browse.php?file=%s, LFIREQ:

Korjataan tmp_name kaikissa kohdissa, missä valmiina =>, oikea muoto on =&gt

Ennen skriptin ajoa kuunnellaan porttia, johon shell tulee:

$ nc -lvnp 9001

Skripti ajetaan lopuksi komennolla

$ python lfi.py 10.10.10.84 80 100

jossa 80 on portti, ja 100 liittyy jotenkin nopeaan kutsujen lähettämiseen (threads).

Skripti avaa shellin www käyttäjänä, joten ihan kaikkea tästä asemasta ei pysty tekemään. Mutta sisällä ollaan kuitenkin.

Kokeillaan seuraavaksi dirsearchia, joka löytyy osoitteesta

https://github.com/maurosoria/dirsearch

Annetaan komento

$ python3 dirsearch.py -u 10.10.10.84 -e php,html,txt -t 100

Haku on aika paljon nopeampi kuin dirbusterilla, mutta luultavasti siksi, että tämä ei hae läheskään niin laajalla sanavarastolla. Ehkä tälle on omat käyttönsä ensimmäisinä työkaluina, joita sivuilla kokeillaan.

Skriptin readmesta selviää lipuista valitettavan vähän tietoa, mutta ilmeisesti -e rajaa sanakirjat.

10.10.10.84/index.php/login/ johtaa samaan osoitteeseen kuin 10.10.10.84/index.php, mutta ehkä tuonne saisi heitettyä jotain kirjautumisyrityksiä.

Lopuksi pyöräytän wpscanin omalle WordPress sivulleni

$ wpscan --url https://miikkavaltonen.com

Ohjelma  kysyi ensimmäisellä kerralla tietokannan päivittämisestä, vastasin tähän Y, kyllä.

Skanneri osasi selvittää käyttäjän ja versioita eri asioista:

En tätä harjoitusta varten viitsinyt paukutella kirjautumisyrityksiä tai jotain muuta hämärää, sen takia, että tiedän salasanan olevan niin monimutkainen, että sitä ei sanalistoilla arvata. Lisäksi en halua rikkoa blogiani.

Mainittakoon, että Digital Ocean ainakin suhtautuu oman palvelimen skannailuun ja muuhun pentestingiin suht lämpimästi. Ilmoitin asiasta asiakaspalveluun, ja vastaus oli tyyliin “Hieno homma, tässä lisää asioita mitä voit kokeilla.”.

Kaikista walkthrough videoista vahvimpana mieleen jäi se, kuinka paljon erilaisia työkaluja ja tapoja on. Poisonin walkthrough oli erittäin mielenkiintoinen, koska siinä päästiin www käyttäjällä sisään ihan eri tavalla, kuin mitä olisin osannut kuvitella. Tuntuu, että opetellessa asioita on hyvä kerätä kaikki vastaantulleet tai kerran käytetyt skriptit talteen,  jotta työkalupakki kasvaa hiljalleen jatkuvasti.

Voin kuvitella, että jatkossa eri skriptejä ja työkaluja joutuu muuttamaan ja vähän viilailemaan, jotta ne saadaan toimimaan oikein.

Se mitä tästä jäi käteen, on että työkaluja on vähintäänkin yhtä paljon kun tekijöitä. Tällaiset walkthrought ovat hyviä ihan vain senkin takia, että niistä näkee uusia työkaluja ja käyttötapoja.

 

  1. Stuxnet, Lue artikkeli Stuxnetista, esim. Symantec tai Langer. Voit hakea ‘stuxnet analysis’. 1) Miten Stuxnet murtautui koneille? Yleisluontoinen vastaus (mikä hyökkäys millekin käyttöjärjestelmälle mihin komponenttiin) riittää, koska nämä hyökkäykset ovat jo vanhentuneet. 2) Miten ohjaus (command and control, C2) toimi? 3) Miten Stuxnet ylitti ilmaraon (air gap)?

https://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_stuxnet_dossier.pdf

Alkuperäinen Stuxnet pääsi kosketuksiin ensimmäiseen verkkoon luultavasti USB-tikun tai agentin kautta. Ensimmäisen injektion kohde riippui siitä, mikä virustorjuntaohjelmisto koneessa oli asennettuna. Lähes jokaisessa tapauksessa se oli Lsass.exe, mutta Kaspersky 8-9 ja Trend PC Cillinin kohdalla Stuxnet injektoi itsensä suoraan virustorjuntaohjelmiston prosessiin.

Stuxnet hankkii pääkäyttäjän oikeudet Win32k.sys prosessin kautta, MSI10-073. Kun oikeudet on saatu, Stuxnet jättää oman ajurin tietokoneelle, jotta Stuxnet aktivoituu jo käynnistyessä.

Stuxnetin ohjaus toimi kahden palvelimen kautta, www.mypremierfutbol.com ja www.todaysfutbol.com.

Stuxnet pystyy vaihtamaan ohjauspalvelimia lennosta, mutta näin ei ole viimeisten tietojen mukaan tapahtunut missään vaiheessa. Ohjelma lähettää palvelimille tietoa käyttöjärjestelmästä, payload osan koon ilmeisesti sen takia, että voidaan varmistua ohjelman leviämisestä, tietokoneen ja toimialueen nimen, tietokoneen ip-osoitteet ja jotain konfiguraatiodataa Stuxnettiin liittyen.

Ohjelma pyrkii ohittamaan palomuurien sääntöjä muodostamalla yksinkertaisia ASCII linkkejä, joihin tietoja lähetetään.

Stuxnet levisi eteenpäi suljettuun verkkoon todennäköisesti USB-tikun kautta. Ohjelman toiminta leviämisen jälkeen on lähes täysin itsenäistä, joten muuta vaihtoehtoa ei oikein ole.

 

This entry was posted in Uncategorised. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.