Počítače Okna Internet

Tcpdump jak zastavit po určité době. Tcpdump je užitečný průvodce s příklady. Zobrazení zachycených paketů v HEX a ASCII pomocí tcpdump -xx

Pokud potřebujete analyzovat nebo zachytit síťové pakety v Linuxu, pak je nejlepší použít k tomu nástroj konzoly. tcpdump. Problém ale nastává v jeho poměrně složitém řízení. Běžnému uživateli se bude zdát, že je nepohodlné pracovat s nástrojem, ale je to jen na první pohled. Článek vysvětlí, jak tcpdump funguje, jakou má syntaxi, jak ji používat, a také poskytne četné příklady jejího použití.

Přečtěte si také: Příručky pro nastavení internetového připojení v Ubuntu , Debianu , Ubuntu Server

Většina vývojářů operačních systémů založených na Linuxu zahrnuje nástroj tcpdump do seznamu předinstalovaných, ale pokud z nějakého důvodu není ve vaší distribuci, můžete si jej stáhnout a nainstalovat prostřednictvím "Terminál". Pokud je váš operační systém založen na Debianu a jedná se o Ubuntu, Linux Mint, Kali Linux a podobně, musíte spustit tento příkaz:

sudo apt install tcpdump

Během instalace je nutné zadat heslo. Upozorňujeme, že se při psaní nezobrazuje, je také nutné zadat symbol pro potvrzení instalace "D" a stiskněte Vstupte.

Pokud máte Red Hat, Fedora nebo CentOS, bude instalační příkaz vypadat takto:

sudo yam nainstalujte tcpdump

Poté, co je nástroj nainstalován, můžete jej okamžitě používat. O tom a mnoha dalších věcech bude řeč dále v textu.

Syntax

Jako každý jiný příkaz má tcpdump svou vlastní syntaxi. Když to víte, můžete nastavit všechny potřebné parametry, které budou brány v úvahu při provádění příkazu. Syntaxe je následující:

tcpdump options -i filtry rozhraní

Při použití příkazu musíte určit rozhraní, které chcete sledovat. Filtry a možnosti nejsou povinné proměnné, ale umožňují více přizpůsobení.

Možnosti

Ačkoli není nutné volbu specifikovat, přesto je nutné uvést dostupné možnosti. V tabulce není uveden celý jejich seznam, ale pouze ty nejoblíbenější, ale na vyřešení většiny úkolů bohatě stačí.

Volba Definice
-A Umožňuje třídit balíčky ve formátu ASCII
-l Přidává funkci posouvání
-i Po zadání je potřeba určit síťové rozhraní, které bude monitorováno. Chcete-li zahájit monitorování všech rozhraní, zadejte za volbu slovo „jakékoli“.
-C Ukončí proces sledování po kontrole zadaného počtu paketů
-w Vygeneruje textový soubor s ověřovací zprávou
-E Zobrazuje úroveň internetového připojení datového paketu
-L Zobrazí pouze protokoly podporované zadaným síťovým rozhraním
-C Vytvoří další soubor během zachycení balíčku, pokud je jeho velikost větší než daná
-r Otevře soubor pro čtení, který byl vytvořen s volbou -w
-j Pro zápis paketů bude použit formát TimeStamp
-J Umožňuje zobrazit všechny dostupné formáty časových razítek
-G Slouží k vytvoření souboru s logy. Volba také vyžaduje dočasnou hodnotu, po jejímž uplynutí se vytvoří nový protokol.
-v, -vv, -vvv V závislosti na počtu znaků ve volbě se výstup příkazu zpřesní (zvýšení je přímo úměrné počtu znaků)
-F Zobrazuje název domény IP adres ve výstupu
-F Umožňuje čtení informací nikoli ze síťového rozhraní, ale ze zadaného souboru
-D Zobrazuje všechna síťová rozhraní, která lze použít
-n Deaktivuje zobrazování názvů domén
-Z Určuje uživatele, pod jehož účtem budou vytvořeny všechny soubory
-K Vynechání analýzy kontrolního součtu
-q Krátká informační ukázka
-H Umožňuje detekci hlaviček 802.11s
-Já Používá se při zachycování paketů v režimu monitoru

Po analýze možností o něco níže přejdeme přímo k jejich aplikacím. Mezitím budou zváženy filtry.

Filtry

Jak bylo zmíněno na samém začátku článku, do syntaxe tcpdump můžete přidat filtry. Nyní budou považovány za nejoblíbenější z nich:

Všechny výše uvedené filtry lze vzájemně kombinovat, takže při vydání příkazu uvidíte pouze informace, které chcete vidět. Pro podrobnější pochopení použití výše uvedených filtrů stojí za to uvést příklady.

Příklady použití

Nyní bude uvedena běžně používaná syntaxe příkazu tcpdump. Není možné je všechny vyjmenovat, protože jejich variací může být nekonečné množství.

Zobrazení seznamu rozhraní

Doporučuje se, aby každý uživatel nejprve zkontroloval seznam všech jeho síťových rozhraní, která lze sledovat. Z výše uvedené tabulky víme, že k tomu musíme použít volbu -D, takže v terminálu spusťte následující příkaz:

Jak vidíte, v příkladu je osm rozhraní, která lze zobrazit pomocí příkazu tcpdump. V článku budou uvedeny příklady ppp0, můžete použít jakýkoli jiný.

Normální zachycení provozu

Pokud potřebujete sledovat jedno síťové rozhraní, můžete to provést pomocí možnosti -i. Po zadání nezapomeňte zadat název rozhraní. Zde je příklad takového příkazu:

sudo tcpdump -i ppp0

Upozornění: před samotným příkazem musíte zadat "sudo", protože vyžaduje práva superuživatele.

Poznámka: po stisknutí Enter bude "Terminál" nepřetržitě zobrazovat zachycené pakety. Chcete-li zastavit jejich tok, musíte stisknout kombinaci kláves Ctrl + C.

Pokud příkaz spustíte bez dalších voleb a filtrů, uvidíte následující formát pro zobrazení sledovaných paketů:

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

Kde je zvýrazněno:

  • modrá - čas přijetí balíčku;
  • zelená - adresa odesílatele;
  • fialová - adresa příjemce;
  • šedá - další informace o TCP;
  • červená - velikost paketu (zobrazuje se v bajtech).

Tato syntaxe má schopnost zobrazení v okně "Terminál" bez dalších možností.

Zachycení provozu pomocí volby -v

Jak je známo z tabulky, opce -proti umožňuje zvýšit množství informací. Vezměme si příklad. Zkontrolujeme stejné rozhraní:

sudo tcpdump -v -i ppp0

Zde si můžete všimnout, že se ve výstupu objevil následující řádek:

IP (tos 0x0, ttl 58 , id 30675, offset 0, příznaky , proto TCP (6) , délka 52

Kde je zvýrazněno:

  • oranžová - verze protokolu;
  • modrá - životnost protokolu;
  • zelená - délka záhlaví;
  • fialová - verze tcp balíčku;
  • červená - velikost balení.

Můžete také přidat volbu do syntaxe příkazu -vv nebo -vvv, což dále zvýší množství informací zobrazovaných na obrazovce.

Možnost -w a -r

V tabulce voleb byla zmíněna možnost uložit všechna výstupní data do samostatného souboru, aby si je bylo možné prohlédnout později. Toto je možnost -w. Použití je celkem jednoduché, stačí jej zadat v příkazu a poté zadat název budoucího souboru s příponou ".pcap". Podívejme se na příklad:

sudo tcpdump -i ppp0 -w soubor.pcap

Poznámka: při zapisování protokolů do souboru se na obrazovce "Terminál" nezobrazuje žádný text.

Když si chcete prohlédnout zaznamenaný výstup, musíte použít volbu -r, po kterém napište název dříve nahraného souboru. Aplikuje se bez dalších možností a filtrů:

sudo tcpdump -r soubor.pcap

Obě tyto možnosti jsou skvělé, když potřebujete uložit velké množství textu pro pozdější analýzu.

Filtrování podle IP

Z tabulky filtrů to víme dst umožňuje zobrazit na obrazovce konzoly pouze ty pakety, které byly přijaty adresou zadanou v syntaxi příkazu. Je tedy velmi výhodné zobrazit pakety přijaté vaším počítačem. Chcete-li to provést, v příkazu stačí zadat svou IP adresu:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Jak vidíte, kromě dst, v příkazu jsme zaregistrovali i filtr IP. Jinými slovy, řekli jsme počítači, aby při výběru paketů věnoval pozornost své IP adrese a ne jiným parametrům.

Můžete také filtrovat odchozí pakety podle IP. Vezměme si jako příklad naši IP. To znamená, že nyní budeme sledovat, které pakety jsou odesílány z našeho počítače na jiné adresy. Chcete-li to provést, spusťte následující příkaz:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Jak vidíte, v syntaxi příkazu jsme změnili filtr dst na src, čímž sdělíte stroji, aby hledal odesílatele podle IP.

Filtrování podle HOST

Analogicky s IP v příkazu můžeme zadat filtr hostitel vyřadit pakety s hostitelem zájmu. To znamená, že v syntaxi místo IP adresy odesílatele / příjemce budete muset zadat jeho hostitele. Vypadá to takto:

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

Na obrázku to můžete vidět "Terminál" jsou zobrazeny pouze ty pakety, které byly odeslány z naší IP na hostitele google.com. Jak můžete pochopit, místo hostitele google můžete zadat jakýkoli jiný.

Stejně jako v případě filtrování podle IP, v syntaxi dst lze nahradit src pro zobrazení paketů odesílaných do vašeho počítače:

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

Poznámka: hostitelský filtr musí následovat za dst nebo src, jinak příkaz vydá chybu. V případě filtrování podle IP jsou naopak dst a src před ip filtrem.

Použití filtru a a nebo

Pokud potřebujete použít několik filtrů najednou v jednom příkazu, musíte k tomu použít filtr a nebo nebo(v závislosti na případu). Zadáním filtrů v syntaxi a jejich oddělením těmito operátory je „učiníte“ jako jeden. Například to vypadá takto:

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

Ze syntaxe příkazu je jasné, že chceme zobrazit "Terminál" všechny pakety, které byly odeslány na adresu 95.47.144.254 a pakety přijaté na stejnou adresu. V tomto výrazu můžete také změnit některé proměnné. Například místo IP zadejte HOST nebo přímo nahraďte samotné adresy.

Port a portrange filtr

Filtr přístav skvělé v případech, kdy potřebujete získat informace o paketech s konkrétním portem. Pokud tedy chcete vidět pouze odpovědi nebo dotazy DNS, musíte zadat port 53:

sudo tcpdump -vv -i ppp0 port 53

Pokud chcete zobrazit pakety http, musíte zadat port 80:

sudo tcpdump -vv -i ppp0 port 80

Mimo jiné je možné sledovat celou řadu portů najednou. K tomu se používá filtr. rozsah portů:

sudo tcpdump portrange 50-80

Jak vidíte, ve spojení s filtrem rozsah portů není nutné specifikovat další možnosti. Stačí nastavit rozsah.

Filtrování protokolů

Můžete také zobrazit pouze provoz, který odpovídá konkrétnímu protokolu. K tomu použijte jako filtr název právě tohoto protokolu. Podívejme se na příklad udp:

sudo tcpdump -vvv -i ppp0 udp

Jak můžete vidět na obrázku, po provedení příkazu in "Terminál" byly zobrazeny pouze pakety s protokolem udp. Podle toho můžete filtrovat podle jiných, např. arp:

sudo tcpdump -vvv -i ppp0 arp

nebo TCP:

sudo tcpdump -vvv -i ppp0 tcp

síťový filtr

Operátor síť pomáhá odfiltrovat pakety na základě jejich síťového označení. Používání je stejně jednoduché jako ostatní - musíte zadat atribut v syntaxi síť a poté zadejte síťovou adresu. Zde je příklad takového příkazu:

sudo tcpdump -i ppp0 net 192.168.1.1

Filtrování velikosti paketů

Nepokryli jsme další dva zajímavé filtry: méně a větší. Z tabulky s filtry víme, že slouží k zobrazení datových paketů větších ( méně) nebo méně ( větší) velikosti uvedené po zadání atributu.

Řekněme, že chceme monitorovat pouze pakety, které nepřesahují značku 50 bitů, pak bude příkaz vypadat takto:

sudo tcpdump -i ppp0 méně 50

Nyní se pojďme zobrazit "Terminál" pakety větší než 50 bitů:

sudo tcpdump -i ppp0 větší než 50

Jak vidíte, aplikují se stejně, rozdíl je pouze v názvu filtru.

Závěr

Na konci článku lze usoudit, že příkaz tcpdump je skvělý nástroj, pomocí kterého můžete sledovat jakýkoli datový paket přenášený přes internet. K tomu však nestačí pouze zadat samotný příkaz "Terminál". Požadovaného výsledku dosáhnete pouze tehdy, použijete-li všechny druhy možností a filtrů a také jejich kombinace.

Pro systémy UNIX existuje mnoho různých snifferů a analyzátorů provozu s pohodlným grafickým rozhraním a bohatou sadou funkcí. Ale žádný z nich se nemůže srovnávat ve flexibilitě, všestrannosti a rozšířenosti se staromódním tcpdump. Tento nástroj je součástí mnoha distribucí Linuxu a všech systémů BSD a může vám pomoci, když nejsou k dispozici jiné nástroje.

Úvod

Nástroj tcpdump je sniffer síťových paketů příkazového řádku, který nemá ani grafické, ani pseudografické rozhraní. Pro začátečníky se může zdát neohrabaný a příliš staromódní, ale ve schopných rukou se promění v opravdový švýcarský nůž na otevírání jakýchkoli síťových paketů a protokolů. Zkušení správci systému vždy doporučují začátečníkům používat tcpdump místo jakýchkoli jiných nástrojů kvůli jasnosti a přímočarosti jeho zpráv.

Tcpdump se zrodil téměř před 25 lety na univerzitě v Berkeley, stále se aktivně vyvíjí a nadále zůstává standardem mezi podobnými nástroji pro operační systém UNIX. Knihovnu pro zachycení paketů libpcap vyvinutou speciálně pro ni nyní používá téměř každý sniffer pro systémy UNIX a mnoho podobných programů pro Windows.

V tomto článku se budeme zabývat všemi aspekty práce s tcpdump, od základů práce s programem až po použití nástroje k detekci síťových útoků, anomálií a různých typů selhání.

Sám s konzolí

Zkusme přijít na to, jak tcpdump funguje a z jaké strany by se k němu mělo přistupovat. Otevřete terminál a spusťte program jako root (jako každý sniffer musí mít tcpdump plný přístup k síťovým rozhraním), zadejte název síťového rozhraní a omezte počet výstupních paketů na deset:

# tcpdump -i wlan0 -c 10 -n

Přepínač -n zakáže překlad IP adres na názvy DNS. Nyní zkusme sledovat výměnu pouze s konkrétním hostitelem, například s domácím routerem:

# tcpdump -i wlan0 -c 10 -n hostitel 192.168.0.1 a port 53

Podívejme se, co nám tcpdump vypsal, pomocí dvou řádků zobrazených na snímku obrazovky „Dotaz DNS očima tcpdump“ jako příklad. Lze snadno pochopit, že se jedná o DNS požadavek (port 53) z hostitele 192.168.0.101 na hostitele 192.168.0.1 a následnou odpověď. Ale co znamenají všechna ostatní čísla a znaky?


Čísla 16:22:41.340105 představují čas odeslání paketu včetně miliontin sekundy (tzv. frac). Dvě písmena IP, jak asi tušíte, označují použitý protokol síťové vrstvy, za nimiž následuje adresa: odesílací port a adresa: cílový port paketu. Vše, co následuje za dvojtečkou, přímo závisí na použitém protokolu transportní nebo aplikační vrstvy. tcpdump zná některé protokoly a dokáže je dešifrovat do podoby čitelné pro člověka, ostatní nechává tak, jak jsou, a jednoduše vypíše obsah paketu. V tomto případě tcpdump dekódoval zprávy DNS a vrátil řetězec 49244+ A? ya.ru. (23) , což znamená: požadavek (A?) byl odeslán na adresu spojenou s názvem ya.ru., celková délka paketu mínus hlavičky TCP/IP byla 23 bajtů. První číslice je ID požadavku.

V dalším řádku vidíme odpověď, jejíž formát prezentace je téměř shodný s požadavkem, jen s tím rozdílem, že nyní je za identifikátorem požadavku údaj o počtu nalezených záznamů (8/2/3) a samotné záznamy (A 213.180.204.3, A 77.88.21.3, A 87.250.250.3...).

Arzenál tcpdump má podporu mnoha protokolů, díky čemuž dokáže prezentovat v čitelné podobě informace o protokolech TCP, UDP a ICMP, SMB / CIFS, NFS, AFS, AppleTalk. Ale co když tcpdump neví nic o používaném protokolu aplikační vrstvy nebo jej nedokáže určit? V normální situaci jednoduše vypíše informace o balíčku. Mohlo by to vypadat nějak takto:

Příznaky [.], seq 3666073194:3666074622, ack 3281095139, win 2000, options , délka 1428

Toto je TCP paket, jehož formát informací je uveden v tcpdump je následující (pole jsou oddělena čárkami):

  • příznaky - nastavení příznaků. Tečka označená symboly S (SYN), F (FIN), P (PUSH) a R (RST) znamená, že nejsou nastaveny žádné příznaky;
  • data-seqno - popisuje data obsažená v paketu v následujícím formátu: first:last, kde první a poslední jsou pořadové číslo prvního a posledního bytu přenášených dat, nbytes;
  • ack - další pořadové číslo (ISN + 1);
  • okno - velikost okna;
  • možnosti - zde lze zadat další informace, např. (maximální velikost segmentu);
  • délka - délka paketu.

Všechna tato data mohou být velmi užitečná při studiu nebo ladění protokolů a síťových aplikací, ale o jejich obsahu nám nic neříkají. Chcete-li zobrazit obsah balíčku v hexadecimálním formátu, použijte parametr -X:

# tcpdump -i wlan0 -c 10 -n -X hostitel 192.168.0.1 a port 80

Tato funkce je velmi užitečná pro analýzu protokolů, ve kterých jsou data přenášena jako prostý text, jako je HTTP. U binárních protokolů a protokolů se šifrováním to bude samozřejmě k ničemu.
Pro získání dalších informací o balíčku můžete také použít parametr -v. Poté se za IP v závorkách objeví podrobné informace o IP paketu:

(tos 0x0, ttl 64, id 8339, offset 0, příznaky , proto UDP (17), délka 51)

Obecně je zde vše docela prozaické. Nejprve přichází na řadu typ služby (TOS), následuje doba trvání paketu (TTL), identifikátor paketu, offset od začátku prvního paketu v řetězci, příznaky, použitý protokol transportní vrstvy (TCP, UDP, ICMP) a délka .


Pokročilé funkce

Většinu nejdůležitějších funkcí tcpdump jsme již probrali, ale jeho funkčnost je mnohem širší. Použili jsme například příkazy hostitele a portu k určení adresy a portu, na kterých chceme filtrovat výstup, ale co když chceme vidět pouze pakety, které směřují na zadanou adresu, ale neodcházejí z ní? K tomu můžete použít operátor src:

# tcpdump -i wlan0 -c 10 -n src 192.168.0.1

Existuje také jeho obrácená verze dst, určená k označení cílové adresy. Jak je uvedeno výše, všechny operátory lze kombinovat pomocí operátora a (monitorování síťového provozu, s výjimkou relací SSH a požadavků DNS):

# tcpdump -i wlan0 port není 22 a port není 53

Můžete také použít nebo (nebo) a kromě (ne). Tcpdump také rozumí rozsahům portů:

# tcpdump -i wlan0 -c 10 -n portrange 21-23

Dokáže filtrovat pakety podle jejich velikosti:

# tcpdump -i wlan0 -c 10 -n > 32 a<= 128

A rozumí maskám podsítě:

# tcpdump -i wlan0 c 10 -n src net 192.168.0.0/16 a dst net 10.0.0.0/8 nebo 172.16.0.0/16

Jednou z nejzajímavějších funkcí tcpdump je schopnost filtrovat pakety na základě obsahu konkrétních bitů nebo bajtů v hlavičkách protokolu. K tomu se používá následující formát: proto, kde proto je protokol, expr je posun v bajtech od začátku hlavičky paketu a velikost je volitelné pole udávající délku příslušných dat (výchozí je 1 bajt ). Chcete-li například filtrovat pouze pakety s nastaveným příznakem SYN (zahájení TCP handshake), použijte následující záznam:

# tcpdump "tcp==2"

Jak to funguje? Velmi jednoduché. 13 bajtů hlavičky TCP obsahuje přesně osm příznaků, každý po jednom bitu. Druhý bit je vyhrazen pro příznak SYN. Výše uvedený záznam jednoduše zkontroluje, zda je tento bit nastaven. Mimochodem, čitelnější forma tohoto záznamu by vypadala takto:

# tcpdump "tcp & tcp-syn != 0"

Praktické použití

Obslužný program tcpdump se běžně používá ke dvěma účelům: k ladění sítě, síťových aplikací a nových protokolů ak výuce základů TCP/IP. Půjdeme jinou cestou a využijeme sílu tcpdump k detekci skenování hostitelů a síťových útoků.

Na Obr. Obrázek 1 ukazuje, jak vypadá klasické skenování TCP portu provedené Nmapem v protokolech tcpdump. Jasně je vidět, jak se Nmap z adresy 192.168.0.100 pokouší navázat TCP spojení s různými porty odesláním paketu SYN (S v poli flags). Nejprve je testován port 8888, jako odpověď přichází paket RST, což znamená, že na portu nenaslouchá žádná služba, poté je testován port 587 se stejným výsledkem. Nakonec Nmap odešle paket SYN na port 22 (SSH) a obdrží odpověď ve formě paketu SYN-ACK:

192.168.0.100.43337 > 192.168.0.111.22: Příznaky[S], seq 2610024277, ... 43337 > 192.168.0.111.22: Příznaky [.], ack 1, ...

Port je otevřen a Nmap nyní může úspěšně ukončit spojení odesláním paketu RST a přejít na další porty. Udělá však něco chytřejšího: odešle potvrzení o přijetí ACK paketu a okamžitě přejde na další porty. Toto chování vám umožňuje obejít některé systémy detekce narušení, ale nemůžete snadno oklamat osobu vyzbrojenou čichačem.

Věnujte pozornost také číslům portů, které se mají třídit, nejsou generovány náhodně, ale jsou vybírány s ohledem na největší prevalenci. To znamená, že se provádí rychlé skenování, nebo přesněji, Nmap s největší pravděpodobností běží bez jakýchkoli příznaků.



Nyní se podíváme na další metodu pro detekci otevřených portů – SYN skenování (nmap -sS). Tento typ skenování se obvykle nazývá skrytý, protože během něj nikdy nedojde k navázání úplného TCP spojení, což znamená, že informace o faktu spojení nejsou obsaženy v protokolech. Výstup tcpdump pro tento druh skenování je znázorněn na obrázku 1. 2. Je velmi podobný protokolu běžného skenování TCP, ale odezva skeneru na otevřené porty je nyní odlišná:

192.168.0.100.48585 > 192.168.0.111.22: Vlajky[S], sekv. 1679394613, ... 48585 > 192.168.0.111.22: Vlajky[R], 39 ... 1167

Je vidět, že po obdržení schvalovacího paketu SYN-ACK skener spojení nedokončí, ale okamžitě ho ukončí, aniž by se dostal do logů. Na Obr. 3 můžete vidět výsledek kontroly UDP. Zde je vše velmi jednoduché, Nmap vyjmenovává porty s možnými službami UDP a na každý z nich posílá paket nulové délky. Pokud je port uzavřen, OS odešle zpět zprávu ICMP nedostupný:

16:41:48.798310 IP 192.168.0.100.61020 > 192.168.0.111.18869: UDP, délka 0

V opačném případě je port považován za otevřený. Další metodou skenování je nulové skenování odesíláním paketů bez nastavených příznaků (nmap -sN). Reakce na takové pakety se mohou lišit v závislosti na operačním systému, ale jak můžete vidět z následujícího seznamu, Linux na ně reaguje odesláním paketů RST:

192.168.0.100.39132 > 192.168.0.111.256: Vlajky , výhra 3072, délka 0 192.168.0.111.256 > 192.168.0.100.39132: Vlajky

Útočník může také použít Xmas Scanning, ve kterém pakety mají nastaveny příznaky FIN, URG a PUSH (zdá se, že paket září příznaky jako vánoční stromeček):

192.168.0.100.35331 > 192.168.0.111.5544: Příznaky , seq 3998959601, win 4096, urg 0, délka 0

Jak vidíte, reakce na takové balíčky je stejná. Skenování ACK (-sA) se objeví v protokolech tcpdump jako odeslání více paketů s nastaveným příznakem ACK a odpověď na ně odesláním paketů RST. Pokud je vsak v systemu nainstalovana brana firewall, nebudou se objevovat zpravy s odezvou a Nmap bude schopen pochopit, zda je port filtrovan.

Pomocí tcpdump můžete také sledovat různé typy záplav. Například klasická záplava ICMP v protokolech bude vypadat takto:

16:43:06.008305 IP 192.168.0.100 > 192.168.0.111: ICMP typ-#68, délka 1032 192.168.0.100 > 192.168.0.111: 0.0168.0.111: 0.083MP typ, délka 0.033MP

Zvláště důležité je zde pole obsahující čas přijetí paketu. Žádná normální aplikace neodešle mnoho zpráv ICMP v časovém úseku rovném jedné tisícině sekundy. Ostatní typy povodní (např. SYN) jsou definovány úplně stejně.

Interakce s jinými programy

Jednou z nejdůležitějších výhod tcpdump je, že formát jeho reportů se za dobu existence programu stal vlastně standardem pro všechny sniffery a dnes mu rozumí všechny více či méně seriózní nástroje pro analýzu provozu. Například tcpdump lze použít k vygenerování výpisu na vzdáleném počítači, poté jej odeslat na místní počítač a analyzovat pomocí wireshark:

$ ssh [e-mail chráněný] tcpdump -w - "port !22" | wireshark -k -i -

Zde jsme použili volbu -w - k zapsání výpisu na stdout a přesměrovali jej na wireshark běžící na místním počítači. Stejným způsobem můžete analyzovat provoz pomocí snort:

$ ssh [e-mail chráněný]"tcpdump -nn -i eth1 -w -" | snort -c /etc/snort/snort.conf -r -

Přesměrováním výstupu programu na vstup grep můžete v síti najít různé problémy, například identifikovat pakety s nesprávným kontrolním součtem, který lze zobrazit pomocí parametru -vv:

# tcpdump -nnvv -r dump.cap tcp | grep -v "tcp suma ok" | wc-l

Administrativní věci

Možnost filtrovat pakety na základě dat hlavičky, kterou jsme probrali na začátku první části, je velmi užitečná pro ladění různých protokolů a hledání síťových problémů. Můžeme jej použít například k zachycení síťových paketů přenášených přes Cisco Discovery Protocol, přes který si Cisco routery vyměňují informace o topologii a stavu sítě:

# tcpdump -nn -v -i eth0 -s 1500 -c 1 "ether == 0?2000"

Stejným způsobem můžete zachytit všechny pakety přenášené přes protokol DHCP (DISCOVER, REQUEST, INFORM), abyste identifikovali problémy s připojením klienta:

# tcpdump -i eth0 -vvv -s 1500 "((port 67 nebo port 68) a (udp = 0x1))"

Nebo zachytit pakety odeslané v rámci ověřování POP3:

# tcpdump -i eth0 "port tcp pop3 a ip = 85 a ip = 83" -s 1500 -n

síť grep

Sniffer tcpdump je dobrý pro svou všestrannost a rozmanitost možností, ale není tak snadné a pohodlné používat jej k vyhledávání konkrétních dat uvnitř přenášených paketů. Tento úkol mnohem lépe zvládá ngrep, který je navržen tak, aby zobrazoval procházející síťové pakety, které odpovídají dané masce.

Chcete-li například najít parametry předávané metodami GET a POST v rámci relace HTTP, můžete použít následující příkaz:

# ngrep -l -q -d eth0 "^GET |^POST " tcp a port 80

Hledání flákačů:

# ngrep -i "hra*|p0rn|dospělý" -W vedlejší řádek -d eth0 > slackers.txt

Analyzujeme provoz SMTP na všech síťových rozhraních:

# ngrep -i "rcpt to|mail from" tcp port smtp

možnosti tcpdump

Tabulka nejzajímavějších a nejužitečnějších příznaků tcpdump.

  • -i [rozhraní] – síťové rozhraní, na kterém se má naslouchat, pro všechny zadejte libovolné.
  • -n Nepřekládat adresy IP na názvy DNS.
  • -nn Nepřekládat adresy IP a čísla portů.
  • -X - zobrazí obsah balíčku v textovém a hexadecimálním formátu.
  • -XX - totéž plus obsah ethernetového rámce.
  • -v, -vv, -vvv - zvýší množství zobrazených informací a balíčků (více, více, všechno).
  • -c [n] Zobrazit pouze prvních n paketů.
  • -s [n] - počet bajtů zobrazených pro každý paket (lze snížit pro čitelnost nebo zvýšit pro více informací).
  • -S - zobrazí absolutní sekvenční čísla TCP.
  • -e - zobrazí záhlaví ethernetových rámců.
  • -q - zobrazí méně informací (kvůli čitelnosti).
  • -E - dešifrovat provoz IPsec pomocí zadaného klíče.
  • -w - uložit výpis programu do souboru, argument - používá se k určení stdout.

zjištění

V rukou znalého uživatele se tcpdump promění v mocný nástroj nejen pro ladění, ale také pro výzkum anomálií. Díky bohaté sadě operátorů a příznaků jej můžete použít k tomu, abyste se dostali ze sítě a prozkoumali, co skutečně potřebujete.

Tcpdump je extrémně praktický síťový analyzátor, který je velmi užitečný jak pro správce sítě, tak pro bezpečnostní pracovníky. Přirozeně, abyste získali maximum informací při práci s tcpdump, je prostě nutné rozumět zásobníkům protokolů TCP / IP. Pro pohodlí můžete použít například pohodlnější a inteligentnější programy, ale často nastanou situace, kdy není možné nainstalovat další služby na testovaný stroj, a pak je tcpdump prostě nenahraditelný, admin, kvůli paketu analýza, neprobouzí se, umístěte na unixový server X-Windows, zejména proto, že na většině unixových systémů je utilita tcpdump standardně dodávána.

Pochopení protokolu TCP/IP poskytuje široký rozsah použití analyzátoru a odstraňování problémů a odstraňování problémů se sítí pomocí analýzy paketů. Protože optimální použití tohoto nástroje vyžaduje dobré porozumění síťovým protokolům a jejich fungování, je to legrační situace, ve které inženýr stejně potřebuje znát a rozumět mechanismům síťové komunikace. počítaje v to tcpdump je užitečný ve všech směrech, od řešení problémů až po sebevzdělávání.

Níže je uvedeno několik možností, které vám pomohou používat tento nástroj nejúplnějším a nejpodrobnějším způsobem, zejména proto, že všechna tato pole a klíče lze snadno zapomenout a tyto příklady jsou velmi užitečné pro osvěžení paměti.

První použitý přepínač je -n, který zakazuje pokusy o převod adres na názvy domén, čímž nám poskytuje čisté IP adresy s porty.

Druhým je -X, který každému balíčku říká, aby vydal jak hexadecimální (hexadecimální), tak ASCII obsah balíčku.
A poslední možností je -S, která nahradí výstup relativního TCP číslování absolutním číslováním. Jde o to, že při relativním číslování mohou být některé problémy skryté vaší pozornosti.

Musíte pochopit, že hlavní výhodou tcpdump oproti jiným utilitám je to, že umožňuje detailní a ruční analýzu paketů. Také si musíte pamatovat, že ve výchozím nastavení tcpdump používá pouze prvních 68 bajtů paketu, vč. pokud potřebujete vidět více, pak byste měli použít přepínač -s number, kde number je počet bajtů k zachycení. Pokud je číslo nastaveno na 0 , dojde k úplnému zachycení paketu, takže je lepší použít hodnotu 1514, která poskytne úplné zachycení standardního ethernetového paketu.

Seznam nejčastěji používaných kláves:
-c: nastavení pro kontrolu velikosti zachyceného souboru před každým dalším záznamem zachyceného balíčku, pokud je velikost větší, pak se soubor uloží a záznam přejde do nového souboru
-e : vytiskne ethernetové záhlaví (linkovou vrstvu) na každý řádek výpisu
-i any: poslouchat na všech rozhraních, v případě, že potřebujete veškerý provoz.
-n: Zakáže překlad adres na názvy domén nebo symbolů
-nn: Zakáže překlad adres a portů na názvy domén nebo symbolů
-q: Krátce vytisknout informace za cenu snížení výstupu informací protokolu.
-X: výstup obsahu balíčku v hexadecimálním i ASCII formátu
-v, -vv, -vvv: Určuje další informace o zachycených paketech, které mají být odeslány, což umožňuje širší analýzu.
Několik příkladů k použití:

# Standardní výstup paketů
tcpdump -nS
# Rozšířený standardní výstup
tcpdump -nnvvS
# Hluboká analýza paketů
tcpdump -nnvvXS
# Nejpodrobnější dopravní informace
tcpdump -nnvvXSs 1514

Výrazy vám umožňují provádět cílenější kontroly a definovat typy provozu. Schopnost používat výrazy dělá z tcpdump velmi produktivní nástroj v rukou správce systému. Existují tři hlavní typy výrazů: typ, dir a proto.
Možnosti výrazu typu jsou hostitel, síť a port.
Pro vyjádření směru daného dir jsou k dispozici možnosti src, dst, src nebo dst a src a dst.
Několik standardních výrazů:

hostitel // analyzuje provoz na základě IP adresy (funguje také se symbolickými názvy, pokud není nastaveno -n)
hostitel tcpdump 1.2.3.4

src, dst // analyzuje provoz pouze pro konkrétní cíl nebo vysílač
tcpdump src 2.3.4.5
tcpdump dst 3.4.5.6

net // zachycující provoz patřící do konkrétní sítě
tcpdump net 1.2.3.0/24

proto // pracuje s tcp, udp a icmp. Je třeba mít na paměti, že proto není zmíněno
tcpdump icmp

port // analýza provozu z konkrétního portu (příchozí nebo odchozí)
tcpdump port 3389

src, dst port // filtr na základě příchozího nebo odchozího portu
tcpdump src port 1025
tcpdump dst port 3389

Nejvýkonnějším nástrojem jsou ale operandy, které umožňují nastavit podmínky pro výrazy a možnosti pro podrobnější izolaci informací o analyzovaném provozu.

A
a nebo &&
NEBO
nebo nebo ||
AŽ NA
ne nebo!

Provoz TCP ze zdroje 10.15.123.33 s cílovým portem 3379:

# tcpdump -nnvvS tcp a src 10.15.123.33 a dst port 3379

Provoz přicházející ze sítě 192.168 s cílem v sítích 10 nebo 172.16:

# tcpdump -nvX src net 192.168.0.0/16 a dst net 10.0.0.0/8 nebo 172.16.0.0/16

Provoz bez ICMP s cílem 192.168.0.2 a ze sítě 172.16:

# tcpdump -nvvXSs 1514 dst 192.168.0.2 a src net 172.16.0.0/16 a ne icmp

Provoz z hostitelů Eros nebo Ares , ale nesměřující na standardní port SSH (tento výraz vyžaduje překlad názvů):

# tcpdump -vv src eros nebo ares a ne dst port 22

Jak můžete vidět z výše uvedených příkladů, můžeme sestavit jakýkoli výraz pro jakýkoli účel. Pomocí složité syntaxe také můžeme z analýzy vyloučit jakýkoli typ provozu.

Také mějte na paměti, že můžeme vytvářet dotazy, které zahrnují skupiny a fondy možností zadaných v jediném dotazu. Ale aby jim obslužný program tcpdump věnoval pozornost, musí být umístěny v hranatých závorkách, přičemž výraz musí být uveden v jednoduchých uvozovkách:
Provoz přicházející z hostitele 10.0.2.4 do cílových portů 3379 nebo 22:
# tcpdump ‘src 10.0.2.4 a (dst port 3379 nebo 22)’

Je také možné filtrovat na základě příznaků TCP, například izolovat pakety SYN nebo RST:

Analyzujte všechny pakety URG:
# tcpdump 'tcp & 32 != 0'

Analyzujte všechny pakety ACK:
# tcpdump 'tcp & 16 != 0'

Analyzujte všechny PSH pakety:
# tcpdump 'tcp & 8 != 0'

Analyzujte všechny pakety RST:
# tcpdump 'tcp & 4 != 0'

Analyzujte všechny pakety SYN:
# tcpdump 'tcp & 2 != 0'

Tento tutoriál vám ukáže, jak izolovat provoz různými způsoby – od IP, přes port, protokol až po provoz na aplikační vrstvě – abyste měli jistotu, že co nejrychleji najdete přesně to, co potřebujete.

tcpdump je nástroj, který by se měl každý naučit jako základ pro analýzu paketů.

Nainstalujte tcpdump pomocí apt install tcpdump (Ubuntu) nebo yum nainstalujte tcpdump (Redhat/Centos)

Začněme základním příkazem, který nám zajistí HTTPS provoz:

tcpdump -nn S X port 443

04:45:40.573686 IP 78.149.209.110.27782 > 172.30.0.144 .443 : Příznaky [.], potvrzení 278239097, výhra 28, možnosti , délka 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

Můžete získat jeden paket s -c 1 , nebo nčíslo s -c n .

To ukázalo určitý provoz HTTPS s hexadecimálním displejem viditelným v pravé části výstupu (bohužel, je šifrovaný). Pamatujte – v případě pochybností spusťte výše uvedený příkaz s portem, který vás zajímá, a měli byste být na cestě.

Příklady

PacketWizard™ není ve skutečnosti ochranná známka, ale měla by být.

praktik, který se připravuje na spuštění tcpdump

Nyní, když jste schopni získat základní provoz, pojďme si projít četné příklady, které pravděpodobně budete potřebovat při své práci v oblasti sítí, zabezpečení nebo jako jakýkoli typ PacketWizard™.

Vše na rozhraní

Stačí se podívat, co se děje, tím, že se podíváte na to, co zasahuje vaše rozhraní.

Nebo získat Všechno rozhraní s -i any .

tcpdump -i eth0

Najděte provoz podle IP

Jeden z nejběžnějších dotazů, pomocí hostitele , můžete zobrazit provoz, který směřuje do nebo z 1.1.1.1.

typy výrazů:

hostitel , síť a port .

src a dst .

hostitel , síť a port .

tcp, udp, icmp a mnoho dalších.

hostitel tcpdump 1.1.1.1

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

Pokud chcete vidět provoz pouze v jednom nebo druhém směru, můžete použít src a dst .

tcpdump src 1.1.1.1
tcpdump dst 1.0.0.1

Hledání paketů podle sítě

Chcete-li najít pakety směřující do nebo z konkrétní sítě nebo podsítě, použijte volbu net.

Můžete to také kombinovat s možnostmi src a dst.

tcpdump net 1.2.3.0/24

Získejte obsah paketu s hexadecimálním výstupem

Hexadecimální výstup je užitečný, když chcete vidět obsah příslušných paketů, a často je nejlepší ho použít, když izolujete několik kandidátů pro bližší prozkoumání.

tcpdump -c 1 -X icmp

souhrn

Tady jsou věci s sebou.

  1. tcpdump je cenný nástroj pro každého, kdo se chce dostat do sítě nebo .
  2. Hrubý způsob, jakým se propojuje s provozem, v kombinaci s přesností, kterou nabízí při kontrole paketů, z něj činí nejlepší možný nástroj pro učení TCP/IP.
  3. Protokolové analyzátory jako Wireshark jsou skvělé, ale pokud chcete skutečně zvládnout packet-fu, musíte se nejprve stát jedním s tcpdump.

Tento základ by vám měl pomoci, ale manuálová stránka by měla být vždy po ruce pro nejpokročilejší a jednorázové scénáře použití. Opravdu doufám, že to pro vás bylo užitečné, a pokud máte nějaké dotazy, neváhejte.

poznámky

  1. Momentálně (tak nějak) píšu knihu o tcpdump pro No Starch Press.
  2. Hlavní obrázek je z SecurityWizardry.com.
  3. Některé z izolačních filtrů vypůjčené od

PROČ TCPDUMP?

Tcpdump je přední nástroj pro analýzu sítě pro bezpečnostní profesionály. Pro ty, kteří chtějí dokonale porozumět TCP / IP, je nezbytné, aby dostatečně rozuměli této důležité aplikaci. Mnoho lidí dává přednost používání nástrojů vyšší úrovně, jako je Wireshark, ale to je podle mě chyba.

Když používáte nástroj, který zobrazuje síťový provoz přirozenějším (jednodušším) způsobem, složitost analýzy dopadá přímo na člověka, nikoli na aplikaci. Tento přístup rozvíjí porozumění sadě TCP/IP, a proto důrazně doporučuji používat tcpdump místo jiných nástrojů, kdykoli je to možné.

15:31:34.079416 IP (tos 0x0, ttl 64, id 20244, offset 0, příznaky , proto: TCP(6), délka: 60) source.35970 > dest.80: S, cksum 0x0ac1 (správně), 221647 2647022145 (0) Win 5840 0x0000: 4500 003C 4F14 4006 7417 0AFB 0257 E .. 0x0010: 4815 222A 8C82 00550 5A41 0000 0000 H. "*... ​​P..za .... 0x002 16D0 0AC1 0000 0204 0204 05b4 0402 080a ................ 0x0030: 14b4 1555 0000 0000 0103 0302

ZÁKLADY

Níže je uvedeno několik možností, které můžete použít při konfiguraci tcpdump. Je snadné je zapomenout a/nebo zaměnit s jinými typy filtrů, jako je Wireshark, takže tato stránka vám může sloužit jako reference. Zde jsou ty hlavní, které si sám rád pamatuji podle toho, co sleduji.

MOŽNOSTI

  • -i any: poslouchejte na všech rozhraních, abyste viděli, jestli nevidíte nějaký provoz.
  • -i eth0: poslouchat na rozhraní eth0.
  • -D: Zobrazí seznam dostupných rozhraní
  • -n: Zobrazuje IP adresy místo názvů hostitelů.
  • -nn: Místo názvů hostitelů a názvů protokolů zobrazí adresy IP a čísla portů.
  • -q: Zobrazí minimální množství informací o balíčku.
  • -t: Nezobrazovat časové razítko na každém řádku.
  • -tttt: Určuje, že se časová razítka vydávají ve výchozím formátu pro každý řádek.
  • -X: Zobrazí obsah balíčku v hexadecimálním i v ASCII kódu.
  • -XX: Stejné jako -X, ale také zobrazuje ethernetové záhlaví.
  • -v, -vv, -vvv: zvýšit množství vrácených informací o balíčku.
  • -c: získat pouze x počet paketů a poté zastavit.
  • -s: Zadejte délku (velikost) zachycení v bajtech. Použijte -s0 k získání všeho, pokud úmyslně nechytnete méně.
  • -S: Tisk absolutních pořadových čísel.
  • -e: Získá ethernetovou hlavičku.
  • -q: Zobrazí informace o minimálním balíčku.
  • -E: Dešifrování provozu IPSEC poskytnutím šifrovacího klíče.
[Hodnota snaplength, výchozí pro tcpdump 4.0, se změnila z 68 bajtů na 96 bajtů. I když vám to poskytne více informací o balíčku, nebudou to všechny informace. Pro plné pokrytí použijte -s1514 nebo -s0]

VÝRAZY

V tcpdump vám výrazy umožňují zkrátit různé typy provozu a najít přesně to, co hledáte. Zvládnutí výrazů a schopnost je kreativně kombinovat je to, co dělá tcpdump skutečně výkonným.

Existují tři hlavní typy výrazů: typ, dir a proto.

Typy možností: hostitel, síť a port.

Adresáře vám umožňují provádět src, dst a jejich kombinace.

Protokol umožňuje definovat: tcp, udp, icmp, ah a mnoho dalších.

PŘÍKLADY

Takže teď, když jsme viděli, jaké máme možnosti, pojďme se podívat na příklady z reálného světa, které pravděpodobně uvidíme při naší každodenní práci.

HLAVNÍ ZPRÁVA

Podívejte se na všechna rozhraní a podívejte se, co se děje.

# tcpdump -i any

SPECIFICKÉ ROZHRANÍ

Základní pohled na to, co se děje na konkrétním rozhraní.

# tcpdump -i eth0

PREZENTACE RAW VÝSTUPU

Podrobný výstup bez rozlišení názvů hostitelů nebo čísel portů, absolutních pořadových čísel a časových razítek čitelných pro člověka.

# tcpdump -ttttnnvvS

VYHLEDEJTE PROVOZ PODLE IP

Jeden z nejčastějších dotazů vám ukáže provoz z 1.2.3.4, ať už jde o zdroj nebo cíl.

# hostitel tcpdump 1.2.3.4

ZOBRAZIT VÍCE INFORMACÍ O HEX BALÍČKU

Hexadecimální výstup je užitečný, když chcete vidět obsah příslušných balíčků, a často se nejlépe používá, když izolujete více kandidátů pro bližší kontrolu.

# tcpdump -nnvXSs 0 -c1 icmp tcpdump: poslech na eth0, typ odkazu EN10MB (Ethernet), 23:11:10.370321 IP (tos 0x20, ttl 48, id 34859, délka 453, příznaky 452, 83.2. > 72.21.34.42: icmp 64: echo požadavek seq 0 0x0000: 4520 0054 882b 0000 3001 7cf5 45fe d52b E..T.+..0.|.E...+ 0...+ 08102 0.0.0.0.0.0.0.0.0. 50"...%..D 0x0020: ae5e 0500 0809 0a0b 0c0d 0e0f 1011 1213 ........!"# 0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&"()*+,-./0123 0x0050: 3435 3637 0 zachycených paketů 1 paket přijatý filtrem podle jádra

FILTROVÁNÍ PODLE ZDROJE A CÍLE

Vyčlenění provozu na základě zdroje nebo cíle je velmi snadné pomocí src a dst.

# tcpdump src 2.3.4.5 tcpdump dst 3.4.5.6

VYHLEDÁVEJTE BALÍČKY PO SÍTI

Chcete-li najít pakety do nebo z konkrétní sítě, použijte volbu net. Můžete to kombinovat s možnostmi src nebo dst.

# tcpdump net 1.2.3.0/24

ZOBRAZIT PROVOZ SPOJENÝ SE SPECIÁLNÍM PŘÍSTAVEM

Konkrétní provozní port můžete najít pomocí možnosti port následované číslem portu.

# tcpdump port 3389 tcpdump src port 1025

ZOBRAZIT PROVOZ JEDNOHO PROTOKOLU

Pokud hledáte konkrétní typ provozu, můžete použít tcp, udp, icmp a mnoho dalších.

# tcpdump icmp

ZOBRAZIT POUZE PROVOZ IP6

Veškerý provoz IP6 můžete také najít pomocí možnosti protokolu.

VYHLEDEJTE PROVOZ POMOCÍ PORTOVÝCH PÁSEM

K vyhledání provozu můžete také použít rozsah portů.

# tcpdump portrange 21-23

NAJDĚTE PROVOZ NA ZÁKLADĚ VELIKOSTI BALENÍ

Pokud hledáte balíčky konkrétní velikosti, můžete využít těchto možností. Můžete použít malé, velké nebo jakékoli symboly, které od matematiky očekáváte.

# tcpdump méně než 32 tcpdump větší než 64 tcpdump<= 128

PÍSEMNÉ ZÁZNAMY DO SOUBORU

Často je užitečné uložit výstup dávek do souboru pro pozdější analýzu. Tyto soubory jsou známé jako soubory PCAP (PEE-cap) a mohou být zpracovány stovkami různých aplikací, včetně síťových analyzátorů, systémů detekce narušení a samozřejmě samotného tcpdump. Zde zapisujeme soubor s názvem soubor_zachycení pomocí přepínače -w.

# tcpdump port 80 -w capture_file

ČTENÍ SOUBORŮ PCAP

Soubory PCAP můžete číst pomocí přepínače -r. Všimněte si, že při čtení souboru můžete použít všechny běžné příkazy v tcpdump; jste omezeni pouze tím, že nemůžete zachytit a zpracovat něco, co v souboru neexistuje.

# tcpdump -r soubor_zachycení

POKROČILÝ

Nyní, když jsme na několika příkladech viděli, co můžeme dělat se základy, pojďme se podívat na některé pokročilejší věci.

VŠE JE O KOMBINACÍCH

Dělat tyto různé věci individuálními je mocné, ale skutečné kouzlo tcpdump pochází z toho, že je možné kreativními způsoby kombinovat možnosti a izolovat přesně to, co hledáte. Existují tři způsoby, jak vytvářet kombinace, a pokud jste vůbec studovali programování, budou vám velmi známé.

A
a nebo &&

NEBO
nebo nebo ||

AŽ NA
ne nebo!

Zde je několik příkladů kombinovaných příkazů.

Z KONKRÉTNÍ IP A PŘIDĚLENÉ KE KONKRÉTNÍMU PORTU

Pojďme najít veškerý provoz z 10.5.2.3 na libovolného hostitele na portu 3389.

Tcpdump -nnvvS src 10.5.2.3 a dst port 3389

Z JEDNÉ SÍTĚ DO DRUHÉ

Podívejme se na veškerý provoz pocházející z 192.168.x.xa směřující k sítím 10.x nebo 172.16.x.x a ukážeme hexadecimální výstup bez názvu hostitele a jedné úrovně podrobností.

Tcpdump -nvX src net 192.168.0.0/16 a dst net 10.0.0.0/8 nebo 172.16.0.0/16

PROVOZ NENÍ ICMP SMĚŘUJÍCÍ NA KONKRÉTNÍ IP

To nám ukáže veškerý provoz směřující na 192.168.0.2, který není ICMP.

tcpdump dst 192.168.0.2 a src net a ne icmp

PROVOZ Z HOSTITELE, KTERÝ NENÍ V KONKRÉTNÍM PŘÍSTAVU

To nám ukáže veškerý provoz z hostitele, který není provozem SSH (za předpokladu, že je použit výchozí port).

Tcpdump -vv src mars a ne dst port 22

Jak vidíte, můžete vytvářet dotazy, abyste našli cokoli, co potřebujete. Klíčem je nejprve přesně definovat, co hledáte, a poté vytvořit syntaxi pro izolaci konkrétního typu provozu.

Složité seskupení a speciální znaky

Také mějte na paměti, že při vytváření složitých dotazů možná budete muset seskupit parametry pomocí jednoduchých uvozovek. Jednoduché uvozovky se používají k tomu, aby řekli tcpdump, aby ignoroval některé speciální znaky - v tomto případě ten v závorkách "()". Stejnou metodu lze použít pro seskupování pomocí jiných výrazů, jako je hostitel, port, síť atd. Podívejte se na níže uvedený příkaz.

# Provoz, který pochází z 10.0.2.4 A je určen pro porty 3389 nebo 22 (špatně) tcpdump src 10.0.2.4 a (port dst 3389 nebo 22)

Pokud jste se pokusili spustit tento velmi užitečný příkaz při jiné příležitosti, zobrazí se chyba závorek. Můžete to opravit tak, že escapujete závorky (před každou předponou \) nebo dáte celý příkaz do jednoduchých uvozovek:

# Provoz, který pochází z 10.0.2.4 A je určen pro porty 3389 nebo 22 (správně) # tcpdump "src 10.0.2.4 a (dst port 3389 nebo 22)"

Izolujte konkrétní příznaky TCP

Můžete také zachytit provoz na základě určitých příznaků TCP.

[POZNÁMKA: Filtry níže najdou tyto různé pakety, protože tcp si v hlavičce TCP všimne offsetu 13, číslo představuje umístění v byte, eh! = 0 znamená, že tento příznak je nastaven na 1, tzn. je zapnuto. ]

Zobrazit všechny URGENT (URG) balíčky...

# tcpdump "tcp & 32!=0"

Zobrazit všechny balíčky ACKNOWLEDGE (ACK)…

# tcpdump "tcp & 16!=0"

Zobrazit všechny PUSH balíčky (PSH)…

# tcpdump "tcp & 8!=0"

Zobrazit všechny pakety RESET (RST) ...

# tcpdump "tcp & 4!=0"

Zobrazit všechny balíčky SYNCHRONIZE (SYN) ...

# tcpdump "tcp & 2!=0"

Zobrazit všechny balíčky FINISH (FIN)...

# tcpdump "tcp & 1!=0"

Zobrazit všechny balíčky SYNCHRONIZE / ACKNOWLEDGE (SYNACK) …

# tcpdump "tcp=18" [Poznámka: ve výstupu pole tcpdump je zobrazen pouze příznak PSH, RST, SYN a FIN. URG a ACK jsou zobrazeny, ale jsou zobrazeny jinde ve výstupu než v poli příznaků. ]

Stejně jako u nejvýkonnějších nástrojů však existuje mnoho způsobů, jak udělat to, co potřebujete. Následující příklad ukazuje další způsob, jak zachytit pakety se specifickými sadami příznaků TCP.

# tcpdump "tcp == tcp-syn"

Odstraňte příznaky RST pomocí možnosti tcpflags...

# tcpdump "tcp == tcp-rst"

Odstraňte příznaky FIN pomocí tcpflags...

# tcpdump "tcp == tcp-fin" [Poznámka: stejnou metodu lze použít pro jiné příznaky; byly v zájmu úspory místa vynechány. ]

Identifikace pozoruhodného provozu

Nakonec je zde několik rychlých receptů, které si budete chtít zapamatovat, abyste zachytili specifický a specializovaný provoz, jako jsou špatné/pravděpodobně škodlivé pakety.

BALÍČKY S BĚŽNÝMI SADAMI RST A SYN (TATO BY NEMAL BÝT)

# tcpdump "tcp=6"

NAJDĚTE prostý text HTTP A ZÍSKEJTE ŽÁDOST

# tcpdump "tcp=0x47455420"

NAJDĚTE PŘIPOJENÍ SSH NA JAKÉKOLI PORTU (PROSTŘEDNICTVÍM BANNERU)

# tcpdump "tcp[(tcp>>2):4] = 0x5353482D"

PAKETY S TTL MENŠÍM NEŽ 10 (OBECNĚ UKAZUJÍ PROBLÉM NEBO POUŽÍVÁ TRACEROUTE)

# tcpdump "ip< 10"

BALÍČKY EVIL BIT

# tcpdump "ip & 128 != 0"

Závěr

tcpdump je cenný nástroj pro každého, kdo se chce dostat do síťové nebo informační bezpečnosti.
Neobvyklý způsob interakce s provozem v kombinaci s přesností, kterou poskytuje při inspekci paketů, z něj dělá nejlepší nástroj pro učení se o TCP/IP.
Analyzátory protokolů jako Wireshark jsou skvělé, ale pokud chcete opravdu ovládat pakety, musíte nejprve zvládnout tcpdump.
Celkově vzato, tento tutoriál by vám měl pomoci posílit se, ale manuálová stránka by měla být vždy po ruce pro nejpokročilejší a jednorázové případy použití. Upřímně doufám, že to pro vás bylo užitečné, a pokud máte nějaké dotazy, neváhejte mě kontaktovat.

  • Nabízíme osvědčený program a tutoriál od odborníků z Cisco Networking Academy a Linux Professional Institute, certifikovaných lektorů a osobního lektora.
  • Pomůžeme se zaměstnáním a uděláme kariéru. 100 % našich absolventů je zaměstnáno.
  • Jak školení probíhá?

    • Pořádáme večerní online přednášky na naší platformě nebo studujeme prezenční formou na bázi Kyjevské kanceláře.
    • Zeptáme se vás na vhodný čas na cvičení a přizpůsobení: chápeme, že na studium není dostatek času.
    • Pokud chcete individuální harmonogram, projednáme a zrealizujeme.
    • Stanovíme jasné termíny pro vlastní organizaci. Osobní kurátor bude v kontaktu, který zodpoví dotazy, poradí a motivuje k dodržování termínů pro složení zkoušek.

    Pomůžeme vám také: