Ce este tcpdump?

Ce este tcpdump

Dacă aveți un sistem de operare Unix sau Unix (Linux, Mac OS), puteți utiliza tcpdump pentru a examina traficul de rețea. Programul tcpdump este un utilitar al liniei de comandă care poate fi instalat gratuit. Nu este integrat în mod obișnuit în sistemele de operare, de aceea trebuie să îl instalați din registrul tcpdump GitHub sau de pe site-ul oficial tcpdump.

Elemente de tcpdump

Utilitatea de captare a pachetelor utilizate de tcpdump este furnizată de libpcab, care este o bibliotecă de proceduri C / C ++. Programul principal tcpdump este interfața pentru procesul de captare a pachetelor. Când este rulat, va începe procesul de libcap pentru a capta pachete și apoi a afișa conținutul lor pe ecran. Dacă nu este specificată o limită a numărului de pachete care vor fi capturate la începerea programului, acesta va continua să ruleze pentru totdeauna. Procesarea este apoi încheiată cu un semnal de întrerupere (Control-C).

Programul este rulat la linia de comandă și include o serie de opțiuni, care sunt indicate prin steaguri. Aceste steaguri modifică comportamentul programului pentru a-l determina să selecteze pachetele care se potrivesc cu un model specificat, să limiteze timpul de rulare sau să-l poată citi pe pachete stocate dintr-un fișier, mai degrabă decât din interfața de rețea..

Formatul Tcpdump

Comanda tcpdump poate fi emisă de unul singur sau cu opțiuni, parametri și / sau expresii obișnuite. Niciunul dintre aceste elemente nu este obligatoriu și comanda nu este importantă.

tcpdump <-option_identifier>

Opțiuni Tcpdump

Comanda tcpdump este urmată de opțiuni, care sunt cunoscute și ca steaguri. Fiecare dintre acestea este notat cu o cratimă urmată de o literă. Mai jos este o listă a fiecărui steag.

-A        imprimați pachete în ASCII fără anteturile la nivel de legătură

-b         arată numărul AS este format ASDOT

-B        dimensiunea memoriei tampon în unități de KiB (1024 octeți

-c         numara – limita pachetelor de capturat

-C        mărime fișier – procesul va crea un nou fișier odată ce această limită de dimensiune a fișierului este completată; Dimensiunea este x 1 milion de octeți

-d        Introduceți codul de potrivire a pachetelor compilate în ASCII

-dd      Dump cod de potrivire a pachetelor ca C fragment de program

-ddd    Dump cod de potrivire a pachetelor ca numere zecimale precedate de un număr

-D        Enumerați toate interfețele accesibile

-e         Imprimați antetul nivelului de legătură pe fiecare linie de descărcare

-E         spi @ ipaddr algo: secret – pentru decriptarea pachetelor IPsec ESP:

             spi este indexul parametrilor de securitate

              ipadr este adresa de destinație de pe pachet

              algo este algoritmul implicit la des-CTF iar câmpul este opțional.

              Valorile posibile sunt:

  • des-CTF
  • 3DES-cbc
  • Blowfish-CTF
  • RC3-CTF
  • cast128-CTF

secret este textul ASCII pentru cheia secretă ESP. Dacă este precedat de 0x, atunci este o valoare hex

-f          Imprimați adrese IPv4 „străine” numeric mai degrabă decât simbolic

-F         fişier – utilizare fişier ca intrare pentru expresia filtrului

-G        rotate_seconds – perioada pentru a roti fișierul de salvare a opțiunii -w, va adăuga timestamp la nume

-h         Tipăriți șirurile de versiune tcpdump și libpcap, imprimați un mesaj de utilizare și ieșiți

-H        Detectați anteturile de rețea 802.11

-eu          interfață – interfața pe care să o asculți, este implicită la cel mai scăzut nume alfabetic

-eu          modul de monitorizare | imediată-mode – elimină tamponarea

-j          tstamp_type – setați tipul de timp pentru captura tstamp_type

-J         tstamp_precision – setați precizia timbru de timp (micro sau nano) implicit este micro. Dacă tstamp_precision este nul, listați tipurile de timp și ieșiți

-K        Nu verificați sumele de verificare

-L          Linia Stdout tamponată. De exemplu. tcpdump -l | tee dat sau                                                                                                   tcpdump -l > DAT & coada -f dat

-L         Enumerați tipurile de legături de date cunoscute pentru interfață, în modul specificat și ieșiți

-m       modul – încărcați din fișier definițiile modulului MIB SMI modul.

-M       secret – valoare secretă partajată pentru validarea cu opțiunea TCP-MD5

-n        Nu convertiți adresele (adică adresele gazdă, numerele de port etc.) în nume

-N        Nu imprimați calificarea numelor de domeniu pentru numele gazdelor

-#         Imprimați un număr de pachet opțional la începutul liniei

-O        Nu executați optimizatorul de coduri care corespunde pachetelor

-p         Nu puneți interfața într-un mod promiscu

-Q        direcţie – trimiteți / primiți direcția. Poate fi în, afară, sau în afară

-q         Tipăriți mai puține informații despre protocol

-r          fişier – citiți pachete din fişier. Specifica pentru intrare standard

-S         Tipăriți numere de secvență TCP absolute

-s         snaplen – snarf snaplen octeți din fiecare pachet, nu implicit 262144 octeți

-T         tip – interpretați pachetele după cum este specificat tip. Opțiunile sunt:

  • aodv                   Protocolul ad-hoc la distanță Vector Vector
  • crap                    Protocol de redundanță adresă comună
  • CNFP                    Protocolul Cisco NetFlow
  • PML                     Protocolul de gestionare a legăturilor
  • pgm                    Pragmatic General Multicast
  • pgm_zmtp1       ZMTP / 1.0 în PGM / EPGM)
  • resp                   Protocolul de serializare REdis
  • rază                RAZĂ
  • rpc                     Apel procedură la distanță
  • rtp                      Protocolul aplicațiilor în timp real
  • RTCP                    Protocolul de control al aplicațiilor în timp real
  • snmp                 Protocol de gestionare simplă a rețelei
  • tftp                     Protocol de transfer de fișiere banale
  • TVA                      Instrument audio vizual
  • wb                      distribuit Consiliul alb
  • zmtp1                 Protocolul de transport al mesajelor ZeroMQ 1.0
  • vxlan                  Rețea virtuală locală eXtensibilă

