Tcpdump udp csomagok. Tcpdump segédprogram, példák a szűrőbeállításokra. $ tcpdump options -i interfészszűrők

22.05.2023 Vélemények

Ezért úgy döntöttem, hogy létrehozok egy saját csalólapot, hogy legyen... Mert tcpdump nélkül egynél több adminisztrátor nem adminisztrátor

Bevezetés

Nagyon gyakran használják, hogy problémákat találjanak a hálózatban hálózati forgalomelemzők . tcpdump ennek a programosztálynak az egyik képviselője, lehetővé teszi a hálózat működésének 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 csomagok lehallgatásának alapja "promiscuous" mód hálózati adapter működése.

Attól függően, hogy milyen hálózati berendezést használnak a számítógépek Ethernet-hálózaton történő csatlakoztatására, a következők vannak: forgalomhallgatási képességek:

  • Online alapú koncentrátorok a hubról érkező összes forgalom bármely hálózati gazdagép számára elérhető.
  • Hálózati alapú kapcsolók(kapcsolók) a hálózati gazdagép csak a forgalmához fér hozzá, valamint ennek a szegmensnek az összes broadcast forgalmához.
  • Egyes menedzselt kapcsolóknak az a funkciója, hogy egy adott port forgalmát a felügyeleti portra másolják ("tükrözés", portfigyelés).
  • Speciális eszközök (kúpok) használatakor, amelyek a hálózati kapcsolat megszakításába tartoznak, és a kapcsolati forgalmat külön portra továbbítják, lehetséges a megfelelő port hallgatása.
  • A hub „trükkje” az, hogy a hubon keresztül kapcsolják be azt a switch portot, amelynek a forgalmát figyelni kell, egy monitor csomópontot is csatlakoztatva a hubhoz (ilyenkor a legtöbb esetben a hálózati kapcsolat teljesítménye csökkent).

Í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 fájlba való megjelenítését/mentését. A segédprogram használja libpcap könyvtár. Van egy port a Windows számára is. Ez szükséges a segédprogram működéséhez. Például Debianon a következő paranccsal telepíthető:

Debian:~# apt-get install tcpdump

A segédprogramok a működéshez szükségesek (mivel a hálózati interfész beállításai megváltoztak - „promiscuous” módba kapcsol). Á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 az interfészt, amelyről a forgalmat elemezni kell (az interfész megadása nélkül - az „első felbukkanó” elemzése).

Letiltja az IP-tartománynév felbontást. Ha az -nn van megadva, a portszámok protokollnevekké konvertálása tilos.

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 IP, 10.0.0.1/24 formátumú alhálózat és 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 IP, 10.0.0.1/24 formátumú alhálózat és 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 IP, 10.0.0.1/24 formátumú alhálózat és 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 a hálózat megadására CIDR formátumban (például 10.0.0.1/22), vagy a hálózat nevének megadására a -ban.

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ímzett cím megegyezik-e a megadottal. Lehetőség van IP, 10.0.0.1/24 formátumú alhálózat és gazdagépnév beállítására.

dst port port_szám

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

src port port_szám

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

port port_szám

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

ip adás

Ellenőrzi, hogy az IP-csomag broadcast csomag-e.

ether ( src | dst | host ) MAC_address

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 broadcast csomag-e.

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

Forgalomelemzés hálózati szinten (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

És a host2 is az 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 adatcsere a gazdagépek között, és ha a 2. gazdagépen futtatod az ip neigh show parancsot, látni fogod, 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 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 számunkra:

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:ff, étertípusú ARP (0x0806), 42-es hossz: Kérjen kinek 192.168.56.33 mond 192.168.56.1, hossza 28 12:16:29.40677 :00:27:77:e5:00 > 0a:00:27:00:00:00, étertípusú ARP (0x0806), 42 hosszúság: Válasz 192.168.56.33 is-at 01:00:27:77:e5:00 , hossza 28 12:16:29.466815 0a:00:27:00:00:00 > 01:00:27:77:e5:00, IPv4 étertípus (0x0800), 98 hosszúság: 192.168.56.1 > 192.168.56.1 > 192.168.56.1 > 192.168.56.1. visszhangkérés, azonosító 5284, 1. szekv., 64. hossz 12:16:29.467934 01:00:27:77:e5:00 > 0a:00:27:00:00:00, IPv4 etertípus (0x0800), hossz 98,1619 .56.33 > 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 csomagrekord ebben a formátumban tartalmazza a csomag elfogásának 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 leír egy ARP szórási kérést a rendszer host1 eth0 interfészének 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 MAC-címétől a host1 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 host1-en futó ping parancs eredménye. Ezután a tcpdump megszakadt. A leállítás előtt a tcpdump működési statisztikákat nyomtat: az elfogott, a szűrő által fogadott és a kernel által eldobott csomagok számát

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

Forgalomelemzés a szállítási rétegben (TCP, UDP) tcpdump segítségével

Tegyük fel, hogy egy bizonyos WEB szerver telepítve van a host2 rendszeren. Próbáljunk meg megnyitni egy oldalt erről a webszerverről a host1 gépen 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 , hossza 0 1 5: 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:9638 IP 15:434:9638. > 192 .168.56 .1.41533 : Flags [.], ack 222, win 1716, opciók , hosszúság 0 15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: q1,26 win 4, se q1,2 win 4, 4 , opciók , hossz 445 15:44:37.848156 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags [.], ack 446, win 54, opciók , hossza 0 15:44:97.38 IP 15:44:96.38.38.38. > 192. 168.56.1. 41533: Jelzők, SEQ 446, ACK 222, Win 1716, Opciók, Hossz 0 15: 44: 37.850366 IP 192.168.56.1.41533> 192.168.56.1.41533> Win , Opciók, leen GTH 0 15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags [.], ack 223, win 1716, opciók , hossza 0 ...

Ebben a példában 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érelmet intéz, megkapja a szükséges adatokat, és a kapcsolat véget ér.

A TCP szegmens fejléce mellett címzett és feladó portszáma számos paramétert tartalmaz:

  • Sorszám(seq). Meghatározza a bájtok sorrendjét a hálózatba 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ő. A feladónak küldött nyugtázások egyidejűleg egy új adatrész 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, attól a bájttól kezdve, amelynek száma 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 szegmensre, hanem csoportot küldhet a hálózatba a szegmenshez (de az ablakméretnél nem nagyobb bájtokban). Ha a csatorna minősége rossz (sok újraküldési kérés, visszaigazolások elvesznek), az ablak csökken, ha jó, akkor az ablak nő.
  • 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 az általa küldött adatfolyam bájtjai számozásra kerülnek, a maximális ablakméret pedig az a mennyiség, amelyet a szerver használhat. továbbítás 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 5840 hossz
  • A szerver elküldi a kliensnek egy TCP szegmenst a SYN és ACK jelzőkkel, egy kezdő "véletlenszerű" számmal (370041518), amelyből az általa küldött adatfolyam bájtjai számozásra kerülnek, valamint a kliens maximális ablakméretét (5792). Ez a szegmens az ügyféltől érkező csatlakozási kérés fogadását is megerősíti: 15:44:37.838118 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , seq 370041518, ack 1206,2win 7 hossza, 5 opció
  • A kliens egy TCP szegmenst küld a szervernek ACK jelzővel, ami a szegmens fogadásának megerősítése a szervertől (a továbbiakban a tcpdump a seq és ask relatív értékeit jeleníti meg): 15:44:37.838157 IP 192.168.56.1 .41533 > 192.168.56.33.80: Flags [. ], 1-es fogadás, 46 nyer, 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 adat szekcióban lévő szervernek, és visszaigazolást kap a szervertől a fogadásáról:

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 elküldi az adatokat 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

Ezután a szerver kezdeményezésére a kapcsolat 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

A kliens egy FIN jelzővel ellátott csomag küldésével is válaszol; ez a csomag egyben a kapcsolat megszakítására irányuló kérés fogadásának megerősítése 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 szerver csak megerősítheti 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 rendszer egy nem létező TCP szolgáltatáshoz próbál csatlakozni a 192.168.56.33 csomóponton. A távoli rendszer válaszként egy szegmenst küld az RST (reset) jelzővel.

tcpdump válasz 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

Ez a példa egy UDP datagramot próbál meg küldeni egy távoli rendszer nem létező portjára. Az UDP általában úgy válaszol, hogy ICMP-üzenetet küld a forrás gazdagépnek, 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

Hálózati statisztikák megjelenítése a ppp0 interfészről (-i ppp0) anélkül, hogy az IP-t DNS-re konvertálná (-n) azoknál a kereteknél, amelyek forrás MAC-címe 11:20:b3:d8:d8:2c.

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

A sugárzott forgalom kimenete a vlan0 interfészről.

# tcpdump -n -i eth0 src 192.168.66.1

Azok a hálózati csomagok, amelyek fejléce a forrás mezőben a 192.168.66.1 IP-címet tartalmazza, szűrésre kerülnek.

# tcpdump -n -i eth0 gazdagép 192.168.66.1

Azokat a csomagokat, amelyekben ez az IP-cím van megadva a csomag forrásaként vagy rendeltetési helyeként, szűrik.

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

Azok a csomagok, amelyek forrása a 10.0.0.0/8 hálózati csomópontot jelzi, szűrésre kerül.

# tcpdump -n -i eth0 icmp

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

Ezzel azt hiszem, befejezem a mostani cikket. Amint új példák jelennek meg, frissí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, McSim!

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

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

A tcpdump segédprogram egy nagyon hatékony és népszerű eszköz a hálózati csomagok elfogására és elemzésére. Lehetővé teszi az összes bejövő és kimenő csomag megtekintését egy adott felületről, és a parancssorban működik. Természetesen használhatja a Wirsharkot a hálózati csomagok elemzésére, ez egy grafikus segédprogram, de néha vannak olyan helyzetek, amikor csak a terminálon kell dolgozni.

A Tcpdump semmivel sem rosszabb, mint a Wireshark, és minden szükséges képességgel rendelkezik a csomagok elemzéséhez, ráadásul az összes elfogott csomagot fájlba mentheti, hogy később ugyanazzal a Wiresharkkal elemezhesse azokat. Ebben a cikkben megvizsgáljuk, hogyan használhatjuk a tcpdump-ot a hálózati csomagok elfogására.

Sok disztribúció alapértelmezés szerint a tcpdump paranccsal érkezik, de ha az Ön disztribúciója nem rendelkezik ilyennel, akkor nagyon egyszerűen telepítheti a hivatalos tárolókból. Például Ubuntu/Debian esetén:

sudo apt install tcpdum p

Fedora/Red Hat/CentOS rendszeren:

sudo yum install tcpdump

Amikor a telepítés befejeződött, folytathatja a munkát.

tcpdump parancsot

Mielőtt rátérnénk a segédprogrammal végzett munka példáira, nézzük meg annak szintaxisát és alapvető beállításait. A parancs szintaxisa a következő:

$ tcpdump options -i interfészszűrők

Híváskor át kell mennie azon a felületen, amelyet figyelni fog. Ha az interfész nincs megadva, akkor a lista elsője kerül felhasználásra. Az opciók konfigurálják a segédprogram megjelenítését és alapvető képességeit, a szűrők pedig lehetővé teszik a szükségtelen csomagok kiszűrését. Most nézzük a főbb lehetőségeket:

  • -A- az összes csomagot ASCII formátumban adja ki;
  • -c- az n-edik számú csomag elfogása után zárjuk be a programot;
  • -C- csomagok fájlba írásakor ellenőrizze a fájl méretét, és ha nagyobb a megadottnál, hozzon létre új fájlt;
  • -D- megjeleníti az elérhető hálózati interfészek listáját;
  • -e- kapcsolati szintű információk megjelenítése minden csomaghoz, ez hasznos lehet például a MAC-cím megjelenítéséhez;
  • -f- domain név megjelenítése az IP-címekhez;
  • -F- csomagokat olvasni fájlból, nem felületről;
  • -G- új naplófájl létrehozása meghatározott idő elteltével;
  • -H- 802.11s fejlécek észlelése;
  • -én- a csomagelfogás interfészének neve. Csomagokat rögzíthet minden interfészről, ehhez adja meg bármelyiket;
  • -ÉN- kapcsolja az interfészt monitor módba az összes átmenő csomag rögzítéséhez;
  • -j- állítsa be az időbélyeg formátumát a csomagok rögzítéséhez;
  • -J- az elérhető időbélyegek megtekintése;
  • -K- ne ellenőrizze a csomagellenőrző összegeket;
  • -l- görgetés támogatása a kimenethez;
  • -L- megjeleníti a támogatott csatlakozási protokollokat az interfészhez;
  • -n- ne jelenítsen meg domain neveket;
  • -r- csomagokat olvasni a -w-val létrehozott fájlból;
  • -v, -vv, -vvv- részletesebb kimenet;
  • -q- minimális információ megjelenítése;
  • -w- a kimenetet fájlba írni;
  • -Z- a felhasználó, akinek a nevében a fájlok létrejönnek.

Ez nem minden lehetőség, de a legtöbb probléma megoldásához elegendőek lesznek. Gyakrabban fogunk szűrőket használni. Szűrők segítségével csak azokat a csomagokat szűrheti ki, amelyeket látni szeretne. Szűrhet IP-cím, protokoll, hálózat, interfész és sok más paraméter alapján. De a tcpdump szűrőket példákon keresztül nézzük meg.

A tcpdump használata

Mielőtt rátérne a tcpdump használatára, meg kell vizsgálnia, hogy milyen hálózati interfészeket használhat. Ehhez futtassa a parancsot a -D kapcsolóval:

Kezdjük a tcpdump példák vizsgálatával az eth0 interfész forgalmának rögzítésével; számomra ez a fő interfész, amely kapcsolódik az internethez. A program futtatásához szuperfelhasználói jogok szükségesek, ezért ne felejtsd el használni a sudo-t:

sudo tcpdump -i eth0

A parancs leállításához nyomja le a Ctrl+C billentyűkombinációt. A kimenetben azonnal látni fogja az összes elfogott csomagot. Az egyes csomagok rekordformátuma így fog kinézni:

13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881> 192.168.1.2.52055 : Flags [.], szekv. 640160396:640161844, ack 436677393, win 2050, opciók , hossza 1448

Ez a formátum jellemző az adatcsomagokra, protokolltól függően a feketével kiemelt szöveg eltérő lehet. Először jön az időbélyeg, majd a protokoll, majd a feladó IP-címe zöld, a címzetté, jelen esetben a számítógépünké pedig kék. Ezután további tcp paraméterek következnek, és a végén a csomagméret bájtokban. A kimenet részletei a -v kapcsolókkal szabályozhatók. Például:

sudo tcpdump -v -i eth0

Az IP protokollról már itt is megjelennek információk:

IP (tos 0x0, ttl 64, id 50309, offset 0, flags, proto TCP (6), hossza 64)

Információkat kaphatunk a TTL csomag élettartamáról, a TCP protokoll verziójáról és a fejlécmező hosszáról. A -vv kapcsoló bizonyos esetekben a csomag ellenőrző összegének ellenőrzését és tartalmát adja ki.

Az opciók után megadhat szűrőket a csomagokhoz. Íme a fő paraméterek, amelyek alapján kiszűrheti a csomagokat:

  • házigazda- gazdagépnév;
  • ip- IP-cím;
  • proto- protokoll;
  • háló- hálózati vagy alhálózati cím;
  • kikötő- port címe;
  • src- a feladóra vonatkozó paraméter;
  • dst- a címzetthez kapcsolódó paraméter;
  • A következő protokollok állnak rendelkezésre: éter, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcpÉs udp.

Mindezt kombinálhatja egymással, hogy elérje a kívánt eredményt. Nézzük meg részletesebben példák segítségével. Csak a számítógépünknek címzett csomagokat szűrjük ki:

sudo tcpdump -i eth0 ip dst 192.168.1.2

Kiválaszthatjuk az adott csomópontnak küldött csomagokat is:

sudo tcpdump -i eth0 dst gazdagép google-public-dns-a.google.com

Mint látható, ezek DNS-csomagok, és a TCP-jelzők helyett hasznos információkat tartalmaznak, a gazdagép IP-címére vonatkozó kérést. Válaszcsomagokat is kiválaszthat egy adott gazdagéptől:

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

Ez nem a csomag teljes tartalma, ha meg akarod szerezni, használd a -v vagy -vv kapcsolót:

sudo tcpdump -vv -i eth0 gazdagép dst google-public-dns-a.google.com

A és operátorral több szűrőt kombinálhat egybe:

sudo tcpdump -i eth0 dst gazdagép google-public-dns-a.google.com és src gazdagép google-public-dns-a.google.com

A rendelkezésre álló összevonási műveletek a és és vagy, és zárójelekkel is jelezheti az elsőbbséget. Nem kell hostot megadni, sok esetben elég az src vagy a dst, a segédprogram maga is megérti, mire gondolt. Pontosan ugyanaz a kialakítás használható portokhoz. Például kiszűrhetjük az összes kérést vagy választ a DNS-re (az 53-as porton):

sudo tcpdump -vv -i eth0 53-as port

Pontosan ugyanez megtehető a http-vel (80-as port):

sudo tcpdump -vv -i eth0 80-as port

Természetesen a dst és az src is használható itt konkrétabb eredmények eléréséhez. Nem csak egy portot, hanem portok egész sorát szűrheti:

sudo tcpdump portrange 21-23

Ha megadja az egyik protokollt, akkor csak az adott protokoll csomagjait fogja kiszűrni, például tcp, udp vagy arp:

sudo tcpdump -vv arp

Ugyanígy kiválaszthatja az összes udp csomagot:

sudo tcpdump -vv udp

A hálózat megnevezése szerinti szűrő is elérhető:

sudo tcpdump net 129.168.1.1/24

Ezenkívül a csomagokat méretük szerint is szűrheti, például 32 bájtnál kisebbek:

sudo tcpdump kisebb, mint 32

Vagy több mint 128:

tcpdump nagyobb, mint 128

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

Ez a fájl bármely ilyen fájlok olvasására alkalmas programmal megnyitható, például a Wireshark segítségével. A fájlba mentett csomagok megnyitásához használja az -r kapcsolót:

sudo tcpdump -r fájl.pcap

Van még egy pont, amire érdemes odafigyelni. Ez a formátum a csomagok tartalmának megjelenítésére. A csomag tartalmát ASCII formátumban adhatja ki az -A kapcsolóval:

sudo tcpdump -A -i eth0

A tartalmat HEX és ASCII formátumban is megjelenítheti, ehhez használja a -XX parancsot:

sudo tcpdump -XX -i eth0

következtetéseket

Ebben a cikkben megvizsgáltuk a tcpdump használatát. Ez egy nagyon hatékony hálózati elemző, amely csak a parancssoron keresztül működik. Remélem, hogy ez az információ hasznos volt az Ön számára, és most a tcpdump használata sokkal könnyebb lesz, ha kérdése van, tegye fel a megjegyzésekben!

A videót a tcpdumpról szóló előadással zárjuk:

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.