KIRJELDUS
Lae fail alla SIIT ja impordi see omale Virtualboxi
Kui oled masina ära importinud, ava veebilehitseja ja trüki sinna http://192.168.56.101:31337
Alternatiivina saad lahendada seda ülesannet ka otse veebis SIIN
WhaleWarez koosneb kolmest kohustuslikust ja ühest soovituslikust ülesandest ning õpetab kasulikke teadmisi alates veebist ja teravast silmast ning lõpetades skriptimise ja kurivara analüüsiga
Esimeses ülesandes tuleb kasutada path traversal’it, et saada kätte veebiserverist salajased failid
Järgmistes ülesannetes tuleb kasutada reverse engineering’u oskusi, ltrace’i, ncat’i, binwalk’i ja tuleb ka ülesande lahendamiseks sobilik skript valmis kirjutada
ÜLESANNE 1 : VEEB
LAHENDUS
Esimese ülesande alguses oleme sattunud häkkerirühmituse „WhaleWarez” veebilehele, kus on nupp „Access warez”
Nupule vajutades jõuame häkkerirühmituse poolt pakutavate failide listi
Failide listi veebilehe aadressiribal on näha teksti /files.php?folder=warez, millest võib välja lugeda, et meie praeguseks failide kaustaks on warez
Meil on võimalik seda osa aadressist muuta, et näha teisi süsteemis olevaid faile, kirjutades sinna punkti, warez/.. või /var/www/html/ näeme veebilehe juurkaustas olevaid faile
Veebilehe juurkaustas on näha kolme uut faili: planz.odt, uwu.jpg ja malwr32, mis tuleb arvutisse alla laadida
Nupule vajutades jõuame häkkerirühmituse poolt pakutavate failide listi
Failide listi veebilehe aadressiribal on näha teksti /files.php?folder=warez, millest võib välja lugeda, et meie praeguseks failide kaustaks on warez
Meil on võimalik seda osa aadressist muuta, et näha teisi süsteemis olevaid faile, kirjutades sinna punkti, warez/.. või /var/www/html/ näeme veebilehe juurkaustas olevaid faile
Veebilehe juurkaustas on näha kolme uut faili: planz.odt, uwu.jpg ja malwr32, mis tuleb arvutisse alla laadida
ÜLESANNE 2 : PLANZ.ODT
NB! See ülesanne pole kohustuslik, kuid pakub järgnevate ülesannete lahendamiseks vihjeid!
VIHJED
Lahendus on su silme ees
Seda ülesannet saaks ka paberi peal lahendada
Vaata lähemalt
LAHENDUS
Võtame ette faili planz.odt
Tegemist on tavalise OpenDocument failiga, mida saab pea iga kontoritarkvaraga (nt LibreOffice) avada
Pärast dokumendi avamist näeme häkkerirühmituse plaane tulevikuks
Hoolikalt vaadates võib märgata, et mõned tähed on heledamat värvi kui teised
Heledamatest tähtedest saame kokku lugeda märksõnad binwalk ja ltrace, mis on vihjed järgmiste ülesannete lahendamiseks
Tegemist on tavalise OpenDocument failiga, mida saab pea iga kontoritarkvaraga (nt LibreOffice) avada
Pärast dokumendi avamist näeme häkkerirühmituse plaane tulevikuks
Hoolikalt vaadates võib märgata, et mõned tähed on heledamat värvi kui teised
Heledamatest tähtedest saame kokku lugeda märksõnad binwalk ja ltrace, mis on vihjed järgmiste ülesannete lahendamiseks
ÜLESANNE 3 : MALWR32
VIHJED
Tegemist on Linuxi 32bit programmiga
Lahendamiseks tuleb kasutada ltrace tööriista
See programm proovib kuhugile ühenduda
Kohta, kuhu programm proovib ühenduda pole tegelikult olemas
Pordinumber on lahe
LAHENDUS
Võtame ette faili malwr32
Kasutades file käsku, on meil võimalik näha, et tegu on ELF tüüpi käivitatava 32-bitise Linuxi programmiga
Kui käivitame selle faili, näeme me pilti vaalast ja kirja „Trust me, im whale!”, mis ei aita meid kuskile
On aeg uurida mida see programm käivitades täpsemalt teeb - selleks kasutame me tööriista ltrace
Käsu tulemusena avaneb meile selline pilt:
Nagu näha võib, sulgub programm vea tõttu
Viga toimub gethostbyname'is, sest domeeni „whale.warez” ei eksisteeri
Lisame antud domeeni hosts faili, selleks otsime me oma süsteemis üles faili /etc/hosts või C:\Windows\System32\drivers\etc\hosts ja lisame sinna rea „127.0.0.1 whale.warez”
Antud rida tähendab seda, et kui proovida ühenduda aadressiga whale.warez, ühendume me hoopis iseenda arvutiga
Programmi uuesti ltrace'iga käivitades on nüüd tulemus selline:
Nagu võib nüüd näha, proovib programm connect käsu abil võtta ühendust domeeniga whale.warez pordil 1337
Et näha, mida programm proovib antud aadressile saata, seame enda arvutis üles netcat-i kuulaja
Selleks kasutame me käsku nc -lvnp 1337 ja käivitame samal ajal malwr32 programmi
Netcatti ilmub selle ülesande lahendus: 3cscs3ecret
Kasutades file käsku, on meil võimalik näha, et tegu on ELF tüüpi käivitatava 32-bitise Linuxi programmiga
Kui käivitame selle faili, näeme me pilti vaalast ja kirja „Trust me, im whale!”, mis ei aita meid kuskile
On aeg uurida mida see programm käivitades täpsemalt teeb - selleks kasutame me tööriista ltrace
Käsu tulemusena avaneb meile selline pilt:
__libc_start_main(0x5662d239, 1, 0xff970c44, 0x5662d460puts(" .-'\t\t\t\t\n'--./ / _.---.\t"... .-' '--./ / _.---. '-, (__..-` \ \ . | `,.__. ,__.--/ '._/_.'___.-` ) = 126 puts("\n\nTrust me, im whale!" Trust me, im whale! ) = 22 socket(2, 1, 0) = 3 memset(0xff970b64, '0', 16) = 0xff970b64 htons(1337, 48, 16, 0x5662d25f) = 0x3905 gethostbyname("whale.warez") = 0 puts("ewwow" ewwow) = 6 +++ exited (status 1) +++
Nagu näha võib, sulgub programm vea tõttu
Viga toimub gethostbyname'is, sest domeeni „whale.warez” ei eksisteeri
Lisame antud domeeni hosts faili, selleks otsime me oma süsteemis üles faili /etc/hosts või C:\Windows\System32\drivers\etc\hosts ja lisame sinna rea „127.0.0.1 whale.warez”
Antud rida tähendab seda, et kui proovida ühenduda aadressiga whale.warez, ühendume me hoopis iseenda arvutiga
Programmi uuesti ltrace'iga käivitades on nüüd tulemus selline:
__libc_start_main(0x56639239, 1, 0xff814804, 0x56639460puts(" .-'\t\t\t\t\n'--./ / _.---.\t"... .-' '--./ / _.---. '-, (__..-` \ \ . | `,.__. ,__.--/ '._/_.'___.-` ) = 126 puts("\n\nTrust me, im whale!" Trust me, im whale! ) = 22 socket(2, 1, 0) = 3 memset(0xff814724, '0', 16) = 0xff814724 htons(1337, 48, 16, 0x5663925f) = 0x3905 gethostbyname("whale.warez") = 0xf76d6960 memcpy(0xff814728, "\177\0\0\001", 4) = 0xff814728 connect(3, 0xff814724, 16, 0x5663925f) = 0xffffffff exit(1 +++ exited (status 1) +++
Nagu võib nüüd näha, proovib programm connect käsu abil võtta ühendust domeeniga whale.warez pordil 1337
Et näha, mida programm proovib antud aadressile saata, seame enda arvutis üles netcat-i kuulaja
Selleks kasutame me käsku nc -lvnp 1337 ja käivitame samal ajal malwr32 programmi
Netcatti ilmub selle ülesande lahendus: 3cscs3ecret
ÜLESANNE 4 : uwu.jpg
VIHJED
Lahendus pole pildil
Tuleb kasutada binwalk tööriista
Olen kuskil seda parooli just näinud
Neid ZIP faile ei jaksa küll käsitsi lahti pakkida
LAHENDUS
Võtame ette faili uwu.jpg
Tegemist on pealtnäha tavalise JPEG pildifailiga, kuid tegelikkuses on selles peidus üks peidetud ZIP fail
Kasutades tööriista binwalk on võimalik meie pildifailist käsuga binwalk -e uwu.jpg kätte saada fail 17125.zip
Uurides selle ZIP faili sisu, tuleb välja et tegu on krüpteeritud ning parooliga kaitstud ZIP failiga
Õnneks aga tuleb välja, et me saame eelmises ülesandes leitud lahendust paroolina kasutada ning ZIP faili lahti pakkida: unzip -P 3cscs3cret 17125.zip
Nüüd on meil on uus fail nimega what_is_this8999.zip, mille sees on omakorda fail what_is_this8998.zip, mille sees on omakorda what_is_this8997.zip jne
9000 faili käsitsi lahti pakkida on tülikas, nii et me kirjutame selle jaoks skripti endale sobivas programmeerimiskeeles
Näide bash'i skriptist ülesande lahendamiseks:
Kõige lõpus, peale 9000 faili lahtipakkimist, on meil käes fail what_is_this.png, mis on tavaline pildifail QR koodiga, mida on võimalik pea iga QR-koodi skänneriga skaneerida
Saame kätte lõpptulemuse: ponyflag
Tegemist on pealtnäha tavalise JPEG pildifailiga, kuid tegelikkuses on selles peidus üks peidetud ZIP fail
Kasutades tööriista binwalk on võimalik meie pildifailist käsuga binwalk -e uwu.jpg kätte saada fail 17125.zip
Uurides selle ZIP faili sisu, tuleb välja et tegu on krüpteeritud ning parooliga kaitstud ZIP failiga
Õnneks aga tuleb välja, et me saame eelmises ülesandes leitud lahendust paroolina kasutada ning ZIP faili lahti pakkida: unzip -P 3cscs3cret 17125.zip
Nüüd on meil on uus fail nimega what_is_this8999.zip, mille sees on omakorda fail what_is_this8998.zip, mille sees on omakorda what_is_this8997.zip jne
9000 faili käsitsi lahti pakkida on tülikas, nii et me kirjutame selle jaoks skripti endale sobivas programmeerimiskeeles
Näide bash'i skriptist ülesande lahendamiseks:
while [ "`find . -type f -name '*.zip' | wc -l`" -gt 0 ]; do find -type f -name "*.zip" -exec unzip -- '{}' \; -exec rm -- '{}' \; done
Kõige lõpus, peale 9000 faili lahtipakkimist, on meil käes fail what_is_this.png, mis on tavaline pildifail QR koodiga, mida on võimalik pea iga QR-koodi skänneriga skaneerida
Saame kätte lõpptulemuse: ponyflag