-T          Nu imprimați o marcă de timp pe fiecare linie de descărcare

-tt        Imprimați marcajul de timp ca fiind compensat de la 1 ianuarie 1970 pe fiecare linie de descărcare

-TTT       Imprimați o delta (rezoluție micro-secundă) între linia curentă și cea anterioară

-TTTT      Imprimați o oră de timp: data, ora, minutul, a doua pe fiecare linie de descărcare

-ttttt     Imprimați o delta (rezoluție micro-secundă) între linia curentă și prima linie

-u         Imprimați mânere NFS nedecodate

-U        Pachetul tamponat

-v         Ieșire puțin mai redusă

-vv       Mai multă ieșire verbală

-VVV     Cele mai multe ieșiri verbose

-V        fişier – citiți o listă de nume de fișiere din fişier. Se introduce input standard dacă fişier este

-w        fişier – scrierea la fişier

-W       limită – numărul maxim de fișiere care trebuie create de către -C și -G Opțiuni

-X         Tipăriți datele fiecărui pachet minus antetul nivelului său de legătură în hex

-xx       Tipăriți datele fiecărui pachet, inclusiv antetul nivelului său de legătură, în hex

-X         Tipăriți datele fiecărui pachet minus antetul nivelului său de legătură în hex și ASCII

-XX       Tipăriți datele fiecărui pachet, inclusiv antetul său de nivel de legătură, în hex și ASCII.

-y         datalinktype – Setați tipul de legătură de date pe care îl utilizați în timpul capturării pachetelor                          datalinktype

-z         postrotate-comandă – procesarea fișierelor de salvare de obicei cu compresie, de ex -z gzip

-Z         utilizator – schimbați ID-ul utilizatorului la utilizator și ID-ul grupului la grupul principal din utilizator

Parametri Tcpdump

Parametrii pentru tcpdump sunt, de asemenea, cunoscuți ca primitivele. Acestea specifică dacă captarea pachetului ar trebui să obțină numai date provenite de la gazdele specificate. Acești parametri pot fi, de asemenea, exprimați ca condiții de utilizare a operatorilor booleani și, sau, și nu.  Nu trebuie să puneți un semn egal (=) între numele parametrului și valoarea acestuia și nu trebuie să spaționați parametrii cu punctuație. În fiecare caz, aveți nevoie doar de un spațiu.

Cel mai des utilizat dintre acești parametri este gazda, care vă permite să limitați captura la transmisii dintr-o singură sursă. În fiecare caz, un nume de dispozitiv ca valoare a parametrului poate fi înlocuit cu adresa sa. În cazul în care un parametru are o dst versiunea, acea variație limitează ieșirea doar la pachetele care au acel atribut pentru destinația sa. Parametrii care includ src căutați pachete care au valoarea dată în date referitoare la originea lor.

Iată opțiunile parametrilor:

gazdă HOST_NAME – de asemenea gazda dst sau gazdă src.

Poate fi, de asemenea, precomandat ip, arp, sau RARP

eter            ehost – valoarea din / etc / eteri sau un număr. De asemenea eter src și eter de dest.

portal       gazdă – obțineți pachete care au trecut prin gateway gazdă

net                retea_num – IP sursă sau destinație include network_num                                               De asemenea dst net și src net

port               Număr | Nume – de asemenea dst port și port src.                                                                                   Poate fi cu tcp sau udp pentru a limita protocolul

proto ip          protocol – captura pachetele IP ale protocolului numit. Numele trebuie să fie în / etc / protocoale

proto eter    protocol – captarea pachetului de tip eter de protocol. Opțiuni pentru protocol sunt un număr sau:

  • ip
  • IP6
  • arp
  • RARP
  • o vorba
  • atalkarp
  • DECNet
  • decdts
  • decdns
  • lanbridge
  • lat
  • mopdl
  • moprc
  • cățel
  • sca
  • spiriduș
  • stp
  • vexp
  • vprod
  • XNS

Broadcast     Captează pachete de difuzare Ethernet. De asemenea, scris ca difuzarea eterului

transmisie ip Captează pachete de difuzare ip

multicast       Captează pachete multicast Ethernet. Scris de asemenea ca ether multicast

ip multicast   Captează pachete IP multicast

gazdă decnet   HOST_NAME – dacă este sursă sau destinație DECNET HOST_NAME

decnet src     HOST_NAME – capturați dacă este sursa DECNET HOST_NAME

decnet dst     HOST_NAME – capturați dacă este destinația DECNET HOST_NAME

gazda wlan      ehost – dacă prima, a doua, a treia sau a patra adresă IEEE 802.11 este                                             ehost

wlan addr1    ehost – capturați dacă prima adresă IEEE 802.11 este ehost

wlan addr2    ehost – capturați dacă este a doua adresă IEEE 802.11 ehost

wlan addr3    ehost – capturați dacă este a treia adresă IEEE 802.11 ehost

wlan addr4    ehost – dacă a patra adresă IEEE 802.11 este ehost. Folosit doar pentru WDS

tip                tip – capturați dacă tipul de cadru IEEE 802.11 este tip, care este un număr sau:

  • date
  • MGT
  • ctl

subtip           subtip – capturați dacă cadrul IEEE 802.11 este subtip, care este un număr sau:

  • assocreq
  • assocresp
  • reassocreq
  • reassocresp
  • probereq
  • proberesp
  • far
  • Atim
  • disassoc
  • AUTH
  • deauth
  • date

dir                    dir – capturați dacă direcția cadrului IEEE 802.11 este dir, care este un număr sau:

  • dă din cap
  • tods
  • fromds
  • dstods

Expresia Tcpdump

Segmentul de expresii al unei comenzi tcpdump vă oferă posibilitatea de a adăuga puțin programare la selecția dvs. de pachete. Spre deosebire de un program obișnuit, totuși, acest set de instrucțiuni trebuie să fie scris într-o singură linie. Dacă sunteți un utilizator frecvent al Unix sau Linux, veți fi obișnuit cu expresiile obișnuite de scripturi shell și nu ar trebui să aveți probleme în a înțelege formatul acestor filtre..  

Pachetele care îndeplinesc testul prevăzut de expresie vor fi capturate. Deci rezultatul fiecărei expresii trebuie să fie „adevărat”.

Există câteva condiții de expresie care nu sunt întâlnite în general în scripturile shell și acestea sunt enumerate mai jos:

Len

Aceasta returnează lungimea unui pachet. Exemplu de utilizare: len! = 5.

proto [expr: size]

În acest obiect:

proto este numele unui strat de protocol. Poate fi:

  • eter
  • FDDI
  • ip
  • arp
  • RARP
  • tcp
  • udp
  • ICMP

expr este decalarea octeților. Acest lucru trebuie inclus, dar poate fi dat ca 0 pentru a lua valoarea de la începutul obiectului.

mărimea este opțional și reprezintă numărul de octeți din opțiune. Valoarea implicită este 1, dar poate fi, de asemenea, 2, 3 sau 4.

Exemple de utilizare:

eter [0] & 1! = 0 este valabil pentru tot traficul multicast.

ip [0] & 0xf! = 5 este valabil pentru toate pachetele IP cu opțiuni.

ip [6: 2] & 0x1fff = 0 este valabil pentru anagrame de date nefragmentate și fragmente zero de dateagrame de date fragmentate.

Exemple Tcpdump

În toate aceste cazuri, rezultatele comenzii vor fi afișate pe ecran, cu excepția cazului în care este inclusă o opțiune legată de fișier sau dacă comanda este lansată cu o redirecționare de ieșire stand, sau pipă către un fișier.

Afișează pachete care călătoresc de la sau către computer identificate ca lab1:

tcpdump host lab1

Afișează toate pachetele IP care călătoresc între lab1 și orice nod altul decât recepția:

tcpdump ip host lab1 și nu recepție

Afișați tot traficul ftp prin styx gateway internet:

tcpdump „gateway styx and (port ftp sau ftp-data)”

Afișează pachetele SYN și FIN ale fiecărei conversații TCP care implică o gazdă non-locală:

tcpdump ‘tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 și nu src și dst net localnet ‘

Afișați pachete de difuzare IP sau pachete multicast care nu au fost trimise prin difuzare Ethernet sau multicast:

tcpdump ‘eter [0] & 1 = 0 și ip [16] >= 224 ”

Formatul de ieșire Tcpdump

Formatul de înregistrare folosit pentru a scrie pachetele în fișiere a devenit un standard care a fost adoptat de mulți mai noi snifferi de pachete și analizatori de trafic.

Standardul nu este simplu și este adaptat pentru fiecare protocol. Cu toate acestea, acele aplicații care au adoptat formatul țin cont și de aceste variante. Formatul se numește pcap, care este numele procesului de captare a pachetelor folosit de tcpdump. Fișierele în acest format au de obicei .pcap extensie.

Tcpdump pentru Windows

Există o adaptare a tcpdump care rulează pe Windows. Aceasta se numește WinDump și se bazează pe WinPcap pentru captarea pachetelor în același mod în care tcpdump folosește funcția pcap a libpcap. WinPcap este deținut de fapt de Riverbed Technology. Aceeași companie este finanțatorul principal al Wireshark, care este probabil cel mai cunoscut și utilizat pe scară largă sniffer din lume. Există o versiune wireless a WinPcap, care se numește AirPcap. Puteți descărca WinDump, WinPcap și AirPcap gratuit de pe site-ul WinPcap.

Folosind sniffere de pachete

Utilitatea liniei de comandă tcpdump este utilă pentru cei care sunt familiarizați cu Unix și Linux sisteme de operare și bucurați-vă de scrierea de scripturi shell. Cei care nu au atât de multă experiență la crearea comenzilor cu expresii obișnuite la linia de comandă le va fi greu să folosească acest program.

Aveți alte opțiuni, deoarece există multe sniffere de pachete disponibile, cum ar fi Wireshark, menționat mai sus. Puteți afla mai multe despre alternative la tcpdump în această recenzie a snifferelor de pachete.

Ai un sniffer preferat de pachete? Sunteți fan al tcpdump sau preferați alternative mai ușor de utilizat? Lasă un mesaj în Comentarii secțiunea de mai jos și împărtășește-ți experiențele.

Imagine: capturarea pachetelor tcpdump de către Screenshots Linux prin Flickr. Licențiat conform CC BY 2.0

About the author

Comments

  1. aveți un sistem de operare Unix sau Unix (Linux, Mac OS), atunci tcpdump este o unealtă utilă pentru a examina traficul de rețea. Acest program poate fi instalat gratuit și nu este integrat în mod obișnuit în sistemele de operare, deci trebuie să îl instalați din registrul tcpdump GitHub sau de pe site-ul oficial tcpdump. Comanda tcpdump poate fi emisă cu opțiuni, parametri și / sau expresii obișnuite pentru a modifica comportamentul programului. Este important să cunoașteți aceste opțiuni pentru a putea utiliza tcpdump în mod eficient.

Comments are closed.