Tshark i tcpdump u praksi
Matija Jurman --Mjurman 08:30, 20. siječnja 2015
Sadržaj |
Uvod
Paketi koji prolaze kroz mrežu ili ukupna količina mrežnih transakcija naziva se mrežni promet. Prateći količinu i vrstu mrežnog prometa možemo doznati mnoštvo informacija o namjeni i korištenju računalne mreže. Tako primjerice možemo predvidjeti ili otkriti neku malicioznu aktivnost unutar te mreže, a ujedno je i lakše spriječiti prije nego li dođe do većih materijalnih i drugih gubitaka. Poznavanje mrežnih protokola i standarada na kojima se zasniva računalna mreža koja se analizira bitan je preduvjet kvalitetne analize računalne mreže.
U navedenom radu biti će prikazane različite mogućnosti koje nam pružaju alati za snimanje mrežnog prometa te mnoštvo takozvanih „trikova“ kojima je moguće doznati primjerice koji cookie se prenosio, poruka koja se prenosila u HTML zaglavlju prilikom uobičajenog, ali i onog neuobičajenog, rada na mreži, TCP streamove, otkrivanje mogućeg neželjenog upada u sustav i druge – koristeći Tshark i Tcpdump alate za analizu mrežnog prometa.
Mreža i mrežni promet
Za spajanje na mrežu računalo treba imati barem jedno fizičko mrežno sučelje. Pritom svako takvo sučelje najčešće posjeduje jedno logičko ili programsko sučelje, ali valja naglasiti da je fizičkom sučelju moguće dodijeliti i više logičkih sučelja. Svako fizičko sučelje ima dodijeljenu jednu MAC adresu, dok svako logičko sučelje ima dodijeljenu IP adresu. Ukoliko je fizičko mrežno sučelje spojeno na neki medij koji dijeli više uređaja, do njega dolaze i podaci koji mu nisu namijenjeni. Fizičko mrežno sučelje to raspoznaje na osnovu odredišne adrese. Podatke koji mu nisu namijenjeni najčešće ignorira, no moguće ga je postaviti u poseban modul rada u kojem prihvaća sve informacije koje dolaze do njega.
Packet snifferom nazivamo program koji snima mrežne pakete koje stižu na sučelje i one koji se preko njega šalju u mrežu. Za analizu mrežnog prometa možemo reći da je postupak kojim se mrežni paketi presreću, a zatim analiziraju. Presretanje paketa podrazumijeva čitanje paketa od strane aplikacije kojoj paket nije originalno namijenjen. Uhvaćeni se paket nakon hvatanja primitka i lokalnog zapisivanja prosljeđuje na odredište, tj. mrežni promet se samo snima bez izmjene ili blokiranja komunikacije. Izvor1 Pojednostavljeni koncept funkcionalnosti packet sniffera vidljiv je na slici 1, dok je struktura packet sniffera prikazana na slici 2.
Packet sniffer sprema kopije paketa, analizira ih i prikazuje u pogodnom obliku, ali te pakete ne šalje na sučelje niti ima svoju posebnu adresu na koju bi se njemu slali paketi. Princip rada je sljedeći: modul „snimanje paketa“ prima kopije okvira, koje onda analizator paketa analizira i prikazuje. Na slici 2 je vidljiv primjer s poznatim Internet protokolima, a vidi se i koji su dijelovi ostvareni na razini operacijskog sustava, a koji na aplikativnoj razini.
Tshark
Instalacija i manipulacija okružjem
Za objašnjenje funkcionalnosti Tshark alata, najprije će biti par riječi o Wireshark alatu. To je besplatni alat izdan pod GPL licencom otvorenog koda za analizu, presretanje i snimanje mrežnog prometa. On podržava više operacijskih sustava (Windows, Linux, OS X, Solaris, FreeBSD). Wireshark „razumije“ strukturu različitih mrežnih protokola, pa je stoga sposoban prikazati podatke iz paketa specifičnih za različite protokole. Za hvatanje paketa koristi se biblioteka koda - pcap (eng.Packet capture). Valja naglasiti kako može hvatati samo pakete s mreža koje pcap podržava, a to su primjerice: Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, Frame Relay i sl. Pcap je biblioteka koja raznim programima pruža programsko sučelje za dohvaćanje paketa s mrežnih sučelja na operacijskim sustavima Windows i Linux/Unix. Podaci se mogu uhvatiti izravno s aktivne mrežne veze, a mogu se i učitati iz datoteke u kojoj su pohranjeni već ranije uhvaćeni paketi. Uhvaćeni podaci mogu biti prikazani, filtrirani i analizirani preko grafičkog korisničkog sučelja (Wireshark) ili preko komandne linije (Tshark). Tshark je stoga jedan od alata koji dolazi prilikom instalacije Wiresharka kao moguća dodatna funkcionalnost samog alata. Osnovna značajka u kojoj se razlikuje od Wiresharka je ta što se Tshark i sve njegove mogućnosti, odnosno funkcionalnosti pokreću iz komandne linije.
Izvoz snimljenih podstaka u .csv datoteku
U nastavku će biti prikazano kako se snimljeni podaci pomoću alata Tshark mogu spremiti u .csv datoteku koju je kasnije moguće otvoriti u programu Microsoft Excel. Navedena funkcionalnost biti će prikazana na operacijskom sustavu Windows 7, koristeći komandnu liniju (eng. Command Prompt) i alat Tshark prethodno instaliran uz Wireshark. Najprije se je potrebno pozicionirati u direktorij na kojem je instaliran Tshark. U ovom slučaju C:\Program files\Wireshark. Zatim je pomoću naredbe tshark –D potrebno provjeriti koji je redni broj fizičkog mrežnog sučelja spojenog na mrežu. U mojem slučaju imamo sljedeća 2 mrežna sučelja prikazana na slici 4.
Kako se u upravljačkoj ploči računala može provjeriti da je računalo spojeno na mrežu preko Local Area Connection-a, koristit ćemo uređaj broj 1.
Snimanje podataka – limit paketa
Zatim zadajemo sljedeću naredbu:
tshark –i 1 –w Matija1.pcap –c 100
pri čemu kratice znače sljedeće:
-i 1 – snimanje prometa na mrežnom sučelju 1 (Local Area Connection)
-w Matija1.pcap – zapis snimljenih paketa u datoteku Matija1.pcap (zapis čitljiv Wireshark alatu)
-c 100 – postavljanje limita snimanja na 100 snimljenih paketa.
Valja naglasiti kako je moguće ranije zaustaviti snimanje mrežnog prometa korištenjem Ctrl+C tipkovničke kratice
Vidljivo je kako se u direktoriju C:\Program files\Wireshark nalazi novokreirana Matija1.pcap datoteka. Njezin sadržaj moguće je pogledati u Wireshark alatu (grafičko sučelje) gdje izgleda kao na slici 5:
Njezin sadržaj također je moguće pogledati i u Tshark komandnom okruženju sa određenim filterima, odnosno prikazom samo nama zanimljivih okvira. Upisujemo sljedeću naredbu:
odnosno:
tshark -r Matija1.pcap -T fields -e frame.time -e eth.src -e eth.dst -e ip.src -e ip.dst -E header=y -E separator=, -E quote=d -E occurrence=f
pri čemu su:
-T fields – naredba za dohvat određenih polja
-e frame.number– broj snimljenog paketa
-e eth.src – MAC adresa izvorišta
-e eth.dst – MAC adresa odredišta
-e ip.src – IP adresa izvorišta
-e ip.dst – IP adresa odredišta
-E header=y – naredba za postavljanje zaglavlja
-E separator=, - naredba kojom govorimo kojim znakom ćemo razdvojiti okvire
-E quote=d – za izbjegavanje neujednačenih brojeva zareza (ukoliko u nekom rezultatu/okviru već postoji zarez, kako bi rezultat ili krajnja .csv datoteka bila u čitljivom obliku)
Izvršavanjem naredbe u rezultatu dobivamo prethodno selektirane podatke o svakom primljenom paketu, kao što je to vidljivo na slici
Dodavanjem naredbe
> Matija1.csv
rezultat prethodno napisanog upita zapisujemo u datoteku Matija1.csv koja se također kreira u direktoriju Wiresharka. Rezultat zapisa u .csv datoteci izgleda ovako
Dohvaćanje Cookie-a
Laički rečeno - HTTP cookie, skraćeno cookie ili kolačić – je datoteka najčešće tekstualnog oblika koja se sprema u web preglednik tijekom korisnikove aktivnosti na nekoj Internet stranici. Najčešće se koristi u svrhu da kada korisnik više puta pregledava istu Internet stranicu, ta stranica može dohvatiti podatke spremljene u kolačiću i tako olakšati odnosno poboljšati korisnikovo iskustvo „surfanja“ tom Internet stranicom. Takve datoteke najčešće sadrže „osjetljive“ podatke kao što su podaci o prijavi korisnika (korisničko ime i lozinka), podaci o gumbovima koji su bili pritisnuti na toj stranici i slično. U nastavku će biti prikazano kako je pomoću alata Tshark lako moguće snimiti, a kasnije i manipulirati Cookie-vima koje je web preglednik spremio tijekom korisnikove aktivnosti na nekoj Internet stranici. Za početak će biti prikazana jednostavna stranica Izvor_testiranje_kolačića, koja omogućava testiranje Cookiea u obliku postavljanja vrijednosti testnog Cookiea i brisanja vrijednosti tog Cookia. Osnovni obrazac stranice prikazan je na slici ispod.
Nakon što sam otvorio stranicu pokrenut ću snimanje paketa u alatu Tshark sljedećom naredbom:
tshark –i 1 –w testiranje_cookiea.pcap
Sada kada je pokrenuto snimanje paketa, biti će postavljena vrijednost testnog Cookiea na „Matija“.
Kao što je vidljivo trenutna vrijednost testnog Cookia iz [Undefined] je promijenjena u „Matija“.
Nakon toga će biti izbrisana povijest pretraživanja zajedno sa spremljenim kolačićima.
Nakon što su kolačići obrisani može se refreshati stranica gdje je vidljivo kako je vrijednost testnog Cookiea opet nedefinirana – [Undefined]. Sada se može zaustaviti snimanje paketa naredbom CTRL+C. Nakon toga u naredbeni redak upisujemo sljedeću naredbu:
tshark –r testiranje_cookiea.pcap –T fields –e http.host –e http.cookie –y http.cookie
Naredbom -Y http.cookie filtriraju se i prikazuju samo oni paketi koji u HTTP protokolu posjeduju informaciju o kolačiću dok se naredbom -T fields -e http.host -e http.cookie selektiraju ti paketi prema atributu poslužitelja i atributu imena i vrijednosti kolačića. Sada kad je vidljiv popis kolačića koji su bili korišteni za vrijeme snimanja mrežnog prometa - zajedno sa njihovim imenom i vrijednošću – pokrenut ću Cookie Injector skriptu za web preglednik Mozillu Firefox naredbom ALT+C.
Pokrenuta skripta traži unos Cookiea u obliku: Cookie: naziv=vrijednost; U skriptu unosimo vrijednost iz prethodno pokrenutog upita u Tsharku – dakle unosimo: „Cookie: test-cookie=Matija;“
Pritiskom na tipku OK dobivamo potrvrdu da su svi uneseni kolačići zapisani.
Osvježavanjem stranice dobivamo vrijednost ranije unesenih kolačića koji su prethodno bili izbrisani - brisanjem povijesti pretraživanja zajedno sa kolačićima. Osvježena stranica, opet ima prvobitni oblik u kojem je vrijednost testnog kolačića postavljena na „Matija“.
Isti ovakav primjer biti će prikazan i alatom Tcpdump, u video formatu. Video dohvaćanja Cookiea, na principu kao što je to ranije opisano možete pogledati
OVDJE: Dohvaćanje Cookiea alatom Tcpdump
Snimanje TCP streamova
Možemo početi identificirati pune TCP konverzacije tražeći zastavice s 3 stanja. Tražeći SYN i SYN-ACT pakete svake TCP konverzacije koja je pokrenuta je prilično jednostavno. U Wireshark alatu se to da jednostavno napraviti primjenom filtera kao što je:
tcp.flags.syn == 1 && tcp.flags.ack == 0.
Takav filter pronalazi SYN pakete, ali za pronalaženje SYN-ACK paketa potrebno je dodati još jedan filter:
tcp.flags.syn == 1 && tcp.flags.ack == 1.
Konačan filter izgledati će kao kombinacija prethodna 2 filtera povezana logičkim ILI:
(tcp.flags.syn == 1 && tcp.flags.ack == 0) || (tcp.flags.syn == 1 && tcp.flags.ack == 1)
Ovim filterom identificirane su konverzacije koje su započele nakon što je započelo snimanje, no sljedeće pitanje koje se nameće je: „Kako izdvojiti sve pakete svake konverzacije i to za svaku konverzaciju?“ U Wireshark alatu se nešto takvo lako može napraviti na sljedeći način: desni klik na svaki SYN ili SYN-ACK paket i odabir „Follow TCP Stream“ opcionalnosti. Takav odabir dati će sve pakete za svaku TCP konverzaciju, no takvo što može vrlo lako postati naporno i „ne-user-friendly“ za korisnika. Stoga se bolje rješenje pronalazi u skriptnom rješenju problema – alatu Tshark.
Ono što nam je potrebno je filter koji prikazuje svaku punu TCP konverzaciju unutar naše .pcap datoteke sa snimljenim paketima.
Stoga postavljamo snimanje paketa sljedećom naredbom:
Tshark –i 1 –w tcp_stream.pcap
i zaustavljamo snimanje sa CTR+C. Wireshark alat prati sve TCP konverzaije sa ID-em streama. S druge strane, Tshark nam može pomoći izgraditi listu ID streamova.
Dakle naredba koju upisujemo u tshark je sljedećeg oblika:
Tshark –r tcp_stream.pcap –Y "(tcp.flags.syn==1 && tcp.flags.ack==0) || (tcp.flags.syn==1 && tcp.flags.ack==1)" -T fields -e ip.src -e ip.dst -e tcp.stream
a rezultat naredbe vidljiv je na slici X.
Objasnimo još jednom dijelove naredbe:
-r tcp_stream.pcap – čitamo ranije snimljenu .pcap datoteku „tcp_stream.pcap“
-T fields- označava da ćemo iz pročitane datoteke izdvojiti samo određena polja
-e ip.src – izdvajamo ip adresu izvorišta
-e ip.dst – izdvajamo ip adresu odredišta
-e tcp.stream – izdvajamo id tcp streama
Isto tako možemo izdvojiti sve TCP streamove istog id-a (po želji) sa pripadnim ip adresama izvorišta i odredišta te pripadnim MAC adresama izvorišta i odredišta. Takvu funkcionalnost također nudi Tshark alat, a upit koji zadajemo izglet će ovako:
tshark –r tcp_stream.pcap –T fields –e eth.src –e eth.dest –e ip.src –e ip.dst –e tcp.stream –Y tcp.stream==9
Objasnimo samo izraze iz naredbe koji ranije nisu objašnjeni, dakle:
–e eth.src - naredba kojom ispisujemo MAC adresu izvorišta
–e eth.dest - naredba koja ispsisuje MAC adresu odredišta
–Y tcp.stream==9 - filter prema kojem filtriramo samo tcp streamove sa id-em 9
Tcpdump
Drugi alat za snimanje i analizu mrežnog koji će biti obrađen u ovom radu je Tcpdump. Prednost ovog alata je što je besplatan i što je jako prilagodljiv korisniku. Iako je manipulacija grafičkim alatima za analizu mrežnog prometa kao što je Wireshark možda više user-friendly, u naredbenom retku moguće je zadati mnoštvo više parametara kojima je često puno lakše i brže postići željeni cilj ili doći do traženog rezultata. Iako generalno dolazi predinstaliran na Linux/Ubuntu operacijskom okružju, moguće je da u nekim verzijama toga OS-a nije predinstaliran. U tom slučaju potrebno ga je dohvatiti sljedećom naredbom:
sudo apt-get install tcpdump
Nakon instalacije alat je spreman za korištenje, a sva manipulacija i rad sa programom radi se u konzoli operacijskog sustava (U mojem slučaju Ubuntu 14.04 LTS).
Tcpdump se koristi za specifičnu svrhu presretanja i prikazivanja komunikacije drugog korisnika ili računala. Korisnik sa potrebnim ovlastima na sustavu se ponaša kao ruter ili gateway kroz koji prolazi nekriptirani promet kao što je Telnet ili HTTP, te je u mogućnosti iskoristiti tcpdump za uvid u korisnička imena, lozinke, URL-ove i sadržaje posjećenih web stranica ili nekih drugih nekriptiranih informacija. Prema potrebi korisnik može primijeniti BPF-bazirani filter za ograničenje broja paketa koje može vidjeti tcpdump – što čini izlaz korisnijim za mreže sa velikim volumenom prometa.
Ukoliko želimo snimati mrežni promet Tcpdump-om prvo je potrebno odabrati pripadajuće mrežno sučelje na kojem će se vršiti snimanje mrežnog prometa. Najprije upisujemo u terminal naredbu ifconfig za kofiguraciju mrežnog sučelja. Kao rezultat upita dobivamo različita mrežna sučelja koje posjeduje računalo zajedno sa pripadnim informacijama o svakom sučelju. Vidljivo je da moje računalo poseduje 3 mrežna sučelja (eth0,l0, wlan0) i da je trenutno spojeno preko wlan0 mrežnog sučelja na mrežu, pa je stoga potrebno napisati sljedeću naredbu za snimanje preko mrežnog sučelja wlan0:
tcpdump -i wlan0
Ukoliko želimo snimati promet koje ide preko određenog porta to ćemo učiniti dodavanjem ključne riječi 'port XY' zajedno sa navodnicima gdje XY predstavlja broj porta. Stoga, ukoliko želimo snimati samo promet preko porta 80 u terminal upisujemo sljedeću naredbu:
tcpdump -i wlan0 'port 80'
Ukoliko želimo snimljeni promet spremiti lokalno na računalo radi kasnije manipulacije, filtriranja i detaljnije obrade na kraj naredbe dodat će se ključna riječ -w ime_datoteke Kasnije se ta datoteka može lako ponovno pročitati u konzoli dodavanjem ključne riječi -r ime_datoteke.
Http zaglavlje i Cookie-vi koji se prenose
Još jedna opcionalnost koju nudi tcpdump je snimanje http zaglavlja. Sljedećom naredbom dohvatiti će se prvih 1024 bajta u liniju međuspremnika izlaza za sve pakete koji idu na neku adresu. Za naš ću primjer uzeti adresu www.24sata.hr.
Naredba koju zadajem je sljedeća:
tcpdump -s 1024 -l -A dst www.24sata.hr –w matija
-A –ispisuje svaki paket u ASCII obliku
-l – za promatranje podataka tijekom snimanja
dst www.24sata.hr – snimanje hosta odredišta www.24sata.hr
-w matija – zapis podataka u datoteku matija
Sada izvršavamo naredbu, ali bez zapisa u datoteku matija - dakle upisujemo samo:
tcpdump -s 1024 -l -A dst www.24sata.hr
Kao rezultat upita dobivamo sljedeće podatke:
Kao što je vidljivo, jedni od mnogobrojnih podataka u svakom paketu su podaci o Hostu, User Agentu, Prihvatljivom jeziku i Encodingu, tipu veze, tipu sadržaja, Cookie-u koji se prenosio i slično. U našem slučaju vidljiv je id Cookiea koji je ovakvog oblika
Cookie: _ff_prevReqData=vLen%3D103%26mScroll%3D0%26statjsIdRnd%3D1858499203%26enterTs%3D1421423410; xtvrn=$392976$; xtan392976=-; xtant392976=1; __gfp_64b=Q04seKhmvVAjqccbgT2zH4kU1CS4mRAFT1gZXjpw.dv.e7; __gads=ID=40def92d943b5b94:T=1421421331:S=ALNI_MZs2dLM-dEZ9w2JDPZ3_DpYKgRNKA; __utma=22025656.595830939.1421421331.1421421331.1421421331.1; __utmb=22025656.16.9.1421423410354; ff_uvid=51962907; DM_SitIdT93=true; DM_SitId93SecIdT287=true; cookieToolbarContainer=1; DM_SitId93SecIdT295=true; ff_1st_sess=1; ff_usvid=113938702; DM_SitId93=true; DM_SitId93SecId287=true; DM_SitId93SecId295=true; __utmc=22025656; __utmz=22025656.1421421
Ako snimljenu datoteku otvorimo u alatu Notepad ili u Wiresharku također možemo pronaći podatak o Cookiu koje se prenosio. Primjer je vidljiv na sljedećim slikama:
Udaljena kontrola računala (Teamviewer)
Jedna od glavnim prednosti alata za analizu mrežnog prometa je otkrivanje mogućih potencijalnih opasnosti i ranjivosti sustava. Jedna od takvih opasnosti je opasnost od udaljene kontrole računala. Postoji mnoštvo načina kojima je moguće pristupiti računalu s udaljene lokacije i tako doći do datoteka i povjerljivih podataka. Poneki alati omogućavaju napadaču da pristupi grafičkom sučelju operacijskog sustava žrtve sa udaljene lokacije te tako ima uvid u sve što se događa na računalu klijenta – od vizualnih pokreta mišem, do stranica koje posjećuje, aktivnosti koje obavlja na računalu i slično. Ne treba posebno objašnjavati koliko uvid u takve aktivnosti može naštetiti žrtvi, ponajviše zbog bitnih informacija do kojih dolazi klijent. Jedan od takvih alata – izrađen s dobrom namjerom – je općepoznati alat Teamviewer.
Teamviewer je programski paket izrađen u svrhu: udaljene kontrole računala, razmjene podataka, web konferencija, dijeljenja sadržaja ekrana između dva udaljena računala, ili računala i mobilnog uređaja. Teamviewer funkcionira na način da je potrebno instalirati programski paket na računalo „žrtve“ i programski paket na računalu ili mobilnom uređaju „napadača“. Jednom kada „napadač“ dođe do informacija o internom Teamviewer ID-u i passwordu „žrtve“, vrlo lako je moguće pristupiti računalu „žrtve“ – potrebno je samo pritisnuti Connect to partner. U nastavku će biti prikazano kako je pomoću alata Tcpdump lako moguće vidjeti jesmo li pod „napadom“ ovakve vrste. U ovom slučaju za primjer će biti prikazana konekcija između mobilnog računala na kojem je instalirana aplikacija Teamviewer i računala „žrtve“. U tcpdump alatu zadajemo naredbu za snimanje mrežnog prometa:
tcpdump –i eth0
Ova naredba omogućuje osnovno snimanje mrežnog prometa koji se odvija preko eth0 mrežnog sučelja. Pokretanjem ove naredbe dobivamo sljedeći rezultat u konzoli:
Kao što je vidljivo , ono što prvo upada u oko je veliki broj pojavljivanja UDP protokola. Pošto je UDP protokol - protokol transportnog sloja OSI modela - koji omogućava slanje datagrama između aplikacija na umreženim računalima, a najčešće se koristi kada je bitnija efikasnost i brzina te su dozvoljeni gubici (VoIP telefonija, multicast), dok je pouzdanost manje bitna; lako se dade zaključiti kako se nešto slično odvija na našem računalu. Kada ovoj tvrdnji pridodamo činjenicu da se rad Teamviewera bazira na UDP protokolu, prema rezultatima na prethodnoj slici lako se dade predpostaviti kako je naše računalo „nadgledano i upravljano“ s neke udaljene lokacije – u ovom slučaju preko alata Teamviewer. Upišimo još sljedeću naredbu
tcpdump –i eth0 –vvv -qe
Ovom naredbom dobivamo detaljniji izvještaj (kratica -vvv znači very very verbose, odnosno vrlo vrlo opširno), u našem slučaju sljedeće:
U ovakvom opširnom izvještaju uostalom dobivamo informacije o MAC adresi pošiljatelja i primatelja paketa. U našem slučaju MAC adresa pošiljatelja je e8:9a:8f:69:d1:d1, što se lako može provjeriti da je to zapravo MAC adresa naše mrežne kartice.
Kako je Tcpdump vrlo fleksibilan alat njime lako možemo ispisati sadržaj snimljenog prometa u vizualnom obliku sličnom kao što to prikazuje i Wireshark alat. I dalje smo spojeni preko mobilne aplikacije TeamViewer na računalo “žrtve”. Snimamo mrežni promet u datoteku teamviewer2.pcap naredbom
tcpdump -i wlan0 -vvv -qe -w teamviewer2
Objašnjenje:
-i wlan0 – odabiremo wlan0 jer smo spojeni na mrežu preko wireless mrežne kartice, sučelje nazvano wlan0 na Ubuntu 12.04 operacijskom sustavu
-vvv - very very verbose (vrlo vrlo opširno)
-qe – brzi ispis link-level headera za svaki snimljeni paket (može se koristiti primjerice za ispis MAC adresa za protokole kao što su Ethernet ili IEEE 802.11 -w teamviewer2 – sadržaj snimljenog prometa zapisujemo u datoteku teamviewer2.pcap
Zatim sadržaj datoteke kopiramo sa root direktorija u u naš home direktorij ranije opisanom naredbom
cp -i /root/teamviewer2 /home/matija/matija_tcpdump_docs
Zatim čitamo sadržaj datoteke teamviewer2 u obliku kakav je čitljiv u Wireshark alatu. Upisujemo:
tcpdump -qns 0 -X -r teamviewer2
Rezultat koji dobivamo u konzoli ima sljedeći oblik:
Iz priloženog je vidljiv sadržaj svakog pojedinog paketa, IP adresa odredišta i izvorišta, odredišni i izvorišni port protokola, sadržaj svakog pojedinog paketa u ASCII znakovima , dužinu, vrijeme snimanja i sl. Da je računalo pod “napadom” stranog “napadača” i ovdje se lako može zaključiti kada scrolamo prema gore i također vidimo mnoštvo UDP protokola.
Manji Tcpdump korisni primjeri
Top 10 Talkers
Jedna zanimljiva naredba je naredba kojom Tcpdump izlistava tzv. “Top 10 Talkers”. Ovo je vrlo korisna naredba koju valja pokrenuti kada HTTP zauzima većinu mrežne propusnosti. Sintaksa naredbe je sljedeća:
tcpdump -tnn -c 2000 -i wlan0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 10 '
Snimanje cijelih paketa u ASCII i Hexadecimalnom obliku
Sljedeća zanimljiva naredba omogućava snimanje cijelih paketa u datoteku u ASCII i hexa decimalnom obliku zajedno sa pripadnim ip adresama naziva hosta.
tcpdump -i wlan0 host 192.168.1.21 -nXXv
Najzastupljeniji promet u mreži
Ponekad je korisno imati generalni sliku o tome “što sve smanjuje propusnost mreže”. Ova naredba će ograničiti snimanje prometa na samo nekoliko paketa umjesto da preplavi cijeli terminal u nedogled) te će pružiti mali ali ponekad dovoljni uzorak o tome što se događa s mrežom. Ova naredba može biti izrazito korisna kod dijagnoze DOS napada te daje dobru sliku o tome koji se promet najčešće vrti mrežom. Sintaksa naredbe je sljedeća:
tcpdump -i wlan0 -n | head
Zaključak
Podaci koji putuju mrežom prenose se paketima, a ukupna količina mrežnih transakcija naziva se mrežni promet. Najviše tutoriala/članaka o prikupljanju i analizi mrežnog prometa na internetskim resursima pronašao sam o alatu Wireshark koji je još uvijek najpopularniji iz razloga što je jednostavan za korištenje i grafičkog je sučelja na koje je većina korisnika naviklo. Ipak, profesionalnjimim korisnicima mogućnosti toga alata nisu dovoljne, stoga je u sve većem porastu upotreba Tshark i Tcpdump alata koji se pokreću iz komandne linije i omogućavaju korisnicima izvršavanje specifičnijih, efikasnijih i boljih upita. Radeći na ovom projektu naišao sam na brojne probleme ponajviše iz razloga što sam se tek sada prvi puta susreo sa Debian GNU/Linux OS okružjem pa mi je trebalo vremena da se priviknem na rad u Terminalu. Smatram da sam uspješno prikazao neke osnovne koncepte i mogućnosti dvoje alata i uspješno ih povezao sa ciljem kolegija - upoznavanjem sa sigurnošću informacijskih sustava. Rad u Tsharku, a pogotovo u Tcpdumpu iziskuje kreativnost i potrebu sa stalnim "držanjem oka" na onim što zapravo želimo postići prislušivanjem mrežnog prometa. Mogućnosti su zaista široke, i ovo je zapravo tek uvod u stvarne mogućnosti koje nude ova dva alata.
Literatura
J. F. Kurose, Keith W. Ross: Computer networking : a top-down approach 6. izdanje
CIS: Praćenje mrežnog prometa, pristupano 20.1.2015., Izvor
CCERT: Analiza mrežnog prometa, pristupano 20.1.2015.,Izvor
tshark - Dump and analyze network traffic, pristupano 20.1.2015. Izvor
Tcpdump: User Comands, pristupano 20.1.2015., Izvor
A. Sandler: Tcpdump for Dummies, pristupano 20.1.2015. Izvor
A tcpdump Tutorial and Primer, pristupano 20.1.2015., Izvor
Appneta: How to Easily Capture TCP Conversation Streams, pristupano 20.1.2015., Izvor