Tcpdump udp paketa. Tcpdump uslužni program, primjeri opcija filtera. $ tcpdump opcije -i filteri sučelja

22.05.2023 Recenzije

Stoga sam odlučio napraviti svoju vlastitu varalicu kako bi bila... Jer bez tcpdumpa, više od jednog administratora je ne-administrator

Uvod

Vrlo često, kako bi pronašli probleme u mreži, koriste se analizatori mrežnog prometa . tcpdump je jedan od predstavnika ove klase programa, omogućuje slušanje (prikaz/spremanje) i analizu rada mreže na razini odaslanih mrežnih paketa, okvira i ostalih jedinica prijenosa mrežnog prometa. Ovisno o konfiguraciji mreže, tcpdump može slušati ne samo paketi namijenjeni određenoj MAC adresi, već i paketi emitiranja. Prisluškivanje presretanje mrežnih paketa temelji se na "promiskuitetni" način rad mrežnog adaptera.

Ovisno o mrežnoj opremi koja se koristi za povezivanje računala na Ethernet mrežu, postoji sljedeće: mogućnosti slušanja prometa:

  • Na mreži koncentratori sav promet iz čvorišta dostupan je bilo kojem mrežnom hostu.
  • U mrežama temeljenim sklopke(sklopke) mrežni host ima pristup samo svom prometu, kao i cjelokupnom emitiranom prometu ovog segmenta.
  • Neki upravljani preklopnici imaju funkciju kopiranja prometa određenog porta na port za nadzor ("zrcaljenje", nadzor porta).
  • Pri korištenju posebnih alata (tapera) koji su uključeni u prekid mrežne veze i prenose promet veze na zaseban port, moguće je slušati odgovarajući port.
  • "Trik" s čvorištem je u tome što se port preklopnika čiji se promet treba slušati uključuje preko čvorišta, također povezujući čvor monitora s čvorištem (u ovom slučaju, u većini slučajeva, izvedba mrežne veze je smanjen).

Tako, uslužni program tcpdump uključen u većinu Unix distribucija i omogućuje vam presretanje i prikaz/spremanje mrežnog prometa u datoteku. Uslužni program koristi biblioteka libpcap. Tu je i priključak za Windows. Potrebno je za rad uslužnog programa. Na primjer, na Debianu se instalira pomoću naredbe:

Debian:~# apt-get install tcpdump

Uslužni programi su neophodni za rad (budući da su postavke mrežnog sučelja promijenjene - prebacuje se na "promiskuitetni" način rada). Općenito format naredbe tcpdump ima sljedeći oblik:

Debian:~# tcpdump<опции> <фильтр>

mogućnosti uslužnog programa tcpdump

-i sučelje

Određuje sučelje s kojeg treba analizirati promet (bez navođenja sučelja - analiza “prvog koji se pojavi”).

Onemogućuje razlučivanje IP-a u ime domene. Ako je navedeno -nn, konverzija brojeva portova u nazive protokola je zabranjena.

Najčešće korištene opcije filtera za naredbu tcpdump su:

dst domaćin

Provjerava odgovara li odredišna adresa IP paketa navedenoj vrijednosti. Moguće je postaviti i IP, podmrežu u formatu 10.0.0.1/24 i naziv hosta.

src domaćin

Provjerava odgovara li izvorna adresa IP paketa navedenoj vrijednosti. Moguće je postaviti i IP, podmrežu u formatu 10.0.0.1/24 i naziv hosta.

domaćin host

Provjerava odgovara li adresa pošiljatelja ili primatelja navedenoj vrijednosti. Moguće je postaviti i IP, podmrežu u formatu 10.0.0.1/24 i naziv hosta.

net network_name

Provjerava je li adresa pošiljatelja/primatelja na navedenoj mreži. Moguće je navesti mrežu u CIDR formatu (na primjer, 10.0.0.1/22) ili navesti naziv mreže naveden u .

ip | arp | rarp | tcp | udp | icmp [domaćin]

Provjerava pripada li paket jednom od navedenih protokola i, prilikom navođenja adrese glavnog računala, provjerava odgovara li adresa pošiljatelja/primatelja navedenoj. Moguće je postaviti i IP, podmrežu u formatu 10.0.0.1/24 i naziv hosta.

dst port broj_porta

Provjerava se pripada li paket TCP/UDP protokolu i je li odredišni port jednak navedenom. Možete navesti broj priključka ili naziv naveden u datoteci /etc/services.

src port broj_porta

Provjerava se pripada li paket TCP/UDP protokolu i je li izvorni port jednak navedenom. Možete navesti broj priključka ili naziv naveden u datoteci /etc/services.

luka broj_porta

Provjerava se pripada li paket TCP/UDP protokolu i je li odredišni ili izvorni port jednak navedenom. Možete navesti broj priključka ili naziv naveden u datoteci /etc/services.

ip emitiranje

Provjerava je li IP paket paket za emitiranje.

ether (src | dst | host) MAC_adresa

Provjerava pripada li mrežni paket izvoru, odredištu, izvoru ili odredištu s danom MAC_adresom.

etersko emitiranje

Provjerava je li ARP paket paket za emitiranje.

Primjeri korištenja naredbe tcpdump

Analiza prometa na razini mreže (ARP, ICMP) pomoću tcpdumpa

Pretpostavimo da imamo 2 hosta. Host 1 sa sučeljem eth0 i sljedećim parametrima:

Domaćin1:~# ip adresa prikaži dev eth0 5: eth0: mtu 1500 qdisc pfifo_fast stanje UNKNOWN qlen 1000 veza/eter 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.56.1/24 brd 192.168.56.255 opseg globalni eth0 inet6 fe80: :800:27ff:fe00:0/64 scope link valid_lft forever preferred_lft forever

I također host2 sa sučeljem eth1

Domaćin2:~# ip adresa prikaži dev eth1 3: eth1: mtu 1500 qdisc pfifo_fast stanje GORE qlen 1000 link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff inet 192.168.56.33/24 opseg globalni eth1 inet6 fe80::a00:27ff :fefd:e5aa/64 scope link valid_lft forever preferred_lft forever

Pretpostavimo da do sada nije bilo mrežne razmjene podataka između hostova i ako pokrenete naredbu ip neigh show na hostu 2, vidjet ćete da nema unosa u ARP tablici. Napravimo mali eksperiment. Pokrenimo uslužni program tcpdump na jednom od virtualnih sučelja host1:

Host1:~# tcpdump -ne -i eth0 tcpdump: verbose izlaz potisnut, koristite -v ili -vv za potpuno dekodiranje protokola slušanje na eth0, tip veze EN10MB (Ethernet), veličina snimanja 65535 bajtova

Host1:~# ping -c 1 192.168.56.33 PING 192.168.56.33 (192.168.56.33) 56(84) bajta podataka. 64 bajta od 192.168.56.33: icmp_req=1 ttl=64 vrijeme=1,06 ms --- 192.168.56.33 ping statistika --- 1 paket poslano, 1 primljeno, 0% gubitka paketa, vrijeme 0ms rtt min/avg/max/mdev = 1,067/1,067/1,067/0,000 ms

Nakon toga se u ARP tablici host1 sustava pojavio unos o IP adresi host2:

Host1:~# ip neigh show dev eth0 192.168.56.33 lladdr 01:00:27:77:e5:00 HOST2

Na virtualnoj konzoli tcpdump nam je prikazao sljedeće informacije:

Host1:~# tcpdump -ne -i eth0 tcpdump: verbose izlaz potisnut, koristite -v ili -vv za potpuno dekodiranje protokola slušanje na eth0, tip veze EN10MB (Ethernet), veličina snimanja 65535 bajtova 12:16:29.465780 0a:00 :27:00:00:00 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), duljina 42: Zahtjev tko ima 192.168.56.33 reci 192.168.56.1, duljina 28 12:16:29.466786 01 :00:27:77:e5:00 > 0a:00:27:00:00:00, ethertype ARP (0x0806), duljina 42: Odgovor 192.168.56.33 je na 01:00:27:77:e5:00 , duljina 28 12:16:29.466815 0a:00:27:00:00:00 > 01:00:27:77:e5:00, ethertype IPv4 (0x0800), duljina 98: 192.168.56.1 > 192.168.56.33: ICMP echo zahtjev, id 5284, seq 1, duljina 64 12:16:29.467934 01:00:27:77:e5:00 > 0a:00:27:00:00:00, ethertype IPv4 (0x0800), duljina 98: 192.168 .56.33 > 192.168.56.1: ICMP echo odgovor, id 5284, seq 1, duljina 64 ^C 4 paketa uhvaćena 4 paketa primljena od strane filtera 0 paketa odbačenih od kernela

Svaki zapis mrežnog paketa u ovom formatu sadrži vrijeme kada je paket presretnut, izvornu i odredišnu MAC adresu, vrstu protokola, duljinu paketa i informacije o sadržaju paketa. Prvo snimanje opisuje ARP zahtjev za emitiranje s MAC adrese sučelja eth0 sustava host1 (" Tko ima adresu 192.168.56.33, piše 192.168.56.1"). Drugi unos- odgovor s MAC adrese host2 na MAC adresu host1 (" 192.168.56.33 ima MAC adresu 01:00:27:77:e5:00"). Treći i četvrti unos (ICMP zahtjev I ICMP odgovor) su rezultat naredbe ping pokrenute na host1. Tada je tcpdump prekinut. Prije gašenja tcpdump ispisuje statistiku rada: broj presretnutih paketa, primljenih od strane filtera i odbačenih od strane kernela

Dakle, sustav host1, da bi poslao standardni echo zahtjev stroju host2, prvo je primio MAC adrese stroja host2 koristeći ARP protokol i unio ga, vezanog uz IP adresu, u svoju ARP tablicu.

Analiza prometa na transportnom sloju (TCP, UDP) pomoću tcpdumpa

Pretpostavimo da je određeni WEB poslužitelj instaliran na host2 sustav. Pokušajmo otvoriti stranicu s ovog web poslužitelja na računalu host1 koristeći preglednik konzole lynx:

Host1:~# lynx 192.168.56.33

Na drugoj konzoli prvo pokrenite tcpdump s parametrima filtriranja:

Host1:~# tcpdump -n -i eth0 host 192.168.56.33 i port 80 tcpdump: verbose izlaz potisnut, koristite -v ili -vv za potpuno dekodiranje protokola slušanje na eth0, tip veze EN10MB (Ethernet), veličina snimanja 65535 bajtova 15 > 1 92.168.56.1.41533 : Zastavice, seq 370041518, ack 1209026236, win 5792, opcije, duljina 0 15:44:37.838157 IP 192.168.56.1.41533 > 192.168.56.33.80: Zastavice [.], ack 1, win 46, opcije, duljina 0 1 > 192 .168.56 .1.41533: zastave [.], ACK 222, Win 1716, Opcije, dužina 0 15: 44: 37.848118 IP 192.168.56.33.80> 192.168.56.1.41533: zastave, SEQ 1: 446, Win 1716, Opcije > 192. 168.56.1. 41533: Zastavice, SEQ 446, ACK 222, Win 1716, Opcije, Dužina 0 15: 44: 37.850366 IP 192.168.56.1.41533> 192.168.56.33.80: Zastavice, SEQ 447, Win 54, Op. tions, leen GTH 0 15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: Zastavice [.], ack 223, win 1716, opcije , duljina 0 ...

U ovom primjeru, klijent (192.168.56.1) s TCP porta 41533 uspostavlja vezu s poslužiteljem (192.168.56.33) koji sluša na portu 80, postavlja zahtjev, prima potrebne podatke i veza završava.

Zaglavlje TCP segmenta, uz brojevi portova primatelja i pošiljatelja sadrži niz parametara:

  • Redni broj(seq). Određuje redoslijed bajtova u toku poslanom na mrežu (pomak prvog bajta u segmentu u odnosu na početak toka podataka).
  • Potvrđen broj(ACK). Maksimalan broj bajtova u primljenom segmentu povećava se za 1. Potvrde poslane pošiljatelju istovremeno služe kao zahtjev za novom porcijom podataka.
  • Kontrolne zastavice(SYN - S, ACK, FIN -F, RST - R, PSH - P, URG)
  • Prozor(win) - broj bajtova podataka koje očekuje pošiljatelj podataka, počevši od bajta čiji je broj naznačen u ack polju. Kako bi se optimizirao prijenos, pošiljatelj ne čeka potvrdu za svaki poslani segment, već može poslati grupu u mrežu segmentu (ali u bajtovima ne većim od veličine prozora). Ako je kvaliteta kanala loša (mnogo zahtjeva za reemitiranjem, izgubljene su potvrde), prozor se smanjuje, ako je dobar, prozor se povećava.
  • Mogućnosti. Koristi se za rješavanje pomoćnih problema. Na primjer, prenosi se MSS (Maximum segment size) - najveća veličina segmenta.

Proces uspostavljanja dvosmjerne TCP veze odražava se u prva tri unosa tcpdump:

  • Klijent šalje poslužitelju TCP segment s postavljenom zastavom SYN, početnim "slučajnim" brojem (1209026235), od kojeg će se numerirati bajtovi u streamu koji šalje, maksimalna veličina prozora je volumen koji poslužitelj smije prijenos bez potvrde klijenta (5840): 15: 44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80: Zastavice [S], seq 1209026235, win 5840, opcije , duljina
  • Poslužitelj šalje klijentu TCP segment s postavljenim zastavicama SYN i ACK, početnim "slučajnim" brojem (370041518) od kojeg će se numerirati bajtovi u streamu koji šalje i maksimalnom veličinom prozora za klijenta (5792). Ovaj segment također potvrđuje primitak zahtjeva za povezivanje od klijenta: 15:44:37.838118 IP 192.168.56.33.80 > 192.168.56.1.41533: Zastavice, seq 370041518, ack 1209026236, win 5792, opcije, duljina
  • Klijent šalje poslužitelju TCP segment s postavljenom ACK zastavom, što je potvrda primanja segmenta od poslužitelja (u daljnjem tekstu tcpdump prikazuje relativne vrijednosti seq i ask): 15:44:37.838157 IP 192.168.56.1 .41533 > 192.168.56.33.80: Zastavice [. ], ack 1, win 46, opcije, duljina

Nakon toga veza se smatra uspostavljenom.

U sljedećem paru zapisa klijent šalje zahtjev protokola aplikacijskog sloja (221 bajt) poslužitelju u odjeljku podataka segmenta i prima potvrdu od poslužitelja o njegovom primitku:

15:44:37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80: Zastavice, seq 1:222, ack 1, pobjeda 46, opcije, duljina 221 15:44:37.839921 IP 192.168.56.33.80 > 192.168.56.1 .41533: Zastavice [.], ack 222, win 1716, opcije , duljina 0

U ovom slučaju, zastavica PSH (P) koristi se za obavještavanje strane pošiljatelja da je strana primatelj spremna primiti podatke. Zatim poslužitelj šalje podatke klijentu (445 bajtova) i od njega prima potvrdu primitka:

15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: Zastavice, sekvenca 1:446, potvrda 222, pobjeda 1716, opcije, duljina 445 15:44:37.848156 IP 192.168.56.1. 4 1533 > 192.168. 56.33 .80: Zastavice [.], ack 446, win 54, opcije , duljina 0

Zatim, na inicijativu poslužitelja, veza se prekida. Poslužitelj šalje paket s postavljenom FIN zastavom:

15:44:37.849738 IP 192.168.56.33.80 > 192.168.56.1.41533: Zastavice, seq 446, ack 222, win 1716, opcije, duljina 0

Klijent također odgovara slanjem paketa s postavljenom FIN zastavom; ovaj paket je ujedno i potvrda primitka zahtjeva za prekid veze od poslužitelja:

15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80: Zastavice, seq 222, ack 447, win 54, opcije, duljina 0

Poslužitelj može samo potvrditi primitak FIN segmenta od klijenta:

15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: Oznake [.], ack 223, win 1716, opcije, duljina 0

Reakcija tcpdumpa na pokušaj spajanja na zatvoreni port 23/tcp:

21:56:14.381091 IP 192.168.56.1.54040 > 192.168.56.33.23: Zastavice [S], seq 2956835311, win 5840, opcije, duljina 0 21:56:14.381688 IP 192.168.56.33.2 3 > 192.168.56.1.54040 : Zastavice, seq 0, ack 2956835312, win 0, length 0

U ovom primjeru, sustav 192.168.56.1 pokušava se spojiti na nepostojeću TCP uslugu na čvoru 192.168.56.33. Udaljeni sustav odgovara slanjem segmenta s postavljenom zastavicom RST (reset).

tcpdump odgovor na slanje UDP datagrama na zatvoreni port 53/udp:

21:55:16.925906 IP 192.168.56.1.41979 > 192.168.56.33.53: 6561+ A? www.tut.by. (28) 21:55:16.926615 IP 192.168.56.33 > 192.168.56.1: ICMP 192.168.56.33 udp port 53 nedostupan, duljina 64

Ovaj primjer pokušava poslati UDP datagram na nepostojeći port na udaljenom sustavu. UDP obično odgovara slanjem ICMP poruke izvornom hostu da je priključak nedostupan.

Ostali primjeri korištenja naredbe tcpdump:

# tcpdump -n -i ppp0 ether src 11:20:b3:d8:d8:2c

Prikaz mrežne statistike s ppp0 sučelja (-i ppp0) bez pretvaranja IP-a u DNS (-n) za one okvire čija je izvorna MAC adresa 11:20:b3:d8:d8:2c.

# tcpdump -n -e -i vlan0 ether emitiranje

Izlaz emitiranog prometa iz vlan0 sučelja.

# tcpdump -n -i eth0 src 192.168.66.1

Filtriraju se mrežni paketi čije zaglavlje sadrži IP adresu 192.168.66.1 u polju izvora.

# tcpdump -n -i eth0 host 192.168.66.1

Paketi u kojima je ova IP adresa navedena kao izvor ili odredište paketa se filtriraju.

# tcpdump -n -i eth0 src net 10.0.0.0 maska ​​255.0.0.0

Paketi čiji izvor označava mrežne čvorove 10.0.0.0/8 se filtriraju.

# tcpdump -n -i eth0 icmp

Izlaz samo ICMP paketa iz eth0 sučelja.

Ovim ću, mislim, završiti trenutni članak. Kako se pojave novi primjeri, ažurirat ću članak. Nadam se da će materijal biti koristan ne samo meni

U članku su korišteni primjeri i neki materijali iz intuit predavanja.

Srdačan pozdrav, McSim!

tcpdump upute na ruskom i primjeri.

-A specificira izlaz svakog paketa (bez zaglavlja sloja veze) u ASCII formatu. Ovaj način je koristan za prikupljanje HTTP prometa.

-c <число пакетов>specificira da program završava nakon hvatanja određenog broja paketa.

-C<размер файла>određuje hoće li se provjeriti veličina datoteke za snimanje prije nego što se u nju zapiše svaki novi paket. Ako veličina datoteke premašuje parametar file_size, datoteka se zatvara
i stvara se nova datoteka za pisanje paketa. Za datoteke snimanja koristi se naziv naveden parametrom -w i, počevši od druge datoteke, naziv se dodaje kao
sufiks broj datoteke. Varijabla file_size navodi veličinu datoteke u milijunima bajtova (ne megabajti = 1.048.576 bajtova).

-d specificira izlaz dumpa kompajliranog koda za podudaranje paketa u formatu čitljivom za čovjeka i prekid programa.

-dd Izbacuje odgovarajući kod kao fragment C programa.

-ddd izbacuje kod podudaranja kao niz decimalnih vrijednosti, kojem prethodi niz s vrijednošću brojača.

-D prikazuje popis mrežnih sučelja na sustavu s kojih tcpdump može prikupljati pakete. Svako mrežno sučelje ima naziv i broj, nakon kojih može slijediti
tekstualni opis sučelja. Naziv i broj sučelja mogu se koristiti sa zastavom -i za određivanje skupljanja paketa s jednog sučelja.

Ova opcija može biti vrlo korisna za sustave koji ne pružaju informacije o dostupnim mrežnim sučeljima3.

Oznaka -D nije podržana ako je tcpdump kompajliran sa starijom verzijom libpcap-a koja ne podržava funkciju pcap_findalldevs().

-e ispisuje zaglavlje sloja veze na svakom retku ispisa.

-E navodi upotrebu spi@ipaddr algoritma i tajne za dešifriranje IPsec ESP paketa koji se šalju na ipaddr adresu i sadrže vrijednost i u polju Indeks sigurnosnog parametra
spi. Kombinacija spi i adrese može se ponoviti koristeći zarez ili novi red kao razdjelnik. Imajte na umu da postavljanje tajne za IPv4 ESP pakete u
trenutno podržano.

Algoritmi koji se mogu koristiti su des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc ili nijedan. Zadani algoritam je des-cbc. Mogućnost dešifriranja
paketi se pružaju samo u slučajevima kada su opcije podrške za kriptografiju bile omogućene kada je tcpdump kompajliran.

Tajni parametar sadrži ASCII tekst ESP tajnog ključa. Ako tajna počinje s 0x znakova, pročitat će se heksadecimalna vrijednost. Opcija pretpostavlja korištenje
ESP prema RFC 2406, a ne RFC 1827. Ova je opcija podržana samo u svrhu otklanjanja pogrešaka i ne bi se trebala koristiti sa stvarnim privatnim ključevima, budući da je onaj unesen u
naredbenog retka, IPsec ključ je dostupan ostalim korisnicima sustava4.

Osim eksplicitnog određivanja opcija u naredbenom retku, one se mogu specificirati u datoteci opcija koju će tcpdump pročitati kada primi prvi ESP paket.

-f postavlja izlaz stranih IPv4 adresa u numeričkom formatu. Korištenje ove opcije omogućuje vam da se riješite problema koji se javljaju na Sun NIS poslužiteljima prilikom pokušaja emitiranja
nelokalne adrese. Stranost IPv4 adrese provjerava se pomoću adrese i maske sučelja koje je primilo paket. Ako adresa sučelja i maska ​​nisu dostupni
(na primjer, kada koristite nenumerirana sučelja ili kada hvatate pakete sa svih adresa na Linuxu koristeći lažno sučelje bilo koje), ova opcija će raditi
netočno.

-F<файл> specificira korištenje filtara sadržanih u navedenoj datoteci. U tom se slučaju filtri navedeni u naredbenom retku zanemaruju.

-i<интерфейс> specificira kolekciju paketa iz navedenog sučelja. Ako sučelje nije navedeno, tcpdump traži u sustavu popis dostupnih sučelja i s njega odabire aktivni uređaj s minimalnim
broj (isključujući povratnu petlju).

Na Linux sustavima, počevši od kernela 2.2, podržano je lažno sučelje nazvano any, koje osigurava prikupljanje paketa sa svih aktivnih sučelja sustava. Imajte na umu da naknada
paketa s bilo kojeg uređaja provodi se u normalnom (ne promiskuitetnom) načinu rada.

Ako vaš sustav podržava zastavu -D, možete navesti kao argument broj sučelja koji se ispisuje kada se koristi ova zastavica.

-l postavlja međuspremnik stdout linije. Ova opcija je korisna u slučajevima kada želite vidjeti podatke dok prikupljate pakete. Na primjer, naredbe

tcpdump -l | tee dat

tcpdump -l > dat & tail -f dat

omogućiti snimanje paketa u dat datoteku i istovremeni izlaz na konzolu.

-L specificira izlaz popisa poznatih tipova slojeva veze i završetak programa.

-m<файл> učitava SMI MIB definicijski modul iz navedene datoteke. Ova se opcija može više puta koristiti za učitavanje više MIB modula.

-n onemogućuje pretvaranje adresa i brojeva portova u simbolička imena.

-N specificira korištenje samo naziva hostova, a ne potpuno kvalificiranih naziva domena. Na primjer, umjesto lhotze.bilim-systems.net, kada koristim ovu opciju, moja radna stanica će biti
označen kao lhotze.

-O onemogućuje optimizator koda za provjeru odgovaraju li paketi uvjetima filtriranja. Koristite ovu opciju ako mislite da optimizator ne radi ispravno.

-str govori programu da se sučelje ne mora staviti u način snimanja5. Opcija -p ne može se koristiti u kombinaciji s ether hostom (local-hw-addr) ili ether filtrom za emitiranje.

-q specificira izlaz minimalne količine informacija.

-R postavljanje ove zastavice pretpostavlja da ESP/AH paketi koriste staru verziju specifikacije6 i tcpdump neće ispisati polja za sprječavanje ponavljanja.
reprodukcija). Budući da ESP/AH specifikacija ne uključuje polja s brojem verzije, tcpdump ne može odrediti verziju ESP/AH protokola iz zaglavlja paketa.

-r<файл> specificira čitanje podataka iz datoteke prethodno stvorene pomoću naredbe tcpdump -w ili pomoću drugog programa koji podržava format tcpdump (na primjer, Ethereal). Ako u
Naziv datoteke postavljen je na - i koristi se tok podataka sa standardnog ulaznog uređaja (stdin).

-S postavlja izlaz apsolutnih TCP sekvenci brojeva umjesto relativnih.

-s postavlja hvatanje bajtova iz svakog snaplen paketa umjesto zadanih 68 bajtova7. Vrijednost 68 prikladna je za IP, ICMP, TCP i UDP protokole, ali može dovesti do gubitka
informacije o protokolu za neke DNS i NFS pakete. Gubitak nekih paketa zbog male veličine okvira snimke označen je u izlaznim podacima poljima obrasca
[|proto]’, gdje je proto naziv razine protokola na kojoj je dio paketa odsječen8. Imajte na umu da će povećanje okvira snimanja rezultirati dodatnim privremenim
troškovi obrade paketa i smanjenje broja međuspremnika paketa, što može dovesti do gubitka nekih paketa. Upotrijebite minimalnu vrijednost snaplena koja će dopustiti
izbjegnite gubitak informacija o protokolu koji vas zanima. Postavljanje snaplen=0 će uhvatiti kompletne pakete.

-T<тип> postavlja tumačenje paketa odabranih korištenjem filtra kao pakete tipa specificiranog parametrom. Trenutno podržani tipovi su aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, vat16 i wb17.

-t onemogućuje ispis vremenskih oznaka u svakom retku ispisa.

-tt specificira izlaz neformatiranih vremenskih oznaka u svakom retku ispisa.

-ttt specificira izlaz vremenskih intervala (u mikrosekundama) između hvatanja prethodnog i ovog paketa u svakom retku ispisa.

-tttt specificira izlaz vremenskih oznaka u zadanom formatu za svaki redak ispisa.

-u postavlja izlaz NFS ručica bez dekodiranja.

-U postavlja način rada "batch-level buffering" za datoteke spremljene pomoću opcije -w. U ovom načinu rada svaki se paket zapisuje u izlaznu datoteku čim se uhvati
(bez čekanja da se ispuni izlazni međuspremnik). Oznaka -U neće biti podržana ako je tcpdump kompajliran sa starom opcijom libpcap koja ne podržava funkciju
pcap_dump_flush().

-v specificira izlaz dodatnih informacija prilikom snimanja datoteka. Ove informacije mogu uključivati ​​TTL (Time to Live) vrijednost, identifikaciju, ukupnu veličinu, IP opcije, itd. Kada
Pri korištenju ove zastavice također se provode dodatne provjere integriteta paketa pomoću kontrolnih zbrojeva (na primjer, za IP i ICMP protokole).

-vv specificira dodatno povećanje volumena izlaznih informacija (na primjer, potpuno dekodiranje SMB paketa, izlaz dodatnih NFS polja odgovora, itd.).

-vvv postavlja maksimalnu količinu prikazanih informacija (na primjer, telnet opcije SB ... SE prikazuju se u potpunosti). Kada se koristi zajedno s prekidačem -X, Telnet opcije se također prikazuju u
heksadecimalni prikaz.

-w<файл> specificira snimanje neobrađenih paketa. Paketi sakupljeni u datoteku mogu se kasnije pregledati pomoću oznake -r ili prenijeti u druge programe za analizu
(npr. Eterično). Ako je naziv datoteke -, datoteka se zapisuje na standardni izlazni uređaj (stdout).

-x specificira izlaz heksadecimalnog ispisa (bez zaglavlja sloja veze) za svaki snimljeni paket. Količina prikazanih informacija određena je manjom od dvije vrijednosti -
veličina paketa i vrijednost parametra snaplen. Imajte na umu da pri snimanju okvira punog sloja veze, ispis također može uključivati ​​bajtove za punjenje ako paket mrežnog sloja
ima malu veličinu.

-xx postavlja izlaz heksadecimalnog ispisa za svaki paket, uključujući zaglavlja sloja veze.

-X navodi ispis ispisa u heksadecimalnom i ASCII formatu bez zaglavlja sloja veze. Ova opcija može biti vrlo praktična pri analizi novih protokola.

-XX specificira ispis ispisa u heksadecimalnom i ASCII formatu, uključujući zaglavlja sloja veze.

-y<тип> specificira tip sloja veze koji se koristi prilikom hvatanja paketa. Podržane vrijednosti mogu se vidjeti pomoću oznake -L.

Primjeri.

  • Hvatamo sav odlazni promet

