Sadržaj

Analiza WireShark alata u svrhu Računalne Forenzike

Sažetak

Ovaj rad opisuje široku ulogu i primjenu alata WireShark u računalnoj forenzici. Biti će opisano zašto baš alat WireShark, kakve on filtere posjeduje i zašto, te ono što nas najviše zanima kod računalne forenzike –> potencijalni napadi. Svaki napad uglavnom počinje skeniranjem, te je skeniranja relativno lako primjetiti u alatu WireShark pa će naglasak biti na njima. Od konkretnih cijelih napada dotaknut ćemo se napada korištenjem prikrevene mreže, korištenjem preuzimanja (“drive-by” preuzimanja) i napada uskraćivanja usluge (DoS).

Keywords: WireShark; računalna; forenzika; filteri; napadi; skeniranje; sken; prikrivene; mreže; preuzimanje; drive-by; uskraćivanje; uslugue; Dos

Uvod

Kako se, kako vrijeme ide, tehnologija pa tako i računalne mreže znatno mijenjaju i postaju “pametnije” i složenije - tako i s druge strane hakeri smišljaju nove i naprednije načine napada putem iste mreže. Bilo da se radi o krađi identiteta, podataka, ucjeni ili nečemu trećem, uglavnom se napadi svode na krađu podataka koji su korisnicima od važnosti i nadaju se da neće biti nesmotreno propagirani po mreži. Takvi se napadi uglavnom provode osluškivanjem i manipuliranjem mreže.

Paketi su glavna jedinica podataka u mreži. Sastoje se od zaglavlja (podaci o paketu), paketa nižih razina mreže i samih podataka. Takvi se paketi šalju po mreži (na više načina, TCP/UDP), gdje onda nastupaju hakeri i presreću ih. Bitni su nam iz više razloga u pogledu računalne forenzike, te ih zato analiziramo raznim alatima (poput WireShark-a). Pomoću analize paketa možemo saznati stanje mreže prije nego što se pojave problemi (rekonstrukcija) te drugo, ono bitnije za računalnu forenziku - u slučaju napada možemo provesti dijagnosticiranje. Analiza pomaže mrežnim administratorima da pregledaju “žice” i znaju promet koji njima prelazi ili probleme koji bi mogli biti prisutni.

Na dalje ćemo spominjati samo analizu mreže (mrežnih paketa) samo u svrhu korisničke sigurnosti. Pa takva analiza odgovara na četiri ključna pitanja pri ispitivanju sigurnosti:

  1. Tko je uljez i kako se probio?
  2. Kolika je šteta?
  3. Je li uljez iza sebe ostavio neku vrstu virusa?
  4. Možemo li reproducirati napad i sanirati štetu?

Mrežni napadi uglavnom se mogu identificirati promatranjem dolaznog i odlaznog prometa, jer je neobično ponašanje rezultat sumnjive kretnje paketa. U ovom radu pričat ćemo o alatu Wireshark, analizatoru paketa otvorenog koda, kao alatu za otkrivanje potencijalnih mrežnih napada.

WireShark

WireShark je najistaknutiji i najčešće korišten analizator mrežnih protokola. Omogućuje nam da vidimo što se događa na mreži na mikroskopskoj razini i standard je u mnogim komercijalnim i neprofitnim poduzećima, vladinim agencijama i obrazovnim institucijama. Razvoj Wiresharka napreduje zahvaljujući dobrovoljnim doprinosima stručnjaka za umrežavanje širom svijeta i nastavak je projekta koji je Gerald Combs započeo 1998. [1]

WireShark nam nudi:

  1. Dubinski pregled stotina protokola
  2. Snimanje uživo i izvanmrežnu (engl. offline) analizu
  3. Radi na većini poznatih operacijskih sustava
  4. Snimljeni mrežni podaci mogu se pregledavati putem GUI-a (Graphical User Interface) umjesto putem nekog terminala ili slično
  5. Sadrži najmoćnije filtere u industriji
  6. i još mnogo toga…

WireShark Filteri

U WireSharku, filteri se odnose na Berkeley Packet Filters, što je zapravo mikroprogramski jezik koji se sastavlja i izvršava u vrijeme izvođenja (engl. runtime) nad presretnutim paketima. Koristimo ih u osnovi kako bi odvojili određene pakete od ostalih, odnosno prikazali samo ono što nas zanima. [1] Tako možemo npr. filtrirati samo pakete određenih protokola, kao što vidimo na sljedećoj slici:

Na slici možemo vidjeti filter pozvan tako da se prikazuju samo paketi FTP protokola

Filteri koji nas više zanimaju u svrhu računalne forenziku su npr. filteri temeljeni na specifičnoj IP adresi koji će pokazati sav promet s/na te adrese. Sličan filter je “port filter” koji će nam prikazati samo promet na određenim vratima (engl. port). Dalje se tu možemo igrati kreiranjem filtera koji će pokazati promet kojem je određena IP adresa SAMO izvor (engl. source) ili SAMO odredište (engl. destination). Postoje i još moćniji filteri tipa filter koji će prikazati sav HTTP promet koji sadrži određeni tekstualni niz (engl. string) u svojoj adresi (URL).

Skeniranje

Obično se prva faza učinkovitih napada sastoji od identificiranja potencijalnih žrtava među strojevima distribuiranog sustava. Jedna od uobičajenih metoda koja se koristi za pronalaženje osjetljivih domaćina je upravo skeniranje. Ta metoda može se promatrati kao neprijateljska internetska potraga za otvorenim vratima kroz koja uljezi dobivaju pristup računalima. Sastoji se od slanja poruke na isti i preslušavanja odgovora. Primljeni odgovor ukazuje na status priključka koji otkriva informacije potrebne za pokretanje budućih napada. [2]

PING Sweep Scan

Ovaj tip skeniranja hakeri koriste da bi saznali koje su IP adrese aktivne u mreži. Ping Sweep sken može se izvesti pomoću ICMP ili TCP/UDP protokola. “Pomoću ICMP protokola” jest najpoznatiji način te u ovom načinu: ECHO zahtjev slijedi ICMP porukom “Echo Reply”, Echo reply paketi se koriste dok TCP / UDP ping sweep paketi namijenjeni TCP / UDP priključku 7, ECHO priključku. Ako taj ciljni domaćin ne podržava ECHO uslugu, tada TCP / UDP ping sweep neće raditi. Stoga se uglavnom koristi ICMP ping sweep, ali ako između njih postoji vatrozid (engl. firewall) koji je konfiguriran za blokiranje ICMP paketa, onda je čak i ICMP ping sweep beskoristan. Na sljedećoj slici prikaza je “ulov” Ping Sweep Scan-a, puno ICMP poruka:

Da bismo otkrili ICMP ping sweep u WireSharku dovoljno je postaviti filtere icmp.type == 8 i icmp.code == 0 (Echo, Echo Reply, respektivno). TCP ping sweep možemo otkriti pomoću tcp.dstport == 7 filtra, a UDP ping sweep pomoću udp.dstport == 7 filtra. Dobivamo li nakon ovih promjena više paketa od očekivanog - lako je moguće da se odvija Ping Sweep nad mrežom. No, pošto je sve ovo moguće (odredjen broj paketa) i pri normalnom radu, ne možemo garantirati da se radi o Ping Sweepu. Najbliže garancije nam je povećan broj ICMP paketa.

ARP Scan

Kao što smo rekli, kada se postavi vatrozid na pravo mjesto te blokira ICMP tada hakeri ne mogu provesti Ping Sweep. U takvim situacijama ARP Scan je pogodan za odrediti aktivne IP adrese u mreži. Provodi se tako što haker šalje ARP Broadcast (0xff:ff:ff:ff:ff:ff) za svaku IP adresu u mreži. Tako dobiva odgovor koje su aktivne. Prednost kod ARP Scana je ta što se ARP komunikacija ne može blokirati niti pravilno filtrirati jer su TCP/IP protokoli ovisni o ARPu za pronalazak MAC adresa. Ovo skeniranje lako otkrivamo pomoću filtra ARP, kojim gledamo samo ARP pakete. Imamo li povećan broj ARP upita možemo pretpostaviti da se radi o ARP scanu. Na sljedećoj slici vidimo promet u slučaju ARP scan-a, vidimo da nakon uključivanja filtera nad paketima tipa “ARP” imamo povećan broj upita na broadcast adresu:

Stealth Scan

