Sain Tero Karvisen järjestämän kurssin Linux palvelimena viikon tehtäväksi ratkaista honeynet projektin Scan of the Month 15 tehtävän. Osa komentovinkeistä on kopioitu Tero Karvisen artikkelista: http://terokarvinen.com/2013/forensic-file-recovery-with-linux.

Aloitin tehtävän lataamalla tehtävänannossa olleen imagen, purkamalla sen, ja mountaamalla sen kansioon hda8:

$ wget http://old.honeynet.org/scans/scan15/honeynet.tar.gz
$ tar -xf honeynet.tar.gz
$ cd honeynet
$ mount -o "loop,noexec,nodev,ro"

Seuraavaksi aloin pläräämään levykuvan tiedostoja, saadakseni jonkinnäköisen kokonaiskuvan siitä. Siistin tulosteen tiedostoista saa aikaan Teron laatimalla komennolla:

$ sudo find -printf '%T+ M %p\n%A+ A %p\n%C+ C %p\n'|sort|less

Pläräämisen jälkeen halusin nähdä, mitä kaikkea levykuvalta oli äskettäin poistunut. Tiedostojen palauttaminen ilman asianmukaisia työkaluja on hyvinkin tuskaista, ja vaatii jopa satoja eri komentoja. Onneksi tähän on paketoitu loistava ohjelmistokirjasto, jossa nuo sadat komennot saa suoritettua yhellä komennolla. Komento on tsk_recover ja se sijaitsee sleuthkit paketissa.

Eli asennetaan sleuthkit:

$ sudo apt-get install -y sleuthkit

Seuraavaksi sitten palautetaan allokoidut- ja poistetut tiedostot saastuneesta levykuvasta.

$ mkdir files
$ mkdir files/allocated files/deleted
$ tsk_recover -a honeypot.hda8.dd files/allocated/
$ tsk_recover honeypot.hda8.dd files/deleted/

Seuraavaksi pääsimme selaamaan palautettuja tiedostoja aikaisemmin käytetyllä komennolla:

$ sudo find -printf '%T+ M %p\n%A+ A %p\n%C+ C %p\n'|sort|less

Ei tarvinnut mennä kuin muutaman rivin alaspäin, niin sattumalta osui silmään muutama epäilyttävä tiedosto:
2013-09-19+19:59:56.2092938220 M ./allocated/dev/ida/.drag-on/linsniffer
2013-09-19+19:59:56.2092938220 M ./allocated/dev/ida/.drag-on/logclear

Sniffer ja logcleaner, taidettiin päästä hieman rootkitin jäljille. Katsotaas mitä tämä logcleaner oikein on syönyt:

$ less allocated/dev/ida/.drag-on/logclear

Tuloste (logcleaner):
killall -9 linsniffer
rm -rf tcp.log
touch tcp.log
./linsniffer >tcp.log &

linsniffer prosessin lopettaminen, tcp.log tiedoston poistaminen, ja sen näpistely. Tälläistä toimintaa en tahtoisi palvelimellani tapahtuvan.

Tuosta saatiin paljon lisäapua selvitystä varten. Seuraavaksi haetaan kaikki MAC (= Modify Access Create) aikalogit levykuvasta, ja avataan se siististi less:llä näytölle.

$ tsk_gettimes sda1.dd >rawtimes
$ mactime -b rawtimes|less

Nyt minulla on täydellinen aikakirja palvelimella tapahtuvista muutoksista sen perustamisesta lähtien. Tehtävän annossa annettiin jo yksi tärkeä vihje, päivämäärä 2001-03-15 jolloin rootkit oli päässyt palvelimelle.

Pystymme etsimään lessissä helposti päivämäärän perusteella, hyökkäämis päivän logit kirjoittamalla lessiin:
/Mar 15 2001

Kun pääsin oikealle kohdalle, tein uuden haun aikaisemmin havaitullani tiedostolla logclear:lla.
/logclear

Haku johdatti minut seuraavien tapahtumien luokse:

Fri Mar 16 2001 03:36:48   520333 m... r/rrw-r--r-- 0        0        23       lk.tgz (deleted)
Fri Mar 16 2001 03:44:50   611931 .a.. -/rrwxr-xr-x 0        0        2039     $OrphanFiles/OrphanFile-2039 (deleted)
                                1 .a.. -/rrw-r--r-- 0        0        2040     $OrphanFiles/OrphanFile-2040 (deleted)
                             1345 .a.. -/rrwxr-xr-x 0        0        2043     $OrphanFiles/OrphanFile-2043 (deleted)
                              880 .a.. -/rrw-r--r-- 0        0        2048     $OrphanFiles/OrphanFile-2048 (deleted)
                              344 .a.. -/rrw-r--r-- 0        0        2050     $OrphanFiles/OrphanFile-2050 (deleted)
                              688 .a.. -/rrw-r--r-- 0        0        2052     $OrphanFiles/OrphanFile-2052 (deleted)
                            33280 .a.. r/rrwxr-xr-x 0        0        2055     bin/ps
                            35300 .a.. r/rrwxr-xr-x 0        0        2056     bin/netstat
                           520333 .a.. r/rrw-r--r-- 0        0        23       lk.tgz (deleted)
Fri Mar 16 2001 03:45:02    12288 m.c. d/drwxrwxr-x 0        0        20089    dev/ida
                             4060 .a.. -/rrwxr-xr-x 0        0        2047     $OrphanFiles/OrphanFile-2047 (deleted)
                             8268 .a.. -/rrwx------ 0        0        2053     $OrphanFiles/OrphanFile-2053 (deleted)
                            33280 ..c. r/rrwxr-xr-x 0        0        2055     bin/ps
                            35300 ..c. r/rrwxr-xr-x 0        0        2056     bin/netstat
                            19840 ..c. r/rrwxr-xr-x 0        0        2057     sbin/ifconfig
                            53588 .ac. -/rrwxr-xr-x 0        0        2058     $OrphanFiles/OrphanFile-2058 (deleted)
                               75 .a.. -/rrwx------ 0        0        2059     $OrphanFiles/OrphanFile-2059 (deleted)
                            34816 m.c. d/drwxr-xr-x 0        0        24097    dev
                               71 mac. r/rrw-r--r-- 0        0        26461    dev/rpm
                               71 mac. r/rrw-r--r-- 0        0        26461    etc/mtab~ (deleted-realloc)
                               87 mac. r/rrw-r--r-- 0        0        26479    dev/last
                             2048 m.c. d/drwxr-xr-x 0        0        30121    bin
                            11952 .a.. r/rrwxr-xr-x 0        0        30130    bin/chown
                            66736 ..c. -/rrwxr-xr-x 0        0        30188    $OrphanFiles/OrphanFile-30188 (deleted)
                            60080 ..c. -/rr-xr-xr-x 0        0        30191    $OrphanFiles/OrphanFile-30191 (deleted)
                             3072 m.c. d/drwxr-xr-x 0        0        48193    sbin
                            42736 ..c. -/rrwxr-xr-x 0        0        48284    $OrphanFiles/OrphanFile-48284 (deleted)
                             7165 m.c. r/rrwx------ 0        0        60261    dev/ida/.drag-on/linsniffer
                               75 mac. r/rrwx------ 0        0        60262    dev/ida/.drag-on/logclear
                             4060 mac. r/rrwxr-xr-x 0        0        60263    dev/ida/.drag-on/sense
                             8268 mac. r/rrwx------ 0        0        60264    dev/ida/.drag-on/sl2
                           632066 m.c. r/rrwxr-xr-x 0        0        60265    dev/ida/.drag-on/mkxfs
                              708 m.c. r/rrw-r--r-- 0        0        60266    dev/ida/.drag-on/s
                              540 m.c. r/rrw------- 0        0        60267    dev/ida/.drag-on/ssh_host_key
                             7165 mac. r/rrwx------ 0        0        60269    dev/ida/.. /linsniffer
                               75 mac. r/rrwx------ 0        0        60270    dev/ida/.. /logclear
                             4060 mac. r/rrwxr-xr-x 0        0        60271    dev/ida/.. /sense
                             8268 mac. r/rrwx------ 0        0        60272    dev/ida/.. /sl2
                           632066 .a.. r/rrwxr-xr-x 0        0        60273    dev/ida/.. /mkxfs

Aika ja päivämääriä ei tässä kohti kannata katsoa päivän tarkkuudella, koska on otettava huomioon myös eri aikavyöhykkeet, jolloin logien päivämäärä voi olla eri kuin hyökkäyspäivämäärä sinun ajassasi.
Löysin kuitenkin yhden epäilyttävän paketin heti hakemistorakenteen juuresta – lk.tgz, joka oli vielä poistettu myöhemmin. Palataan aikaisemmin palauttamiimme poistettuihin tiedostoihin, ja listataan ne:

$ cd files/deleted/
$ ls

Tuloste:
etc lk.tgz $OrphanFiles

Löysimme paketin. Puretaan tiedosto ja katsotaan mitä se pitää sisällään:

$ tar -xf lk.tgz

sisällä on last niminen kansio, joka pitää sisällään kasan rootkitin tiedostoja.

$ ls|less

Tuloste:

cleaner
ifconfig
inetd.conf
install
last.cgi
linsniffer
logclear
lsattr
mkxfs
netstat
pidfile
ps
s
sense
services
sl2
ssh
ssh_config
sshd_config
ssh_host_key
ssh_host_key.pub
ssh_random_seed
top