tcpdump -i re0 -n -nn -ttt dst host 192.168.1.2

  • Hvatamo sav odlazni promet osim naše ssh sesije jer postoji vrlo velik protok podataka.

tcpdump -i re0 -n -nn -ttt 'dst host 192.168.1.110, a ne (src host 192.168.1.2 i dst port 22)'

  • Pogledajte dns komunikaciju

tcpdump -i re0 -n -nn -ttt 'host 192.168.1.110 i port 53'

  • Pregledajte icmp pakete

tcpdump -i re0 -n -nn -ttt ‘ip proto \icmp’

  • Promet koji se kreće iz mreže 10.7.20 s odredištem na mreži 10.7.0. ili 24.7.10.:

tcpdump -nvX src net 10.7.20.0.0/16 i dst net 10.7.0.0/8 ili 10.7.24.0/16

  • Promet koji dolazi s mreže 10.7.0.0 na odredišne ​​priključke 22 ili 4589:

tcpdump 'src 10.7.0.0 i (dst port 22 ili 4589)'

  • Pogledajte promet na sučelju:
  • pogledajte promet jednog hosta:

tcpdump host 192.168.1.1

  • Pogledajte promet na luci:

tcpdump src port 80

  • Pogledajte IP promet prema hostu:

tcpdump ip host 192.168.1.2

  • Pogledajte ARP promet prema hostu:

tcpdump arp host 192.168.1.2

  • Gledamo RARP promet prema hostu:

tcpdump rarp host 192.168.1.2

  • Gledamo promet, osim hosta pav253

tcpdump nije host pav253

  • Gledamo promet na pav253 i pav210

tcpdump host pav253 ili host pav210

  • Gledamo sadržaj paketa na re0 sučelju do host stranice

tcpdump -X -i re0 host mjesto

  • icq promet

tcpdump -X -i re0 port aol

  • Gledamo sadržaj paketa na tun0 sučelju prema hostu ya.ru, dok čitamo 1500 bajtova iz svakog paketa i ne pretvaramo IP u naziv hosta

tcpdump -X -s 1500 -n -i re0 host mjesto

  • Najaktivnije interakcije

tcpdump -tn -c 10000 -i re0 tcp ili udp | awk -F "." ‘(ispiši $1″.”$2″.”$3″.”$4)’ | \sort | jedinstven -c | sortirati -nr | awk '$1 > 100'

  • Gledamo sve TCP pakete s oznakom SYN (početak sesije).

tcpdump -i eth0 -nn tcp == 2 i src net 192.168.1.0/24

  • Pregledajte syn i fin pakete izvana

tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 a ne src i dst net 192.168.1.0'

  • Prikaz svih ipv4 http paketa s priključka 80, osim podataka syn/fin/ack

tcpdump 'tcp port 80 i (((ip — ((ip&0xf)<>2)) != 0)’

  • Pogledajte samo syn pakete

Ovaj vodič pokazat će vam kako izolirati promet na različite načine—od IP-a, porta, protokola do prometa aplikacijskog sloja—kako biste bili sigurni da ćete pronaći upravo ono što vam je potrebno što je brže moguće.

tcpdump je alat koji bi svatko trebao naučiti kao svoju bazu za analizu paketa.

Instalirajte tcpdump s apt install tcpdump (Ubuntu) ili yum install tcpdump (Redhat/Centos)

Počnimo s osnovnom naredbom koja će nam omogućiti HTTPS promet:

tcpdump -nn S X port 443

