Harjoitustehtävän aiheena oli tutkia rootkit-tyyppisen haittaohjelman saastuttamaa Linux-levykuvaa. Harjoitus tehtiin käyttäen netistä vapaasti saatavaa Honeynet Project: Scan Of Month 15 tehtävää ja siinä annettua levykuvaa. Tehtävässä kuvattiin levykuvan sisältämä poistetun rootkit ohjelman palautustoimenpiteet ja analysoitiin siihen kuuluvia tiedostoja.
Harjoitusympäristö
Harjoitus suoritettiin 09.09.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta, johon oli asennettu Xubuntu versio 12.04 32-bittinen Linux käyttöjärjestelmä.
Lenovo R60 kokoonpano:
- Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
- Keskusmuisti: 4 Gt DDR2
- Kiintolevy: 100 Gt SATA150 54000rpm
- Käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen
Levykuvan lataaminen ja Autopsy ohjelman asentaminen
Harjoituksen tekeminen aloitettiin lataamalla tutkittava levykuva honeynet.tar.gz Honeynet Project:n sivulta. Levykuva purettiin omaan Documents kansioon käyttäen XFCE:n graafisia työkaluja Thunaria ja Archive Manageria. Lopptulokseksi saatiin honeynet kansio, joka sisälsi dd ohjelmalla tehdyn levykuvan saastuneen järjestelmän / eli juuri tiedostojärjestelmästä. Levykuvan analysointia varten asennettiin Autopsy Forensic Browser, joka toimii graafisena käyttöliittymänä digitaalisen rikostutkinnan Sleuth Kit työkalulle. Aloitin asennuksen päivittämällä Ubuntun pakettivarastot komennolla:
$sudo apt-get update
Pakettivarastojen päivitys kesti muutamia sekunteja.
Asensin Autopsy ohjelman komennolla:
$sudo apt-get install autopsy
Asennus kesti parikymmentä sekuntia.
Autopsy ohjelman käynnistäminen
Käynnistin Autopsy ohjelman komennolla:
$sudo autopsy
Autopsy käynnistyi ja kehotti avaamaan käyttöliittymän selaimella:
Avasin Firefox selaimen ja ensiksi otin turvallisuussyistä JavaScript tuen pois käytöstä selaimen asetuksista:
Seuraavaksi siirryin Autopsyn käyttöliittymään kirjoittamalla selaimeen osoitteen http://localhost:9999/autopsy
Levykuvan avaaminen
Aloitin levykuvan avaamisen valitsemalla linkin Open Case. Seuraavasta ikkunasta valitsin linkin New Case. Syötin seuraavan ikkunaan tapauksen nimeksi SOTM_15:
Seuraavassa ikkunassa lisäsin tutkittavan tapauksen isäntäkone valitsemalla linkin Add Host. Seuraavassa ikkunassa jätin oletusarvon isäntäkoneen nimelle host1 ja muihin kenttiin:
Seuraavassa ikkunassa lisäsin tutkittavan levykuvan valitsemalla linkin Add Image File:
Seuraavassa ikkunassa määritin kenttään Location levykuvan polun tiedostojärjestelmässä. Levykuvan tyypiksi annoin Partition ja levykuvan importointimenetelmäksi Copy:
Seuraavassa ikkunassa jätin oletusasetukset päälle ja valitsin linkin Add. Levykuvan lataaminen Autopsy ohjelmaan kesti muutamia sekunteja ja valitsin seuraavassa ikkunassa linkin Ok.
Levykuvan analysointi
Scan Of Month 15 tehtävän lähtötiedoissa kerrottiin, että levykuvassa olevan järjestelmään ladattiin rootkit-ohjelma 15. maaliskuuta 2001, joka sen jälkeen poistettiin (delete) järjestelmästä. Annettua päivämäärä voidaan hyödyntää rootkitin tiedostoja etsittäessä. Analyysin taustaoletuksena on että rootkitin tiedostoja löytyy nimenomaan poistettujen, mutta vielä palautettavissa olevien tiedostojen joukosta ja niiden päivämäärätiedot viittaavat 15. maaliskuuta 2001 (+/- 1 päivää aivavyöhykkeiden erot huomioon otettaessa).
Aloitin levykuvan tutkimisen tarkastelemalle yleisesti levykuvan hakemistorakennetta ja tiedostoja. Avatun levykuvan valintaikkunassa valitsin linkin Analyze:
Valitsin seuraavasta ikkunasta linkin File Analysis, jolla pääsin tutkimaan levykuvan hakemistorakennetta. Juurihakemistosta paljastuu heti kaksi poistettua epäilyttävää tiedostoa: kansio last ja TGZ muotoinen last.tgz pakettitiedosto. Tiedostoissa on epäilyttävää niiden poikkeava sijainti tiedostojärjestelmässä, joka ei ole Linuxissa yleisesti käytetyn FHS standardin mukainen. Epäilyksiä lisää myös, että tiedostot ovat poistettuja. Koska tiedostojen varaama tilaa ei ole allokoitu uudestaan (kirkas punainen väri), ne voidaan palauttaa tarkempaa tutkimusta varten:
Ennakkotiedoissa kerrottiin, että rootkit-ohjelma on poistettu järjestelmästä. Edellä kuvattujen tiedostojen oletetaan kuuluvan rootkitin tiedostoihin. Levykuvan tiedostolistauksessa näkyy kansio nimeltä $OrphanFiles. Se on Autopsyn taustalla toimivan Sleuth Kit ohjelmiston muodostama virtuaalinen kansio, joka sisältää osittainen poistetut, “orvot” tiedostot, joilla ei ole enää hakemistopolkua ja nimeä. “Orpojen” tiedostojen varsinainen data on kuitenkin vielä tallessa, mikäli kyseisiä tiedostojärjestelmän lohkoja ei ole varattu uuteen käyttöön. Tälläisiä tiedostoja voi jäädä levylle kun ohjelmat “kaatuvat” tai kun tiedosto poistetaan, mutta se on vielä avattuna jollakin prosessilla. Tarkistin $OrphanFiles kansion sisällön ja havaitsin sen sisältävän useita tiedostoja, joiden päivämäärissä näkyy 15. tai 16. maaliskuuta 2001. Näiden voidaan olettaa sisältävän rootkitin tiedostoja:
$OrphanFiles kansion analysointi
Kävin läpi kaikki $OrphanFiles kansion tiedostot ja tutkin niiden sisältöä, jonka saa näkyviin valitsemalla tiedoston nimen edellä kuvatussa ikkunassa. Käytin binääritiedostojen kohdalla ASCII Strings valintaa, joka tulostaa binääritiedoston sisältämät merkkijonot. Tein seuraavia huomioita tiedostoista, jotka ovat nimetty on EXT tiedostojärjestelmän metadatan mukaisilla inode numeroilla.
Inodeen viittava tiedostonimi | Lyhyt analyysi tiedostosta |
---|---|
/1/$OrphanFiles/OrphanFile-16110 | /etc/pam.d/passwd asetustiedosto, joka määrittää PAM autentikointijärjestelmässä tapahtuvaa salasanojen tarkistusta |
/1/$OrphanFiles/OrphanFile-2039 | ajettava binääriohjelma, rsh komento, jolla voidaan ajaa shell komentoja toisena käyttäjänä tai verkon yli toisella koneella, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2040 | 1 tavun mittainen binääritiedosto, joka sisältö heksakoodina on 0x0A |
/1/$OrphanFiles/OrphanFile-2041 | oletettu rootkin asennukseen käytetty omatekoinen shell skripti, erittäin epäilyttävä |
/1/$OrphanFiles/OrphanFile-2042 | ajettava binääriohjelma, joka sisältää ainoastaan linkkauksen järjestelmäkirjastoon /lib/ld-linux.so.1, mahdollisesti haittaohjelma |
/1/$OrphanFiles/OrphanFile-2043 | järjestelmän lokeja hävittävä omatekoinen shell skripti, jonka komenttirivillä käytetään nimeä “sauber”, vaikuttaa epäilyttävältä |
/1/$OrphanFiles/OrphanFile-2044 | /etc/inetd.conf asetustiedosto, inetd (Internet service daemon) on Internet-palvelujen hallintaan käytetty taustaprosessi, jota käyttävät esim. telnet ja ftp palvelut, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2044 | omatekoinen lyhyt shell skripti, joka käyttää linsniffer nimistä ohjelmaa, luultavasti kuuluu rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2046 | /etc/services asetustiedosto, jota inetd käyttää yhdistämään Internet-palveluiden porttinumerot ja protokollat palvelunimiin, luultavasti kuuluu rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2047 | PERL kielinen skripti, jonka kommenttirivillä on kuvaus # Sorts the output from LinSniffer 0.03 [BETA] by Mike Edulla <medulla@infosoc.com> |
/1/$OrphanFiles/OrphanFile-2048 | SSH:n ssh_config asetustiedosto, joka sisältää SSH asiakkaan järjestelmänlaajuiset asetukset, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2049 | SSH RSA1 tyyppinen yksityinen avain, email osoite root@dil2.datainfosys.net |
/1/$OrphanFiles/OrphanFile-2050 | SSH known_hosts tyyppinen yhden julkisen avaimen sisältävä tiedosto, avaimen email osoite root@dil2.datainfosys.net |
/1/$OrphanFiles/OrphanFile-2051 | lyhyt binääritiedosto, oletettavasti SSH kryptografisiin funktioihin käyttämä random_seed tiedosto |
/1/$OrphanFiles/OrphanFile-2052 | SSH:n sshd_config asetustiedosto, joka sisältää SSH palvelimen järjestelmänlaajuiset asetukset, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2053 | ajettava binääriohjelma, ASCII Strings työkalulla tutkittuna oletetaan palvelunesto (DoS) hyökkäykseen käytettäväksi haittaohjelmaksi, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2054 | ajettava binääriohjelma, jonka sisällä HTML-koodia sisältäviä merkkijonoja, oletetaan HTML-koodin perusteella CGI:tä käyttäväksi backdoor haittaohjelmaksi, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2058 | ajettava binääriohjelma, prosessienhallintaan käytetty top komento, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2059 | omatekoinen shell komentoja sisältä tekstitiedosto, käyttää linsniffer ohjelmaa, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2060 | SSH:n sshd_config asetustiedosto,joka sisältää SSH palvelimen järjestelmänlaajuiset asetukset, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-2061 | ajettava binääriohjelma, sshd palvelin, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-30188 | ajettava binääriohjelma, netstat komento, jota käytetetään verkkoyhteyksien diagnosoimiseen, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-30191 | ajettava binääriohjelma, ps komento, jolla listataan prosesseja, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-48284 | ajettava binääriohjelma, ifconfig komento, jota käytetään verkkoadapterien konfiguroimiseen, kuuluu luultavasti rootkitin tiedostoihin |
/1/$OrphanFiles/OrphanFile-56231 | binääritiedosto, joka sisältää 0×0 arvoisia tavuja |
/1/$OrphanFiles/OrphanFile-8100 | tekstitiedosto, joka sisältää shell komentojen nimiä ja lyhyitä kuvauksia, oletetaan liittyvän komentotulkkiin (bash) |
$OrphanFiles kansion analysoinnissa löydettiin todennäköinen rootkitin asentava shell skripti (inode 2041); rootkitin käyttämiä väärennettyjä versioita järjestelmäkomennoista (inodet 2039,30188,30191,48284) sekä väärennettyjä versioita asetustiedostoista(inodet 2044,2046); rootkitin todennäköisesti asentama SSH palvelin ja siihen liittyviä asetustiedostoja (inodet 2048-2052, 2060,2061 ); palvelunesto hyökkäykseen käytettävä haittaohjelma (inode 2053).
/etc kansion analysointi
Kansiosta /etc löytyi epäilyttävä poistettu tiedosto mtab~, jonka sisältö ei ollut normaalin mtab tiedoston mukainen. Kyseisen tiedoston pitäisi sisältää tiedot järjestelmään mountatuista tiedostojärjestelmistä:
Tiedoston sisältöö viittaa rootkitin asentamiin haittaohjelmiin, joita on tarkoitus piilottaa. Lisää epäilyttäviä tiedostoja löytyy init taustaprosessin asetustiedostoista /1/etc/rc.d/ kansion alta. Runlevel 3 asetustiedostoista löytyy poistettu tiedosto /1/etc/rc.d/rc3.d/K83ypbind, jonka sisältö ei näytä oikealta init skriptiltä:
Sisältö viittaa $OrphanFiles kansiosta löytyneeseen PAM asetustiedostoon (inode 16110). Saman niminen poistettu löytyy myös toisesta kansiosta /1/etc/rc.d/rc0.d/K83ypbind. Sisältö on erilainen verrattuna toiseen samannimiseen ja tämäkään ei vaikuta tavalliselta:
Tutkittaessa kaikkien init taustaprosessin run level kansioita (/etc/rc.d/rc0.d … rc6.d) havaitaan että K83ypbind tiedosto on löytyy poistettuna jokaisesta kuudesta kansiosta. Tiedoston nimi viittaa ypbind taustaprosessiin, joka liittää palvelimen NIS hakemistopalvelun toimialueeseen. NIS on vanhentunut hakemistopalveluprotokolla, jonka LDAP/Active Directory on korvannut. Poistettujen tiedostojen epäillään liittyvän rootkitin toimintaan. Lisäksi /etc/rc.d/rc.sysinit tiedostossa havaitaan epäilyttävä rivi tiedoston lopussa:
/usr/bin/lsattr -t1 -X53 -p
Komennon tarkoitus ei käy selville eikä sitä ole kommentoitu mitenkään.
/dev kansion analysointi
Kansiosta /dev löytyi epäilyttävä hakemisto /dev/ida, jota epäillään heti rootkin luomaksi kansioksi. Sen sisältää löytyy epäilyttävä /dev/ida/.drag-on kansio ja /dev/ida/”..” kansio, joita rootkit käyttää piilottamaan omia tiedostojaan. Hämäävästi nimetty “..” kansio sisältää rootkitin tiedostoja, joita löytyi myös $OrphanFiles kansiosta:
Tiedostojen havaitaan sisältävän Ethernet-liikennettä nuuskiva linsniffer työkalu, piilotetty sshd palvelin (tiedosto mkxfs), skripti logien tyhjentämiseen (tiedosto logclear) ja haittaohjelma palvelinestohyökkäyksien toteuttamiseen (tiedosto sl2). Kansio /dev/ida/.drag-on sisältää samat tiedostot kuin edellä mainittu kansio. Tarkoituksena lienee hämätä palvelimen ylläpitäjää ja vaikeuttaa rootkitin poistamista.
Epäilyttävästä tiedosto /dev/last löytyy rootkitin tekijän käyttämiä IP-osoitteita ja TCP-protokollien portteja. Tiedoston sisältämien IP-osoitteet sijaitsevat Ubuntun geoiplookup työkalun mukaan Romaniassa, Azerbaidžanissa ja Tanskassa. Porttien numeroita ovat 48744, 3666, 31221, 22546 ja 2222. Tiedostonimien perusteella oletan, että rootkitin tekijä käyttää itsestään pseudonyymiä last.
Epäilyttävästä tiedostosta /dev/rpm löytyy viittauksia rootkitin käyttämiin haittaohjelmiin, joita on tarkoitus piilottaa. Tiedostolla on samanlainen sisältö kuin edellä mainitulla tiedostolla /etc/mtab~.
Keyword Search haku levykuvasta
Käytin Autopsyn tarjoamaa Keyword Search toimintoa, jolla hain hakusanalla “last” suoraan levykuvan sisällöstä. Tiedostojärjestelmän fragmentista 90417 löytyi rootkitin tekijälleen lähettämä sähköpostiviesti, johon oli kerätty tietoja kaapatusta koneesta:
Rootkitin asennuspakettti last.tgz
Käytin Autopsyn Export toimintoa, jolla pystyin palauttamaan levykuvan juurihakemistosta poistetetun tiedoston last.tgz. Tarkastelemalla pakettia Xubuntun Archive Manager työkalulla, havaitsin sen sisältävän kaikki rootkitin käyttämät tiedostot:
Yleisesti ottaen totean levykuvan sisältämän rootkitin toiminnaltaan ja tiedostorakenteeltaan vastaavan Anton Chuvakinin analyysiä (Chuvakin 2003) ensimmäisen sukupolven binääri rootkitista. Levykuvan sisältämä rootkit on Chuvakisin esittelemän rootkitin variantti tai suora kopio.
Käytetyt ohjelmistot
Autopsy Forensic Browser http://www.sleuthkit.org/autopsy/desc3.php
Lähteet
Chuvakin, Anton 2003. An Overview of Unix Rootkits.
http://www.rootsecure.net/content/downloads/pdf/unix_rootkits_overview.pdf
Dittrich, Dave 2002. “Root Kits” and hiding files/directories/processes after a break-in.
http://staff.washington.edu/dittrich/misc/faqs/rootkits.faq
Grundy, Barry J. 2008. The Law Enforcement and Forensic Examiner’s Introduction to Linux.
http://linuxleo.com/Docs/linuxintro-LEFE-3.78.pdf
Honeynet Project 2001. Scan Of Month 15.
http://old.honeynet.org/scans/scan15/
Karvinen, Tero 2012. Linux palvelimena ICT4TN003-4 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-4-ja-ict4tn003-6-syksylla-2012
Khoo, Martin 2001. P0st-M0rt3m 0f 4 R00tk1t 4tt4ck.
http://www.blackhat.com/presentations/bh-asia-01/khoo.ppt
Neary, David 2004. PAM and password control.
http://www.linux.ie/articles/pam.php
Tweedie, Stephen 2000. EXT3, Journaling Filesystem.
http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html
UNSEKURITY TEAM, s.a. HACKING DE WEB.
http://www.ataliba.eti.br/sections/old-hacking/unsekurity/texto1/detonaweb.txt
About
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen
Avainsanat: autopsy, digital forensics, haittaohjelmat, rootkit analysis, sleuth kit, tietoturva