Kada želimo (hakeri) otkriti koja su vrata (engl. port) otvorena a koja zatvorena, najefektivniji je TCP Stealth Scan. Napadač šalje TCP SYN paket za otvaranje komunikacije na odredišna vrata, poput normalne komunikacije. Tada ako su vrata otvorena dobiva povratne poruke SYN+ACK, a ako su zatvorena RST+ACK. Kada napadač dobije poruku SYN+ACK on će odgovoriti sa RST jer ne želi otvarati komunikaciju (TCP sesiju). Ako su ciljana vrata zaštićena vatrozidom očekivani odgovor je paket ICMP tipa 3 (s kodom 1,2,3,9,10 ili 13). Dakle, u Wiresharku ako dobivamo puno RST paketa ili ICMP paketa tipa 3, to može biti znak da se odvija Stealth Scan. Na slici vidimo velik promet SYN i RST paketa ali između domaćina (engl. hosts) nema neke razmjene podataka. Da bismo dobili brzi pregled snimanja, možemo otići na gornji izbornik StatisticsConversations, a zatim na karticu TCP. Tamo možemo vidjeti više TCP sesija, ali sve imaju manje od 4 paketne komunikacije, što nam je znak da se odvija skeniranje TCP vrata:

TCP Full Connect Scan

Prilikom ovakvog skeniranja napadač provodi cijeli “three way hand shake” s ciljanim vratima. Nakon inicijalne razmjene prve dvije poruke, u slučaju da su vrata otvorena on će slati ACK i pokušati uspostaviti TCP sesiju te ju odmah potom ugasiti. Ako postoji vatrozid na ciljanim vratima opet ćemo dobiti ICMP paket tipa 3. Za detektiranje u WireSharku možemo koristiti sljedeće filtere:

  1. tcp.flags==0x002 or tcp.flags==0x012 or tcp. flags==0x004 or tcp.flags==0x014 –> dobit ćemo SYN, SYN+ACK, RST & RST+ACK pakete
  2. icmp.type==3 and (icmp.code==1 or icmp.code==2 or icmp.code==3 or icmp.code==9 or icmp.code==10 or icmp.code==13) –> dobit ćemo ICMP pakete tipa 3 sa šifrom 1,2,3,9,10 ili 13
  3. tcp.flags==0x002 or tcp.flags==0x012 or tcp. flags==0x004 or tcp.flags==0x014 or (icmp.type==3 and (icmp.code==1 or icmp.code==2 or icmp.code==3 or icmp.code==9 or icmp.code==10 or icmp.code==13)) –> dobit ćemo oboje navedeno do sada (kombinacija)

Null Scan

Prilikom Null Scana napadač šalje TCP poruku bez postavljene zastavice. Ukoliko dobije povratnu poruku s postavljenom zastavicom RST to znači da su vrata zatvorena. Ako ne dobije pak nikakvu poruku to znači da su vrata otvorena, a ako dobije paket ICMP tipa 3 postavljen je vatrozid. Null scan lako je otkriti u WireSharku, sve što treba je postaviti filter TCP.flags==0x000 kako bi dobili sve TCP pakete bez postavljene zastavice. Na slici vidimo puno TCP paketa bez ikakve zastavice postavljene što nas potiče na razmišljanje kako se možda radi o Null Scanu:

XMAS Scan

Ovdje napadač šalje TCP pakete sa zastavicama FIN, PSH i URG, a odgovor je isti kao kod Null scana. Da bismo otkrili ovaj način skeniranja koristimo filter tcp.flags==0X029. Na slici vidimo povećan broj TCP paketa sa zastavicama FIN, PSH i URG što nas potiče na razmišljanje da se radi o XMAS Scanu:

UDP Scan

Prilkom UDP skeniranja napadač šalje UDP pakete bez nekog pametnog sadržaja na određena vrata. Ukoliko dobije ICMP paket tipa 3 (koda 3) kao povratnu poruku to znači da postoji vatrozid, no ako ne dobije ništa to može značiti da su vrata otvorena. U WireSharku UDP Scan otkrivamo filterom icmp.type==3 and icmp.code==3 čime provjerevamo ima li velike količine ICMP paketa tipa 3 s kodom 3, što bi nam ukazivalo na scan. Na slici vidimo UDP Scan –> ogromna količina ICMP poruka tipa 3 (destination unreachable), s kodom 3 (port unreachable):

IP Protocol Scan

Skeniranje IP protokola korisno je u pronalaženju protokola koji rade preko (iznad) IP-a. Napadač šalje pakete s različitim brojevima protokola, te dobije li povratnu ICMP poruku tipa 3 s kodom 2 zaključuje da se protokol ne odvija. Filter koji bi otkrio ovaj tip skeniranja u WireSharku bio bi icmp. type==3 and icmp.code==2, slično prošlom. Na slici vidimo IP Protocol Scan –> mnoštvo ICMP paketa tipa 3 s kodom 2 (protocol unreachable), također niže možemo vidjeti i zastavice za protokole koje napadač traži:

ARP Poisoning

ARP Poisoning je tehnika redirekcije paketa na sloju 2 (sloj gdje se odvija ARP proces, sloj podatkovne poveznice). Lako je uočljiva pomoću WireSharka - ako više od jedne MAC adrese potvrđuju određenu IP adresu kao svoju WireShark će označit taj paket kao otkrivena duplikata IP adrese. Možemo i pročitati detalje paketa te otići na Analyze –> ExpertInfo te onda na tab Warnings kako bi vidjeli točna upozorenja koja WireShark stavlja.

Napadi

Nakon skeniranja uglavnom slijedi neka druga vrsta napada, odnosno skeniranje je uglavnom uvod u napad. Obradit ćemo:

Prikrivene mreže

Prikrivena mreža definirana je kao mehanizam koji se koristi za razbijanje sigurnosnih pravila dopuštanjem propuštanja informacija neovlaštenim procesima ili pojedincima (Cabuk i sur., 2004.). Napadači mogu iskoristiti ove skrivene veze na dva načina, i to naravno na štetu sigurnosti ciljanih sustava. Prvi se način sastoji od kanala za pohranu koji uključuje izravno i neizravno stvaranje memorijske lokacije za pohranu jednim postupkom i čitanje pohrane za drugi postupak. Ovakva pohrana vjerojatno bi povrijedila povjerljivost podataka jer procesi pisanja i čitanja možda nisu autorizirani ili mogu zaobići kontrolu. Drugi način sastoji se od vremenskih kanala koji koriste skrivenu vezu za slanje informacija drugom procesu s ciljem utjecaja na stvarno vrijeme odziva. Detektiranje i preventiranje ovakvih prikrivenih konekcija ključno je jer bi mogle otkriti korisničku šifru računala, podatke o kreditnoj kartici i slične vrlo bitne korisničke podatke. WireShark može otkriti ovakve radnje, te pažljivim ispitivanjem i temeljitom analizom paketa, mrežni inženjeri mogu otkriti i ući u trag skrivenoj FTP vezi (u slučaju FTP prikrivenih konekcija) od početka do kraja, a istovremeno razumjeti sigurnosne štete prouzročene sumnjom na napad. Razumijevanjem učinaka skrivene FTP veze, stručnjaci za mrežnu sigurnost mogu odgovoriti odgovarajućim protumjerama kako bi umanjili moguće štete od napada i osigurali da se podaci u ukradenoj datoteci ne koriste za napad na druge sustave. Osim prikrivenih FTP konekcija postoje IRC (protokol za komuniciranje porukama u stvarnom vremenu, na mreži) kanali. Također jako opasan napad jer kao prvo, hakeri mogu prikriti skrivene IRC kanale u trojanskim konjima i koristiti ih za krađu kritičnih podataka i slati te podatke drugim strojevima pod njihovom kontrolom. Drugo, hakeri mogu koristiti IRC kanale za stvaranje backdoor napada i botneta. Botnet-i se obično šire putem USB pogona s bezazlenim datotekama, ali sadrže skrivene trojanske konje i druge zlonamjerne dokumente. Tajni kanali IRC-a mogu biti daleko najopasniji alat za anonimno prodiranje i nadzor mreže. WireShark nam tu nudi mogućnosti poput gledanja je li korisnik skidao neke dokumente s udaljenog računala, također možemo vidjeti i TCP-baziranu komunikaciju za svaki od IRC paketa (desni klik –> Follow TCP Path) te isčitamo svu komunikaciju između IRC klijenta (žrtva) i IRC poslužitelja. Tako analiziramo podatke koje je korisnik skidao i vidimo što treba promijeniti/maknuti. [2]

Preuzimanja

Nenamjerno preuzimanje softvera ili datoteka s mreže naziva se “drive-by” preuzimanjem. U nekim slučajevima korisnik može odobriti preuzimanje softvera, ali možda neće razumjeti skrivene posljedice koje bi to preuzimanje moglo imati na računalni sustav. Na primjer, preuzimanje može instalirati nepoznate i neželjene izvršne programe. S druge strane, “drive-by” preuzimanja mogu se odvijati bez znanja osobe pomoću trojanskih konja, botneta ili nekog drugog virusa. Cilj “drive-by” preuzimanja sastoji se od instaliranja zlonamjernog softvera (virusa), snimanja unosa korisnikove tipkovnice, praćenja korisničkog pregledavanja, krađe podataka ili otvaranja računala na daljinsko upravljanje. Sve su to vrlo opasni napadi koji narušavaju mrežne standarde, te korisnike mogu puno koštati. [2]

U WireSharku poruke TCP paketa mogu ukazivati ​​na to da se puno paketa prenosi između poslužitelja i klijenta, što je slučaj kod preuzimanja. Budući da će preuzimanja uglavnom uzrokuju zagušenje mrežnog prometa, neki će se paketi možda izgubiti i trebati će ih ponovno poslati kako bi se osigurala pouzdanost TCP-a. Kod TCP protokola, duplicirani ACK-ovi obično su simptom gubitka paketa. TCP “DUP ACK” poruke su okidač od klijenta koji ukazuje da nije primio zapis (onaj nakon ACK-a). Mnoštvo ažuriranja TCP prozora i TCP DUP ACK poruka u WireShark snimci ukazuje na zagušenja između klijenta i poslužitelja, što bi moglo biti uzrokovano preuzimanjima. Stručnjaci u tom slučaju, promatranjem paketa, mogu zaključiti radi li se o “drive-by” ili običnom (sigurnom) preuzimanju.

Na slici vidimo napad prilikom preuzimanja, mnoštvo DUP ACK poruka:

Napadi uskraćivanja usluge (DoS attacks)

Cilj DoS napada je spriječiti korisnike da pristupe resursima ili uslugama sustava. Ciljajući jedno računalo ili cijelu mrežnu vezu, napadač može žrtvama onemogućiti pristup važnim uslugama poput e-pošte, web stranica, mrežnih računa ili drugih aplikacija koje se oslanjaju na pogođena računala. Kako bi povećali učinke DoS napada, hakeri ih provode distribuirano, što se naziva Distribuirano uskraćivanje usluge (DDoS). U DDoS napadu, mnoštvo ugroženih strojeva pokreće koordinirane napade na jednu metu, trošeći na taj način njegovu procesorsku snagu. Pljusak dolaznih poruka u sustav postupno ga prisiljava da uspori i na kraju padne, uskraćujući tako resurse i usluge sustava legitimnim korisnicima. Proučavanjem TCP, UDP i HTTP paketa u WireSharku stručnjaci mogu razaznati koje preuzimanje se stvarno trebalo dogoditi a koja su tu samo da bi zatrpala procesor žrtve.

DoS vrste napada dijelimo na refleksijske (gdje napadač šalje paket legitimnom poslužitelju treće strane s lažiranom izvorišnom IP adresom (žrtve) te zatim poslužitelj odgovara na tu adresu, amplifikacijske (napadač uzastopno šalje “get monlist” zahtjev NTP poslužitelju, dok lažira IP adresu onoga koji traži zahtjev na žrtvinu adresu) i napade krivo formiranim paketima.

Zaključak

Danas je vrlo bitno biti zaštićen prilikom korištenja Interneta. Postoje mnogi alati i programske potpore koje u tome pomažu i daju uvid korisniku u ono što se događa. Jedan od takvih alata koji može detektirati problem je WireShark. Uz pomoć jakih filtera lako je otkriti većinu pokušajeva skeniranja. Skeniranja su početak svakog napada i sadrže se od toga da se provjerava koje IP adrese/vrata su otvorene ili nisu. Nakon skeniranja ide pravi napad, koji je malo teže detektirati/razmotriti kroz WireShark ako nismo stručnjaci. No svakako se može i baš zato je WireShark, iako jednostavan, jedan od najkorištenijih alata za nadzor mreže.

Literatura

[1] Gulshan Shrivastava, Prabhat Kumar, B B Gupta, Suman Bala, Nilanjan Dey. Handbook of Research on Network Forensics and Analysis Techniques.

[2] Vivens Ndatinya, Zhifeng Xiao. Network forensics analysis using Wireshark.