04:45:40.573686 IP 78.149.209.110.27782 > 172.30.0.144 .443 : Zastavice [.], potvrda 278239097, pobjeda 28, opcije , duljina 0 0x0000: 4500 0034 0014 0000 2e06 c005 4e8e d16e E..4........N..n 0x0010: ac1e 0090 6c86 01bb 8e0a b73e 1095 9779 ....l......>...y 0x0020: 8010 001c d202 0000 0101 080a 3803 7b55 ............8.(U 0x0030: 4801 8100

Možete dobiti jedan paket s -c 1 , ili n broj s -c n .

Ovo je pokazalo neki HTTPS promet, sa heksadecimalnim prikazom vidljivim na desnom dijelu izlaza (nažalost, šifriran je). Samo zapamtite — ako ste u nedoumici, pokrenite gornju naredbu s portom koji vas zanima i trebali biste biti na putu.

Primjeri

PacketWizard™ zapravo nije zaštitni znak, ali trebao bi biti.

praktičar koji se priprema za pokretanje tcpdumpa

Sada kada možete dobiti osnovni promet, prođimo kroz brojne primjere koji će vam vjerojatno trebati tijekom vašeg posla u umrežavanju, sigurnosti ili bilo kojoj vrsti PacketWizard™.

Sve na sučelju

Samo pogledajte što se događa, gledajući što pogađa vaše sučelje.

Ili dobiti svi sučelja s -i bilo koji .

tcpdump -i eth0

Pronađite promet prema IP-u

Jedan od najčešćih upita, pomoću hosta, možete vidjeti promet koji ide prema ili od 1.1.1.1.

Vrste izraza:

host, mreža i port.

src i dst.

host, mreža i port.

tcp, udp, icmp i mnogi drugi.

tcpdump host 1.1.1.1

06:20:25.593207 IP 172.30.0.144.39270 > one.one.one.one .domena : 12790+ A? google.com. (28) 06:20:25.594510 IP one.one.one.one .domena > 172.30.0.144.39270: 12790 1/0/0 A 172.217.15.78 (44)

Ako želite vidjeti samo promet u jednom ili drugom smjeru, možete koristiti src i dst.

tcpdump src 1.1.1.1
tcpdump dst 1.0.0.1

Pronalaženje paketa po mreži

Da biste pronašli pakete koji idu prema ili iz određene mreže ili podmreže, upotrijebite opciju mreže.

Ovo također možete kombinirati s opcijama src i dst.

tcpdump net 1.2.3.0/24

Dobijte sadržaj paketa s heksadecimalnim izlazom

Hex izlaz je koristan kada želite vidjeti sadržaj dotičnih paketa, a često se najbolje koristi kada izdvajate nekoliko kandidata za detaljniju analizu.

tcpdump -c 1 -X icmp

Sažetak

Ovdje su stvari za van.

  1. tcpdump je vrijedan alat za svakoga tko želi ući u umrežavanje ili .
  2. Sirov način sučelja s prometom, u kombinaciji s preciznošću koju nudi u pregledavanju paketa, čine ga najboljim mogućim alatom za učenje TCP/IP-a.
  3. Analizatori protokola kao što je Wireshark su izvrsni, ali ako želite doista svladati packet-fu, prvo morate postati jedno s tcpdumpom.

Pa, ova bi vas početnica trebala ojačati, ali man stranica bi uvijek trebala biti pri ruci za najnaprednije i jednokratne scenarije korištenja. Iskreno se nadam da vam je ovo bilo korisno i slobodno odgovorite ako imate pitanja.

Bilješke

  1. Trenutno (nekako) pišem knjigu o tcpdumpu za No Starch Press.
  2. Vodeća slika je sa SecurityWizardry.com.
  3. Neki od izolacijskih filtara posuđeni od

Uslužni program tcpdump vrlo je moćan i popularan alat za presretanje i analizu mrežnih paketa. Omogućuje vam pregled svih dolaznih i odlaznih paketa s određenog sučelja i radi na naredbenom retku. Naravno, možete koristiti Wirshark za analizu mrežnih paketa, to je grafički uslužni program, ali ponekad postoje situacije kada trebate raditi samo na terminalu.

Tcpdump nije ništa lošiji od Wiresharka i ima sve potrebne mogućnosti za analizu paketa, osim toga, možete spremiti sve presretnute pakete u datoteku kako biste ih kasnije analizirali koristeći isti Wireshark. U ovom članku ćemo pogledati kako koristiti tcpdump za presretanje mrežnih paketa.

Mnoge distribucije dolaze s naredbom tcpdump prema zadanim postavkama, no ako je vaša distribucija nema, možete je vrlo jednostavno instalirati iz službenih repozitorija. Na primjer, u Ubuntu/Debianu:

sudo apt instaliraj tcpdum str

Na sustavu Fedora/Red Hat/CentOS:

sudo yum instaliraj tcpdump

Kada je instalacija završena, možete nastaviti s radom.

naredba tcpdump

Prije nego što prijeđemo na primjere rada s uslužnim programom, pogledajmo njegovu sintaksu i osnovne opcije. Naredba ima sljedeću sintaksu:

$ tcpdump opcije -i filteri sučelja

Prilikom pozivanja morate proći sučelje koje ćete nadzirati. Ako sučelje nije navedeno, koristit će se prvo na popisu. Opcije konfiguriraju prikaz i osnovne mogućnosti uslužnog programa, a filtri vam omogućuju filtriranje nepotrebnih paketa. Sada pogledajmo glavne opcije:

  • -A- izlaz svih paketa u ASCII formatu;
  • -c- zatvoriti program nakon presretanja n-tog broja paketa;
  • -C- kada upisujete pakete u datoteku, provjerite veličinu datoteke i ako je veća od navedene, napravite novu datoteku;
  • -D- prikazati popis dostupnih mrežnih sučelja;
  • -e- prikaz informacija o razini veze za svaki paket, ovo može biti korisno, na primjer, za prikaz MAC adrese;
  • -f- prikaz naziva domene za IP adrese;
  • -F- čitanje paketa iz datoteke, ne iz sučelja;
  • -G- stvoriti novu datoteku dnevnika nakon određenog vremenskog razdoblja;
  • -H- otkrivanje 802.11s zaglavlja;
  • -i- naziv sučelja za presretanje paketa. Možete uhvatiti pakete sa svih sučelja; da biste to učinili, odredite bilo koje;
  • -ja- prebacite sučelje u način rada za praćenje kako biste uhvatili sve pakete koji prolaze;
  • -j- postaviti format vremenske oznake za snimanje paketa;
  • -J- pregled dostupnih vremenskih oznaka;
  • -K- ne provjeravajte kontrolne zbrojeve paketa;
  • -l- dodati podršku za pomicanje na izlazu;
  • -L- prikaz podržanih protokola povezivanja za sučelje;
  • -n- nemojte prikazivati ​​nazive domena;
  • -r- čitanje paketa iz datoteke kreirane s -w;
  • -v, -vv, -vvv- detaljniji izlaz;
  • -q- prikazati minimum informacija;
  • -w- napisati izlaz u datoteku;
  • -Z- korisnik u čije ime će se kreirati datoteke.

Ovo nisu sve mogućnosti, ali bit će vam dovoljne za rješavanje većine problema. Češće ćemo koristiti filtere. Pomoću filtara možete filtrirati samo one vrste paketa koje želite vidjeti. Možete filtrirati prema IP adresi, protokolu, mreži, sučelju i mnogim drugim parametrima. Ali pogledat ćemo tcpdump filtere koristeći primjere.

Kako koristiti tcpdump

Prije nego prijeđete na korištenje tcpdumpa, morate pogledati koja mrežna sučelja možete koristiti. Da biste to učinili, pokrenite naredbu s opcijom -D:

Počnimo promatrati tcpdump primjere hvatanjem prometa na eth0 sučelju; za mene je ovo glavno sučelje koje je povezano s Internetom. Program zahtijeva prava superkorisnika za rad, stoga ne zaboravite koristiti sudo:

sudo tcpdump -i eth0

Za zaustavljanje naredbe pritisnite Ctrl+C. U izlazu ćete odmah vidjeti sve presretnute pakete. Format zapisa za svaki paket izgledat će ovako:

13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881> 192.168.1.2.52055 : Zastavice [.], seq 640160396:640161844, ack 436677393, win 2050, opcije, duljina 1448

Ovaj je format tipičan za podatkovne pakete; ovisno o protokolu, crno označeni tekst će se razlikovati. Prvo dolazi vremenska oznaka, zatim protokol, zatim je IP adresa pošiljatelja zelena, a adresa primatelja, u ovom slučaju našeg računala, plava je. Slijede dodatni tcp parametri i na kraju veličina paketa u bajtovima. Pojedinosti izlaza mogu se kontrolirati pomoću opcija -v. Na primjer:

sudo tcpdump -v -i eth0

Ovdje se već pojavljuju informacije o IP protokolu:

IP (tos 0x0, ttl 64, id 50309, offset 0, oznake, proto TCP (6), duljina 64)

Možemo saznati informacije o životnom vijeku TTL paketa, verziji TCP protokola i duljini polja zaglavlja. Opcija -vv će u nekim slučajevima ispisati potvrdu kontrolne sume paketa i sadržaj.

Nakon opcija možete odrediti filtere za pakete. Evo glavnih parametara po kojima možete filtrirati pakete:

  • domaćin- ime hosta;
  • ip- IP adresa;
  • proto- protokol;
  • neto- adresu mreže ili podmreže;
  • luka- adresa luke;
  • src- parametar koji se odnosi na pošiljatelja;
  • dst- parametar koji se odnosi na primatelja;
  • Dostupni su sljedeći protokoli: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp I udp.

Sve to možete međusobno kombinirati kako biste dobili željeni rezultat. Pogledajmo detaljnije koristeći primjere. Filtrirajmo samo pakete upućene našem računalu:

sudo tcpdump -i eth0 ip dst 192.168.1.2

Također možemo odabrati pakete poslane određenom čvoru:

sudo tcpdump -i eth0 dst host google-public-dns-a.google.com

Kao što vidite, ovo su DNS paketi i umjesto TCP zastavica sadrže korisne informacije, zahtjev za IP adresom hosta. Također možete odabrati pakete odgovora s određenog glavnog računala:

sudo tcpdump -i eth0 src host google-public-dns-a.google.com

Ovo nije cijeli sadržaj paketa, ako ga želite dobiti morate koristiti -v ili -vv opciju:

sudo tcpdump -vv -i eth0 host dst google-public-dns-a.google.com

Pomoću operatora and možete kombinirati više filtara u jedan:

sudo tcpdump -i eth0 dst host google-public-dns-a.google.com i src host google-public-dns-a.google.com

Dostupne operacije spajanja su i i ili, a možete koristiti i zagrade za označavanje prvenstva. Ne morate navesti host, u mnogim slučajevima dovoljni su src ili dst, uslužni program će sam razumjeti što se mislilo. Potpuno isti dizajn može se koristiti za priključke. Na primjer, možemo filtrirati sve zahtjeve ili odgovore na DNS (na portu 53):

sudo tcpdump -vv -i eth0 port 53

Potpuno ista stvar može se učiniti za http (port 80):

sudo tcpdump -vv -i eth0 port 80

Naravno, dst i src se također mogu koristiti ovdje za specifičnije rezultate. Možete filtrirati ne samo jedan priključak, već čitav niz priključaka:

sudo tcpdump portrange 21-23

Ako navedete jedan od protokola, filtrirat ćete samo pakete iz tog protokola, kao što su tcp, udp ili arp:

sudo tcpdump -vv arp

Na isti način možete odabrati sve udp pakete:

sudo tcpdump -vv udp

Dostupan je i filtar prema mrežnoj oznaci:

sudo tcpdump net 129.168.1.1/24

Osim toga, možete filtrirati pakete prema njihovoj veličini, na primjer manje od 32 bajta:

sudo tcpdump manji od 32

Ili više od 128:

tcpdump veći od 128

sudo tcpdump -i eth0 -w datoteka.pcap

Ova se datoteka može otvoriti pomoću bilo kojeg programa za čitanje takvih datoteka, poput Wiresharka. Za otvaranje paketa spremljenih u datoteku koristite opciju -r:

sudo tcpdump -r file.pcap

Postoji još jedna točka na koju vrijedi obratiti pozornost. Ovo je format za prikaz sadržaja paketa. Možete ispisati sadržaj paketa u ASCII formatu pomoću opcije -A:

sudo tcpdump -A -i eth0

Također možete prikazati sadržaj u HEX i ASCII formatu, koristite -XX za ovo:

sudo tcpdump -XX -i eth0

zaključke

U ovom smo članku pogledali kako koristiti tcpdump. Ovo je vrlo moćan mrežni analizator koji radi samo putem naredbenog retka. Nadam se da su vam ove informacije bile korisne i da će sada korištenje tcpdumpa biti mnogo lakše, ako imate bilo kakvih pitanja, pitajte u komentarima!

Za kraj videa s predavanjem o tcpdumpu:

Ako trebate analizirati ili presresti mrežne pakete u Linuxu, najbolji način da to učinite je korištenje uslužnog programa konzole tcpdump. Ali problem nastaje u njegovom prilično složenom upravljanju. Prosječnom će korisniku biti nezgodno raditi s uslužnim programom, ali to je samo na prvi pogled. Članak će vam reći kako tcpdump radi, koju sintaksu ima, kako ga koristiti, a također će pružiti brojne primjere njegove upotrebe.

Pročitajte također: Vodiči za postavljanje internetske veze u Ubuntu, Debian, Ubuntu Server

Većina programera operativnih sustava temeljenih na Linuxu uključuje uslužni program tcpdump na popisu unaprijed instaliranih, ali ako iz nekog razloga nedostaje u vašoj distribuciji, uvijek ga možete preuzeti i instalirati putem "Terminal". Ako je vaš OS baziran na Debianu, a ovo je Ubuntu, Linux Mint, Kali Linux i slično, morate pokrenuti ovu naredbu:

sudo apt instalirajte tcpdump

Tijekom instalacije potrebno je unijeti lozinku. Imajte na umu da se ne prikazuje prilikom upisivanja; također morate unijeti simbol za potvrdu instalacije "D" i pritisnite Unesi.

Ako imate Red Hat, Fedora ili CentOS, instalacijska naredba će izgledati ovako:

sudo yam instaliraj tcpdump

Nakon što je uslužni program instaliran, možete ga odmah koristiti. O tome i još mnogo toga bit će riječi dalje u tekstu.

Sintaksa

Kao i svaka druga naredba, tcpdump ima vlastitu sintaksu. Znajući to, možete postaviti sve potrebne parametre koji će se uzeti u obzir prilikom izvršavanja naredbe. Sintaksa je sljedeća:

tcpdump opcije -i filteri sučelja

Kada koristite naredbu, morate navesti sučelje za praćenje. Filtri i opcije nisu obavezne varijable, ali omogućuju fleksibilniju prilagodbu.

Mogućnosti

Iako opcija ne mora biti navedena, ipak morate navesti dostupne. Tablica ne prikazuje cijeli njihov popis, već samo one najpopularnije, no oni su više nego dovoljni za rješavanje većine zadataka.

Opcija Definicija
-A Omogućuje sortiranje paketa s ASCII formatom
-l Dodaje funkciju pomicanja
-i Nakon unosa potrebno je navesti mrežno sučelje koje će se nadzirati. Za početak praćenja svih sučelja unesite riječ "bilo koje" nakon opcije.
-c Završava proces praćenja nakon provjere navedenog broja paketa
-w Generira tekstualnu datoteku s izvješćem o inspekciji
-e Prikazuje razinu internetske veze paketa podataka
-L Prikazuje samo one protokole koje podržava navedeno mrežno sučelje
-C Stvara drugu datoteku dok se paket zapisuje ako je njezina veličina veća od navedene veličine
-r Otvara datoteku za čitanje koja je stvorena pomoću opcije -w
-j Format TimeStamp koristit će se za snimanje paketa
-J Omogućuje pregled svih dostupnih formata TimeStamp
-G Služi za kreiranje datoteke sa zapisnicima. Opcija također zahtijeva navođenje privremene vrijednosti, nakon čega će se stvoriti novi dnevnik
-v, -vv, -vvv Ovisno o broju znakova u opciji, izlaz naredbe postat će detaljniji (povećanje je izravno proporcionalno broju znakova)
-f Izlaz prikazuje naziv domene IP adresa
-F Omogućuje čitanje informacija ne s mrežnog sučelja, već iz navedene datoteke
-D Demonstrira sva mrežna sučelja koja se mogu koristiti
-n Deaktivira prikaz naziva domena
-Z Određuje korisnika pod čijim računom će se kreirati sve datoteke
-K Preskoči analizu kontrolne sume
-q Prikaz kratkih informacija
-H Omogućuje detekciju 802.11s zaglavlja
-ja Koristi se pri hvatanju paketa u načinu rada monitora

Nakon što smo ispitali opcije, u nastavku ćemo prijeći izravno na njihove aplikacije. U međuvremenu će se razmotriti filtri.

Filteri

Kao što je spomenuto na samom početku članka, sintaksi tcpdump možete dodati filtre. Sada ćemo razmotriti najpopularnije od njih:

Svi gore navedeni filtri mogu se međusobno kombinirati, tako da ćete u izlazu naredbe vidjeti samo one informacije koje želite vidjeti. Da bismo detaljnije razumjeli upotrebu gore navedenih filtara, vrijedi dati primjere.

Primjeri korištenja

Sada će biti opisana najčešće korištena sintaksa za naredbu tcpdump. Neće ih biti moguće sve navesti, jer može postojati beskonačno mnogo varijacija.

Pogledajte popis sučelja

Preporuča se da svaki korisnik prvo provjeri popis svih svojih mrežnih sučelja koja se mogu nadzirati. Iz gornje tablice znamo da za ovo moramo koristiti opciju -D pa u terminalu pokrenite sljedeću naredbu:

Kao što vidite, postoji osam sučelja u primjeru koja se mogu vidjeti pomoću naredbe tcpdump. Članak će dati primjere s ppp0, možete koristiti bilo koji drugi.

Redovno snimanje prometa

Ako trebate nadzirati jedno mrežno sučelje, to možete učiniti pomoću opcije -i. Nakon što ga unesete, ne zaboravite navesti naziv sučelja. Evo primjera pokretanja takve naredbe:

sudo tcpdump -i ppp0

Imajte na umu: morate unijeti "sudo" prije same naredbe, budući da zahtijeva prava superkorisnika.

Napomena: nakon pritiska na Enter, snimljeni paketi će se kontinuirano prikazivati ​​u “Terminalu”. Da biste zaustavili njihov tijek, morate pritisnuti kombinaciju tipki Ctrl+C.

Ako pokrenete naredbu bez dodatnih opcija i filtera, vidjet ćete sljedeći format za prikaz nadziranih paketa:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Zastavice, seq 1:595, ack 1118, win 6494, opcije, duljina 594

Gdje je označeno bojom:

  • plava - vrijeme prijema paketa;
  • zelena - adresa pošiljatelja;
  • ljubičasta - adresa primatelja;
  • siva - dodatne informacije o tcp-u;
  • crvena - veličina paketa (prikazuje se u bajtovima).

Ova sintaksa ima mogućnost prikazivanja u prozoru "Terminal" bez korištenja dodatnih opcija.

Hvatajte promet s opcijom -v

Kao što je poznato iz tablice, opcija -v omogućuje povećanje količine informacija. Pogledajmo to na primjeru. Provjerimo isto sučelje:

sudo tcpdump -v -i ppp0

Ovdje možete primijetiti da se sljedeći red pojavljuje u izlazu:

IP (tos 0x0, ttl 58, id 30675, offset 0, oznake, proto TCP (6) , duljina 52

Gdje je označeno bojom:

  • narančasta - verzija protokola;
  • plava - vijek trajanja protokola;
  • zelena - duljina zaglavlja polja;
  • ljubičasta - verzija tcp paketa;
  • crvena - veličina paketa.

Također možete dodati opciju u sintaksu naredbe -vv ili -vvv, što će dodatno povećati količinu informacija prikazanih na ekranu.

Opcija -w i -r

Tablica s opcijama spominje mogućnost spremanja svih izlaznih podataka u zasebnu datoteku kako bi se kasnije mogli pregledavati. Za to je odgovorna opcija -w. Korištenje je vrlo jednostavno, samo ga navedite u naredbi, a zatim unesite naziv buduće datoteke s ekstenzijom ".pcap". Pogledajmo sve na primjeru:

sudo tcpdump -i ppp0 -w datoteka.pcap

Imajte na umu: dok se dnevnici zapisuju u datoteku, na zaslonu terminala se ne prikazuje tekst.

Kada želite pogledati snimljeni izlaz, morate koristiti opciju -r, nakon čega upišite naziv prethodno snimljene datoteke. Primjenjuje se bez drugih opcija i filtera:

sudo tcpdump -r file.pcap

Obje su ove mogućnosti izvrsne kada trebate spremiti velike količine teksta za kasniju analizu.

IP filtriranje

Iz tablice filtera to znamo dst omogućuje prikaz na ekranu konzole samo onih paketa koje je primila adresa navedena u sintaksi naredbe. To čini vrlo praktičnim pregledavanje paketa koje je primilo vaše računalo. Da biste to učinili, samo trebate navesti svoju IP adresu u naredbi:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Kao što vidite, pored dst, također smo naveli filter u naredbi ip. Drugim riječima, rekli smo računalu da pri odabiru paketa pazi na IP adresu, a ne na druge parametre.

Također možete filtrirati poslane pakete prema IP-u. Uzmimo opet naš IP kao primjer. Odnosno, sada ćemo pratiti koji se paketi šalju s našeg računala na druge adrese. Da biste to učinili, morate pokrenuti sljedeću naredbu:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Kao što vidite, promijenili smo filter u sintaksi naredbe dst na src, govoreći tako stroju da traži pošiljatelja prema IP-u.

Filtriranje prema HOST-u

Po analogiji s IP-om, u naredbi možemo odrediti filter domaćin za filtriranje paketa s domaćinom od interesa. To jest, u sintaksi, umjesto IP adrese pošiljatelja/primatelja, morat ćete navesti njegov host. Ovako izgleda:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

Na slici možete vidjeti da je u "Terminal" Prikazuju se samo oni paketi koji su poslani s našeg IP-a na host google.com. Kao što razumijete, umjesto google hosta možete unijeti bilo koji drugi.

Kao i kod IP filtriranja, sintaksa dst može se zamijeniti sa src da vidite pakete koji se šalju na vaše računalo:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Imajte na umu: filtar hosta mora doći nakon dst ili src, inače će naredba izbaciti pogrešku. U slučaju IP filtriranja, naprotiv, dst i src dolaze prije IP filtera.

Primjena filtara i i ili

Ako trebate koristiti nekoliko filtara odjednom u jednoj naredbi, tada za to trebate upotrijebiti filtar i ili ili(ovisi o slučaju). Određivanjem filtara u sintaksi i njihovim odvajanjem ovim operatorima, "tjerate" ih da rade kao jedan. Na primjeru to izgleda ovako:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 ili ip src 95.47.144.254

Iz sintakse naredbe jasno je što želimo prikazati "Terminal" sve pakete koji su poslani na adresu 95.47.144.254 i pakete primljene na istu adresu. Također možete promijeniti neke od varijabli u ovom izrazu. Na primjer, umjesto IP, navedite HOST ili zamijenite same adrese.

Port i portrange filter

filtar luka Savršeno za one slučajeve kada trebate dobiti informacije o paketima na određenom priključku. Dakle, ako trebate vidjeti samo DNS odgovore ili zahtjeve, trebate navesti port 53:

sudo tcpdump -vv -i ppp0 port 53

Ako želite vidjeti http pakete, morate unijeti port 80:

sudo tcpdump -vv -i ppp0 port 80

Između ostalog, moguće je pratiti niz portova odjednom. Za to se koristi filtar portretirati:

sudo tcpdump portrange 50-80

Kao što vidite, u kombinaciji s filtrom portretirati Nije potrebno navesti dodatne opcije. Samo trebate postaviti raspon.

Filtriranje po protokolu

Također možete prikazati samo promet koji odgovara određenom protokolu. Da biste to učinili, morate upotrijebiti naziv ovog protokola kao filter. Pogledajmo primjer udp:

sudo tcpdump -vvv -i ppp0 udp

Kao što možete vidjeti na slici, nakon izvršenja naredbe in "Terminal" prikazani su samo paketi protokola udp. U skladu s tim, možete filtrirati prema drugima, na primjer, arp:

sudo tcpdump -vvv -i ppp0 arp

ili tcp:

sudo tcpdump -vvv -i ppp0 tcp

Filtarska mreža

Operater neto pomaže filtrirati pakete na temelju njihove mrežne oznake. Korištenje je jednostavno kao i ostali - trebate navesti atribut u sintaksi neto, zatim unesite mrežnu adresu. Evo primjera takve naredbe:

sudo tcpdump -i ppp0 net 192.168.1.1

Filtrirajte prema veličini paketa

Nismo uzeli u obzir još dva zanimljiva filtera: manje I veća. Iz tablice s filterima znamo da služe za prikaz većih paketa podataka ( manje) ili manje ( veća) veličina određena nakon unosa atributa.

Recimo da želimo pratiti samo pakete koji ne prelaze 50-bitnu oznaku, tada će naredba izgledati ovako:

sudo tcpdump -i ppp0 manje 50

Sada prikažimo unutra "Terminal" paketi veći od 50 bita:

sudo tcpdump -i ppp0 veći od 50

Kao što vidite, koriste se na isti način, razlika je samo u nazivu filtera.

Zaključak

Na kraju članka možemo zaključiti da tim tcpdump je izvrstan alat s kojim možete pratiti bilo koji paket podataka koji se prenosi preko Interneta. Ali za to nije dovoljno samo unijeti samu naredbu "Terminal". Željeni rezultat možete postići samo ako koristite sve vrste opcija i filtara, kao i njihove kombinacije.