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
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.