Szűrd le a levegőt! A hálózati forgalmat a tcpdump segítségével ellenőrizzük. tcpdump segédprogram, példák az opciószűrőkre Tcpdump leírása

Szűrd le a levegőt!  A hálózati forgalmat a tcpdump segítségével ellenőrizzük.  tcpdump segédprogram, példák az opciószűrőkre Tcpdump leírása
Szűrd le a levegőt! A hálózati forgalmat a tcpdump segítségével ellenőrizzük. tcpdump segédprogram, példák az opciószűrőkre Tcpdump leírása

UNIX rendszerekhez számos különféle szippantó és forgalomelemző létezik, kényelmes grafikus felülettel és gazdag funkciókészlettel. De egyikük sem hasonlítható össze rugalmasságában, sokoldalúságában és elterjedtségében a régimódi tcpdump-pal. Ez a segédprogram sok esetben megtalálható Linux disztribúciókés az összes BSD rendszer a dobozból, és képes lesz segíteni, ha más eszközök nem állnak rendelkezésre.

Bevezetés

A tcpdump segédprogram egy parancssori hálózati csomagszimuláló, amely nem rendelkezik sem grafikus, sem pszeudografikus felülettel. Kezdőknek esetlennek és túl régimódinak tűnhet, de ügyes kezekben igazivá válik. Svájci kés a hálózati csomagok és protokollok megnyitásához. A tapasztalt rendszergazdák mindig azt javasolják, hogy a kezdők a tcpdump-ot használják minden más segédprogram helyett, a jelentések egyértelműsége és egyszerűsége miatt.

A Tcpdump csaknem 25 évvel ezelőtt született a Berkeley Egyetemen, még mindig aktívan fejlesztik, és továbbra is szabvány az ilyen eszközök között operációs rendszer UNIX. A kifejezetten erre kifejlesztett libpcap csomagrögzítési könyvtárat ma már szinte minden UNIX rendszerhez való szippantó és sok hasonló Windows-program használja.

Ebben a cikkben a tcpdump-pal való munka minden aspektusával foglalkozunk, a programmal való munka alapjaitól egészen a segédprogram használatáig a hálózati támadások, rendellenességek és különféle típusú hibák észlelésére.

Egyedül a konzollal

Próbáljuk meg kitalálni, hogyan működik a tcpdump, és melyik oldalról érdemes megközelíteni. Nyisson meg egy terminált, és futtassa a programot rootként (mint minden sniffernek, a tcpdump-nak is rendelkeznie kell teljes hozzáférés hálózati interfészekhez), megadva a nevet hálózati felületés a kimeneti csomagok számának korlátozása tízre:

# tcpdump -i wlan0 -c 10 -n

Az -n kapcsoló letiltja az IP-címek DNS-nevekké fordítását. Most próbáljuk meg nyomon követni a cserét csak egy adott gazdagéppel, például egy otthoni útválasztóval:

# tcpdump -i wlan0 -c 10 -n gazdagép 192.168.0.1 és 53-as port

Nézzük meg, mit adott ki nekünk a tcpdump, példaként a „DNS-lekérdezés a tcpdump szemével” képernyőképen látható két sor segítségével. Könnyen megérthető, hogy ez egy DNS-kérés (53-as port) a 192.168.0.101-es gazdagéptől a 192.168.0.1-es gazdagéphez, és az azt követő válasz. De mit jelentenek az összes többi szám és jel?


A 16:22:41.340105 számok a csomag elküldésének idejét jelentik, beleértve a másodperc milliomodrészeit (úgynevezett frac). A két IP betű, ahogy sejthető, azonosítja a használt hálózati réteg protokollt, ezt követi a cím: a küldő port és a cím: a csomag célportja. Minden, ami a kettőspont után következik, közvetlenül a használt szállítási vagy alkalmazási réteg protokolljától függ. A tcpdump ismer néhány protokollt, és képes visszafejteni azokat ember által olvasható formára, másokat olyannak hagy, amilyenek, és egyszerűen felsorolja a csomag tartalmát. Ebben az esetben a tcpdump dekódolta a DNS-üzeneteket, és a 49244+ A? ya.ru. (23) , ami azt jelenti: egy kérést (A?) küldtek a ya.ru. névhez tartozó címre, a teljes csomaghossz mínusz a TCP / IP fejlécek 23 bájt volt. Az első számjegy a kérés azonosítója.

A következő sorban a választ látjuk, melynek megjelenítési formátuma szinte megegyezik a kéréssel, azzal a különbséggel, hogy most a kérésazonosító után a talált rekordok számáról van információ (8/2/3), ill. maguk a rekordok (A 213.180.204.3, A 77.88.21.3, A 87.250.250.3...).

A tcpdump arzenálja számos protokollt támogat, aminek köszönhetően olvasható formában képes bemutatni a TCP, UDP és ICMP, SMB / CIFS, NFS, AFS, AppleTalk protokollokról szóló információkat. De mi van akkor, ha a tcpdump nem tud semmit a használt alkalmazási réteg protokollról, vagy nem tudja meghatározni? Normál helyzetben egyszerűen információkat ad ki a csomagról. Valahogy így nézhet ki:

Flags [.], szekv. 3666073194:3666074622, ack 3281095139, win 2000, opciók , hossza 1428

Ez egy TCP-csomag, amelyre vonatkozó információk formátuma a tcpdump-ban a következő (a mezőket vesszővel választjuk el):

  • zászlók - állítsa be a zászlókat. Az S (SYN), F (FIN), P (PUSH) és R (RST) szimbólumokkal jelölve a pont azt jelenti, hogy nincs beállítva zászló;
  • data-seqno - a csomagban található adatokat írja le a következő formátumban: first:last, ahol az első és az utolsó a továbbított adat első és utolsó bájtjának sorszáma, nbyte;
  • ack - következő sorszám (ISN + 1);
  • ablak - ablakméret;
  • opciók - itt további információk adhatók meg, például (maximális szegmensméret);
  • hossz - a csomag hossza.

Mindezek az adatok nagyon hasznosak lehetnek protokollok és hálózati alkalmazások tanulmányozása vagy hibakeresése során, de ezek tartalmáról nem árulnak el semmit. A csomag tartalmának hexadecimális formátumban való megtekintéséhez használja a -X jelzőt:

# tcpdump -i wlan0 -c 10 -n -X gazdagép 192.168.0.1 és 80-as port

Ez a funkció nagyon hasznos olyan protokollok elemzéséhez, amelyekben az adatokat tiszta szövegben továbbítják, mint például a HTTP. A bináris protokollok és a titkosítással rendelkező protokollok esetében ez természetesen haszontalan lesz.
Használhatja a -v kapcsolót is, hogy további információkat kapjon egy csomagról. Ezután a zárójelben lévő IP jelenik meg részletes információk az IP csomagról:

(tos 0x0, ttl 64, id 8339, offset 0, flags , proto UDP(17), hossz 51)

Általában itt minden meglehetősen prózai. Először a szolgáltatás típusa (TOS), majd a csomag élettartama (TTL), a csomagazonosító, az eltolás a lánc első csomagjának elejétől, a zászlók, a használt szállítási réteg protokoll (TCP, UDP, ICMP), és hossza.


Speciális funkciók

A tcpdump legtöbb legfontosabb funkciójával már foglalkoztunk, de a funkcionalitása sokkal szélesebb. Például a host és port utasításokat használtuk a cím és a port megadására, amelyre szükségünk van a kimenet szűréséhez, de mi van akkor, ha csak a címre menő csomagokat szeretnénk látni. megadott címet, de nem kimenő belőle? Ehhez használhatja az src operátort:

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

Létezik a dst fordított változata is, amely a célcím jelzésére szolgál. A fentiek szerint az összes operátor kombinálható a és operátor használatával (hálózati forgalom figyelése, kivéve az SSH-munkameneteket és a DNS-kéréseket):

# tcpdump -i wlan0 port nem 22 és port nem 53

Használhatja a vagy (vagy) és a (nem) kivételt is. Ezenkívül a tcpdump megérti a porttartományokat:

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

Képes a csomagok méretük szerinti szűrésére:

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

És megérti az alhálózati maszkokat:

# tcpdump -i wlan0 c 10 -n src net 192.168.0.0/16 és dst net 10.0.0.0/8 vagy 172.16.0.0/16

A tcpdump egyik legérdekesebb funkciója a csomagok szűrésének képessége a protokoll fejlécében lévő meghatározott bitek vagy bájtok tartalma alapján. Ehhez a következő formátumot használjuk: proto, ahol a proto a protokoll, az expr a csomagfejléc kezdetétől számított bájt eltolás, a méret pedig egy opcionális mező, amely a kérdéses adat hosszát jelzi (alapértelmezés szerint 1 bájt) . Ha például csak a SYN jelzővel (TCP kézfogás kezdeményezés) beállított csomagokat kívánja szűrni, akkor a következő bejegyzést kell használnia:

# tcpdump "tcp==2"

Hogyan működik? Nagyon egyszerű. A TCP fejléc 13 bájtja pontosan nyolc jelzőt tartalmaz, egy-egy bitet. A második bit a SYN flag számára van fenntartva. A fenti bejegyzés egyszerűen ellenőrzi, hogy ez a bit be van-e állítva. Egyébként ennek a bejegyzésnek egy olvashatóbb formája így nézne ki:

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

Gyakorlati használat

A tcpdump segédprogramot általában két célra használják: a hálózat, a hálózati alkalmazások és az új protokollok hibakeresésére, valamint a TCP/IP alapjainak megtanítására. Mi a másik irányba megyünk, és a tcpdump erejét használjuk a gazdagép-ellenőrzések és a hálózati támadások észlelésére.

ábrán. Az 1. ábra bemutatja, hogyan néz ki az Nmap által végzett klasszikus TCP-port vizsgálat a tcpdump naplókban. Jól láthatja, hogy a 192.168.0.100 címről érkező Nmap hogyan próbál TCP-kapcsolatot létesíteni különböző portokkal egy SYN csomag küldésével (S a flags mezőben). Először a 8888-as portot vizsgáljuk, válaszul egy RST-csomag érkezik, ami azt jelenti, hogy egyetlen szolgáltatás sem figyel a porton, majd az 587-es portot vizsgálja ugyanazzal az eredménnyel. Végül az Nmap egy SYN-csomagot küld a 22-es portra (SSH), és SYN-ACK csomag formájában kap választ:

192.168.0.100.43337 > 192.168.0.111.22: Zászlók [S], 2610024277, ... 0024278, ... 192.168.0.100. 43337 > 6.2.1. , .. .

A port nyitva van, és most az Nmap sikeresen lezárhatja a kapcsolatot egy RST-csomag elküldésével, és továbbléphet a következő portokra. Azonban valami okosabbat tesz: visszaigazolást küld az ACK csomag kézhezvételéről, és azonnal továbblép a következő portokra. Ez a viselkedés lehetővé teszi bizonyos behatolásérzékelő rendszerek megkerülését, de nem lehet könnyen becsapni egy szippantóval felfegyverzett személyt.

Ügyeljen a kiválogatandó portok számára is, ezek nem véletlenszerűen generálódnak, hanem a legnagyobb elterjedtség figyelembevételével kerülnek kiválasztásra. Ez azt jelenti, hogy gyors vizsgálatot hajtanak végre, pontosabban az Nmap valószínűleg jelzők nélkül fut.



Most nézzünk meg egy másik módszert a nyitott portok észlelésére - a SYN szkennelést (nmap -sS). Ezt a fajta vizsgálatot általában rejtettnek nevezik, mert közben soha nem jön létre teljes TCP kapcsolat, ami azt jelenti, hogy a kapcsolat tényére vonatkozó információk nem szerepelnek a naplókban. Az ilyen típusú vizsgálat tcpdump kimenete az 1. ábrán látható. 2. Nagyon hasonlít egy normál TCP-vizsgálat naplójához, azonban a szkenner reakciója nyitott portok most egy másik:

192.168.0.100.48585 > 192.168.0.111.22: Zászlók [S], 1679394613, ... 394614, ... 192.168.0.100. 48585 > F. 79394614, .. .

Látható, hogy a SYN-ACK jóváhagyási csomag kézhezvétele után a szkenner nem fejezi be a kapcsolatot, hanem azonnal megszakítja azt, elkerülve a naplókba való bejutást. ábrán. 3 láthatja az UDP vizsgálat eredményét. Itt minden nagyon egyszerű, az Nmap felsorolja a portokat a lehetséges UDP szolgáltatásokkal, és mindegyikre nulla hosszúságú csomagot küld. Ha a port le van zárva, az operációs rendszer egy ICMP elérhetetlen üzenetet küld vissza:

16:41:48.798310 IP 192.168.0.100.61020 > 192.168.0.111.18869: UDP, hossza 0 16:41:48.798346 IP 192.168.0.798346 IP 192.168.0.11116:20.11111116. 8.0.100 udp port 18869 nem érhető el, hossza 36

Ellenkező esetben a port nyitottnak tekintendő. Egy másik szkennelési módszer a null-ellenőrzés olyan csomagok küldésével, amelyek nincsenek beállítva zászlókkal (nmap -sN). Az ilyen csomagokra adott reakció az operációs rendszertől függően változhat, de amint az a következő listából látható, a Linux RST-csomagok küldésével válaszol rájuk:

192.168.0.100.39132 > 192.168.0.111.256: zászlók , win 3072, hossza 0 192.168.0.111.256 > 192.168.0.100.39132, ...: F

A támadó használhatja a karácsonyi szkennelést is, amelyben a csomagokon a FIN, URG és PUSH jelzők vannak beállítva (a csomag karácsonyfaként úgy tűnik, zászlókkal világít):

192.168.0.100.35331 > 192.168.0.111.5544: Zászlók , szekv. 3998959601, win 4096, urg 0, hossza 0 0, ack 3998959602

Mint látható, az ilyen csomagokra adott reakció azonos. Egy ACK szkennelés (-sA) jelenik meg a tcpdump naplókban, mivel több csomagot küld beállított ACK jelzővel, és RST csomagok küldésével válaszol rájuk. Ha azonban tűzfal van telepítve a rendszerre, nem lesznek válaszüzenetek, és az Nmap képes lesz megérteni, ha a port szűrve van.

A tcpdump segítségével különféle típusú elárasztásokat is nyomon követhet. Például egy klasszikus ICMP árvíz a naplókban így fog kinézni:

16:43:06.008305 IP 192.168.0.100 > 192.168.0.111: ICMP típus-#68, hossz 1032 16:43:06.008383 IP 192.168.0.100 hossz1, 1-30 IC22 típus1 > 192.168.0.100 1.1. 32 16:43:06.008714 IP 192.168.0.100 > 192.168.0.111: ICMP típus-#183, hossza 1032 16:43:06.008831

Itt különösen fontos a csomag fogadásának idejét tartalmazó mező. Egyetlen normál alkalmazás sem küld sok ICMP-üzenetet a másodperc ezredrészének megfelelő időtartamon belül. Más típusú árvizek (pl. SYN) pontosan ugyanígy vannak meghatározva.

Kölcsönhatás más programokkal

A tcpdump egyik legfontosabb előnye, hogy a jelentéseinek formátuma a program fennállása alatt tulajdonképpen minden szippantó számára standard lett, és ma már minden többé-kevésbé komoly forgalomelemző eszköz megérti. Például a tcpdump használható kiíratás létrehozására egy távoli gépen, majd elküldheti a helyi gépre, és elemzi a wireshark segítségével:

$ ssh [e-mail védett] tcpdump -w - "port !22" | wireshark -k -i -

Itt a -w - opcióval írtuk a kiíratást az stdout-ba, és átirányítottuk a helyi gépen futó wiresharkra. Ugyanígy elemezheti a forgalmat a snort használatával:

$ ssh [e-mail védett]"tcpdump -nn -i eth1 -w -" | snort -c /etc/snort/snort.conf -r -

Ha a program kimenetét a grep bemenetére irányítja, különféle problémákat találhat a hálózatban, például azonosíthatja a hibás ellenőrzőösszegű csomagokat, amelyek a -vv kapcsolóval jeleníthetők meg:

# tcpdump -nnvv -r dump.cap tcp | grep -v "tcp összeg rendben" | wc-l

Admin cucc

A fejlécben található adatok alapján a csomagok szűrésének képessége, amelyet az első rész elején tárgyaltunk, nagyon hasznos a különböző protokollok hibakereséséhez és a kereséshez. hálózati problémák. Használhatjuk például a Cisco Discovery Protocol-on keresztül továbbított hálózati csomagok elfogására, amelyen keresztül a Cisco útválasztók információt cserélnek a topológiáról és a hálózat állapotáról:

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

Ugyanígy elkaphatja a DHCP protokollon keresztül továbbított összes csomagot (DISCOVER, REQUEST, INFORM) az ügyfélkapcsolati problémák azonosítása érdekében:

# tcpdump -i eth0 -vvv -s 1500 "((67-es vagy 68-as port) és (udp = 0x1))"

Vagy elkapja a POP3 hitelesítés részeként küldött csomagokat:

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

hálózati grep

A tcpdump sniffer sokoldalúsága és sokféle képessége miatt jó, de nem olyan egyszerű és kényelmes használni, hogy konkrét adatokat keressünk a továbbított csomagokon belül. Ezt a feladatot sokkal jobban kezeli az ngrep, amely az adott maszknak megfelelő átmenő hálózati csomagok megjelenítésére szolgál.

Például a GET és POST metódusok által átadott paraméterek megkereséséhez egy HTTP-munkameneten belül, a következő parancsot használhatja:

# ngrep -l -q -d eth0 "^GET |^POST " tcp és 80-as port

A lomhák megtalálása:

# ngrep -i "game*|p0rn|adult" -W byline -d eth0 > slackers.txt

Elemezzük az SMTP forgalmat az összes hálózati interfészen:

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

tcpdump beállítások

A legérdekesebb és leghasznosabb tcpdump zászlók táblázata.

  • -i [interfész] - a hálózati interfész, amelyen figyelni kell, adjon meg mindenki számára tetszőlegeset.
  • -n Ne oldja fel az IP-címeket DNS-nevekre.
  • -nn Ne fordítsa le az IP-címeket és a portszámokat.
  • -X - a csomag tartalmának megjelenítése szöveges és hexadecimális formátumban.
  • -XX - ugyanaz, plusz az Ethernet keret tartalma.
  • -v, -vv, -vvv - a megjelenített információk és csomagok mennyiségének növelése (több, több, minden).
  • -c [n] Csak az első n csomag megjelenítése.
  • -s [n] - az egyes csomagokhoz megjelenített bájtok száma (csökkenthető az olvashatóság érdekében, vagy növelhető további információkért).
  • -S - abszolút TCP-sorszámok megjelenítése.
  • -e - Ethernet keretfejlécek megjelenítése.
  • -q - kevesebb információ megjelenítése (az olvashatóság érdekében).
  • -E - az IPsec-forgalom visszafejtése a megadott kulccsal.
  • -w - programkiírás mentése fájlba, argumentum - az stdout megadására szolgál.

következtetéseket

Egy hozzáértő felhasználó kezében a tcpdump nemcsak a hibakereséshez, hanem az anomáliák kutatásához is hatékony eszközzé válik. Az operátorok és zászlók gazdag készletének köszönhetően kiléphet a hálózati levegőből, és felfedezheti, mire van szüksége.

Ezért úgy döntöttem, hogy létrehozom a saját csalólapomat, hogy... Mert tcpdump nélkül egyetlen admin sem lehet nem adminisztrátor

Bevezetés

Nagyon gyakran használják a hálózati problémák megtalálására hálózati forgalomelemzők . tcpdump ennek a programosztálynak az egyik képviselője, lehetővé teszi a hálózat meghallgatását (megjelenítését / mentését) és elemzését a továbbított hálózati csomagok, keretek és a hálózati forgalom átvitelének egyéb egységei szintjén. A hálózati konfigurációtól függően tcpdump tud hallgatni nem csak az adott MAC-címhez rendelt csomagokat, hanem a broadcast csomagokat is. A hálózati csomagszippelés alapja "promiscuous" mód hálózati adapter működése.

A használttól függően hálózati berendezések számítógépek csatlakoztatásához Ethernet hálózatok a következők vannak forgalomhallgatási képességek:

  • Online alapú koncentrátorok a hub hubról érkező összes forgalom bármely hálózati gazdagép számára elérhető.
  • Hálózat alapú kapcsolók(kapcsolók), csak a forgalma elérhető a hálózati gazdagép számára, valamint ennek a szegmensnek az összes broadcast forgalma.
  • Egyes felügyelt kapcsolók funkciója ennek a portnak a forgalmát a megfigyelő portra másolja ("tükrözés", portfigyelés).
  • A résbe foglalt speciális eszközök (csatlakozók) használatakor internetkapcsolatés a kapcsolati forgalom egy adott porton történő továbbítása, lehetőség van a megfelelő porton figyelni.
  • A "trükk" a hubbal - a kapcsolóport, amelynek forgalmát hallgatni kell, a hubon keresztül kapcsolja be, ha a monitor csomópontját is csatlakoztatja a hubhoz (a legtöbb esetben a hálózati kapcsolat teljesítménye csökken).

Így, tcpdump segédprogram a legtöbb Unix disztribúcióban megtalálható, és lehetővé teszi a hálózati forgalom elfogását és megjelenítését / fájlba mentését. A segédprogram használja libpcap könyvtár. Van egy port a Windows számára is. A segédprogram működéséhez szükséges. Például a Debianon a következő paranccsal telepíthető:

Debian:~# apt-get install tcpdump

A segédprogramok szükségesek a munkához (mivel a hálózati interfész beállításai megváltoztak - átkerül a "promiscuous" módba). Általában tcpdump parancsformátum a következő formája van:

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

tcpdump segédprogram beállításai

-i interfész

Megadja azt a felületet, amelyről a forgalmat elemezni kell (interfész megadása nélkül - "első találkozás" elemzés).

Letiltja az IP címet domain nevek. Ha -nn van megadva, akkor a portszámok nem konvertálódnak protokollnevekké.

A tcpdump parancs leggyakrabban használt szűrőbeállításai a következők:

dst host

Ellenőrzi, hogy egy IP-csomag célcíme megegyezik-e a megadott értékkel. Lehetőség van az IP-cím, az alhálózat 10.0.0.1/24 formátumú és a gazdagépnév beállítására.

src gazdagép

Ellenőrzi, hogy egy IP-csomag forráscíme megegyezik-e a megadott értékkel. Lehetőség van az IP-cím, az alhálózat 10.0.0.1/24 formátumú és a gazdagépnév beállítására.

fogadó házigazda

Ellenőrzi, hogy a feladó vagy a címzett címe megegyezik-e a megadott értékkel. Lehetőség van az IP-cím, az alhálózat 10.0.0.1/24 formátumú és a gazdagépnév beállítására.

net network_name

Ellenőrzi, hogy a küldő/fogadó címe a megadott hálózaton van-e. Lehetőség van hálózat megadására CIDR formátumban (például 10.0.0.1/22), vagy a -ban megadott hálózatnév megadására.

ip | arp | rarp | tcp | udp | icmp [host]

Ellenőrzi, hogy a csomag a megadott protokollok valamelyikéhez tartozik-e, és állomáscím megadásakor ellenőrzi, hogy a küldő/cél cím megegyezik-e a megadottal. Lehetőség van az IP-cím, az alhálózat 10.0.0.1/24 formátumú és a gazdagépnév beállítására.

dst port port_szám

Ellenőrizze, hogy a csomag hozzátartozik-e TCP protokoll/UDP, és hogy a célport megegyezik-e a megadott porttal. Megadhatja a portszámot vagy az /etc/services fájlban megadott nevet.

src port port_száma

Ellenőrzi, hogy a csomag a TCP/UDP protokollhoz tartozik-e, és hogy a forrásport megegyezik-e a megadottal. Megadhatja a portszámot vagy az /etc/services fájlban megadott nevet.

port port_szám

Ellenőrzi, hogy a csomag a TCP/UDP protokollhoz tartozik-e, és megegyezik-e a megadott cél- vagy forrásporttal. Megadhatja a portszámot vagy az /etc/services fájlban megadott nevet.

ip adás

Ellenőrzi, hogy az IP-csomag sugárzott-e.

ether ( src | dst | host ) MAC-cím

Ellenőrzi, hogy a hálózati csomag az adott MAC_címmel rendelkező forráshoz, célhoz, forráshoz vagy célhoz tartozik-e.

éter adás

Ellenőrzi, hogy az ARP-csomag sugárzott-e.

Példák a tcpdump parancs használatára

Hálózati szintű forgalomelemzés (ARP, ICMP) tcpdump segítségével

Tegyük fel, hogy 2 házigazdánk van. 1. gazdagép eth0 interfésszel és a következő paraméterekkel:

Host1:~# ip addr show dev eth0 5: eth0: mtu 1500 qdisc pfifo_fast state ISMERETLEN qlen 1000 link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.56.1/24 brd 1952.1208 in.6 globális :800:27ff:fe00:0/64 hatókör link érvényes_lft örökre preferált_lft örökre

Valamint a host2 eth1 interfésszel

Host2:~# ip addr show dev eth1 3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff inet 192.168.56.33/24 hatókör globális eth1 inet6 fe80:7:ff :fefd:e5aa/64 hatókör hivatkozás érvényes_lft örökre preferált_lft örökre

Tegyük fel, hogy eddig nem volt hálózati kommunikáció a gazdagépek között, és ha az ip neigh show parancsot futtatja a 2. gépen, látni fogja, hogy nincsenek bejegyzések az ARP táblában. Végezzünk egy kis kísérletet. Futtassuk a tcpdump segédprogramot a host1 virtuális felületek egyikén:

Host1:~# tcpdump -ne -i eth0 tcpdump: bőbeszédű kimenet elnyomva, használja a -v vagy -vv billentyűt a teljes protokoll dekódoláshoz eth0-n, link típusú EN10MB (Ethernet), rögzítési méret 65535 bájt

Host1:~# ping -c 1 192.168.56.33 PING 192.168.56.33 (192.168.56.33) 56(84) bájt adat. 64 bájt a 192.168.56.33-tól: icmp_req=1 ttl=64 time=1.06 ms --- 192.168.56.33 ping statisztika --- 1 csomag továbbított, 1 fogadott, 0% csomagvesztés, idő 0ms rttmax/mdev/avg = 1,067/1,067/1,067/0,000 ms

Ezt követően a host1 rendszer ARP táblájában megjelent egy bejegyzés a host2 gép IP címéről:

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

A virtuális konzolon a tcpdump a következő információkat jelenítette meg:

Host1:~# tcpdump -ne -i eth0 tcpdump: bőbeszédű kimenet elnyomva, használja a -v vagy -vv billentyűt a teljes protokoll dekódolásához eth0-n, link típusú EN10MB (Ethernet), rögzítési méret 65535 bájt 12:16:29.465780 0a:00 :27:00:00:00 > ff:ff:ff:ff:ff, étertípusú ARP (0x0806), 42-es hosszúság: Kérjen kinek 192.168.56.33 mond 192.168.56.1, hossza 28 12:16:29.4067:8067:806 :27:77:e5:00 > 0a:00:27:00:00:00, étertípusú ARP (0x0806), hossz 42: Válasz 192.168.56.33 is-at 01:00:27:77:e5:00 , hossz 28 12:16:29.466815 0a:00:27:00:00:00 > 01:00:27:77:e5:00, étertípusú IPv4 (0x0800), 98 hosszúság: 192.168.56.1 > 192.168.56.1 > 192.168.56.1 > 192.168.56.1 kérés. , id 5284, 1. szekv., hossz 64 12:16:29.467934 01:00:27:77:e5:00 > 0a:00:27:00:00:00, IPv4 étertípus (0x0800), hossz 98:8 19563. > 192.168.56.1: ICMP echo válasz, id 5284, 1. szekvencia, hossza 64 ^C 4 csomag rögzítve 4 csomagot kapott a szűrő 0 csomagot eldobott a kernel

Minden hálózati csomag bejegyzés ebben a formátumban tartalmazza a csomagrögzítés idejét, a forrás és a cél MAC-címét, a protokoll típusát, a csomag hosszát és a csomag tartalmára vonatkozó információkat. Első felvétel ARP üzenetszórási kérést ír le a host1 eth0 interfész MAC címéről (" Akinek 192.168.56.33 a címe, azt írja ki: 192.168.56.1"). Második bejegyzés- válasz a host2 gép MAC címétől a host1 rendszer MAC címére (" A 192.168.56.33 MAC-címe 01:00:27:77:e5:00"). Harmadik és negyedik bejegyzés (ICMP kérésÉs ICMP válasz) a ping parancs kimenete a host1-en. Ezután a tcpdump megszakadt. A kilépés előtt a tcpdump kiírja a futási statisztikákat: az elkapott, a szűrő által fogadott és a kernel által eldobott csomagok számát

Így a host1 rendszer, hogy szabványos visszhangkérést küldjön a host2 gépnek, először az ARP protokoll segítségével megszerezte a host2 gép MAC címét, és az IP-címhez kötötten bevitte az ARP táblájába.

A szállítási réteg (TCP, UDP) forgalmának elemzése tcpdump segítségével

Tegyük fel, hogy egy bizonyos WEB szerver telepítve van a host2 rendszeren. Próbáljunk meg a host1 gépen megnyitni egy oldalt erről a webszerverről a lynx konzolböngészővel:

Gazdagép1: ~# lynx 192.168.56.33

Egy másik konzolon először futtassa a tcpdump parancsot szűrési paraméterekkel:

Host1:~# tcpdump -n -i eth0 host 192.168.56.33 és 80-as port tcpdump: bőbeszédű kimenet elnyomva, használja a -v vagy -vv billentyűt a teljes protokoll dekódoláshoz eth0-n, link típusú EN10MB (Ethernet), rögzítési méret 61535 bytes :44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80: zászlók [S], szekv. 1209026235, win 5840, opciók , hossz 0 15:44:168.318.318.318. > 1 92.168.56.1.41533 : Flags , seq 370041518, ack 1209026236, win 5792, option , 1:222 szekv., 1. fogadás, nyer 46, opciók , hossz 221 15:44:37.839921 IP 192.168.56.33.80 > 192 .168.56.1.41533 : Zászlók [.], akk 222, win 1716, opciók , hossz: 40 4 8: 1 .4 5 . 4:37.848156 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags [.], ack 446, win 54, opciók , hossz 0 15:44:37.849738 IP 192.168.56.849738 IP 192.168.56.39.192.168.396.31.58.3. zászlók, SEQ 446, ACK 222, Win 1716, Options, Length 0 15: 44: 37.850366 IP 192.168.56.1.41533> 192.168.56.33.80: Flags, SEQ 447, 47, 47, 47, 47. 51267 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags [.], akk 223, win 1716, opciók , hossza 0 …

BAN BEN ezt a példát a kliens (192.168.56.1) a 41533-as TCP-portról kapcsolatot létesít a 80-as porton figyelő szerverrel (192.168.56.33), kérést intéz, megkapja a szükséges adatokat, és a kapcsolat megszakad.

A TCP szegmens fejléce mellett cél és feladó portszáma számos lehetőséget tartalmaz:

  • Sorszám(seq). Megadja a bájtsorrendet a hálózatnak küldött adatfolyamban (a szegmens első bájtjának eltolása az adatfolyam elejéhez képest).
  • Megerősített szám(ACK). A fogadott szegmens maximális bájtszáma 1-gyel növekszik. A feladónak küldött visszaigazolások egyidejűleg egy új adat kérésére szolgálnak.
  • Vezérlő zászlók(SYN - S, ACK, FIN -F, RST - R, PSH - P, URG)
  • Ablak(win) - az adatküldő által várt adatbájtok száma, amely bájtszámtól kezdve az ack mezőben van feltüntetve. Az átvitel optimalizálása érdekében a küldő nem vár nyugtát minden egyes elküldött szegmensről, hanem küldhet egy csoportot a szegmenshez a hálózatba (de legfeljebb bájtban, mint az ablakméret). Ha a csatorna minősége rossz (sok újraküldési kérés, nyugtázás elveszik), akkor az ablak lecsökken, ha jó, akkor az ablak megnő.
  • Lehetőségek. Segédfeladatok megoldására szolgál. Például az MSS (Maximális szegmensméret) továbbítása – a maximális szegmensméret.

A kétirányú TCP kapcsolat létrehozásának folyamatát az első három tcpdump bejegyzés tükrözi:

  • A kliens egy TCP szegmenst küld a szervernek a SYN jelzővel, a kezdeti "véletlen" számmal (1209026235), amelyből a bájtok számozásra kerülnek az általa küldött adatfolyamban, a maximális ablakméret - az az összeg, amelyet a szerver továbbíthat. az ügyfél megerősítése nélkül (5840): 15: 44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80: zászlók [S], szekv. 1209026235, win hossz, 5840 opciók
  • A szerver egy TCP szegmenst küld a kliensnek a beállított SYN és ACK jelzőkkel, a kezdeti "véletlenszerű" számmal (370041518), amelyből a bájtok számozásra kerülnek az általa küldött adatfolyamban, és a kliens maximális ablakméretével (5792). Ez a szegmens egyben a kliens csatlakozási kérésének nyugtája is: 15:44:37.838118 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , seq 370041518, 9 win 6 hossz, 9 2 win 6220
  • A kliens egy TCP szegmenst küld a szervernek az ACK jelzővel, ami a szegmens fogadásának nyugtája a szervertől (majd a tcpdump megjeleníti a seq és ask relatív értékeit): ], ack 1, win 46, opciók, hossz

Azt követően a kapcsolat létrejöttnek minősül.

A következő rekordpárban a kliens egy alkalmazási réteg protokoll kérést (221 bájt) küld a szegmens adatrészében lévő szervernek, és visszaigazolást kap a szervertől, hogy megérkezett:

15:44:37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80: Zászlók , 1:222 szekv., 1. fogadás, win 46, opciók , hossz 221 15:434:9636 IP 8:434:9638. > 192.168.56.1 .41533: Flags [.], ack 222, win 1716, opciók , hossza 0

Ebben az esetben a PSH (P) zászló jelzi a küldő oldalt, hogy a fogadó oldal készen áll az adatok fogadására. Ezután a szerver adatokat küld a kliensnek (445 bájt), és visszaigazolást kap tőle:

15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , 1:446 szekv., akk 222, win 1716, opciók , hossz 445 15.6.618:15.6.1848 .4 1533 > 192.168. 56,33 .80: Flags [.], ack 446, win 54, opciók , hossza 0

A kapcsolat ezután a szerver kezdeményezésére megszakad. A szerver egy csomagot küld a FIN jelzővel:

15:44:37.849738 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , 446. szekv., 222. akadás, 1716 win, opciók , 0 hossz

Válaszul a kliens egy csomagot is küld a FIN jelzővel, ez a csomag egyben a kapcsolat megszakítására irányuló kérelem fogadásának visszaigazolása is a szervertől:

15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80: Zászlók , 222. szekv., 447. fogadás, 54. nyer, opciók , 0. hossz

A szervernek csak nyugtáznia kell a FIN szegmens fogadását az ügyféltől:

15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags [.], ack 223, win 1716, opciók , hossza 0

A tcpdump reakciója egy zárt 23/tcp porthoz való csatlakozási kísérletre:

21:56:14.381091 IP 192.168.56.1.54040 > 192.168.56.33.23: Zászlók [S], szekv. 2956835311, win 5840, opciók , hossz 0 IP 21.36.31.31.36.618 23 > 192.168.56.1.54040 : Flags , Seq 0, Ack 2956835312, win 0, long 0

Ebben a példában a 192.168.56.1 rendszerből a rendszer megpróbál csatlakozni egy nem létező TCP-szolgáltatáshoz a 192.168.56.33-as gazdagépen. A távoli rendszer egy szegmens küldésével válaszol, amelyen az RST (reset connection) jelző van beállítva.

A tcpdump válasza egy UDP datagram elküldésére egy zárt 53/udp portra:

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 53 port nem érhető el, 64 hosszúság

Ebben a példában egy UDP-datagramot kíséreltünk meg egy távoli rendszer nem létező portjára küldeni. Az UDP általában úgy válaszol, hogy ICMP-üzenetet küld a forráscsomópontnak arról, hogy a port nem érhető el.

További példák a tcpdump parancs használatára:

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

Következtetés hálózati statisztikák az IP nélküli ppp0 interfészről (-i ppp0) azon keretek DNS-felbontására (-n), amelyek forrás MAC-címe 11:20:b3:d8:d8:2c.

# tcpdump -n -e -i vlan0 éter adás

Forgalmi kimenet adása a vlan0 interfészről.

# tcpdump -n -i eth0 src 192.168.66.1

A hálózati csomagok szűrése történik, amelyek fejlécében a forrás mezőben a 192.168.66.1 IP-cím szerepel.

# tcpdump -n -i eth0 gazdagép 192.168.66.1

Azon csomagok szűrése, amelyekben ez az IP-cím van megadva a csomag forrásaként vagy rendeltetési helyeként.

# tcpdump -n -i eth0 src net 10.0.0.0 maszk 255.0.0.0

A rendszer szűri azokat a csomagokat, amelyekben a 10.0.0.0/8 hálózat gazdagépei vannak megadva forrásként.

# tcpdump -n -i eth0 icmp

Csak az ICMP-csomagokat adja ki az eth0 interfészről.

Ezzel talán befejezem a mostani cikket. Amint új példák jelennek meg, kiegészítem a cikket. Remélem, hogy az anyag nem csak nekem lesz hasznos

A cikk példákat és intuit előadások anyagát használta fel.

Üdvözlettel: Mc.Sim!

Ez az oktatóanyag bemutatja, hogyan izolálhatja a forgalmat különböző módokon – az IP-től a portig, a protokollig, az alkalmazásszintű forgalomig – annak érdekében, hogy a lehető leggyorsabban megtalálja azt, amire szüksége van.

A tcpdump az az eszköz, amelyet mindenkinek meg kell tanulnia a csomagelemzés alapjául.

Telepítse a tcpdump-ot az apt install tcpdump-pal (Ubuntu), vagy a yum install tcpdump-ot (Redhat/Centos)

Kezdjük egy alapvető paranccsal, amely megkapja a HTTPS-forgalmat:

tcpdump -nn S X 443-as port

04:45:40.573686 IP 78.149.209.110.27782 > 172.30.0.144 .443 : Flags [.], ack 278239097, win 28, opciók , hossza 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

Egyetlen csomagot kaphat a -c 1 billentyűvel, vagy n szám -c n -vel.

Ez némi HTTPS-forgalmat mutatott, a kimenet jobb oldalán látható hexadecimális kijelzővel (sajnos titkosítva van). Ne feledje – ha kétségei vannak, futtassa a fenti parancsot azzal a porttal, amelyik érdekli, és már indulhat is.

Példák

A PacketWizard™ nem igazán védjegyoltalom, de annak lennie kell.

egy gyakorló, aki a tcpdump futtatására készül

Most, hogy elérheti az alapvető forgalmat, nézzünk meg számos példát, amelyekre valószínűleg szüksége lesz a hálózatépítés, a biztonság vagy a PacketWizard™ bármilyen típusú munkája során.

Minden egy felületen

Csak nézze meg, mi történik, nézze meg, mi éri a felületet.

Vagy kapni minden interfészek -i any -val.

tcpdump -i eth0

Keresse meg a forgalmat IP alapján

Az egyik leggyakoribb lekérdezés, a host használatával, megtekintheti az 1.1.1.1-es vagy onnan érkező forgalmat.

kifejezéstípusok:

host , net és port .

src és dst .

host , net és port .

tcp , udp , icmp és még sok más.

tcpdump host 1.1.1.1

06:20:25.593207 IP 172.30.0.144.39270 > one.one.one.one .domain : 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)

Ha csak az egyik vagy a másik irányú forgalmat szeretné látni, használhatja az src és a dst billentyűket.

tcpdump src 1.1.1.1
tcpdump dst 1.0.0.1

Csomagok keresése hálózatonként

Egy adott hálózatba vagy alhálózatba érkező vagy onnan érkező csomagok kereséséhez használja a net opciót.

Ezt kombinálhatja az src és a dst opciókkal is.

tcpdump net 1.2.3.0/24

Szerezze be a csomag tartalmát hexadecimális kimenettel

A hexadecimális kimenet akkor hasznos, ha látni szeretné a kérdéses csomagok tartalmát, és gyakran a legjobb, ha néhány jelöltet elkülönít a közelebbi vizsgálathoz.

tcpdump -c 1 -X icmp

Összegzés

Itt vannak az elvihetőek.

  1. A tcpdump értékes eszköz mindazok számára, akik hálózatépítéssel vagy .
  2. A forgalommal való kapcsolattartás nyers módja, valamint a csomagok ellenőrzése során kínált precizitás a lehető legjobb eszközzé teszik a TCP/IP tanuláshoz.
  3. Az olyan protokollelemzők, mint a Wireshark, nagyszerűek, de ha igazán el akarod uralni a packet-fu-t, először eggyé kell válnod a tcpdump-pal.

Nos, ennek az alapozónak erősítenie kell, de a man oldalnak mindig kéznél kell lennie a legfejlettebb és egyszeri felhasználási forgatókönyvekhez. Őszintén remélem, hogy ez hasznos volt számodra, és ha bármilyen kérdése van, forduljon bizalommal.

jegyzetek

  1. Jelenleg (valahogy) egy könyvet írok a tcpdumpról a No Starch Press számára.
  2. A vezető kép a SecurityWizardry.com webhelyről származik.
  3. Néhány szigetelőszűrő kölcsönzött

tcpdump orosz nyelvű oktatás és példák.

-A megadja az egyes csomagok kimenetét (link-layer fejlécek nélkül) ASCII formátumban. Ez a mód hasznos a HTTP forgalom rögzítésére.

-c <число пакетов>meghatározza, hogy a program a megadott számú csomag rögzítése után leáll.

-C<размер файла>megadja, hogy ellenőrizni kell-e a rögzítési fájl méretét, mielőtt minden új csomagot írna rá. Ha a fájl mérete meghaladja a file_size paraméter értékét, a fájl bezárul
és létrehozta új fájl csomagokat írni hozzá. Rögzítési fájlok esetén a -w paraméter által megadott név kerül felhasználásra, és a második fájltól kezdve hozzáadódik a névhez
utótag fájlszám. A file_size változó a fájl méretét adja meg millió bájtban (nem megabájtban = 1 048 576 bájt).

-d meghatározza, hogy kiadja a lefordított csomagegyeztető kód kiíratását ember által olvasható formátumban, és kilép a programból.

-dd a megfelelő kód kiíratását adja ki egy C program töredékeként.

-ddd Az egyezési kódot decimális értékekből álló karakterláncként írja ki, amelyet a számlálóértéket tartalmazó karakterlánc előz meg.

-D felsorolja azokat a hálózati interfészeket a rendszeren, amelyekről a tcpdump csomagokat gyűjthet. Minden hálózati interfész kap egy nevet és egy számot, amelyet egy név követhet
a felület szöveges leírása. Az interfész neve és száma az -i kapcsolóval együtt megadható, hogy a csomagokat egyetlen interfészről gyűjtsék össze.

Ez az opció nagyon hasznos lehet olyan rendszerek számára, amelyek nem adnak információt az elérhető hálózati interfészekről3.

A -D jelző nem támogatott, ha a tcpdump-pal lett lefordítva régi verzió libpcap, amely nem támogatja a pcap_findalldevs() függvényt.

-e kinyomtatja a link-layer fejlécet a kiíratás minden sorára.

-E meghatározza a spi@ipaddr algoritmus és a titkos titkosítás használatát az ipaddr-re irányított IPsec ESP-csomagok dekódolásához, amelyek a biztonsági paraméter index mező értékét tartalmazzák
spi. A spi és a cím kombinációja megismételhető vesszővel vagy újsorral elválasztóként. Vegye figyelembe, hogy az IPv4 ESP-csomagok titkának beállítása
jelenleg támogatott.

Az algoritmusok lehetnek des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc vagy egyik sem. Az alapértelmezett algoritmus a des-cbc. Dekódolási lehetőség
csomagok csak akkor érhetők el, ha a kriptográfiai támogatási lehetőségek engedélyezve voltak a tcpdump fordításakor.

A titkos paraméter az ESP titkos kulcsának ASCII szövegét tartalmazza. Ha a titok 0x karakterrel kezdődik, a rendszer a hexadecimális értéket olvassa be. Az opció magában foglalja a használatát
Az ESP megfelel az RFC 2406 szabványnak, nem az RFC 1827 szabványnak. Ez az opció csak hibakereséshez támogatott, és valós titkos kulcsok nem kellene, mert bevezették
parancssorból az IPsec kulcs elérhető más rendszerfelhasználók számára4.

Amellett, hogy a beállításokat kifejezetten megadja a parancssorban, megadhatók egy beállításfájlban is, amelyet a tcpdump beolvas, amikor megkapja az első ESP-csomagot.

-f Meghatározza a külföldi IPv4-címek megjelenítését számformátum. Ennek a beállításnak a használata kiküszöböli azokat a problémákat, amelyekkel a Sun NIS-kiszolgálók a fordítás során szembesülnek
nem helyi címek. Az IPv4-címek idegenségét a csomagot fogadó interfész címe és maszkja segítségével ellenőrzik. Ha a cím és az interfész maszk nem elérhető
(pl. számozatlan interfészek használatakor, vagy ha Linuxon a dummy any interfész használatával csomagokat rögzít minden címről), ez az opció működni fog
tévesen.

-F<файл> a megadott fájlban található szűrők használatát határozza meg. Ebben az esetben a rendszer figyelmen kívül hagyja a parancssorban megadott szűrőket.

-én<интерфейс> a megadott interfészről származó csomagok gyűjteményét határozza meg. Ha nincs interfész megadva, a tcpdump megkeresi a rendszerben az elérhető interfészek listáját, és kiválasztja az aktív eszközt a minimummal
szám (kivéve a visszahurkolást).

BAN BEN Linux rendszerek, a 2.2-es kernellel kezdve egy any nevű dummy interfész támogatott, amely biztosítja a csomagok összegyűjtését az összes aktív rendszerinterfészről. Vegye figyelembe, hogy a gyűjtemény
Az eszközről érkező csomagok normál (nem promiszkuális) módban kerülnek végrehajtásra.

Ha a rendszer támogatja a -D jelzőt, akkor a jelző használatakor megjelenő interfészszám megadható argumentumként.

-l az stdout sorok pufferelését határozza meg. Ez az opció akkor hasznos, ha adatokat szeretne megtekinteni csomaggyűjtés közben. Például parancsokat

tcpdump -l | póló dátum

tcpdump -l > dat & tail -f dat

lehetőséget biztosít a csomagok dat fájlba írására és a konzolra történő egyidejű kimenetre.

-L meghatározza az ismert hivatkozási rétegtípusok listájának megjelenítését és a programból való kilépést.

-m<файл> betölti az SMI MIB definíciós modult a megadott fájlból. Ez az opció többször is használható több MIB modul betöltésére.

-n letiltja a címek és portszámok szimbolikus nevekre fordítását.

-N csak a gazdagépnevek használatát határozza meg, az FQDN-eket nem. Például ahelyett, hogy az lhotze.bilim-systems.net használja ezt a lehetőséget, a munkaállomásom
lhotze néven emlegetik.

-O letiltja a kódoptimalizálót annak ellenőrzésére, hogy a csomagok megfelelnek-e a szűrési feltételeknek. Használja ezt a lehetőséget, ha az optimalizáló hibásnak tűnik.

-o azt mondja a programnak, hogy ne helyezze rögzítési módba az interfészt5. A -p opció nem használható az ether gazdagéphez (local-hw-addr) vagy az ether broadcast szűrőhöz.

-q meghatározza a minimális információmennyiség kimenetét.

-R ennek a jelzőnek a beállítása feltételezi, hogy ESP/AH csomagokat használnak régi verzió A specifikáció6 és a tcpdump nem adja ki a visszajátszást megakadályozó mezőket.
lejátszás). Mivel az ESP/AH specifikáció nem tartalmaz verziószám mezőt, a tcpdump nem tudja meghatározni az ESP/AH protokoll verzióját a csomagfejlécekből.

-r<файл> Meghatározza, hogy egy korábban a tcpdump -w paranccsal vagy más, a tcpdump formátumot támogató program (például az Ethereal) használatával létrehozott fájlból olvassa be az adatokat. Ha be
a - karakter fájlnévként van megadva, a szabványos beviteli eszközről (stdin) származó adatfolyam kerül felhasználásra.

-S megadja, hogy a relatív számok helyett abszolút TCP-sorszámokat jelenítsen meg.

-s azt határozza meg, hogy minden egyes snaplen csomagból bájtokat kell rögzíteni az alapértelmezett 68 bájt helyett7. A 68-as érték alkalmas IP, ICMP, TCP és UDP protokollokhoz, de a
egyes DNS- és NFS-csomagok protokollinformációi. Egyes csomagok elvesztését a rögzítési keret (pillanatkép) kis mérete miatt az űrlap mezői jelzik a kimenetben
[|proto]', ahol a proto annak a protokollrétegnek a neve, amelynél a csomag egy része csonkolásra került8. Vegye figyelembe, hogy a rögzítési keret növelése több időt eredményez
csomagfeldolgozási költségek és a pufferelt csomagok számának csökkenése, ami egyes csomagok elvesztéséhez vezethet. Használja a minimális snaplen értéket, amely lehetővé teszi
anélkül, hogy elveszítené az Önt érdeklő protokollra vonatkozó információkat. A snaplen=0 beállítása a teljes csomagokat rögzíti.

-T<тип> a szűrő segítségével kiválasztott csomagok értelmezését adja meg a paraméter által meghatározott típusú csomagként. A jelenleg támogatott típusok: aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, vat16 és wb17.

-t letiltja az időbélyegek kimenetét a kiíratás egyes soraiban.

-tt meghatározza a kimenetet a formázatlan időbélyeg-kiíratás minden sorában.

-ttt megadja az előző és az előző rögzítése közötti időintervallumok kimenetét (mikromásodpercben). adott csomagokat a lerakó minden sorában.

-tttt megadja az időbélyegek kimenetét az alapértelmezett formátumban minden egyes kiíratási sorhoz.

-u megadja az NFS-leírók kimenetét dekódolás nélkül.

-U beállítja a "kötegelt szintű pufferelés" módot a -w opcióval mentett fájlokhoz. Ebben a módban minden csomag a rögzítés után azonnal a kimeneti fájlba kerül.
(anélkül, hogy megvárná a kimeneti puffer megtelését). A -U jelző nem támogatott, ha a tcpdump programot a régi libpcap opcióval fordították, amely nem támogatja a funkciót
pcap_dump_flush().

-v kimenetet adja meg további információ fájlok rögzítésekor. Ilyen információk lehetnek a TTL-érték (élettartam), az azonosítás, a teljes méret, az IP-beállítások stb. Mikor
ennek a jelzőnek a használata további csomagintegritás-ellenőrzéseket is végez ellenőrző összegek használatával (például IP és ICMP protokollok esetén).

-vv a kimeneti információ mennyiségének további növelését határozza meg (például SMB-csomagok teljes dekódolása, további mezők kiadása az NFS-válaszokban stb.).

-vvv beállítja a kimeneti információ maximális mennyiségét (például az SB ... SE telnet opciók teljes egészében megjelennek). Ha az -X kapcsolóval használja, a Telnet opciók is megjelennek
hexadecimális ábrázolás.

-w<файл> meghatározza a nyers csomagok rögzítését. A fájlba összeállított csomagok utólag megtekinthetők az -r kapcsolóval, vagy átadhatók más programoknak elemzés céljából.
(pl. Etheral). Ha a - karakter van megadva fájlnévként, akkor a fájl szabványos kimenetre (stdout) kerül kiírásra.

-x meghatározza, hogy minden rögzített csomaghoz hexadecimális kiíratást adjon ki (a link-layer fejléc nélkül). A kimeneti információ mennyiségét a két érték közül a kisebb határozza meg
a csomag mérete és a snaplen paraméter értéke. Ne feledje, hogy a teljes kapcsolati réteg kereteinek rögzítésekor a dump tartalmazhat kitöltési bájtokat is, ha a hálózati réteg csomag
kis mérete van.

-xx egy hexadecimális kiíratást ad meg minden egyes csomaghoz, beleértve a hivatkozási réteg fejléceit is.

-X megadja a dump kimenetet hexadecimális és ASCII formátumban, hivatkozási réteg fejlécek nélkül. Ez az opció nagyon hasznos lehet új protokollok elemzésekor.

-XX megadja a dump kimenetet hexadecimális és ASCII formátumban, beleértve a hivatkozási réteg fejléceit.

-y<тип> meghatározza a csomagok rögzítésekor használt kapcsolati réteg típusát. A támogatott értékek az -L jelzővel tekinthetők meg.

Példák.

  • Felfogjuk az összes kimenő forgalmat

tcpdump -i re0 -n -nn -ttt dst gazdagép 192.168.1.2

  • Minden kimenő forgalmat fogunk, kivéve az ssh-munkamenetünket, mert nagyon nagy adatáramlást kapunk.

tcpdump -i re0 -n -nn -ttt ‘dst gazdagép 192.168.1.110 és nem (src host 192.168.1.2 és dst 22-es port)’

  • DNS-kommunikáció megtekintése

tcpdump -i re0 -n -nn -ttt ‘192.168.1.110 gazdagép és 53-as port’

  • icmp-csomagok megtekintése

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

  • A 10.7.20-as hálózatról érkező forgalom a 10.7.0-s hálózat célállomásával. vagy 10.7.24.:

tcpdump -nvX src net 10.7.20.0.0/16 és dst net 10.7.0.0/8 vagy 10.7.24.0/16

  • A 10.7.0.0 hálózatról a 22-es vagy 4589-es célportokra érkező forgalom:

tcpdump 'src 10.7.0.0 and (dst port 22 vagy 4589)'

  • Forgalom megtekintése a felületen:
  • egy gazdagép forgalmának megtekintése:

tcpdump gazdagép 192.168.1.1

  • Forgalom megtekintése egy porton:

tcpdump src 80-as port

  • IP-forgalom megtekintése gazdagépenként:

tcpdump ip host 192.168.1.2

  • A gazdagép felé irányuló ARP-forgalom megtekintése:

tcpdump arp host 192.168.1.2

  • Megnézzük a RARP-forgalmat a gazdagép felé:

tcpdump rarp gazdagép 192.168.1.2

  • A forgalmat nézzük, kivéve a host pav253-at

A tcpdump nem a pav253 gazdája

  • Figyelje a forgalmat a pav253-on és a pav210-en

tcpdump host pav253 vagy host pav210

  • Megnézzük a csomagok tartalmát a gazdagép oldalon található re0 felületen

tcpdump -X -i re0 gazdagép webhely

  • icq forgalom

tcpdump -X -i re0 port aol

  • Megnézzük a csomagok tartalmát a tun0 interfészen a ya.ru gazdagéphez, miközben 1500 bájtot olvasunk ki minden csomagból, és nem konvertáljuk az IP-t gazdagépnévvé.

tcpdump -X -s 1500 -n -i re0 gazdagép helye

  • Legjobb aktív interakciók

tcpdump -tn -c 10000 -i re0 tcp vagy udp | awk -F "." ‘(nyomtasson $1″.”$2″.”$3″.”$4)’ | \ rendezés | uniq -c | sort-nr | awk '$1 > 100'

  • Az összes SYN jelzővel (session start) ellátott TCP-csomagot megnézzük.

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

  • A syn és fin csomagok megtekintése kívülről

tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 és nem src és dst net 192.168.1.0'

  • Az összes ipv4 http-csomag megtekintése a 80-as portról, kivéve a syn/fin/ack adatokat

tcpdump 'tcp 80-as port és (((ip - ((ip&0xf)<>2)) != 0)’

  • Csak a szinkroncsomagok megtekintése