w49 j-7 Ratkaise Honeynet Scan of The Month 15. Tutustu johonkin itsellesi uuteen tietokonerikosten tutkimiseen sopivaan työkaluun. Tee koko kurssista lunttilappu (älä tuo sitä kokeeseen).
Suoritin harjoituksen ensimmäisen osan 08.12.2005 aikana, luokassa 5013 koneella numero 06. Aikaa harjoitukseen kului kaiken kaikkiaan noin 4 tuntia, josta dokumenttien kirjoittaminen vei noin tunnin verran.
Aloitin harjoituksen tutustumalla ensin tehtävän toimeksiantoon, joka löytyi täältä. Tehtävän toimeksianto oli helpohkon kuuloinen, mutta kahden työntäyteisen tunnin jälkeen täytyi myöntää, että ei tämä tietokonerikosten tutkinta ole todellakaan mikään helppo juttu.
Olin tuntien aikana koettanut päästä jyvälle tilanteesta ensin pelkkien standardi työkalujen avulla, (ls, find, jne...). Näiden komentojen avulla löysinkin mielestäni selkeitä indikaatioita siitä, että koneeseen oli kopioitu uusia ohjelmia vanhojen päälle. Esimerkiksi /bin hakemistoon oli ilmaantunut iso kasa symbolisia linkkejä, sekä myös ps ja netstat komennot oli korvattu uusilla binääreillä.
Tähän asti päästyäni jouduin kuitenkin myöntämään, että tavallisilla työkaluilla ei näyttänyt tämän pidemmälle pääsevän, joten kävin hakemassa opettajan suosittelemat Sleuthkit & Autopsy työkalut avuksi. Molemmat välineet löytyvät täältä.
Näistä Sleuthkit näytti olevan se "perusta", eli kokoelma komentoriviohjelmia murretun järjestelmän tutkimiseen. Autopsy puolestaan oli graafinen (web)käyttöliittymä sleuthkitin työkalujen käyttöön. Työskentelin loppuosan tunneista Autopsyn avulla, jolla pääsikin nopeasti asennetun rootkitin jäljille. Ainoa ongelma tässä oli se, että graafisen työkalun perusteella ei tullut oikein kunnollista näppituntumaa siihen mitä itseasiassa piti tehdä, jotta näihin johtopäätöksiin päästiin. Siispä päätin tehdä harjoituksen uudestaan käyttämällä pelkästään Sleuthkitin työkaluja, jotta pääsisin hiukan tarkemmin jyvälle siitä miten nämä asiat oikeasti pitää tehdä...
Uusi päivä, uudet kujeet...
Eli hommahan alkoi siis niin, että haettiin ensin tutkittava levykuva täältä. Seuraavaksi oli vuorossa ladatun paketin md5sum-tarkistukset, paketin purku sekä puretun paketin md5sum-tarkistus, jonka avulla voidaan todeta, että haettu paketti on ehjä ja käyttökelpoinen.
# cat md5sums honeynet.tar.gz md5sum vertailuarvo on 0dff8fb9fe022ea80d8f1a4e4ae33e21 honeypot.hda8.dd md5sum vertailuarvo on 5a8ebf5725b15e563c825be85f2f852e # # md5sum honeynet.tar.gz 0dff8fb9fe022ea80d8f1a4e4ae33e21 honeynet.tar.gz # tar zxvf honeynet.tar.gz # md5sum honeypot.hda8.dd 5a8ebf5725b15e563c825be85f2f852e honeypot.hda8.dd
Eli ladatut tiedostot näyttäisivät olevan kunnossa. Seuraava steppi oli luoda hakemisto johon purettu levy partitio image mountataan. Lisäksi mounttaamisessa tuli noudattaa kaikkia mahdollisia varakeinoja, joilla estetään imagen sisällön vahingoittuminen ja mahdollinen vahingollisten tiedostojen ajaminen. Tämä tapahtui näin:
# cd / # mkdir murto # cd murto # mkdir honeypot # cp /tmp/honeypot.hda8.dd . # mount -o loop,nodev,noexec,noatime,nosuid,nomand,ro honeypot.hda8.dd honeypot
Tämän jälkeen alkoikin sitten mountatun levykuvan varovainen tutkiskelu... Alkuun olinkin jo päässyt aikaisemmalla kerralla ja tiesin, että /bin hakemiston alla oleviin binääreihin oli tehty muutoksia, sillä olin löytänyt järjestelmästä aikaisemmalla tutkimiskerralla tiedostoja, joita oli muutettu juuri murron aikoihin.
Koetin myös etsiä murron aikoihin tehtyjä/muutettuja tiedostoja find:n avulla, mutta en heti ensimmäisellä kerralla onnistunut keksimään syntaksia, jolla tämä olisi onnistunut. Myöhemmän tutkiskelun perusteella näyttäisi homma onnistuvan esim. näin:
touch -t 02010000 /tmp/stamp$$ find /usr -newer /tmp/stamp$$ rm -f /tmp/stamp$$
Ylläolevassa komentosarjassa luodaan ensin touch-komennolla tietyn aikaleiman omaava tiedosto, käytetään find komentoa ja -newer parametriä yhdessä juuri luodun tiedoston kanssa löytääksemme /usr hakemistosta kaikki tiedostot, jotka ovat uudempia kuin aikaleima tiedostomme. Helppoa, eikö totta? Löysin yo. mallin findin käytöstä täältä.
Valitettavasti en tosin ehtinyt testaamaan tuota findin syntaksia honeypot-mounttiin ajanpuutteen vuoksi...
Kun olin löytänyt /bin hakemistosta nuo epäilyttävät filet, kävin seuraavaksi tarkistamassa systeemin lokitiedostoja. Valitettavasti lokeja ei tähän levykuvaan näyttänyt kuuluvan, sillä /var hakemisto oli täysin tyhjä, joten lokeista ei ollut tällä kertaa mitään hyötyä. Rootin bash-history sen sijaan paljasti melkoisen mielenkiintoisia asioita:
# cat .bash_history exec tcsh ls mkdir /var/... ls cd /var/... ftp ftp.home.ro tar -zxvf emech-2.8.tar.gz cd emech-2.8 ./configure y make make make install mv sample.set mech.set pico mech.set ./mech cd /etc pico ftpaccess ls exit
Näemmä root:n oikeuksilla on asennettu jokin ohjelmisto emech-2.8.tar.gz paketista. Kyseinen paketti sisältää Googlen perusteella IRC-bot ohjelmiston. Tämän löydöksen jälkeen voisi jo melkoisella varmuudella sanoa, että koneelle on selkeästikin tehty jotain, jonka seurauksena rootin oikeudet on saanut käsiinsä joku, jolle ne eivät kuulu.
Nyt sitten oli jäljellä enään itse rootkitin paikallistaminen. Tähän tarvittiin jo hiukan edistyneempiä työkaluja. Opettajan suositusten perusteella olin jo aikaisemmin ladannut koneelleni Sleuthkit-ohjelmiston, joka löytyy siis täältä. Ohjelman asennus hoitui purkamalla paketti kohdehakemistoon ja ajamalla perään make-komento. Tämän jälkeen homma jatkui siten, että tutkitaan mitä tiedostoja on levykuvan sisällä viimeksi deletoitu:
# fls honeypot.hda8.dd d/d 11: lost+found d/d 4017: boot d/d 8033: home d/d 12049: usr d/d 16065: var d/d 20081: proc d/d 22089: tmp d/d 24097: dev d/d 26105: etc d/d 30121: bin d/d 34137: lib d/d 38153: mnt d/d 44177: opt d/d 46185: root d/d 48193: sbin d/d 60258: floppy r/r * 23: lk.tgz d/d * 2038: last
Näistä viimeiset kaksi riviä näyttävät mielenkiintoisilta. "lk.tgz" nimisestä tiedostosta Google vihjaisi, että kyseessä saattaisi olla rootkit (monta linkkiä samaiseen scan15-artikkeliin, jota tässä paraikaa ratkomme... ). Okei, jos kyseessä on rootkit-paketti, voisi olla mielenkiintoista vilkaista itse paketin sisältöä. Siispä kaivamme esiin icat-ohjelman, jolla pystytään palauttamaan tiedostoja inode-numeron perusteella:
# icat honeypot.hda8.dd 23 > lk.tgz
Näin näppärästi saimme siis palautettua tuon epäilyttävän tiedoston, joka oli deletoitu alkuperäiseltä levyosiolta. Tässä on samalla myös yksi erittäin hyvä perustelu sille, miksi murron huomaamisen jälkeen kannattaa edetä varoen. Paniikissa suoritettu koneen sammuttaminen, tai tiedostojen siirtely/lisääminen/tuhoaminen saattaa helposti poistaa näitä erittäin hyödyllisiä johtolankoja koneelta...
Seuraavaksi olikin jo vuorossa palautetut tar-paketin sisään vilkaiseminen, joka paljasti seuraavaa:
# tar zxvf lk.tgz last/ssh last/pidfile last/install last/linsniffer last/cleaner last/inetd.conf last/lsattr last/services last/sense last/ssh_config last/ssh_host_key last/ssh_host_key.pub last/ssh_random_seed last/sshd_config last/sl2 last/last.cgi last/ps last/netstat last/ifconfig last/top last/logclear last/s last/mkxfs # cd last # ls cleaner last.cgi mkxfs s ssh ssh_random_seed ifconfig linsniffer netstat sense ssh_config sshd_config inetd.conf logclear pidfile services ssh_host_key top install lsattr ps sl2 ssh_host_key.pub
Paketin sisältä näytti löytyvän paljon mielenkiintoista tavaraa, josta mielestäni selkeästi näki, että kyseessä on paketti ohjelmistoja, joiden avulla järjestelmään saa luotua takaoven murtautujalle, sekä pystytettyä oleellisia palveluita tulevaisuuden käyttöä varten. Tämä oli helppo varmistaa tutkimalla install tiedostoa, joka oli koko rootkitin asennusohjelma.
Näiden vaiheiden jälkeen oli mielestäni selkeästi todettavissa, että tähän järjestelmään oli asennettu onnistuneesti rootkit-paketti. Asia oli helppo varmistaa laskemalla md5sum /bin hakemiston ps ja netstat komennosta sekä lk.tgz paketin ps ja netstat komennosta ja vertaamalla tuloksia.
Pitkällisestä tutkimisesta ja pähkäilystä huolimatta en keksinyt (saatikka löytänyt todisteita siitä) miten järjestelmään oli alunperin murtauduttu. Tämä olisi mielestäni ollut erittäin hyödyllistä tietää ja asia jäikin näinollen hiukan harmittamaan...
Tämä oli ehdottomasti kurssin mielenkiintoisin harjoitus ja samalla suuritöisin - ainakin minulle. Alkuihmettelyn jälkeen tekemäni päätös käyttää pelkkää Sleuthkit-ohjelmistoa oli omasta mielestäni erittäin hyvä ratkaisu. Tekemällä asiat komentoriviltä ja vaiheittain selkeytti huomattavasti omia ajatuksia siitä, mitä missäkin vaiheessa olisi järkevää tehdä. Graafisen Autopsy-työkalun avulla oli liian helppo hypätä oletuksista "faktoihin", jolloin koko prosessin hahmottaminen oli huomattavan paljon hankalampaa. Tosin luettuani jälkikäteen muutamia malliratkaisuja honeynetin sivuilta, tuli minulle tunne, että päättelyketjuissani on kuitenkin vielä runsaasti parannettavaakin ;)
Harjoitus herätti onnistuneesti mielenkiinnon aiheeseen, joka tulee kostautumaan omalla ajalla suoritettuna lisäperehtymisenä aiheeseen. Kiitokset tästä opettajalle!! ;)
Copyright (c) 2005 Mika Karjalainen. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.