Tcpdump http kérések. Tcpdump utasítások és példák. Csak az ip6 forgalmat jelenítse meg

22.05.2023 hírek

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és tí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 akkor 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.

Megjegyzések

  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

Ha hálózati csomagokat kell elemeznie vagy elfognia Linux alatt, a legjobb módja ennek egy konzol segédprogram használata. tcpdump. A probléma azonban a meglehetősen bonyolult kezelésben merül fel. Az átlagos felhasználó kényelmetlennek fogja találni a segédprogrammal való munkát, de ez csak első pillantásra van így. A cikk elárulja, hogyan működik a tcpdump, milyen szintaxisa van, hogyan kell használni, és számos példát mutat be a használatára.

Olvassa el még: Útmutatók az internetkapcsolat beállításához Ubuntu, Debian, Ubuntu Server rendszerben

A legtöbb Linux-alapú operációs rendszer fejlesztője felveszi a tcpdump segédprogramot az előre telepítettek listájába, de ha valamilyen oknál fogva hiányzik a disztribúciójából, bármikor letöltheti és telepítheti "Terminál". Ha az operációs rendszere Debianon alapul, és ez Ubuntu, Linux Mint, Kali Linux és hasonlók, akkor ezt a parancsot kell futtatnia:

sudo apt install tcpdump

A telepítés során meg kell adnia egy jelszót. Kérjük, vegye figyelembe, hogy gépelés közben nem jelenik meg, a telepítés megerősítéséhez meg kell adnia a szimbólumot is "D"és nyomja meg Belép.

Ha Red Hat, Fedora vagy CentOS rendszered van, a telepítési parancs így fog kinézni:

sudo yam telepítse a tcpdump-ot

A segédprogram telepítése után azonnal használható. Erről és még sok másról a szövegben lesz még szó.

Szintaxis

Mint minden más parancsnak, a tcpdump-nak is megvan a maga szintaxisa. Ennek ismeretében beállíthatja az összes szükséges paramétert, amelyet a parancs végrehajtása során figyelembe kell venni. A szintaxis a következő:

tcpdump options -i interfészszűrők

A parancs használatakor meg kell adni a követési felületet. A szűrők és beállítások nem kötelező változók, de rugalmasabb testreszabást tesznek lehetővé.

Lehetőségek

Bár az opciót nem kell megadni, mégis fel kell sorolni az elérhetőket. A táblázat nem a teljes listát mutatja, hanem csak a legnépszerűbbeket, de ezek bőven elegendőek a legtöbb feladat megoldásához.

választási lehetőség Meghatározás
-A Lehetővé teszi a csomagok ASCII formátumú rendezését
-l Görgetési funkciót ad hozzá
-én A belépés után meg kell adni a figyelni kívánt hálózati interfészt. Az összes interfész figyelésének megkezdéséhez írja be az „any” szót az opció után.
-c A megadott számú csomag ellenőrzése után befejezi a követési folyamatot
-w Szöveges fájlt generál az ellenőrzési jelentéssel
-e Az adatcsomag internetkapcsolati szintjét mutatja
-L Csak azokat a protokollokat jeleníti meg, amelyeket a megadott hálózati interfész támogat
-C Létrehoz egy másik fájlt a csomag írása közben, ha annak mérete nagyobb, mint a megadott méret
-r Megnyit olvasásra egy fájlt, amelyet a -w kapcsolóval hoztak létre
-j A csomagok rögzítéséhez TimeStamp formátumot használunk
-J Lehetővé teszi az összes elérhető időbélyegző formátum megtekintését
-G A naplókat tartalmazó fájl létrehozására szolgál. Az opció megköveteli egy ideiglenes érték megadását is, amely után új napló jön létre
-v, -vv, -vvv Az opcióban lévő karakterek számától függően a parancs kimenete részletesebb lesz (a növekedés egyenesen arányos a karakterek számával)
-f A kimenet az IP-címek tartománynevét mutatja
-F Lehetővé teszi az információk olvasását nem a hálózati interfészről, hanem a megadott fájlból
-D Bemutatja az összes használható hálózati interfészt
-n Kikapcsolja a domain nevek megjelenítését
-Z Megadja azt a felhasználót, akinek a fiókjában az összes fájl létrejön
-K Az ellenőrzőösszeg elemzés kihagyása
-q Rövid információs kijelző
-H Lehetővé teszi a 802.11s fejlécek észlelését
-ÉN Csomagok rögzítésére használják monitor módban

A lehetőségek megvizsgálása után az alábbiakban közvetlenül az alkalmazásukra térünk át. Ezalatt a szűrőket figyelembe veszik.

Szűrők

Ahogy a cikk elején említettük, szűrőket is hozzáadhat a tcpdump szintaxisához. Most megvizsgáljuk a legnépszerűbbeket közülük:

A fenti szűrők mindegyike kombinálható egymással, így a parancskimenetben csak azokat az információkat láthatja, amelyeket látni szeretne. A fenti szűrők használatának részletesebb megértéséhez érdemes példákat mondani.

Példák a felhasználásra

Most a tcpdump parancs leggyakrabban használt szintaxisát ismertetjük. Nem lesz lehetséges mindegyiket felsorolni, hiszen végtelen sok variáció létezik.

Tekintse meg az interfészek listáját

Javasoljuk, hogy minden felhasználó először ellenőrizze az összes megfigyelhető hálózati interfész listáját. A fenti táblázatból tudjuk, hogy ehhez az opciót kell használnunk -D tehát a terminálban futtasd a következő parancsot:

Mint látható, a példában nyolc interfész található, amelyek a tcpdump paranccsal tekinthetők meg. A cikk példákat mutat be ppp0, bármelyik másikat használhatod.

Rendszeres forgalomrögzítés

Ha egy hálózati interfészt kell felügyelnie, ezt az opció segítségével teheti meg -én. Beírása után ne felejtse el feltüntetni az interfész nevét. Íme egy példa egy ilyen parancs futtatására:

sudo tcpdump -i ppp0

Kérjük, vegye figyelembe: maga a parancs előtt meg kell adnia a „sudo”-t, mivel ez szuperfelhasználói jogokat igényel.

Megjegyzés: az Enter megnyomása után a rögzített csomagok folyamatosan megjelennek a „Terminálban”. Az áramlás leállításához meg kell nyomnia a Ctrl+C billentyűkombinációt.

Ha a parancsot további beállítások és szűrők nélkül futtatja, a következő formátumot fogja látni a felügyelt csomagok megjelenítéséhez:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Flags , 1:595 szekv., 1118 ak, 6494 win, opciók , hossza 594

Hol van színnel kiemelve:

  • kék - a csomag átvételének ideje;
  • zöld - a feladó címe;
  • lila - a címzett címe;
  • szürke - további információk a tcp-ről;
  • piros - csomagméret (byte-ban jelenik meg).

Ez a szintaxis ablakban is megjeleníthető "Terminál" további opciók használata nélkül.

Forgalom rögzítése a -v kapcsolóval

Amint az a táblázatból ismert, az opció -v lehetővé teszi az információ mennyiségének növelését. Nézzük meg egy példával. Ellenőrizzük ugyanazt a felületet:

sudo tcpdump -v -i ppp0

Itt észreveheti, hogy a következő sor jelenik meg a kimenetben:

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

Hol van színnel kiemelve:

  • narancssárga - protokoll verzió;
  • kék - protokoll élettartama;
  • zöld - mezőfejléc hossza;
  • lila - tcp csomag verzió;
  • piros - a csomag mérete.

A beállítást a parancs szintaxisához is hozzáadhatja -vv vagy -vvv, ami tovább növeli a képernyőn megjelenő információ mennyiségét.

Opció -w és -r

Az opciók táblázata megemlítette, hogy az összes kimeneti adatot külön fájlba lehet menteni, hogy azok később megtekinthetők legyenek. Az opció felelős ezért -w. Használata meglehetősen egyszerű, csak adja meg a parancsban, majd adja meg a jövőbeli fájl nevét a kiterjesztéssel ".pcap". Nézzünk meg mindent egy példa segítségével:

sudo tcpdump -i ppp0 -w fájl.pcap

Megjegyzés: miközben a naplók fájlba íródnak, a terminál képernyőjén nem jelenik meg szöveg.

Ha meg szeretné tekinteni a rögzített kimenetet, akkor ezt az opciót kell használnia -r, amely után írja be a korábban rögzített fájl nevét. Más opciók és szűrők nélkül alkalmazzák:

sudo tcpdump -r fájl.pcap

Mindkét lehetőség nagyszerű, ha nagy mennyiségű szöveget kell mentenie későbbi elemzéshez.

IP szűrés

A szűrőtáblázatból tudjuk dst lehetővé teszi, hogy csak azokat a csomagokat jelenítse meg a konzol képernyőjén, amelyeket a parancs szintaxisában megadott cím fogadott. Ez nagyon kényelmessé teszi a számítógép által fogadott csomagok megtekintését. Ehhez csak meg kell adnia az IP-címét a parancsban:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Mint látható, amellett dst, a parancsban egy szűrőt is megadtunk ip. Vagyis azt mondtuk a számítógépnek, hogy a csomagok kiválasztásakor az IP-címre figyeljen, és ne más paraméterekre.

Az elküldött csomagokat IP alapján is szűrheti. Példaként ismét az IP-címünket használjuk. Vagyis most nyomon követjük, hogy a számítógépünkről milyen csomagokat küldenek más címekre. Ehhez a következő parancsot kell futtatnia:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Amint láthatja, megváltoztattuk a szűrőt a parancs szintaxisában dst tovább src, ezzel utasítva a gépet, hogy IP alapján keresse a feladót.

Szűrés HOST szerint

Az IP-vel analóg módon a parancsban megadhatunk egy szűrőt házigazda hogy kiszűrje a csomagokat az érdeklődő gazdával. Vagyis a szintaxisban a feladó/címzett IP-címe helyett a gazdagépet kell megadnia. Ez így néz ki:

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

A képen ezt láthatod "Terminál" Csak azok a csomagok jelennek meg, amelyeket az IP-címünkről küldtek a google.com gazdagépnek. Amint érti, a google host helyett bármilyen másikat megadhat.

Az IP-szűréshez hasonlóan a szintaxis dst helyettesíthető src a számítógépére küldött csomagok megtekintéséhez:

sudo tcpdump -i ppp0 src gazdagép google-public-dns-a.google.com

Megjegyzés: a gazdagép szűrőnek a dst vagy az src után kell jönnie, különben a parancs hibát fog kiütni. Ezzel szemben az IP-szűrésnél a dst és az src az ip-szűrő elé kerül.

A és és vagy szűrők alkalmazása

Ha több szűrőt kell egyszerre használni egy parancsban, akkor ehhez egy szűrőt kell használni és vagy vagy(az esettől függően). A szintaxisban szűrők megadásával és ezekkel az operátorokkal való elválasztásával egyként "működteti" őket. Egy példában így néz ki:

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

A parancs szintaxisából egyértelmű, hogy meg akarjuk jeleníteni "Terminál" minden csomag, amelyet a 95.47.144.254 címre küldtek, és az ugyanazon a címen kapott csomagokat. Ebben a kifejezésben néhány változót is módosíthat. Például az IP helyett adja meg a HOST értéket, vagy cserélje ki magukat a címeket.

Port és portrange szűrő

Szűrő kikötő Tökéletes azokra az esetekre, amikor egy adott porton lévő csomagokról kell információkat szerezni. Tehát, ha csak a DNS-válaszokat vagy kéréseket kell látnia, meg kell adnia az 53-as portot:

sudo tcpdump -vv -i ppp0 53-as port

Ha meg szeretné tekinteni a http csomagokat, meg kell adnia a 80-as portot:

sudo tcpdump -vv -i ppp0 80-as port

Többek között lehetőség van egy sor port egyidejű követésére. Ehhez szűrőt használnak portré:

sudo tcpdump portrange 50-80

Mint látható, a szűrővel együtt portré Nem szükséges további opciókat megadni. Csak be kell állítania a tartományt.

Szűrés protokoll szerint

Csak az adott protokollnak megfelelő forgalmat is megjelenítheti. Ehhez ennek a protokollnak a nevét kell szűrőként használnia. Nézzünk egy példát udp:

sudo tcpdump -vvv -i ppp0 udp

Ahogy a képen is látható, a parancs végrehajtása után in "Terminál" csak a protokoll csomagok jelennek meg udp. Ennek megfelelően szűrhet mások szerint, pl. arp:

sudo tcpdump -vvv -i ppp0 arp

vagy tcp:

sudo tcpdump -vvv -i ppp0 tcp

Szűrőháló

Operátor háló segíti a csomagok hálózati megnevezése alapján történő szűrését. Használata ugyanolyan egyszerű, mint a többi – meg kell adni az attribútumot a szintaxisban háló, majd adja meg a hálózati címet. Íme egy példa egy ilyen parancsra:

sudo tcpdump -i ppp0 net 192.168.1.1

Szűrés csomagméret szerint

Nem vettünk figyelembe két érdekesebb szűrőt: KevésbéÉs nagyobb. A szűrőkkel ellátott táblázatból tudjuk, hogy nagyobb adatcsomagok megjelenítésére szolgálnak ( Kevésbé) vagy kevesebb ( nagyobb) az attribútum megadása után megadott méret.

Tegyük fel, hogy csak azokat a csomagokat szeretnénk figyelni, amelyek nem haladják meg az 50 bites jelet, akkor a parancs így fog kinézni:

sudo tcpdump -i ppp0 kevesebb 50

Most pedig jelenítsük meg "Terminál" 50 bitnél nagyobb csomagok:

sudo tcpdump -i ppp0 nagyobb, mint 50

Amint látható, ugyanúgy használják őket, a különbség csak a szűrő nevében van.

Következtetés

A cikk végén megállapíthatjuk, hogy a csapat tcpdump egy kiváló eszköz, amellyel nyomon követheti az interneten továbbított adatcsomagokat. De ehhez nem elég egyszerűen beírni magát a parancsot "Terminál". Csak akkor érheti el a kívánt eredményt, ha mindenféle opciót és szűrőt, valamint ezek kombinációit használ.

A tcpdump egy hatékony parancssori elemző, a Libpcap pedig egy hordozható könyvtár a hálózati forgalom rögzítésére. A Tcpdump a logikai kifejezésnek megfelelő csomagok tartalmának leírását nyomtatja ki a hálózati interfészen. Futtatható a -w kapcsolóval is, ami miatt a kötegadatokat egy fájlba menti későbbi elemzés céljából, és/vagy az -r kapcsolóval, amely a mentett kötegfájlból olvassa be. Ezzel a segédprogrammal elfoghatja és elemezheti azt a hálózati forgalmat, amely azon a számítógépen halad át, amelyen ez a program fut.

Ebben a "tcpdump telepítése és használata" témakörben szeretnék beszélni a tcpdump telepítéséről, valamint arról, hogyan kell használni és mire van szükség.

A tcpdump segítségével:

  • Hibakeresést végezhet a hálózati alkalmazásokban.
  • Hibakeresést végezhet a hálózaton vagy a hálózati berendezés egészén.

A tcpdump debian/ubuntu/linux mint rendszerre történő telepítéséhez a következőt kell futtatnia:

# sudo apt-get install tcpdump

A tcpdump telepítéséhez RedHat/CentOS/Fedora rendszeren használja:

# sudo yum install tcpdump

A tcpdump telepítéséhez MacOS rendszeren használja.

# brew telepítése tcpdump

A tcpdump használata.

Ha ellenőrizni szeretné, hogy a tcpdump működik-e, futtassa a parancsot:

# tcpdump -i eth0 80-as port

Jó néhány kapcsoló létezik magának a tcpdump segédprogramnak a használatához, itt van a gyakoriak listája:

Ha meg kell találnia, hogy milyen csomagok cserélődnek 21 szerver között (például a_szerver_1 és a_szerver_2), akkor használja a parancsot:

# tcpdump az Ön_kiszolgálója_1 és a_szerver_2

Ha csak a gazdagéptől kimenő csomagokat kell figyelnie, futtassa:

# tcpdump src az Ön_kiszolgálója

Ha csak a gazdagéptől bejövő csomagokat kell figyelnie, futtassa:

# tcpdump dst az Ön_kiszolgálója

Meghallgathatja a kimenő vagy bejövő csomagokat a szerverről és egy adott porton is, ehhez egyszerűen adja hozzá a hallgatni kívánt portot (leginkább 80, 8080 használatos).

Tekintse meg azon interfészek listáját, amelyeken meghallgathatja a tcpdumt fájlt:

# tcpdump -D

Hallgassa meg az eth0 felületet:

# tcpdump -i eth0

Hallgassa meg bármelyik elérhető interfészen (Linux kernel 2.2-es vagy újabb verziója szükséges):

# tcpdump -i bármelyik

Minden megjelenítése a képernyőn (minden, amit a program végrehajt):

# tcpdump -v

Sok mindent megjelenít a képernyőn (minden, amit a program végrehajt):

# tcpdump -vv

Sok mindent kiír a képernyőre (mindent, amit a program végrehajt):

# tcpdump -vvv

Kevés információ jelenjen meg csomagok rögzítésekor (nem úgy, mint a szabványos):

# tcpdump -q

Csomag rögzítésének korlátozása 100-ra:

# tcpdump -c 100

Írjon minden adatot (rögzített csomagot) egy capture.cap nevű fájlba:

# tcpdump -w capture.cap

Írjon minden adatot (rögzített csomagot) egy capture.cap nevű fájlba, és jelenítse meg valós időben a képernyőn:

# tcpdump -v -w capture.cap

Csomagok kimenete a capture.cap fájlból:

# tcpdump -r capture.cap

Kimeneti csomagok a capture.cap fájlból a lehető legtöbb információ felhasználásával:

# tcpdump -vvv -r capture.cap

A kimeneti IP és portok a tartományok helyett csomagrögzítés:

# tcpdump -n

Rögzítsen minden olyan csomagot, ahol a célállomás a 192.138.1.1. IP és portok megjelenítése a képernyőn:

# tcpdump -n dst host 192.138.1.1

# tcpdump -n src host 192.138.1.1

Rögzítsen minden csomagot a 192.138.1.1 gazdagépről. IP és portok megjelenítése a képernyőn:

# tcpdump -n host 192.138.1.1

Csomagok rögzítése, ahol a hálózat 192.138.1.0/24. IP és portok megjelenítése a képernyőn:

# tcpdump -n dst net 192.138.1.0/24

# tcpdump -n src net 192.138.1.0/24

Csomagok rögzítése a 192.138.1.0/24 hálózatról. IP és portok megjelenítése a képernyőn:

# tcpdump -n net 192.138.1.0/24

Csomagok rögzítése a 23-as portról. Az IP és a portok megjelenítése a képernyőn:

# tcpdump -n dst 23-as port

Csomagok rögzítése az 1-es és 1023-as portokról. Az IP és a portok megjelenítése a képernyőn:

# tcpdump -n dst portrange 1-1023

Csak azokat a TCP-csomagokat rögzítse, amelyek rendeltetési helye az 1-1023-as portokon van. Az IP-cím és a portok megjelenítése a képernyőn:

# tcpdump -n tcp dst portrange 1-1023

Csak az 1-1023-as portokon lévő UDP-csomagok rögzítése. Az IP és a portok megjelenítése a képernyőn:

# tcpdump -n udp dst portrange 1-1023

Csomagok rögzítése a célállomásról, ahol az IP 192.138.1.1 és a célport 23. Megjelenítés a képernyőn:

# tcpdump -n "dst host 192.138.1.1 and dst port 23"

Csomagok rögzítése a célhelyről, ahol az IP 192.138.1.1, és a cél a 80-as vagy 443-as porton keresztül.

# tcpdump -n "dst host 192.138.1.1 and (dst port 80 vagy dst port 443)"

Rögzítsen bármilyen ICMP-csomagot:

# tcpdump -v icmp

Rögzítsen bármilyen ARP-csomagot:

# tcpdump -v arp

Rögzítsen bármilyen ICMP vagy ARP csomagot:

# tcpdump -v "icmp vagy arp"

Rögzítse a sugárzott vagy csoportos adású csomagokat:

# tcpdump -n "sugárzott vagy multicast"

Nagy csomagok rögzítése (500 bájt) a szabványos 68b helyett:

# tcpdump -s 500

Minden bájt adat rögzítése egy csomagban:

# tcpdump -s 0

"Nehéz csomagok" megtekintése:

# tcpdump -nnvvXSs 1514

ICMP-csomagok rögzítése ping és pong segítségével:

# tcpdump -nnvXSs 0 -c2 icmp

Következtetés sok lehetőség nélkül:

# tcpdump -nS

Alapvető kommunikáció (nagyon részletes mód), jó mennyiségű forgalmat láthat, bőbeszédűen:

# tcpdump -nnvvS

Egy mély pillantás a forgalomra, hozzáadva -X-et a hasznos teherhez:

# tcpdump -nnvvXS

Tekintse meg a nehéz csomagot, és növelje a pillanatnyi hosszt, rögzítve a teljes csomagot:

# tcpdump -nnvvXSs 1514

Szűrhet a csomag adott részei alapján is, valamint több feltételt is csoportosíthat. Ez akkor hasznos, ha például csak SYN-eket vagy PCT-ket keres, az utóbbiakat pedig a még fejlettebb forgalomszigeteléshez.

Mutasd meg az összes SÜRGŐS (URG) csomagot:

# tcpdump "tcp & 32!=0"

Mutasd meg az összes ACKNOWLEDGE (ACK) csomagot:

# tcpdump "tcp & 16!=0"

Mutasd meg az összes PUSH (PSH) csomagot:

# tcpdump "tcp & 8!=0"

Mutasd meg az összes RESET (RST) csomagot:

# tcpdump "tcp & 4!=0"

Mutasd meg az összes SYNCHRONIZE (SYN) csomagot:

# tcpdump "tcp & 2!=0"

Mutasd az összes FINISH (FIN) csomagot:

# tcpdump "tcp & 1!=0"

Mutasd meg az összes SZINKRONIZÁLÁS/NYÚJTÁS (SYNACK) csomagot:

# tcpdump "tcp=18"

TCP-jelzők rögzítése tcpflags használatával:

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

Csomagok RST és SYN zászlókkal (ellenőrzés):

# tcpdump "tcp = 6"

Forgalom az „Evil Bittől” (ellenőrizd):

# tcpdump "ip & 128 != 0"

Itt fejezem be a „tcpdump telepítése és használata” című cikkemet, remélem minden világos és érthető.

A UNIX rendszerekhez számos szippantó és forgalomelemző áll rendelkezésre kényelmes grafikus felülettel és funkciók gazdag készletével. De egyikük sem hasonlítható össze rugalmasságban, sokoldalúságban és mindenütt a régi tcpdump-pal. Ez a segédprogram számos Linux disztribúcióban és minden BSD-rendszerben megtalálható, és segítséget nyújthat, ha más eszközök nem állnak rendelkezésre.

Bevezetés

A tcpdump segédprogram egy hálózati csomagszimuláló parancssori felülettel, amely nem rendelkezik sem grafikus, sem pszeudografikus felülettel. Kezdők számára macerásnak és túl régimódinak tűnhet, de ügyes kezekben igazi svájci bicskává válik bármilyen hálózati csomag és protokoll megnyitásához. A tapasztalt rendszergazdák mindig azt javasolják, hogy a kezdők a tcpdump-ot használják más segédprogramok helyett a jelentések egyértelműsége és egyszerűsége miatt.

A Tcpdump csaknem 25 éve született a Berkeley Egyetemen, még mindig aktívan fejlődik, és továbbra is a szabvány a UNIX operációs rendszer hasonló eszközei között. A kifejezetten erre kifejlesztett libpcap csomagrögzítő könyvtárat ma szinte minden UNIX rendszerhez és sok hasonló Windows-os programhoz használja.

Ebben a cikkben a tcpdump-pal való munka minden aspektusát megvizsgáljuk, kezdve a programmal való munka alapjaitól és a segédprogram használatával a hálózati támadások, anomáliák és különféle típusú hibák azonosítására.

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 root felhasználóként (mint minden sniffernek, a tcpdump-nak is teljes hozzáféréssel kell rendelkeznie a hálózati interfészekhez), megadva a hálózati interfész nevét, és tízre korlátozva a kimeneti csomagok számát:

# tcpdump -i wlan0 -c 10 -n

Az -n kapcsoló letiltja az IP-címek DNS-nevekké való felbontá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

Lássuk, mit hozott nekünk a tcpdump, a „DNS-lekérdezés a tcpdump szemével” képernyőképen bemutatott két sor példáján keresztül. Könnyen megértheti, 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: küldő port és 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 megfejteni azokat ember által olvasható formára, míg másokat úgy hagy, ahogy van, és egyszerűen felsorolja a csomag tartalmát. Ebben az esetben a tcpdump visszafejtette a DNS-üzeneteket, és a 49244+ A? ya.ru. (23), ami azt jelenti: egy kérés (A?) érkezett a ya.ru. névhez tartozó címre, a csomag teljes hossza a TCP/IP fejlécek nélkül 23 bájt volt. Az első számjegy a kérés azonosítója.

A következő sorban egy választ látunk, melynek formátuma majdnem 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 (8/2/3) és a rögzíti magukat (A 213.180.204.3, A 77.88.21.3 , A 87.250.250.3...).

A tcpdump 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? Általában egyszerűen kinyomtatja a csomaginformációkat. Valahogy így nézhet ki:

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

Ez egy TCP-csomag, a tcpdump-ban a róla szóló információk megjelenítésének formátuma 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ólumok jelzik, 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 - csomag hossza.

Mindezek az adatok nagyon hasznosak lehetnek a 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 kényelmesen használható olyan protokollok elemzésére, amelyekben az adatok tiszta szöveggel, például HTTP-vel kerülnek átvitelre. A bináris és titkosított protokollok esetében ez természetesen haszontalan lesz.
Használhatja a -v kapcsolót is, hogy további információkat kapjon a csomagról. Ezután az IP után az IP-csomag részletes információi jelennek meg zárójelben:

(tos 0x0, ttl 64, id 8339, offset 0, flags , proto UDP (17), hossza 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 csomag azonosítója, 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 lyukasztása (TCP, UDP, ICMP) és hossz.


Speciális funkciók

A tcpdump legfontosabb funkcióinak nagy részét már leírtuk, de a funkcionalitása még sokkal több. Például a host és port operátorok segítségével megadtuk a kimenet szűréséhez szükséges címet és portot, de mi van akkor, ha csak azt szeretnénk látni, hogy a megadott címre mennek a csomagok, de nem mennek ki onnan? 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-lekérdezé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

Szűrheti a csomagokat méretük szerint:

# 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álják: proto, ahol a proto a protokoll, az expr a csomagfejléc elejé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értelmezett 1 bájt) . Például, ha csak a SYN (TCP handshake Initiation) jelzővel rendelkező csomagokat szeretné 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 zászlót tartalmaz, mindegyikhez egy bitet. A második bit a SYN flag számára van fenntartva. A következő 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 képességeit használjuk a gazdagép-ellenőrzés észlelésére és a hálózati támadások végrehajtására.

ábrán. Az 1. ábra azt mutatja, hogyan néz ki az Nmap segédprogrammal 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álja meg, válaszul egy RST-csomag érkezik, ami azt jelenti, hogy a portot nem figyeli egyetlen szolgáltatás sem, 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], szekv. 2610024277, ... 192.168.0.111.22 > 192.168.0.100.100. 261 0024278, ... 192.168.0.100 43337 > 192.168.0.111.22: Flags [.], ack 1, ...

A port nyitva van, és 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: nyugtát küld az ACK csomagró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 egy szippantóval felfegyverzett személyt nem lehet ilyen könnyen becsapni.

Ügyeljen a keresett 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éről szóló információ nem jelenik meg a naplókban. Az ilyen típusú vizsgálathoz tartozó tcpdump kimenetet az ábra mutatja. 2. Nagyon hasonlít egy normál TCP-vizsgálat naplójához, de a szkenner reakciója a nyitott portokra most más:

A 679 394614, ... 192.168.0.100 48585 > 192.168.0.111.22: Zászlók [R], 1679394614. sor, ...

Látható, hogy a SYN-ACK jóváhagyó csomag kézhezvétele után a szkenner nem fejezi be a kapcsolat létrehozását, 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, mindegyikre nulla hosszúságú csomagot küld. Ha a port le van zárva, az operációs rendszer egy ICMP elérhetetlen üzenettel válaszol:

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 vizsgálati módszer: null-ellenőrzés olyan csomagok küldésével, amelyek nem tartalmaznak zászlót (nmap -sN). Az ilyen csomagokra adott válasz a használt 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ók használhatják a karácsonyi szkennelést is, amelyben a csomagokon a FIN, URG és PUSH jelzők vannak beállítva (a csomag úgy tűnik, hogy zászlókkal világít, mint egy karácsonyfa):

192.168.0.100.35331 > 192.168.0.111.5544: Flags , szekv. 3998959601, win 4096, urg 0, hossza 0 192.168.0.111.5544 > Seq 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 a rendszeren tűzfal van telepítve, a rendszer nem küld válaszüzeneteket, és az Nmap képes lesz megérteni, hogy a port szűrve van-e.

A tcpdump segítségével különféle típusú árvizeket 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, hossz 1032 16:43:06.008831 IP 192.168.0.100 > 192.168.0.111: ICMP hossz-# 102

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ú elárasztások (például SYN) pontosan ugyanígy vannak meghatározva.

Kölcsönhatás más programokkal

A tcpdump egyik legfontosabb előnye, hogy a jelentések 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 segítségével kiíratást hozhatunk létre egy távoli gépen, majd elküldhetjük a helyi gépre, és a wireshark segítségével elemezhetjük:

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

Itt a -w - opcióval írtuk a kiíratást a szabványos kimenetre, é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 -

A programkimenetet a grep bemenetre irányítva különféle problémákat találhat a hálózatban, például a hibás ellenőrzőösszegű csomagok azonosítását, amelyekről a -vv kapcsolóval lehet információkat megjeleníteni:

# 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 kényelmesen használható különféle protokollok hibakeresésére és hálózati problémák keresésére. Használhatjuk például a Cisco Discovery Protokollon 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 hálózat topológiájáról és á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), hogy azonosítsa az ügyfélkapcsolati problémákat:

# 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 továbbított 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 a továbbított csomagokon belüli konkrét adatok keresésére. 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 lazulók azonosítá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 hallgatni kell, bármelyiket meg kell adni mindenkinek.
  • -n - nem oldja fel az IP-címeket DNS-nevekre.
  • -nn - nem konvertálja 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, még több, minden).
  • -c [n] - csak az első n csomagot jeleníti meg.
  • -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 (a könnyebb olvashatóság érdekében).
  • -E - az IPsec-forgalom visszafejtése a megadott kulccsal.
  • -w - a 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 hatékony eszközzé válik nemcsak a hibakereséshez, hanem az anomáliák kivizsgálásához is. Az operátorok és zászlók gazdag készletének köszönhetően kiléphet a hálózati éterből, és felfedezheti, mire van szüksége.

tcpdump orosz nyelvű utasítások é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 gyűjtéséhez.

-c <число пакетов>meghatározza, hogy a program meghatározott 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étert, a fájl bezárul
és létrejön egy új fájl a csomagok írásához. 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 a név a következőként kerül hozzáadásra
utótag fájlszám. A file_size változó millió bájtban adja meg a fájl méretét (nem megabájt = 1 048 576 bájt).

-d meghatározza a lefordított csomagillesztő kód kiíratásának kimenetét ember által olvasható formátumban és a program leállítását.

-dd Kiírja a megfelelő kódot C programrészletként.

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

-D megjeleníti a rendszer azon hálózati interfészeinek listáját, amelyekről a tcpdump csomagokat gyűjthet. Minden hálózati interfészhez tartozik egy név és egy szám, 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 használható egyetlen interfészről származó csomaggyűjtés meghatározására.

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 a libpcap egy régebbi verziójával lett lefordítva, 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 titkos használatát az ipaddr-címre küldött IPsec ESP-csomagok dekódolásához, amelyek a és értéket tartalmazzák a Biztonsági paraméterindex mezőben
spi. A spi és a cím kombinációja megismételhető vesszővel vagy újsorral határolóként. Vegye figyelembe, hogy az IPv4 ESP-csomagok titkának beállítása
jelenleg támogatott.

A használható algoritmusok: 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 olyan esetekben érhetők el, amikor 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ó a használatot feltételezi
Az ESP az RFC 2406 szerint, nem az RFC 1827. Ez az opció csak hibakeresési célokat szolgál, és nem használható valódi privát kulccsal, mivel az
parancssorból az IPsec kulcs elérhető a rendszer többi felhasználója 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 beállítja az idegen IPv4-címek kimenetét numerikus formátumban. Ezzel a beállítással megszabadulhat a Sun NIS-kiszolgálókon a sugárzási kísérlet során fellépő problémáktól
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 az interfész címe és maszkja nem elérhető
(például számozatlan interfészek használatakor, vagy ha Linuxon minden címről csomagokat rögzít egy álinterfész használatával, ez az opció működni fog
helytelen.

-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<интерфейс> Megadja a csomagok gyűjtését a megadott interfészről. Ha az interfész nincs megadva, a tcpdump megkeresi a rendszerben az elérhető interfészek listáját, és kiválasztja az aktív eszközt a minimális értékkel.
szám (kivéve a visszahurkolást).

A Linux rendszereken a 2.2-es kerneltől kezdve egy any nevű álinterfész támogatott, amely biztosítja a csomagok összegyűjtését a rendszer összes aktív interfészéről. Felhívjuk figyelmét, hogy a díj
Az eszközről érkező csomagok normál (nem válogatós) módban kerülnek végrehajtásra.

Ha a rendszere támogatja a -D jelzőt, akkor argumentumként megadhatja a jelző használatakor kinyomtatott interfész számát.

-l beállítja az stdout vonal pufferolását. Ez az opció olyan esetekben hasznos, amikor adatokat szeretne megtekinteni a csomagok gyűjtése közben. Például parancsokat

tcpdump -l | tee dat

tcpdump -l > dat & tail -f dat

biztosítja a csomagok rögzítését egy dat fájlba és egyidejű kimenetet a konzolra.

-L Megadja az ismert hivatkozási rétegtípusok listájának kimenetét és a program leállítását.

-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 nevekké alakítását.

-N csak a gazdagépnevek használatát határozza meg, a teljes képzésű tartományneveket nem. Például az lhotze.bilim-systems.net helyett ennek az opciónak a használatakor a munkaállomásom
lhotze-ként jelöljük.

-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 úgy érzi, hogy az optimalizáló nem működik megfelelően.

-o közli a programnak, hogy az interfészt nem kell rögzítési módba állítani5. A -p opció nem használható az ether host-val (local-hw-addr) vagy az ether broadcast szűrővel együtt.

-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 az ESP/AH csomagok a specifikáció régi verzióját használják6, é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őket, a tcpdump nem tudja meghatározni az ESP/AH protokoll verzióját a csomagfejlécekből.

-r<файл> egy korábban a tcpdump -w paranccsal vagy a tcpdump formátumot támogató más programmal (például Ethereal) létrehozott fájlból származó adatok beolvasását adja meg. Ha be
A fájlnév értéke -, és a szabványos beviteli eszközről (stdin) származó adatfolyam kerül felhasználásra.

-S abszolút TCP-sorszámok kimenetét állítja be a relatív számok helyett.

-s beállítja a bájtok rögzítését minden snaplen csomagból az alapértelmezett 68 bájt helyett7. A 68-as érték megfelelő IP, ICMP, TCP és UDP protokollokhoz, de az adatok elvesztését eredményezheti.
egyes DNS- és NFS-csomagok protokollinformációi. Egyes csomagok elvesztését a pillanatkép keret kis mérete miatt a kimeneti adatokban az űrlap mezői jelzik
[|proto]’, ahol a proto annak a protokollszintnek a neve, amelyen a csomag egy része le lett vágva8. Vegye figyelembe, hogy a rögzítési keret növelése további ideiglenes felvételt 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
ne veszítsen információt az Önt érdeklő protokollról. A snaplen=0 beállítása a teljes csomagokat rögzíti.

-T<тип> beállítja a szűrő segítségével kiválasztott csomagok értelmezését a paraméter által meghatározott típusú csomagokké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 az egyes kiíratási sorban.

-tt megadja a formázatlan időbélyegek kimenetét a kiíratás minden sorában.

-ttt megadja az időintervallumok kimenetét (mikromásodpercben) az előző és a jelen csomag rögzítése között a kiíratás minden sorában.

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

-u beállítja 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 egy régi libpcap opcióval lett lefordítva, amely nem támogatja a funkciót
pcap_dump_flush().

-v megadja a további információk kimenetét a fájlok rögzítésekor. Ez az információ tartalmazhat TTL (Time to Live) értéket, azonosítást, teljes méretet, IP-beállításokat stb. Mikor
Ennek a jelzőnek a használatakor további csomagintegritás-ellenőrzéseket is végeznek ellenőrzőösszegekkel (például az IP és ICMP protokollok esetében).

-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 NFS-válaszmezők kimenete stb.).

-vvv beállítja a megjelenített információ maximális mennyiségét (például az SB ... SE telnet opciók teljes mértékben megjelennek). Ha a -X kapcsolóval együtt használják, 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 gyűjtött csomagok később megtekinthetők az -r kapcsolóval, vagy átvihetők más programokba elemzés céljából
(pl. Etheral). Ha a fájl neve -, akkor a fájl a szabványos kimeneti eszközre (stdout) van írva.

-x megadja a hexadecimális kiíratás kimenetét (a link-layer fejléc nélkül) minden egyes rögzített csomaghoz. A megjelenített 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 beállítja a hexadecimális dump kimenetét minden egyes csomaghoz, beleértve a hivatkozási réteg fejléceit is.

-X megadja a dump kimenetet hexadecimális és ASCII formátumban linkréteg fejlécek nélkül. Ez az opció nagyon kényelmes 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 is.

-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 az adatáramlás.

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 forgalom a 10.7.20-as hálózatról a 10.7.0-s hálózaton lévő céllal mozog. 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

  • A gazdagép IP-forgalmának megtekintése:

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

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

A tcpdump nem a pav253 gazdája

  • A pav253 és a pav210 forgalmát nézzük

tcpdump host pav253 vagy host pav210

  • Megnézzük a csomagok tartalmát a re0 interfészen a gazdagép oldalára

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 minden csomagból 1500 bájtot olvasunk, és nem konvertáljuk az IP-t a gazdagép nevére

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)’ | \sort | uniq -c | sort -nr | awk '$1 > 100'

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

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

  • Tekintse meg a syn és fin csomagokat 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