12
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Seminarski rad u okviru predmeta „Računalna forenzika“ RAM forenzika za Linux Agneza Šandić Zagreb, siječanj 2018.

RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

  • Upload
    others

  • View
    6

  • Download
    2

Embed Size (px)

Citation preview

Page 1: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Seminarski rad u okviru predmeta „Računalna forenzika“

RAM forenzika za Linux

Agneza Šandić

Zagreb, siječanj 2018.

Page 2: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Sadržaj

1. Uvod ................................................................................................................................... 3

2. Forenzika RAM-a ............................................................................................................... 4

3. Prikupljanje podataka ......................................................................................................... 5

4. Prikupljanje dokaza na Linx operacijskom sustavu ........................................................... 6

4.1. Dohvaćanje slike RAM-a ............................................................................................ 6

4.2. System.map .............................................................................................................. 7

4.3. PROC datotečni sustav ................................................................................................ 8

4.4. Povijest bash ljuske ..................................................................................................... 9

4.5. DMSEG naredba ........................................................................................................ 10

5. Zaključak .......................................................................................................................... 11

Literatura .................................................................................................................................. 12

Page 3: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

1. Uvod

Računalna forenzika je grana forenzičke znanosti koja se bavi prikupljanjem, pretraživanjem,

zaštitom i analizom dokaza u digitalnom obliku te uključuje njihovu prezentaciju kao

materijalnih dokaza u eventualnim sudskim postupcima [1].

U prošlosti se postupak stvaranja točne i pouzdane kopije podataka sa ugroženog uređaja strogo

ograničavao na podatke koji su bili pohranjeni npr. na tvrdom disku. To znači da se postupak

forenzičke analize oslanjao na dokaze pronađene u datotečnom sustavu. Ova procedura

prikupljanja dokaza je vrlo jednostavna i ne zahtijeva posebno iskustvo istražitelja. Dovoljno

je isključiti napajanje ugroženom uređaju, a zatim zaštiti mjesto zločina. Također, većina alata

dostupna na tržištu može se koristiti samo za ispitivanje datotečnih sustava. Jasno je da se mogu

izgubiti bitni dokazi za istragu ako se izostave nestalni (izbrisivi) podatci [2].

Jedna specifična grana forenzika koja dobiva sve veći zamah se bavi analizom RAM-a.

Tradicionalno, kada se obavlja forenzička istraga na ugroženom računalu, jedna od prvih stvari

koje treba učinit jest prikupiti bilo kakve „hlapljive“ informacije. Često se takva analiza kopije

sadržaja RAM-a vrši jednostavnim pretraživanjem ASCII ili Unicode stringova unutar

tekstualnog sadržaja jer postoji samo nekoliko alata i malo je ljudi osposobljeno za dublju

analizu konteksta radne memorije.

Trenutačno tipičan način analize RAM-a jer pretraživanje stringova na cijeloj memorijskoj

slici u nadi da će se pronaći informacije kao što su lozinke, jasan tekst nedavno upisane šifrirane

poruke i sadržaj datoteke. Budući da kriminalci postaju sposobniji stvoriti zlonamjerni softver,

koji može izbjeći trenutne metode digitalne forenzičke istrage tako da ne ostavlja nikakva trag

na tvrdom disku, metode forenzike se moraju razvijati kako bi zadovoljile ove izazove.

Važno je napomenuti da se najzanimljivije informacije mogu pronaći kada se ugroženi sustav

ne pokrene ponovno. Cilj ovog seminarskog rada je pobliže objasniti računalnu forenziku

RAM-a u kontekstu Linux operacijskog sustava.

Page 4: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

2. Forenzika RAM-a

Neki od ključnih dijelova nestabilnih informacija koje traže forenzičari su trenutačno pokrenuti

procesi sustava i datoteke koje su posljednji put korištene. Učinkovita istraga RAM memorije

može dati bitne informacije koje se ne nalaze nigdje drugdje kao što su: komunikacijske poruke,

lozinke, dekriptirani i privremeni tekstovi, obilje informacija o trenutnom stanju računalnog

sustava kao što su podaci o trenutno pokrenutim procesima, korisnički podaci, informacije o

uspostavljanim mrežnim komunikacijskim vezama, tehničke informacije (brojači, pokazivači,

registri itd. ), log datoteke i slično. Iako postoje mnogi dostupni programi koji mogu prikazati

trenutno pokrenute procese, problem nastaje ako je sustav ugrožen rootkitom, zloćudnim

programom (engl. malware) koji može manipulirati izvršavanjem naredbi sustava. Osim toga,

napredne tehnike zlonamjernog softvera omogućuju ubrizgavanje zloćudnog koda izravno u

pokrenute procese, tako da niti jedan novi proces nije vidljiv standardnim alatom. Forenzičko

istraživanje fizičke memorije može izravno gledati strukture kernela [3]. Nedavni crvi, kao što

su SQL Slammer i CODE red, ne pišu nikakve podatke na disk već svi podaci ostaju u fizičkoj

memoriji. Time standardni disk postaje forenzički beskoristan što je još jedan od razloga zašto

je temeljito pregledavanje RAM-a od velike važnosti. Ovo može biti jedini način izravnog

otkrivanja prisutnosti zlonamjernog softvera i pronalaženja potpunih i točnih informacija iz

kompromitiranog sustava [2].

Temeljni cilj tehnologija korištenih u računalnoj forenzici jest konzistentnost podataka, tj.

prilikom istrage i analize ne smije se mijenjati niti jedan bit originalnih podataka. Kada su

traženi dokazi smješteni u radnoj memoriji, ovaj je cilj nemoguće provesti u djelo. Problem kod

prikupljanja podataka iz radne memorije predstavlja činjenica da ukoliko na istraživanom

računalu već nije pokrenut alat za forenzički dohvat podataka, samo njegovo pokretanje mijenja

sadržaj radne memorije. Linux i Unix sustavi jedinstveni su po tome što je moguće iskrcati

cijeli sadržaj radne memorije na neku sigurnu lokaciju korištenjem ugrađenih funkcija.

Microsoft Windows nema usporediv sustav. Pokretanjem čak i utility-a na sustavskoj razini

može prouzročiti promjenu podataka [4].

Page 5: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

3. Prikupljanje podataka

Ukoliko je računalo nad kojim se provodi istraživanje upaljeno pri dolasku istražitelja, bitno je

prvo uzeti sliku radne memorije (eng. image file) da se ne izgube privremeni podaci koji mogu

odati sve što je korisnik radio od zadnjeg paljenja računala.

Ostavljanje računala uključenim ipak ne jamči očuvanje dokaza. Ako je računalo povezano na

računalnu mrežu, napadač može s udaljene lokacije izbrisati dnevničke zapise ili, neovisno o

vezi na mrežu, programirati njihovo automatsko brisanje. Jednako tako, dobronamjeran

korisnik radom na računalu može nesvjesno uzrokovati prepisivanje dokaza. Uništenje nije

jedina opasnost koja prijeti digitalnim dokazima. Nestručnim rukovanjem oni mogu biti

oštećeni i tako obezvrijeđeni u potencijalnom sudskom postupku. Ovo se najčešće događa zbog

neinformiranosti korisnika koji, nakon što su uočili zločin, pokušavaju otkriti što se točno

dogodilo, te tako utječu na sustav [5]. 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 osta dijelove sustava.

Ovo načelo poznato je i kao Heisenbergov princip neodređenosti primijenjen na računalni

sustav [9].

Savršen alat za prikupljanje nestalnih podatak se ne bi trebao oslanjati na operacijski sustav.

Takva rješenja postoje i jedno od njih je Tribble (slika 1). Tribble je hardversko proširenje u

obliku kartice koja pouzdano dohvaća privremenu memoriju aktivnog računalnog susta i

zadržava kritične informacije potrebne za forenzičku analizu. Uređaj pristupa ciljanoj memoriji

direktno preko hardverskog sučelja te zato ne treba nikakav softver ili upravljački program

(engl. driver) [6]. Nažalost, to znači da posebna PCI kartica mora biti fizički instalirana u

računalu prije nego što dođe do napada. Jednostavno je nemoguće da svaki stroj na internetu

ima takvu karticu ugrađenu.

Slika 1: Izgled Tribble kartice

(Izvor: http://www.grandideastudio.com/tribble/ )

Page 6: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Kako bi se ranjivi dokazi očuvali potrebno ih je što prije pohraniti na siguran medij. Tvrdi disk

ispitivanog računala nije prikladan za to jer i sam može sadržavati dokaze koji bi na ovaj način

mogli biti uništeni ili oštećeni. Prilikom pohrane ranjivih dokaza potrebno je koristiti što manje

radne memorije kako bi se očuvao njezin sadržaj [5].

Najbolji način za prikupljanje ranjivih dokaza je uporaba računalne mreže. Kako bi se ispitivano

računalo zaštitilo od daljnjih napada i kako bi se prikrila istraga, računalo je po otkriću napada

potrebno isključiti sa mreže. Njegovim spajanjem na privatno čvorište (eng. hub) omogućuje

se prijenos podataka. Pri tome drugo računalo, korišteno za prikupljanje dokaza, treba

prilagoditi mrežnim postavkama ispitivanog računala. Prije svega je potrebno dohvatiti i

pohraniti sadržaj radne memorije ispitivanog računala i to umanjim paketima kako bi se

izbjeglo prepisivanje ostatka radne memorije. Nakon što je sadržaj radne memorije pohranjen

može se pristupiti dohvaćanju ostalih podataka, bez ograničenja na veličinu paketa [5].

4. Prikupljanje dokaza na Linx operacijskom sustavu

Računalno forenzičku analizu Linux operacijskih sustava moguće je provoditi alatima

ugrađenim u operacijski sustav ili specijaliziranim aplikacijama.

4.1. Dohvaćanje slike RAM-a

Jedina stvar koju istražitelj može napraviti u slučaju napada jest ograničit prikupljanje procesa

u memoriji u nekoliko koraka kako bi spriječio što više može utjecanje na ugroženo računalo.

Prvo mora dohvatiti i pohraniti sadržaj RAM-a korištenjem samo jedne naredbe. U drugom

koraku treba ukloniti ugroženi uređaj s napajanja i potom sačuvati preostale komponente koje

služe za pohranu kao što su hard disk, disketa itd. Linux-ov naredbe dd i dcfldd se mogu koristiti

za dohvaćanje slike radne memorije. Alat dcfldd je modificirana (naprednija) verzija dd alata

koji dodatno podržava izradu sažetka kopije. Ovi alati namijenjeni su kopiranju podataka bit po

bit iz jedne datoteke u drugu s time da nad njima mogu raditi razne konverzije i formatiranja,

ovisno o zastavicama koje se koriste pri njihovoj uporabi. Sliku memorije je potrebno spremiti

negdje drugo, a ne na lokalno računalo. Za to se može koristiti naredba netcat koja omogućuje

slanje podataka putem mreže na udaljeno računalo. Na Linux-u postoje dvije datoteke koje

sadržajem odgovaraju radnoj memoriji, a to su /dev/mem i /proc/kcore. Slika radne memorije u

/proc/kcore datoteci je spremljena u „ELF core“ formatu što omogućuje jednostavnu analizu

korištenjem gdb alata, ali je pri tome slika nešto veća od same radne memorije zbog ELF

zaglavlja.

Page 7: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Radnu memoriju je moguće spremiti sljedećom naredbom:

“dd if=/dev/mem of=whole_mem.img bs=1”.

If operanda uznačava ulaznu datoteku, a of operand definira izlaznu datoteku, tj. za ovaj

konkretan primjer je to „whole_mem.img“. Bs operand postavlja veličinu bloka, a ovdje je to 1

bajt.

Nakon toga je moguće pristupiti pretraživanju spremljene slike radne memorije u potrazi za

tragovima digitalnog zločina. Pri tome je nužno dobro poznavanje strukture radne memorije

kod Linux operacijskih sustava [2].

4.2. System.map

Tijekom digitalne istrage datoteka System.map može biti od velike koristi. Ona služi kao mapa

s adresama najvažnijih kernelskih simbola. Svaki puta kada se programski prevede (engl.

compile) novi kernel, adrese različitih simbola se mijenjaju. Simboli koji se nalaze u ovoj

datoteci su od velike koristi istražiteljima. Unutar tablice „call table“ se nalaze adrese

sistemskih poziva, a njezin sadržaj se može dobiti uz pomoć sljedeće naredbe:

„cat /boot/System.map|grep sys_call_table c030a0f0 Dsys_call_table“.

U Tablici 1 je prikazan primjer takvog ispisa:

0xc030a100: 0xc0146df0 0xc0146220 0xc0146370 0xc0120060

0xc030a110: 0xc01462c0 0xc0154510 0xc0154070 0xc0107bb0

0xc030a120: 0xc01457f0 0xc0120d40 0xc01536b0 0xc0145b70

0xc030a130: 0xc012ca00 0xc0128fa0 0xc014e910 0xc0146b40

0xc030a100: 0xc0146df0 0xc0146220 0xc0146370 0xc0120060

Tablica 1: Rezultat pokretanja gdb alata prema /proc/kcore datoteci [2].

Page 8: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Unosi u ovoj tablici odgovaraju nazivima funkcija pohranjenih u datoteci

/usr/include/asm/unistd.h. Primjer takvog unosa je prikazan u Tablici 2.

#define __NR_exit 1

#define __NR_fork 2

#define __NR_read 3

#define __NR_write 4

#define __NR_open 5

#define __NR_close 6

Tablica 2: Primjer sadržaja datoteke /usr/include/asm/unistd.h [2]

Npr. funkcija sys_write je na 0xc0146df0, a funkcija sys_open je na 0xc0146220 adresi.

4.3. PROC datotečni sustav

Proc je virtualni datotečni sustav za prikaz rada kernela i procesa u obliku tekstualnih i sličnih

datoteka. On je kao sučelje prema kernelu koje daje informacije o njegovom trenutnom stanju

i može služiti za komunikaciju sa njim. Ne pohranjuje se na disku već na RAM-u.

Osim proc/core, unutar datotečnog sustva proc nalaze se mnogi bitni poddirektoriji čiji sadržaj

može izuzetno pomoći prilikom forenzičke istrage, a neki su opisani u nastavku [7].

▪ /proc/1 – direktorij s informacijama o procesu broj 1. Svaki proces ima poddirektorij

unutar /proc s i imenom njegovog identifikacijskog broja.

▪ /proc/devices-lista konfiguriranih upravljačkih programa (engl. driver) unutar trenutno

pokrenutog kernela.

▪ /proc/dma-prikazuje koji DMA (engl. Direct Memory Access) kanali se trenutno

koriste.

▪ /proc/interrupts-prikazuje koji se prekidi koriste i koliko se svakog od njih pojavilo.

▪ /proc/ioports-prikazuje koji se ulazni/izlazni portovi trenutno koriste.

▪ /proc/kcore-slika fizičke memorije sustava (RAM-a).

▪ /proc/kmsg-izlazne poruke iz kernela koje se također prosljeđuju u syslog.

Page 9: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

▪ /proc/meminfo-sadrži informacije u korištenoj memoriji, i fizičkoj i zamjenskoj (engl.

swap).

▪ /proc/modules-prikazuje koji su trenutno učitani moduli kernela.

▪ /proc/net-sadrži statusne informacije o mrežnim protokolima.

▪ /proc/uptime- vrijeme kad je sustav podignut.

4.4. Povijest bash ljuske

Linux pohranjuje aktivnosti korisnika u shell history datoteci lociranoj u direktoriju

/home/<user>. Većina Linux distribucija pohranjuje posljednjih 500 linija upisanih u

komandnu liniju. No tu su pohranjene samo naredbe koje je korisnik utipkao, ne i odziv sustava

na naredbe. Ovi podaci se trebaju koristiti u kombinaciji s ostalim podacima iz istrage kako bi

se dobila smislena slika. Pregled datoteke .bash_history se može dobiti naredbom $ cat

.bash_history ili jednostavno $ history. Bash povijest se sprema na disku te se ta opcija uvijek

može isključiti, ali svakako ostaje u RAM-u.

Slika 2: Primjer sadržaja .bash history direktorija

(Izvor: https://www.howtogeek.com/howto/44997/how-to-use-bash-history-to-improve-your-command-line-productivity/

Na Slici 2 je prikazan primjer izgleda sadržaja .bash_history datoteke. Naredba s brojem 1 je

najstarija, tj. najdavnije pokrenuta naredba.

Page 10: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

4.5. DMSEG naredba

Dmesg naredba se koristi za ispis poruka od strane kernela na standardni izlaz. Kernel je jezgra

operacijskog sustava i prvi dio koji se učita u memoriju prilikom pokretanja računala (engl.

boot up) te kontrolira zapravo sve u sustavu. Dmesg spomenute podatke dohvaća iz spremnika

kernela (engl. kernel ring buffer) koji je dio memorije i koji privremeno čuva podatake koji su

poslani ili primljeni vanjskim uređajima kao što su hard disk drive (HDD), printer ili tipkovnica.

On je fiksne veličine tako da kada se napuni, novi podaci se upisuju preko starih. Dmesh može

biti jako koristan kako bi se prikupile informacije o hardveru [8].

Sintaksa ove naredbe je jednostavna: dmesg [options].

Rezultat naredbe dmesg je sačuvan u log datoteci /var/log/dmesg i može biti lako prikazan uz

pomoć tekstulannog editora kao što je vi ili gedit, ili uz pomoć naredbe cat:

cat /var/log/dmesg | less

Page 11: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

5. Zaključak

Može se vidjeti da se ogromna količina podataka može oporaviti (engl. recover) iz RAM-a koji

uključuje veliku količinu podataka što se inače ne bi moglo postići iz forenzičke slike dobivene

iz tvrdog diska. Ne samo da se mogu dohvatiti podaci poput lozinki i korisničkih imena već i

drugi podaci poput zlonamjernih ili ilegalnih programa koji e mogu koristiti kao dokaz prilikom

istrage. Analiza RAM-ova postaje ključni dio forenzičkih istraga i stoga je važno da se svi

forenzički istražitelji razumiju da kako prikupiti naveden podatke. Digitalna istraga RAM-a iz

kompromitiranog stroja je vrlo novo polje u forenzičkoj analizi.

U ovom seminaru su opisani samo neki osnovni koraci u provođenju istrage fizičke memorije

unutar Linux operacijskog sustava. Za detaljniju analizu potrebno je još znati povezati podatke

iz RAM-a s sačuvanim datotekama u virtualnoj memoriji i ostatku računalnog sustava.

Page 12: RAM forenzika za Linux - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/asandic/seminar.pdf · SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Literatura

[1] (http://www.cert.hr/sites/default/files/NCERT-PUBDOC-2010-05-301.pdf) .

[2] https://articles.forensicfocus.com/2011/07/10/digital-forensics-of-the-physical-memory/

[3] 06Mar_Urrea

[4] http://sigurnost.zemris.fer.hr/ostalo/2010_marceta/Diplomski.htm

[5] https://repozitorij.fpz.unizg.hr/islandora/object/fpz%3A163/datastream/PDF/view

[6] http://www.grandideastudio.com/tribble/

[7] http://www.tldp.org/LDP/sag/html/proc-fs.html

[8] http://www.linfo.org/dmesg.html

[9] http://sigurnost.zemris.fer.hr/ostalo/2007_horvat/Forenzika.htm