Početak je jednostavan kao i svaki drugi. Nakon logiranja u računalo rutinski sam pokrenuo komandu ps ax da vidim koji se procesi izvršavaju i da na taj način steknem dojam kako računalo "diše". Pažnju krajička oka privukao je proces koji se zvao ./passbnc. Najmanje dvije stvari su bile čudne:
Iako sam pročitao mnogo tekstova o provalama u računalske sustave, moram priznati da se ponašam kao valjda i svi ostali: to je nešto što se meni ne može desiti. Međutim, stvarnost je bila okrutna: imamo uljeza na firewall računalu koji posjeduje root privilegije.
Prva i najvažnija stvar je ne paničariti (svi serveri trebali bi imati napisano velikim prijateljskim slovima DON'T PANIC na sebi). Dakle, prvo je trebalo provjeriti da li je uljez još uvijek na računalu i što je uopće taj proces passbnc koji se izvršava. Kako se radilo o linux serveru, logičan slijed stvari je pisanje locate passbnc. Program je nađen na neobičnom mjestu: u /dev direktoriju postojao je direktorij kojemu je ime bilo tri točke (...) i sadržavao je spomenuti program.
Ukoliko je ikada postojala sumlja da je to možda neki od validnih programa ili da mašina nije kompromitirana, sve su one u taj trenutak nestale. Primjetio sam još jednu zanimljivu stvar: ušavši u direktorij /dev/... i napisavši ls našao sam samo dvije datoteke od kojih niti jedna nije bila passbnc. Zapravo, prva stvar prije nego što sam ušao u direktorij je bilo pokretanje less /dev/.../passbnc čime sam se uvjerio da je program tamo, i da se radi o binary programu (šteta, za skriptu bih lakše otkrio što radi). Kako to onda da se datoteke ne ispisuju? Što li je napadač učinio sa ls komandom? Kako bih se uvjerio da je u pitanju problem sa ls-om, iskoristio sam stari trik kada ls ne radi: echo * ispisao je više datoteka, za moj ukus čak i previše.
Ako je do tada postojala privlačnost imanja nepoznatog procesa na računalu, ona je isčeznula. Kako je bio petak navečer, bilo je relativno jednostavno isključiti firewall računalo iz mreže preko vikenda. Korisnici će nekako preživjeti taj jedan vikend bez pristupa modemom. Računalo je spušteno u jednokorisnički način rada, prije svih password-a dodana je zvjezdica (da bi se zabranilo daljnje logiranje na potencijalno provaljene račune) i daljnja analiza je prepuštena za slijedeći tjedan.
Potpuni sadržaj direkorija /dev/... je izgledao ovako:
root@tower:/dev/...> ls -al total 5046 drwxr-xr-x 2 root root 1024 Jun 24 01:28 . drwxr-xr-x 3 root root 20480 Oct 28 10:39 .. -rw-r--r-- 1 root root 3290 Dec 1 1996 bcast.0321 -rw-r--r-- 1 root root 277 Jun 25 19:09 bnc.conf -rwx------ 1 root root 937627 Dec 1 1996 bx -rwx------ 1 root root 7769 Dec 1 1996 fix -rwx------ 1 root root 10171 Dec 1 1996 imap -rwx------ 1 root root 1066 Dec 1 1996 install -rws--S--- 1 root root 5964 Dec 1 1996 land -rwx------ 1 root root 7105 Dec 1 1996 linsniffer -rw-r--r-- 1 root root 272611 Dec 1 1996 nmbd -rwx------ 1 root root 10280 Jun 22 06:29 passbnc -rw-r--r-- 1 root root 378657 Dec 1 1996 smbd -rwx------ 1 root root 8174 Dec 1 1996 smurf4 -rwx------ 1 root root 47432 Jun 24 01:15 sniffit -rw-r--r-- 1 root root 3409920 Dec 1 1996 stuff.tar -rws--S--- 1 root root 6784 Dec 1 1996 teardrop -rw------- 1 root root 3280 Dec 1 1996 wted.c -rw------- 1 root root 2000 Dec 1 1996 z2.cKako je trenutan datum bio 19. rujan, a datum kreiranja direktorija 24. lipanj da li je moguće da je uljez neopažen bio u računalu već tri mjeseca? Kako to da nije bio primjećen do sada? Što je još radio? Negativna strana tako dugug vremena je u tome što su log-ovi već davno bili rotirani, tako da se na njih nije moglo osloniti.
Pregled datoteka nije bio previše smirujuć: sniffit je poznati program za pregled mrežnog prometa, imap je scanner za poznate imap rupe, linsniffer je još jedan program za pregled mreže, z2 je program za prikrivanje tragova, itd. Jedine dvije datoteke koje su odudarale (i ujedno dvije koje su se pojavile kod naredbe ls) su bile nmbd i smbd, dva daemona iz samba paketa koji služe za dijeljenje diskova CIFS protokolom (kompatibilinim sa Windows Networking-om). Međutim, naše firewall računalo (zbog sigurnosnih razloga, dakako) ne izvršava sambu! Napadač je također ostavio i stuff.tar kojem su se nalazili slijdeći programi:
-rw-r--r-- root/root 3290 1998-03-27 22:10 bcast.0321 -rwx------ root/root 937627 1998-03-27 22:11 bx -rwx------ root/root 116352 1997-08-08 21:11 chfn -rwx------ root/root 115828 1997-08-08 21:11 chsh -rwx------ root/root 137420 1997-08-08 21:11 dir -rwx------ root/root 100904 1997-08-08 21:11 du -rwx------ root/root 7769 1997-12-03 22:34 fix -rwx------ root/root 19840 1997-08-08 21:12 ifconfig -rwx------ root/root 10171 1997-12-04 15:56 imap -rwx------ root/root 137820 1997-08-08 21:04 inetd -rws--S--- root/root 5964 1997-12-03 22:34 land -rwx------ root/root 7105 1997-12-03 22:34 linsniffer -rwx------ root/root 22969 1997-08-08 21:11 login -rwx------ root/root 137415 1997-08-08 21:11 ls -rwx------ root/root 30968 1997-08-08 21:12 netstat -rw-r--r-- root/root 272611 1998-03-28 20:45 nmbd -rwx------ root/root 126600 1997-08-08 21:11 passwd -rwx------ root/root 36970 1997-08-08 21:02 ps -rwxr-xr-x root/root 273360 1998-03-27 22:45 rh-login -rwx------ root/root 170460 1998-03-27 22:25 rshd -rw-r--r-- root/root 378657 1998-03-28 20:45 smbd -rwx------ root/root 8174 1997-12-03 22:34 smurf4 -rwx------ root/root 235516 1997-08-08 21:13 syslogd -rwx------ root/root 19681 1997-08-08 21:13 tcpd -rws--S--- root/root 6784 1997-12-03 22:34 teardrop -rwx------ root/root 57059 1997-08-08 21:03 top -rw------- root/root 3280 1998-03-27 22:21 wted.c -rw------- root/root 2000 1998-03-27 22:21 z2.cMnoge stvari postale su nakon toga jasnije: "tuđi" procesi nisu do sada bili otkriveni jer je napadač imao zamjenske programe za ps i top. Na kraju je otkriven zbog toga što je nekoliko tjedana prije otkrića bio instaliran update procps-a. Kako je onda moguće da napadač nije to primjetio? Možda je postao neoprezan? Proces passbnc bio je pokrenut ručno (provjera startup skripti i testno dizanje računala bez priključka na mrežu je to potvrdilo). Činjenica da je firewall računalo zadnji puta bilo boot-ano prije dva tjedna pokazivala je da je napadač bio logiran od tada na ovamo, da je upravo tada pokrenuo passbnc i da nije primjetio promjenu procps alata. Inače, passbnc je proxy za IRC. Kako osobno ne cijenim naročito ljude koji mnogo vremena provode na IRC-u, počeo se formirati moj stav prema napadaču. Donesena je i odluka: popraviti će se samo oni programi koji su nužni za praćenje njegovih aktivnosti (syslog; zajedno sa logiranjem na drugo računalo -- promjenu syslog.conf datoteke vjerojatno neće zamjetiti, ali bi same log-ove mogao pobrisati), tcpd (da bi se moglo pratiti od kuda dolaze pristupi -- provalnik je instalirao zamjenski in.rshd, pa je zbog toga hosts.allow datoteka podešene tako da ne sprečavaju logiranje korištenjem rsh-a. To je rizično, ali ako je već imao pristup na računalo sa root ovlastima nisam mislio da će sada pokazati nasilan karakter i početi uništavati podatke.)
Također otkrio sam da install skripta kreira još datoteka i to: /dev/ptyp, /dev/ptyq, /dev/ptyr i /dev/ptys. Datoteke su redom:
/dev/ptyp: Koriste je programi ps i top za prikrivanje procesa
1 p0 1 p1 2 in.telnetd 3 linsniffer 4 sniffit/dev/ptyq: netstat, tcpd za prikrivanje mrežnih veza
1 207.92 1 206.152 2 207.92 2 206.152 1 134.71 2 134.71/dev/ptyr: dir, du, ls za prikrivanje datoteka. U njoj se nalaze sva imena datoteka iz ovoga paketa (koji, kako ću kasnije otkriti, postoji na mreži pod nazivom rootkit, pa ću ga tako dalje i zvati) osim datoteka smbd i nmbd koje su se i pojavile pri pokušaju ispisivanja sadržaja direktorija naredbom ls.
/dev/ptys: netstat, tcpd, također za prikrivanje
207.92 206.152 mind mcmem 134.71Kako brojevi u datotekama (pretpostavljao sam da su to počeci IP adresa) nisu bili previše korisni, odlučio sam još dodatno aktivirati process accounting [zabluda da process accounting troši jako puno diskovnog prostora jednostavno nije točna -- ako je imalo potreban treba ga koristiti -- isto vrijedi i za tripwire!] i čekati.
Postojala je realna opasnost da je napadač dobio neke od administratorskih ili korisničkih passworda do kojih je mogao doći korištenjem jednog od DVA sniffer-a koja je imao u paketu. Svi korisnici uljudno su (expire-anjem) zamoljeni da promijene svoje passworde, a svi administratorski su promijenjeni. Međutim, kako je skeniranjem samo toga mrežnog segmenta i korištenjem root passworda mogao dobiti pristup na najmanje još jedno računalo (koje se doduše nije koristilo u to doba za ništa osim za routanje), a na njemu nije nađen nikakav trag promjene datoteka kao na firewall-u, zaključio sam da je jednostavno koristio naš firewall za "pranje" veza prema IRC serverima.
To je okarakteriziralo napadača kao ne pretjerano stručnog, koji je vjerojatno koristio gotove alate nađene na mreži (primjetiti da su također bili i tri mjeseca stari) da bi se IRC-ao. Postojalo je još pitanje kako je zadobio root privilegije na našem računalu? Iako je to pitanje na koje ne mogu biti siguran u točan odgovor, pretpostavljam da je iskoristio neku od poznatih rupa u jednom od naših servera. U doba provale vrtili smo: nfs za koji se znalo da ima sigurnosnih problema, named za koji također postoje overflow-ovi, sendmail i wu-ftpd.
Sada je preostalo samo čekati da napadač ponovno dođe, da bismo naučili još ponešto o njemu i njegovom načinu rada.
Na sreću (?) nisam morao dugo čekati, 21. rujna pojavio se čudan pokušaj logiranja iz domene madcrew.net za koju je ovlašten administrator iz domene mindcryme.com.
Sep 21 04:38:01 tower in.telnetd[3501]: refused connect from root@madcrew.net Sep 21 04:58:19 tower in.telnetd[3564]: refused connect from egg@195.139.254.3Uz pretpostavku da se radi o provaljenom računalu -- uvjek je neobično vidjeti pokušaj logiranja root-a sa nekog drugog računala (iako ime domene baca sumnju na tu pretpostavku) poslan je mail slijedećeg sadržaja administratoru koji se javio nevjerojatnom brzinom.
Date: Mon, 21 Sep 1998 18:10:42 -0400 (EDT) From: blahNešto kasnije došao je još jedan mail od istog administratora sa detaljnijim opisom.To: Dobrica Pavlinusic Subject: Re: Possible breakin attempt from your host I will take look into this and get back to you with what I find. Thank you for bringing this to my attention. Melen On Mon, 21 Sep 1998, Dobrica Pavlinusic wrote: > > Someone from hosts under your authority tried to connect to our firewall. > That service is deppriciated and considered a breakin attempt. Please > do whatever you see appropriate. > > Dobrica Pavlinusic dpavlin@foi.hr, dpavlin@jagor.srce.hr > Unix addict. Internet consultant. http://www.foi.hr/~dpavlin > > Security Violations > =-=-=-=-=-=-=-=-=-= > Sep 21 04:38:01 tower in.telnetd[3501]: refused connect from root@madcrew.net > Sep 21 04:58:19 tower in.telnetd[3564]: refused connect from egg@195.139.254.3
Date: Tue, 22 Sep 1998 02:18:17 -0400 (EDT) From: blahDakle, nikakva velika pomoć od toga! Naknadnim razgovorima s Hrvatskim CERT-om (da, ta služba je u to vrijeme postojala i bila aktivna :-) otkrio sam da oni već imaju negativna iskustva s provalama iz te domene.To: Dobrica Pavlinusic Subject: Re: Possible breakin attempt from your host It appears the this system was compromised and that root was obtained. The logs appear to have been cleaned and I haven't been able to find the ip of the person who compromised it. We will be keeping an eye out and monitoring our network to see if we can catch this person. If you need anything else or have any other questions, please feel free to write back. Melen
Međutim, odlučio sam podijeliti svoja znanja (ako je provalnik stvarno dolazio iz te domene, to je već znao, a ako nije možda pomogne administratoru), pa sam poslao zadnji mail na koji nikada nisam dobio odgovor:
Date: Tue, 22 Sep 1998 09:09:43 +0200 (MET DST) From: Dobrica PavlinusicOstavio sam još dva tjedna firewall računalo pod strogim nadzorom (koji je uključivao logiranje promjena svakih nekoliko sati) da bih vidio da li će se napadač vratiti, a onda zaključio da je dosta, zamjenio sve prije spomenute servise novijim vezijama ili sigurnijim zamjenama i odlučio napisati ovaj članak (na koji je, priznajem, trebalo čekati jako dugo).To: blah Subject: Re: Possible breakin attempt from your host Thanks for respoding so quickly. We have also a break-in to root account, however, we don't beleve that attacker found our root password. It is more likely that he used some well-known hole in one of our servers (sendmail, wu-ftpd or named -- we hardly run anything else on machine in question). It also leaved rootkit toolkit (known exploits and scanners) in /dev/.../ directory. Look up for it. It also installs replacement ls, ifconfig, syslog, ined and some more commands.
Što zaključiti na kraju? Možda samo da se napadi ne dešavaju nekome drugom (nažalost, praksa me previše često podsjeća na to) i da administratori zapravo nikada ne mogu biti dovoljno paranoidni. Ako Vam se napad već nije desio, možda jednostavno niste dovoljno pažljivo gledali...
pravni mumbo-jumbo: