Locked History Actions

tcpdump

tcpdump

Sintaksė

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C file_size ] [ -F file ]

[ -i interface ] [ -m module ] [ -r file ]

[ -s snaplen ] [ -T type ] [ -U user ] [ -w file ]

[ -E algo:secret ] [ expression ]


Paskirtis

Tcpdump nukopijuoja paketų antraštes, kurios atitinka Bulio išraišką. Naudojant šią komandą su –w požymiu, galima išsaugoti paketų duomenis į failą vėlesnei analizei. Naudojant –r požymį kartu/atskirai su –w galima nuskaityti išsaugotus paketus, užuot juos skaitant iš tinklo. Bet kokiu atveju tcpdump apdoros tik tuos paketus, kurie atitiks išraišką (expression). Jei tcpdump paleista be –c požymio, tai tada ji periminėja paketus kol yra nutraukiama SIGINT signalo (sugeneruoto, pavyzdžiui, nuspaudus pertraukties simbolius, tipiškai CTRL-C) ar SIGTERM signalo (dažniausiai sugeneruoto proceso nutraukimo komandos kill). Jei tcpdump paleidžiama su –c požymiu, tada rinks paketus iki SIGINT ar SIGTERM signalų ar kol bus apdorotas nurodytas skaičius paketų. Kai tcpdump baigia periminėti paketus, ji praneša apie “gautų po filtravimo“ paketų skaičių (tai priklauso kokioje OS veikia tcpdump ir jos konfigūracijos galimybių. Jei filtras buvo nustatytas komandine eilute, kai kuriose OS paketų skaičius atitiks paketų skaičių kuris atitiko filtravimo išraišką, kitose tai bus paketų atitikusių filtravimo išraišką ir apdorotų tcpdump skaičius), „branduolio atmestus“ paketus (tai yra paketų skaičius, kurie buvo atmesti dėl vietos buferyje stokos).


Paaiškinimai

-a - bando perversti tinklo ir transliacijos (broadcast) adresus į vardus.

-c - baigiamas darbas, kai gaunama count skaičius paketų.

-C - prieš rašant naujus paketus į failą, patikrinama ar failas šiuo metu yra didesnis už file_size ir jei taip, tada jis uždaromas ir atidaromas kitas. Išsaugojimo failas turi vardą, kuris buvo nustatytas pirmojo saugojimo metu su pridedamu skaičiumi po jo. Vis su kitu saugojimo failu tas skaičius didėja (pirmas failas be skaičiaus, o kitame pridedamas 2 ir didėja vis su kitu failu). file_size vienetai yra milijonai baitų (1000000 baitai, o ne 1048576 baitų).

-dd - perimami paketai, kuriuose yra C kalbos programos fragmentų.

-e - kiekvienoje perimtoje eilutėje atvaizduoja kanalinio lygmens antraštę.

-E - IPsec ESP paketų iššifravimui naudojama algo:Secret. Galimi tokie algoritmai: des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc ar jokio. Pagal nutylėjimą naudojamas des-cbc. Galimybė iššifruoti paketus yra suteikiama, jeigu tcpdump buvo kompiliuojama su įjungta kriptografija. secret yra slaptas ESP raktas ascii tekstiniu formatu.

-F - naudoja failą file, filtro išraikos gavimui.

-i - stebi sąsają interface. Jei nenurodyta, tcpdump ieško sistemos sąsajų lentelėje mažiausio aktyvios sąsajos numerio (išskyrus loopback). 2.2 ir vėlesnėsi Linux branduolio versijose kaip interface argumentą galima naudoti „any“ norint perimti paketus iš visų sąsajų.

-m - įkrauna SMI MIB modulį apibrėžtą module faile. Ši parinktis gali būti naudojama keletą kartų keletui MIB modulių įkrauti į tcpdump.

-n - nekonvertuoja mazgo adreso į vardą. Tai gali būti naudojama išvengti DNS informacijos ieškojimo.

-nn - nekonvertuoja protokolo, prievadų numerių ir t. t. į vardus.

-q - greita išvestis. Išveda mažiau protokolo informacijos, todėl išvesties linija tampa trumpesnė.

-R - priima ESP/AH paketus, kurie yra grįsti senomis specifikacijomis (RFC1825 to RFC1829). Jei pasirinka, tada tcpdump neišveda pasikartojančių saugumo laukų. Kadangi tai nėra protokolo laukas ESP/AH specifikacijoje, todėl tcpdump negali nustatyti ESP/AH protokolo versijos.

-r - skaito paketus iš failo (kuris buvo sukurtas su -w parinktimi).

-T - iškart interpretuojami paketai pagal nurodyta tipą (type) apibūdintą išraiškoje „expression“. Šiuo metu yra žinomi tipai: cnfp (Cisco NetFlow protocol), rpc (Remote Procedure Call), rtp (Real-Time Applications protocol), rtcp (Real-Time Applications control protocol), snmp (Simple Network Management Protocol), vat (Visual Audio Tool) ir wb (distributed White Board).

-t - neišvedamos laiko žymės kiekvienoje perėmimo eilutėje.

-U - nuima root privilegijas ir keičia vartotojo ID į user ir grupės ID į pagrindinę user grupę.

-tttt - išveda laiko žymes default formatu kiekvienoje perėmimo eilutėje.

sli-v - (Truputį daugiau) žodinė išvestis. Pavyzdžiui, išvedami dar tokie IP paketų laukai time to live, identification, total length ir options. Taip pat įgalinamas papildomas paketų vientisumo patikrinimas, toks kaip IP ir ICMP paketų antraščių kontrolinė suma (checksum).

-vv - dar daugiau žodinės išvesties. Pavyzdžiui, papildomi NFS atsakymo laukai ir visiškai dekuoduoti SMB paketai.

-vvv - dar daugiau žodinės informacijos. Pavyzdžiui, išvedamos visos telnet SB ... SE parinktys. Su -X telnet parinktys išvedamos šešioliktainiu formatu.

-w - įrašo neapdorotus paketus į failą (file) gramatiniam nagrinėjimui ir tada išvedama. Vėliau juos galima išvesti su –r parinktimi. Standartinė išvestis yra naudojama tada, kada file yra „-“.

-x - išveda kiekvieną paketą (be jo kanalinio lygmens antraštės) šešioliktainiu kodu.

-X - kai išvedama šešiolikatainiu kodu, ascii taip pat. Jei –x nustatyta, paketai taip pat išvedami šešioliktainiu/ascii kodu. Tai yra patogu analizuojant naujus protokolus. Net jei –x nera nustatyta, dalis dalies paketų gali būti išvedami šešioliktainiu/ascii kodu.

expression nustatoma, kurie paketai turi būti perimti. Jei neduota expression (išraiška), perimami visi paketai. Kitu atveju perimami tik paketai, kurie pagal išraišką yra teisingi (true).

expression susideda iš vieno ar daugiau primityvų. Primityvai paprastai susideda id (vardas ar numeris) esantį prieš vieną ar daugiau atrankos parametrų:

  • type parametras nusako daikto požymį id vardą ar skaičių kalbama. Įmanomi tipai yra host, net and port. Pavyzdžiui, „host foo“, „net 128.3“, „port 20“. Jei nėra type parametro, nustatoma host.
  • dir Šis parametras apibūdina detalų siuntimo kryptį į ir/ar iš id. Galimos kryptys yra src, dst, src or dst ir src and dst. Pavyzdžiui, „src foo“, „dst net 128.3”, „src or dst port ftp-data“. Jei dir nenustatyta, priimama src or dst.
  • proto Parametras pariboja atitinkamus protokolus. Galimos proto reikšmės yra: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp ir udp. Pavyzdžiui, „ether src foo“, „arp net 128.3“, „tcp port 21“. Jei nenustatytas prto parametras, tada visų protokolai sutinkantys su type priimami. Pavyzdžiui, „src foo“ „net bar“ apima „(ip or arp or rarp) net bar“ ir `port 53' apima „(tcp or udp) port 53“. Yra ir daugiau specifinių primityvų, raktažodžių ir skaitinių išraiškų, kurių detaliau nepateiksiu, t. y. gateway, broadcast, less, greater.

Pavyzdžiai

Išveda visus paketus atvykstančius iki arba išvykstančius po sundown (saulėlydžio):

tcpdump host sundown

Išveda srautą tarp helios ir bet kurio hot ar ace:

tcpdump host helios and \( hot or ace \)

Išveda visus IP paketus tarp ace ir bet kokio mazgo išskyrus helios:

tcpdump ip host ace and not helios.

Išveda visą srautą tarp vietinio mazgo ir mazgo iš Berkeley:

cpdump net ucb-ether.

Išveda visą ftp srautą einantį per tinklo kelvedį snup:

tcpdump 'gateway snup and (port ftp or ftp-data)'.

Išveda visą srautą kuris yra ne iš vietinio mazgo arba ne vietiniam mazgui:

tcpdump ip and not net localnet.

Išveda pradžios ir pabaigos paketus (SYN ir FIN paketus) kiekvieno TCP pokalbio, kuris nėra skirtas vietiniam mazgui:

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'.

Išveda IP paketus, kurie yra ilgesni nei 576 baitai ir siųsti per tinklo kelvedį snup:

tcpdump 'gateway snup and ip[2:2] > 576' .

Išveda visus IP transliacijos (broadcast) ar daugiaabonentinio transliavimo paketus, kurie nebuvo išsiųsti per ethernet transliaciją ar daugiaabonentinę transliaciją:

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'.

Išveda visus ICMP paketus, kurie nėra echo užklausos/atsakymai, t. y. ne ping paketai:

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'.


Naudota literatūra

1. http://linux.about.com/library/cmd/blcmdl8_tcpdump.htm