Računalniki Windows internet

Tcpdump, kako ustaviti po določenem času. Tcpdump je uporaben vodnik s primeri. Prikaz zajetih paketov v HEX in ASCII z uporabo tcpdump -xx

Če morate analizirati ali prestreči omrežne pakete v Linuxu, je najbolje, da za to uporabite pripomoček konzole. tcpdump. Toda težava nastane v njegovem precej zapletenem upravljanju. Običajnemu uporabniku se bo zdelo, da je neprijetno delati s pripomočkom, vendar je to le na prvi pogled. Članek bo razložil, kako deluje tcpdump, kakšno sintakso ima, kako ga uporabljati, navedel pa bo tudi številne primere njegove uporabe.

Preberite tudi: Vodniki za nastavitev internetne povezave v Ubuntu , Debian , Ubuntu Server

Večina razvijalcev operacijskih sistemov, ki temeljijo na Linuxu, vključuje pripomoček tcpdump na seznam vnaprej nameščenih, če pa iz nekega razloga ni v vaši distribuciji, ga lahko vedno prenesete in namestite prek "terminal". Če vaš OS temelji na Debianu in so to Ubuntu, Linux Mint, Kali Linux in podobno, morate zagnati ta ukaz:

sudo apt install tcpdump

Med namestitvijo morate vnesti geslo. Upoštevajte, da se pri tipkanju ne prikaže, morate vnesti tudi simbol za potrditev namestitve "D" in pritisnite Vnesite.

Če imate Red Hat, Fedora ali CentOS, bo ukaz za namestitev videti tako:

sudo yam namestite tcpdump

Ko je pripomoček nameščen, ga lahko takoj uporabite. O tem in mnogih drugih stvareh bo govora kasneje v besedilu.

Sintaksa

Kot vsak drug ukaz ima tudi tcpdump svojo sintakso. Če to poznate, lahko nastavite vse potrebne parametre, ki bodo upoštevani pri izvajanju ukaza. Sintaksa je naslednja:

tcpdump options -i filtri vmesnika

Ko uporabljate ukaz, morate določiti vmesnik za sledenje. Filtri in možnosti niso obvezne spremenljivke, vendar omogočajo več prilagajanja.

Opcije

Čeprav možnosti ni treba navesti, je treba še vedno navesti tiste, ki so na voljo. Tabela ne prikazuje njihovega celotnega seznama, temveč le najbolj priljubljene, a so več kot dovolj za rešitev večine nalog.

Možnost Opredelitev
-A Omogoča vam razvrščanje paketov v formatu ASCII
-l Doda funkcijo pomikanja
-jaz Po vnosu morate določiti omrežni vmesnik, ki bo nadzorovan. Če želite začeti spremljati vse vmesnike, vnesite besedo "kateri koli" za možnost
-c Konča postopek sledenja po preverjanju določenega števila paketov
-w Ustvari besedilno datoteko s poročilom o preverjanju
-e Prikazuje raven internetne povezave podatkovnega paketa
-L Prikaže samo tiste protokole, ki jih podpira podani omrežni vmesnik
-C Med zajemanjem paketa ustvari drugo datoteko, če je njena velikost večja od podane
-r Odpre datoteko za branje, ki je bila ustvarjena z možnostjo -w
-j Format TimeStamp bo uporabljen za pisanje paketov
-J Omogoča ogled vseh razpoložljivih formatov TimeStamp
-G Služi za ustvarjanje datoteke z dnevniki. Možnost zahteva tudi začasno vrednost, po kateri bo ustvarjen nov dnevnik.
-v, -vv, -vvv Odvisno od števila znakov v možnosti bo izhod ukaza bolj podroben (povečanje je neposredno sorazmerno s številom znakov)
-f Prikaže ime domene naslovov IP v izhodu
-F Omogoča branje informacij ne iz omrežnega vmesnika, temveč iz določene datoteke
-D Prikazuje vse omrežne vmesnike, ki jih je mogoče uporabiti
-n Deaktivira prikaz domenskih imen
-Z Določa uporabnika, pod čigar računom bodo ustvarjene vse datoteke
-K Preskakovanje analize kontrolne vsote
-q Kratka predstavitev informacij
-H Omogoča zaznavanje glav 802.11s
-JAZ Uporablja se pri zajemanju paketov v načinu nadzora

Po analizi možnosti se bomo nekoliko nižje odpravili neposredno na njihove aplikacije. Medtem bodo upoštevani filtri.

Filtri

Kot je bilo omenjeno na samem začetku članka, lahko sintaksi tcpdump dodate filtre. Zdaj bodo upoštevani najbolj priljubljeni med njimi:

Vse zgornje filtre je mogoče kombinirati med seboj, tako da boste pri izdaji ukaza videli le informacije, ki jih želite videti. Da bi podrobneje razumeli uporabo zgornjih filtrov, je vredno navesti primere.

Primeri uporabe

Zdaj bo podana pogosto uporabljena sintaksa ukaza tcpdump. Vseh je nemogoče našteti, saj je lahko neskončno število njihovih različic.

Ogled seznama vmesnikov

Priporočljivo je, da vsak uporabnik najprej preveri seznam vseh njegovih omrežnih vmesnikov, ki jim je mogoče slediti. Iz zgornje tabele vemo, da moramo za to uporabiti možnost -D, zato v terminalu zaženite naslednji ukaz:

Kot lahko vidite, je v primeru osem vmesnikov, ki si jih lahko ogledate z ukazom tcpdump. V članku bodo navedeni primeri ppp0, lahko uporabite katero koli drugo.

Običajen zajem prometa

Če morate slediti enemu omrežnemu vmesniku, lahko to storite z možnostjo -jaz. Po vnosu ne pozabite navesti imena vmesnika. Tukaj je primer takega ukaza:

sudo tcpdump -i ppp0

Upoštevajte: pred samim ukazom morate vnesti "sudo", saj zahteva pravice superuporabnika.

Opomba: po pritisku na Enter bo "Terminal" neprekinjeno prikazoval zajete pakete. Če želite ustaviti njihov tok, morate pritisniti kombinacijo tipk Ctrl + C.

Če zaženete ukaz brez dodatnih možnosti in filtrov, boste videli naslednjo obliko za prikaz sledenih paketov:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Zastave, zaporedje 1:595, potrditev 1118, zmaga 6494, možnosti, dolžina 594

Kje je poudarjeno:

  • modra - čas, ko je bil paket prejet;
  • zelena - naslov pošiljatelja;
  • vijolična - naslov prejemnika;
  • siva - dodatne informacije o tcp;
  • rdeča - velikost paketa (prikazano v bajtih).

Ta sintaksa ima možnost prikaza v oknu "terminal" brez dodatnih možnosti.

Zajem prometa z možnostjo -v

Kot je znano iz tabele, možnost -v vam omogoča, da povečate količino informacij. Vzemimo primer. Preverimo isti vmesnik:

sudo tcpdump -v -i ppp0

Tukaj lahko opazite, da se je v izhodu pojavila naslednja vrstica:

IP (tos 0x0, ttl 58, id 30675, odmik 0, zastavice, proto TCP (6), dolžina 52

Kje je poudarjeno:

  • oranžna - različica protokola;
  • modra - življenjska doba protokola;
  • zelena - dolžina glave polja;
  • vijolična - različica paketa tcp;
  • rdeča - velikost paketa.

V sintaksi ukaza lahko dodate tudi možnost -vv oz -vvv, kar bo dodatno povečalo količino informacij, prikazanih na zaslonu.

Možnost -w in -r

Tabela možnosti je omenila možnost shranjevanja vseh izhodnih podatkov v ločeno datoteko, tako da si jih lahko pozneje ogledate. To je možnost -w. Uporaba je precej preprosta, samo jo določite v ukazu in nato vnesite ime prihodnje datoteke s pripono ".pcap". Oglejmo si primer:

sudo tcpdump -i ppp0 -w file.pcap

Upoštevajte: med pisanjem dnevnikov v datoteko se na zaslonu "Terminal" ne prikaže nobeno besedilo.

Če si želite ogledati posneti izhod, morate uporabiti to možnost -r, po katerem napišite ime predhodno posnete datoteke. Uporablja se brez drugih možnosti in filtrov:

sudo tcpdump -r file.pcap

Obe možnosti sta odlični, če morate shraniti velike količine besedila za kasnejše razčlenjevanje.

Filtriranje po IP

Iz tabele s filtri to vemo dst vam omogoča, da na zaslonu konzole prikažete samo tiste pakete, ki so bili prejeti z naslova, ki je določen v sintaksi ukaza. Tako je zelo priročno videti pakete, ki jih prejme vaš računalnik. Če želite to narediti, morate v ukazu samo določiti svoj IP naslov:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Kot lahko vidite, poleg dst, smo v ukazu registrirali tudi filter ip. Z drugimi besedami, računalniku smo rekli, naj bo pri izbiri paketov pozoren na svoj IP naslov in ne na druge parametre.

Prav tako lahko filtrirate odhodne pakete po IP-ju. Vzemimo za primer naš IP. Se pravi, zdaj bomo spremljali, kateri paketi so poslani iz našega računalnika na druge naslove. Če želite to narediti, zaženite naslednji ukaz:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Kot lahko vidite, smo v sintaksi ukaza spremenili filter dst na src, s čimer poveš napravi, naj poišče pošiljatelja po naslovu IP.

Filtriranje po gostitelju

Po analogiji z IP v ukazu lahko določimo filter gostitelj izločiti pakete z gostiteljem zanimanja. To pomeni, da boste morali v sintaksi namesto naslova IP pošiljatelja / prejemnika določiti njegovega gostitelja. Izgleda takole:

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

Na sliki to lahko vidite v "terminal" prikazani so samo tisti paketi, ki so bili poslani z našega IP-ja na gostitelja google.com. Kot razumete, lahko namesto Googlovega gostitelja vnesete katerega koli drugega.

Tako kot v primeru filtriranja po IP, v sintaksi dst se lahko nadomesti z src da si ogledate pakete, ki so poslani na vaš računalnik:

sudo tcpdump -i ppp0 src gostitelj google-public-dns-a.google.com

Upoštevajte: gostiteljski filter mora biti za dst ali src, sicer bo ukaz dal napako. V primeru filtriranja po IP, nasprotno, dst in src prideta pred filter ip.

Uporaba filtra in in ali

Če morate v enem ukazu uporabiti več filtrov hkrati, potem morate za to uporabiti filter in oz oz(odvisno od primera). Če v sintaksi določite filtre in jih ločite s temi operatorji, jih "naredite", da delujejo kot eno. Na primer, izgleda takole:

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

Iz sintakse ukaza je jasno, da želimo prikazati "terminal" vsi paketi, ki so bili poslani na naslov 95.47.144.254, in paketi, prejeti na isti naslov. Nekatere spremenljivke v tem izrazu lahko tudi spremenite. Na primer, namesto IP podajte HOST ali neposredno zamenjajte naslove.

Port in portrange filter

Filter pristanišče odlično v primerih, ko morate dobiti informacije o paketih z določenimi vrati. Torej, če želite videti samo odgovore ali poizvedbe DNS, morate določiti vrata 53:

sudo tcpdump -vv -i ppp0 vrata 53

Če si želite ogledati pakete http, morate vnesti vrata 80:

sudo tcpdump -vv -i ppp0 vrata 80

Med drugim je mogoče naenkrat spremljati vrsto vrat. Za to se uporablja filter. obseg vrat:

sudo tcpdump portrange 50-80

Kot lahko vidite, v povezavi s filtrom obseg vrat ni treba navajati dodatnih možnosti. Nastaviti morate le razpon.

Filtriranje protokola

Prav tako lahko prikažete samo promet, ki se ujema z določenim protokolom. Če želite to narediti, uporabite ime tega protokola kot filter. Poglejmo si primer udp:

sudo tcpdump -vvv -i ppp0 udp

Kot lahko vidite na sliki, po izvedbi ukaza v "terminal" prikazani so bili samo paketi s protokolom udp. V skladu s tem lahko filtrirate po drugih, npr. arp:

sudo tcpdump -vvv -i ppp0 arp

oz tcp:

sudo tcpdump -vvv -i ppp0 tcp

mrežasti filter

Operater mreža pomaga filtrirati pakete glede na njihovo omrežno oznako. Njegova uporaba je tako preprosta kot ostale - v sintaksi morate določiti atribut mreža, nato vnesite omrežni naslov. Tukaj je primer takega ukaza:

sudo tcpdump -i ppp0 net 192.168.1.1

Filtriranje velikosti paketa

Še dveh zanimivih filtrov nismo obravnavali: manj in večji. Iz tabele s filtri vemo, da služijo za prikaz večjih podatkovnih paketov ( manj) ali manj ( večji) velikosti, določene po vnosu atributa.

Recimo, da želimo spremljati samo pakete, ki ne presegajo 50-bitne oznake, potem bo ukaz videti takole:

sudo tcpdump -i ppp0 manj 50

Zdaj pa se prikažemo "terminal" paketi, večji od 50 bitov:

sudo tcpdump -i ppp0 večji od 50

Kot lahko vidite, se uporabljajo na enak način, razlika je le v imenu filtra.

Zaključek

Na koncu članka je mogoče sklepati, da je ukaz tcpdump je odlično orodje, s katerim lahko sledite vsakemu paketu podatkov, ki se prenaša po internetu. Toda za to ni dovolj samo vnesti sam ukaz "terminal". Želeni rezultat lahko dosežete le, če uporabljate vse vrste možnosti in filtrov ter njihove kombinacije.

Za sisteme UNIX obstaja veliko različnih vohalcev in analizatorjev prometa s priročnim grafičnim vmesnikom in bogatim naborom funkcij. Toda nobeden od njih se po prilagodljivosti, vsestranskosti in razširjenosti ne more primerjati s staromodnim tcpdump. Ta pripomoček je vključen v številne distribucije Linuxa in vse sisteme BSD iz škatle in vam lahko pomaga, ko druga orodja niso na voljo.

Uvod

Pripomoček tcpdump je omrežno vohanje paketov ukazne vrstice, ki nima niti grafičnega niti psevdografičnega vmesnika. Za začetnike se morda zdi neroden in preveč staromoden, a se v spretnih rokah spremeni v pravi švicarski nož za odpiranje morebitnih omrežnih paketov in protokolov. Izkušeni sistemski administratorji vedno priporočajo, da začetniki uporabljajo tcpdump namesto katerega koli drugega pripomočka zaradi jasnosti in preprostosti njegovih poročil.

Tcpdump se je rodil pred skoraj 25 leti na Univerzi Berkeley, še vedno se aktivno razvija in ostaja standard med podobnimi orodji za operacijski sistem UNIX. Knjižnico za zajemanje paketov libpcap, razvito posebej zanjo, zdaj uporabljajo skoraj vsi snifferji za sisteme UNIX in številni podobni programi za Windows.

V tem članku bomo obravnavali vse vidike dela s tcpdump, od osnov dela s programom do tega, kako uporabiti pripomoček za odkrivanje omrežnih napadov, anomalij in različnih vrst okvar.

Sam s konzolo

Poskusimo ugotoviti, kako deluje tcpdump in s katere strani je treba pristopiti. Odprite terminal in zaženite program kot root (kot vsak sniffer mora imeti tcpdump popoln dostop do omrežnih vmesnikov), pri čemer navedete ime omrežnega vmesnika in omejite število izhodnih paketov na deset:

# tcpdump -i wlan0 -c 10 -n

Stikalo -n onemogoči prevajanje naslovov IP v imena DNS. Zdaj pa poskusimo slediti izmenjavi samo z določenim gostiteljem, na primer z domačim usmerjevalnikom:

# tcpdump -i wlan0 -c 10 -n gostitelj 192.168.0.1 in vrata 53

Poglejmo, kaj nam je izpisal tcpdump, kot primer uporabimo dve vrstici, prikazani na posnetku zaslona "DNS poizvedba skozi oči tcpdump". Preprosto je mogoče razumeti, da gre za zahtevo DNS (vrata 53) od gostitelja 192.168.0.101 do gostitelja 192.168.0.1 in kasnejši odgovor. Toda kaj pomenijo vse druge številke in znaki?


Številke 16:22:41.340105 so čas, ko je bil paket poslan, vključno z milijoninkami sekunde (tako imenovani frac). Dve črki IP, kot morda ugibate, označujeta uporabljeni protokol omrežne plasti, ki jima sledi naslov: vrata za pošiljanje in naslov: ciljna vrata paketa. Vse, kar pride po debelem črevesu, je neposredno odvisno od uporabljenega protokola transportne ali aplikacijske plasti. tcpdump pozna nekatere protokole in jih lahko dešifrira v človeku berljivo obliko, druge pusti takšne, kot so, in preprosto navede vsebino paketa. V tem primeru je tcpdump dekodiral sporočila DNS in vrnil niz 49244+ A? ya.ru (23) , kar pomeni: zahteva (A?) je bila poslana na naslov, povezan z imenom ya.ru., skupna dolžina paketa minus glave TCP/IP je bila 23 bajtov. Prva številka je ID zahteve.

V naslednji vrstici vidimo odgovor, katerega oblika predstavitve je skoraj enaka zahtevi, le da je zdaj za identifikatorjem zahteve podatek o številu najdenih zapisov (8/2/3) in sami zapisi (A 213.180.204.3, A 77.88.21.3, A 87.250.250.3...).

Arzenal tcpdump ima podporo za številne protokole, zaradi česar lahko v berljivi obliki predstavi informacije o protokolih TCP, UDP in ICMP, SMB / CIFS, NFS, AFS, AppleTalk. Kaj pa, če tcpdump ne ve ničesar o uporabljenem protokolu aplikacijskega sloja ali ga ne more določiti? V normalni situaciji bo preprosto izpisal informacije o paketu. Lahko bi izgledalo nekako takole:

Zastave [.], zaporedje 3666073194:3666074622, ack 3281095139, win 2000, možnosti , dolžina 1428

To je paket TCP, format informacij o katerem je predstavljen v tcpdump je naslednji (polja so ločena z vejicami):

  • zastave - nastavite zastavice. Označena s simboli S (SYN), F (FIN), P (PUSH) in R (RST), pika pomeni, da zastavice niso nastavljene;
  • data-seqno - opisuje podatke, ki jih vsebuje paket v naslednji obliki: first:last, kjer sta prvi in ​​zadnji zaporedni številki prvega in zadnjega bajta poslanih podatkov, nbajtov;
  • ack - naslednja zaporedna številka (ISN + 1);
  • okno - velikost okna;
  • možnosti - tukaj lahko navedete dodatne informacije, na primer (največja velikost segmenta);
  • dolžina - dolžina paketa.

Vsi ti podatki so lahko zelo koristni pri preučevanju ali odpravljanju napak v protokolih in omrežnih aplikacijah, vendar nam o njihovi vsebini ne povejo ničesar. Če si želite ogledati vsebino paketa v šestnajstiški obliki, uporabite zastavico -X:

# tcpdump -i wlan0 -c 10 -n -X gostitelj 192.168.0.1 in vrata 80

Ta funkcija je zelo uporabna za razčlenjevanje protokolov, v katerih se podatki prenašajo v čistem besedilu, kot je HTTP. Za binarne protokole in protokole s šifriranjem bo seveda neuporaben.
Za več informacij o paketu lahko uporabite tudi zastavico -v. Nato se za IP-jem v oklepajih prikažejo podrobne informacije o paketu IP:

(tos 0x0, ttl 64, id 8339, odmik 0, zastavice , proto UDP (17), dolžina 51)

Na splošno je tukaj vse precej prozaično. Najprej pride vrsta storitve (TOS), sledi čas življenja paketa (TTL), ID paketa, odmik od začetka prvega paketa v verigi, zastavice, uporabljeni protokol transportne plasti (TCP, UDP, ICMP), in dolžino.


Napredne funkcije

Večino najpomembnejših funkcij tcpdump smo že obravnavali, vendar je njegova funkcionalnost veliko širša. Na primer, uporabili smo izjave gostitelja in vrat, da smo določili naslov in vrata, ki jih potrebujemo za filtriranje izhoda, kaj pa, če želimo videti samo pakete, ki gredo na določen naslov, ne pa tudi odhajajo z njega? Za to lahko uporabite operator src:

# tcpdump -i wlan0 -c 10 -n src 192.168.0.1

Obstaja tudi njegova obratna različica dst, zasnovana tako, da označuje ciljni naslov. Kot je prikazano zgoraj, lahko vse operaterje združite z operaterjem in (spremljanje omrežnega prometa, razen sej SSH in zahtev DNS):

# tcpdump -i vrata wlan0 niso 22 in vrata ne 53

Uporabite lahko tudi ali (ali) in razen (ne). Tudi tcpdump razume obsege vrat:

# tcpdump -i wlan0 -c 10 -n portrange 21-23

Sposobnost filtriranja paketov glede na njihovo velikost:

# tcpdump -i wlan0 -c 10 -n > 32 in<= 128

In razume podomrežne maske:

# tcpdump -i wlan0 c 10 -n src net 192.168.0.0/16 in dst net 10.0.0.0/8 ali 172.16.0.0/16

Ena izmed najbolj zanimivih lastnosti tcpdump je zmožnost filtriranja paketov na podlagi vsebine določenih bitov ali bajtov v glavah protokola. Za to se uporablja naslednji format: proto, kjer je proto protokol, expr je odmik v bajtih od začetka glave paketa, velikost pa je izbirno polje, ki označuje dolžino zadevnih podatkov (privzeto 1 bajt). . Na primer, če želite filtrirati samo pakete z nastavljeno zastavo SYN (začetek rokovanja TCP), uporabite naslednji vnos:

# tcpdump "tcp==2"

Kako deluje? Zelo preprosto. 13 bajtov glave TCP vsebuje natanko osem zastav, vsaka po en bit. Drugi bit je rezerviran za zastavico SYN. Zgornji vnos preprosto preveri, ali je ta bit nastavljen. Mimogrede, bolj berljiva oblika tega vnosa bi izgledala takole:

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

Praktična uporaba

Pripomoček tcpdump se običajno uporablja za dva namena: za odpravljanje napak v omrežju, omrežnih aplikacijah in novih protokolih ter za učenje osnov TCP/IP. Šli bomo po drugi poti in uporabili moč tcpdump za odkrivanje skeniranja gostitelja in omrežnih napadov.

Na sl. Slika 1 prikazuje, kako izgleda klasično skeniranje vrat TCP, ki ga izvede Nmap v dnevnikih tcpdump. Jasno lahko vidite, kako poskuša Nmap z naslova 192.168.0.100 vzpostaviti povezavo TCP z različnimi vrati s pošiljanjem paketa SYN (S v polju zastavice). Najprej se preiskuje vrata 8888, v odgovor pride paket RST, kar pomeni, da nobena storitev ne posluša na vratih, nato se preiskuje vrata 587 z enakim rezultatom. Končno Nmap pošlje paket SYN na vrata 22 (SSH) in prejme odgovor v obliki paketa SYN-ACK:

192.168.0.100.43337 > 192.168.0.111.22: Zastave[S], zaporedje 2610024277, ... 43337 > 192.168.0.111.22: Zastave [.], ack 1, ...

Vrata so odprta in zdaj lahko Nmap uspešno zapre povezavo s pošiljanjem paketa RST in se premakne na naslednja vrata. Vendar pa naredi nekaj pametnejšega: pošlje potrdilo o prejemu paketa ACK in se takoj premakne na naslednja vrata. To vedenje vam omogoča, da zaobidete nekatere sisteme za odkrivanje vdorov, vendar ne morete zlahka preslepiti osebe, oborožene z vohačem.

Bodite pozorni tudi na število vrat, ki jih je treba razvrstiti, niso ustvarjena naključno, ampak so izbrana ob upoštevanju največje razširjenosti. To pomeni, da se izvaja hitro skeniranje, ali natančneje, Nmap najverjetneje deluje brez kakršnih koli zastav.



Zdaj pa poglejmo še eno metodo za odkrivanje odprtih vrat - SYN skeniranje (nmap -sS). To vrsto skeniranja običajno imenujemo skrito, saj se med tem nikoli ne vzpostavi popolna povezava TCP, kar pomeni, da podatki o dejstvu povezave niso vključeni v dnevnike. Izhod tcpdump za to vrsto skeniranja je prikazan na sliki 1. 2. Zelo je podoben dnevniku običajnega skeniranja TCP, vendar je odziv skenerja na odprta vrata zdaj drugačen:

192.168.0.100.48585 > 192.168.0.111.22: Zastave[S], zaporedje 1679394613, ... 48585 > 192.168.0.111.22: Zastave[R], 3 zaporedje 1614

Vidi se, da po prejemu odobritvenega paketa SYN-ACK skener ne zaključi povezave, ampak jo takoj prekine, pri čemer se izogne ​​vstopu v dnevnike. Na sl. 3 lahko vidite rezultat skeniranja UDP. Tukaj je vse zelo preprosto, Nmap našteje vrata z možnimi storitvami UDP in vsakemu od njih pošlje paket ničelne dolžine. Če so vrata zaprta, OS pošlje nazaj nedosegljivo sporočilo ICMP:

16:41:48.798310 IP 192.168.0.100.61020 > 192.168.0.111.18869: UDP, dolžina 0

V nasprotnem primeru se pristanišče šteje za odprto. Druga metoda skeniranja je ničelno skeniranje s pošiljanjem paketov brez nastavljenih zastavic (nmap -sN). Reakcija na takšne pakete se lahko razlikuje glede na operacijski sistem, a kot lahko vidite iz naslednjega seznama, se Linux nanje odzove s pošiljanjem paketov RST:

192.168.0.100.39132 > 192.168.0.111.256: Zastave , win 3072, dolžina 0 192.168.0.111.256 > 192.168.0.100.39132 ...

Napadalec lahko uporabi tudi božično skeniranje, pri katerem imajo paketi nastavljene zastavice FIN, URG in PUSH (zdi se, da paket žari z zastavicami kot božično drevo):

192.168.0.100.35331 > 192.168.0.111.5544: Zastave , zaporedje 3998959601, zmaga 4096, urg 0, dolžina 0

Kot lahko vidite, je reakcija na takšne pakete enaka. Pregled ACK (-sA) se bo pojavil v dnevnikih tcpdump kot pošiljanje več paketov z nastavljeno zastavo ACK in odzivanje nanje s pošiljanjem paketov RST. Če pa je v sistemu nameščen požarni zid, odzivnih sporočil ne bo, Nmap pa bo lahko razumel, ali se vrata filtrirajo.

S pomočjo tcpdump lahko zasledite tudi različne vrste poplav. Na primer, klasična poplava ICMP v dnevnikih bo videti tako:

16:43:06.008305 IP 192.168.0.100 > 192.168.0.111: ICMP tip-#68, dolžina 1032 192.168.0.100 > 192.168.0.111: ICMP tip-#68, dolžina 192.168.0.111

Posebej pomembno je polje, ki vsebuje čas, ko je bil paket prejet. Nobena običajna aplikacija ne bo poslala veliko sporočil ICMP v časovnem obdobju, ki je enako tisočinki sekunde. Druge vrste poplav (npr. SYN) so opredeljene na popolnoma enak način.

Interakcija z drugimi programi

Ena najpomembnejših prednosti tcpdump je ta, da je format njegovih poročil v času obstoja programa dejansko postal standard za vse vohače in ga danes razumejo vsa bolj ali manj resna orodja za analizo prometa. Na primer, tcpdump se lahko uporabi za generiranje izpisa na oddaljenem računalniku, nato pa ga pošlje lokalnemu računalniku in ga razčleni z wireshark:

$ ssh [email protected] tcpdump -w - "vrata !22" | wireshark -k -i -

Tukaj smo uporabili možnost -w - za pisanje izpiska v stdout in ga preusmerili na wireshark, ki teče na lokalnem računalniku. Na enak način lahko analizirate promet z uporabo snort:

$ ssh [email protected] xample.ru "tcpdump -nn -i eth1 -w -" | smrčanje -c /etc/snort/snort.conf -r -

S preusmeritvijo izhoda programa na vhod grep lahko najdete različne težave v omrežju, na primer prepoznate pakete z napačno kontrolno vsoto, ki jo lahko prikažete z zastavo -vv:

# tcpdump -nnvv -r dump.cap tcp | grep -v "tcp vsota v redu" | wc-l

Admin stvari

Možnost filtriranja paketov na podlagi podatkov glave, o kateri smo razpravljali na začetku prvega poglavja, je zelo uporabna za odpravljanje napak v različnih protokolih in iskanje težav z omrežjem. Na primer, lahko ga uporabimo za lovljenje omrežnih paketov, posredovanih prek Cisco Discovery Protocol, prek katerega si Ciscovi usmerjevalniki izmenjujejo informacije o topologiji in statusu omrežja:

# tcpdump -nn -v -i eth0 -s 1500 -c 1 "eter == 0?2000"

Na enak način lahko ujamete vse pakete, poslane prek protokola DHCP (ODKRITE, ZAHTEVA, INFORMIRANJE), da prepoznate težave s povezavo odjemalca:

# tcpdump -i eth0 -vvv -s 1500 "((vrata 67 ali vrata 68) in (udp = 0x1))"

Ali pa ulovite pakete, poslane kot del preverjanja pristnosti POP3:

# tcpdump -i eth0 "tcp vrata pop3 in ip = 85 in ip = 83" -s 1500 -n

omrežje grep

Sniffer tcpdump je dober zaradi svoje vsestranskosti in različnih zmožnosti, vendar ga ni tako enostavno in priročno uporabljati za iskanje določenih podatkov znotraj poslanih paketov. To nalogo veliko bolje obvlada ngrep, ki je zasnovan tako, da prikaže prehajajoče omrežne pakete, ki se ujemajo z dano masko.

Če želite na primer poiskati parametre, ki jih posredujeta metodi GET in POST znotraj seje HTTP, lahko uporabite naslednji ukaz:

# ngrep -l -q -d eth0 "^GET |^POST " tcp in vrata 80

Iskanje lenuhov:

# ngrep -i "game*|p0rn|adult" -W byline -d eth0 > slackers.txt

Analiziramo promet SMTP na vseh omrežnih vmesnikih:

# ngrep -i "rcpt na|pošta iz" tcp vrata smtp

možnosti tcpdump

Tabela najbolj zanimivih in uporabnih zastav tcpdump.

  • -i [vmesnik] - omrežni vmesnik za poslušanje, določite poljubno za vse.
  • -n Ne razreši naslovov IP v imena DNS.
  • -nn Ne prevajajte naslovov IP in številk vrat.
  • -X - prikaže vsebino paketa v besedilni in šestnajstiški obliki.
  • -XX - enako plus vsebina okvirja Ethernet.
  • -v, -vv, -vvv - povečajte količino prikazanih informacij in paketov (več, več, vse).
  • -c [n] Pokaži samo prvih n paketov.
  • -s [n] - število prikazanih bajtov za vsak paket (lahko se zmanjša zaradi berljivosti ali poveča za več informacij).
  • -S - prikaže absolutne zaporedne številke TCP.
  • -e - pokaži glave okvirja ethernet.
  • -q - prikaži manj informacij (za berljivost).
  • -E - dešifriranje prometa IPsec z uporabo podanega ključa.
  • -w - shrani izpis programa v datoteko, argument - uporablja se za določitev stdout.

sklepi

V rokah dobro obveščenega uporabnika se tcpdump spremeni v zmogljivo orodje ne le za odpravljanje napak, ampak tudi za raziskovanje anomalij. Zahvaljujoč bogatemu naboru operaterjev in zastav, ga lahko uporabite, da izstopite iz omrežnega zraka in raziščete, kaj resnično potrebujete.

Tcpdump je izjemno priročen omrežni analizator, ki je zelo koristen tako za skrbnike omrežja kot za varnostnike. Seveda je za pridobitev največje količine informacij pri delu s tcpdump preprosto potrebno razumeti sklad protokola TCP / IP. Za udobje lahko uporabite na primer bolj priročne in inteligentne programe, vendar pogosto obstajajo situacije, ko ni mogoče namestiti dodatnih storitev na preizkušeni stroj, potem pa je tcpdump preprosto nenadomestljiv, skrbnik, zaradi paketa analize, se ne zbudi, postavi na strežnik unix X- Windows, še posebej, ker je na večini sistemov unix pripomoček tcpdump privzeto na voljo.

Razumevanje protokola TCP/IP daje širok prostor za uporabo analizatorja ter odpravljanje težav in odpravljanje težav v omrežju z razčlenjevanjem paketov. Ker optimalna uporaba tega pripomočka zahteva dobro razumevanje omrežnih protokolov in njihovega delovanja, je smešna situacija, v kateri mora inženir vseeno poznati in razumeti omrežne komunikacijske mehanizme. vključno z tcpdump je uporaben v vseh pogledih, od odpravljanja težav do samoizobraževanja.

Spodaj je nekaj možnosti, ki vam bodo pomagale uporabiti ta pripomoček na najbolj popoln in podroben način, še posebej, ker je vse te škatle in tipke precej enostavno pozabiti, ti primeri pa so zelo uporabni za osvežitev pomnilnika.

Prvo uporabljeno stikalo je -n, ki prepoveduje poskuse pretvorbe naslovov v imena domen, s čimer dobimo čiste naslove IP z vrati.

Drugi je -X, ki vsakemu paketu pove, naj izpiše šestnajstiško (šestnajstiško) in ASCII vsebino paketa.
In zadnja možnost je -S, ki nadomesti izhod relativnega oštevilčenja TCP z absolutnim oštevilčenjem. Bistvo je, da so z relativnim številčenjem nekatere težave morda skrite vaši pozornosti.

Razumeti morate, da je glavna prednost tcpdump pred drugimi pripomočki ta, da omogoča podrobno in ročno razčlenjevanje paketov. Prav tako se morate spomniti, da tcpdump privzeto uporablja samo prvih 68 bajtov paketa, vklj. če želite videti več, uporabite številsko stikalo -s, kjer je številka število bajtov, ki jih želite zajeti. Če je številka nastavljena na 0, bo prišlo do popolnega zajetja paketa, zato je bolje uporabiti vrednost 1514, ki bo omogočila popoln zajem standardnega paketa Ethernet.

Seznam najpogosteje uporabljenih ključev:
-c: nastavite, da preverite velikost zajete datoteke pred vsakim naslednjim snemanjem zajetega paketa, če je velikost večja, se datoteka shrani in posnetek gre v novo datoteko
-e : natisnite glavo etherneta (plast povezave) na vsako vrstico za izpis
-i any: poslušajte na vseh vmesnikih, če potrebujete ves promet.
-n: onemogoči prevajanje naslovov v imena domen ali simbolov
-nn: onemogoči prevajanje naslovov in vrat v imena domen ali simbolov
-q: Natisnite informacije na kratko, za ceno zmanjšanja izhodnih informacij protokola.
-X: izpišite tako šestnajstiško kot ASCII vsebino paketa
-v, -vv, -vvv: Določa dodatne informacije o zajetih paketih, ki se izpišejo, kar omogoča širšo analizo.
Nekaj ​​primerov za uporabo:

# Standardni paketni izhod
tcpdump -nS
# Razširjen standardni izhod
tcpdump -nnvvS
# Globoko razčlenjevanje paketov
tcpdump -nnvvXS
# Najbolj podrobne prometne informacije
tcpdump -nnvvXSs 1514

Izrazi vam omogočajo, da izvajate bolj ciljno usmerjene preglede in definirate vrste prometa. Zaradi sposobnosti uporabe izrazov je tcpdump zelo produktivno orodje v rokah sistemskega skrbnika. Obstajajo tri glavne vrste izrazov: tip, dir in proto.
Možnosti izraza tipa so gostitelj, omrežje in vrata.
Za izražanje smeri, ki jo poda dir, so na voljo možnosti src, dst, src ali dst ter src in dst.
Nekaj ​​standardnih izrazov:

gostitelj // analizira promet na podlagi naslova IP (deluje tudi s simbolnimi imeni, če -n ni nastavljen)
gostitelj tcpdump 1.2.3.4

src, dst // analizira promet samo za določen cilj ali oddajnik
tcpdump src 2.3.4.5
tcpdump dst 3.4.5.6

net // zajemanje prometa, ki pripada določenemu omrežju
tcpdump net 1.2.3.0/24

proto // deluje s tcp, udp in icmp. Ne smemo pozabiti, da proto ni omenjen
tcpdump icmp

vrata // analizira promet iz določenega pristanišča (vhodnega ali odhodnega)
vrata tcpdump 3389

src, dst port // filter na podlagi vhodnih ali odhodnih vrat
tcpdump src vrata 1025
tcpdump dst vrata 3389

Toda najmočnejše orodje so operandi, ki omogočajo nastavitev pogojev za izraze in možnosti za podrobnejšo izolacijo informacij o analiziranem prometu.

IN
in ali &&
ALI
ali ali ||
RAZEN
ne ali!

Promet TCP iz vira 10.15.123.33 s ciljnimi vrati 3379:

# tcpdump -nnvvS tcp in src 10.15.123.33 in vrata dst 3379

Promet, ki prihaja iz omrežja 192.168 s ciljem v omrežjih 10 ali 172.16:

# tcpdump -nvX src net 192.168.0.0/16 in dst net 10.0.0.0/8 ali 172.16.0.0/16

Ne-ICMP promet s ciljem 192.168.0.2 in iz omrežja 172.16:

# tcpdump -nvvXSs 1514 dst 192.168.0.2 in src net 172.16.0.0/16 in ne icmp

Promet iz gostiteljev Eros ali Ares, vendar ne gre na standardna vrata SSH (za ta izraz je potrebna ločljivost imena):

# tcpdump -vv src eros ali ares in ne dst vrata 22

Kot lahko vidite iz zgornjih primerov, lahko zgradimo kateri koli izraz za kateri koli namen. Prav tako lahko s kompleksno sintakso iz analize izločimo kateri koli promet.

Upoštevajte tudi, da lahko izdelamo poizvedbe, ki vključujejo skupine in skupine možnosti, podane v eni poizvedbi. Da pa bo pripomoček tcpdump pozoren nanje, jih je treba postaviti v oklepaje in vzeti izraz v enojnih narekovajih:
Promet, ki prihaja od gostitelja 10.0.2.4 do ciljnih vrat 3379 ali 22:
# tcpdump 'src 10.0.2.4 in (dst vrata 3379 ali 22)'

Prav tako je mogoče filtrirati na podlagi zastav TCP, na primer za izolacijo paketov SYN ali RST:

Razčlenite vse pakete URG:
# tcpdump 'tcp & 32 != 0'

Razčlenite vse pakete ACK:
# tcpdump 'tcp & 16 != 0'

Razčlenite vse PSH pakete:
# tcpdump 'tcp & 8 != 0'

Razčlenite vse pakete RST:
# tcpdump 'tcp & 4 != 0'

Razčlenite vse SYN pakete:
# tcpdump 'tcp & 2 != 0'

Ta vadnica vam bo pokazala, kako izolirati promet na različne načine – od IP-ja, prek vrat, do protokola, do prometa na ravni aplikacij – in tako zagotovite, da boste čim hitreje našli točno tisto, kar potrebujete.

tcpdump je orodje, ki bi se ga morali naučiti vsi, kot osnova za analizo paketov.

Namestite tcpdump z apt install tcpdump (Ubuntu) ali yum install tcpdump (Redhat/Centos)

Začnimo z osnovnim ukazom, ki nam bo zagotovil promet HTTPS:

tcpdump -nn S X vrata 443

04:45:40.573686 IP 78.149.209.110.27782 > 172.30.0.144 .443 : Zastave [.], ack 278239097, zmaga 28, možnosti , dolžina 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

En paket lahko dobite z -c 1 oz nštevilo z -c n .

To je pokazalo nekaj prometa HTTPS, pri čemer je bil na desnem delu izhoda viden šestnajstiški prikaz (žal, šifriran je). Ne pozabite – ko ste v dvomih, zaženite zgornji ukaz s pristaniščem, ki vas zanima, in že bi morali biti na poti.

Primeri

PacketWizard™ v resnici ni zaščitena blagovna znamka, vendar bi morala biti.

praktik, ki se pripravlja na zagon tcpdump

Zdaj, ko lahko dobite osnovni promet, pojdimo skozi številne primere, ki jih boste verjetno potrebovali med delom v omrežju, varnosti ali kot katero koli vrsto PacketWizard™.

Vse na vmesniku

Oglejte si, kaj se dogaja, tako da pogledate, kaj se dotika vašega vmesnika.

Ali pa dobiti vse vmesniki z -i poljuben .

tcpdump -i eth0

Poiščite promet po IP-ju

Ena najpogostejših poizvedb, ki uporablja host , lahko vidite promet, ki gre na ali iz 1.1.1.1.

vrste izrazov:

gostitelja, omrežja in vrat.

src in dst.

gostitelja, omrežja in vrat.

tcp, udp, icmp in še veliko več.

gostitelj tcpdump 1.1.1.1

06:20:25.593207 IP 172.30.0.144.39270 > ena.one.one.one .domena: 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)

Če želite videti promet samo v eno ali drugo smer, lahko uporabite src in dst .

tcpdump src 1.1.1.1
tcpdump dst 1.0.0.1

Iskanje paketov po omrežju

Če želite poiskati pakete, ki gredo v ali iz določenega omrežja ali podomrežja, uporabite možnost net.

To lahko kombinirate tudi z možnostma src in dst.

tcpdump net 1.2.3.0/24

Pridobite vsebino paketa s hex izhodom

Hex izhod je uporaben, če želite videti vsebino zadevnih paketov, in ga je pogosto najbolje uporabiti, ko izolirate nekaj kandidatov za natančnejši pregled.

tcpdump -c 1 -X icmp

Povzetek

Tukaj so odvzemi.

  1. tcpdump je dragoceno orodje za vse, ki se želijo vključiti v mreženje ali .
  2. Surov način, kako se povezuje s prometom, v kombinaciji z natančnostjo, ki jo ponuja pri pregledovanju paketov, je najboljše možno orodje za učenje TCP/IP.
  3. Analizatorji protokolov, kot je Wireshark, so odlični, a če želite resnično obvladati paketno fu, morate najprej postati eno s tcpdump.

No, ta temelj bi vas moral okrepiti, vendar mora biti stran man vedno priročna za najbolj napredne in enkratne scenarije uporabe. Resnično upam, da vam je bilo to koristno in vas prosimo, če imate kakršna koli vprašanja.

opombe

  1. Trenutno (nekako) pišem knjigo o tcpdump za No Starch Press.
  2. Vodilna slika je iz SecurityWizardry.com.
  3. Nekateri izolacijski filtri, izposojeni iz

ZAKAJ TCPDUMP?

Tcpdump je vrhunsko orodje za analizo omrežja za varnostne strokovnjake. Za tiste, ki želijo dobiti popolno razumevanje TCP / IP, je nujno, da dovolj razumejo to pomembno aplikacijo. Mnogi ljudje raje uporabljajo orodja višje ravni, kot je Wireshark, vendar mislim, da je to napaka.

Ko uporabljate orodje, ki prikazuje omrežni promet na bolj naraven (preprost) način, kompleksnost analize pade neposredno na osebo in ne na aplikacijo. Ta pristop razvija razumevanje zbirke TCP/IP, zato toplo priporočam uporabo tcpdump namesto drugih orodij, kadar koli je to mogoče.

15:31:34.079416 IP (tos 0x0, ttl 64, id 20244, odmik 0, zastave , proto: TCP(6), dolžina: 60) vir.35970 > cilj.80: S, cksum 0x0ac1 (pravilno), 2264 2647022145 (0) Win 5840 0x0000: 4500 003c 4f14 4006 7417 0AFB 0257 E .. 0x0010: 4815 222A 8C82 00550 5A41 0000 0000 H. "*... ​​​​P..za .... 0x002 16D0 0AC1 0000 0204 0204 05b4 0402 080a ................ 0x0030: 14b4 1555 0000 0000 0103 0302

OSNOVE

Spodaj je nekaj možnosti, ki jih lahko uporabite pri konfiguriranju tcpdump. Z lahkoto jih pozabite in/ali zamenjate z drugimi vrstami filtrov, kot je Wireshark, zato vam lahko ta stran služi kot referenca. Tu so glavne, ki se jih tudi sam rad spomnim, odvisno od tega, kaj gledam.

OPCIJE

  • -i any: poslušajte na vseh vmesnikih, da vidite, ali vidite promet.
  • -i eth0: poslušaj na vmesniku eth0.
  • -D: Prikaži seznam razpoložljivih vmesnikov
  • -n: Prikaži naslove IP namesto imen gostiteljev.
  • -nn: Prikaz naslovov IP in številk vrat namesto imen gostiteljev in imen protokolov.
  • -q: Prikaže najmanjšo količino informacij o paketu.
  • -t: Ne prikaži časovnega žiga v vsaki vrstici.
  • -tttt: Določa, da se časovni žigi izpišejo v privzeti obliki za vsako vrstico.
  • -X: Prikaži vsebino paketa tako v šestnajstiškem kot v ASCII.
  • -XX: Enako kot -X, vendar prikazuje tudi glavo etherneta.
  • -v, -vv, -vvv: povečajte količino vrnjenih informacij o paketu.
  • -c: pridobi samo x število paketov in nato ustavi.
  • -s: Določite dolžino (velikost) zajema v bajtih. Uporabite -s0, da dobite vse, razen če namerno zgrabite manj.
  • -S: natisnite absolutne zaporedne številke.
  • -e: Pridobite glavo etherneta.
  • -q: Pokaži minimalne informacije o paketu.
  • -E: Dešifrirajte promet IPSEC tako, da zagotovite šifrirni ključ.
[Vrednost snaplength, privzeta za tcpdump 4.0, se je spremenila iz 68 bajtov na 96 bajtov. Čeprav vam bo to dalo več informacij o paketu, to ne bodo vse informacije. Uporabite -s1514 ali -s0 za popolno pokritost]

IZRAZI

V tcpdump vam izrazi omogočajo, da skrajšate različne vrste prometa in poiščete točno tisto, kar iščete. Obvladovanje izrazov in njihovo kreativno združevanje je tisto, zaradi česar je tcpdump resnično močan.

Obstajajo tri glavne vrste izrazov: tip, dir in proto.

Vrste možnosti: gostitelj, omrežje in vrata.

Imeniki vam omogočajo src, dst in kombinacije le-teh.

Protokol vam omogoča, da definirate: tcp, udp, icmp, ah in še veliko več.

PRIMERI

Zdaj, ko smo videli, katere možnosti imamo, si oglejmo nekaj primerov iz resničnega sveta, ki jih bomo verjetno videli pri svojem vsakdanjem delu.

GLAVNO SPOROČILO

Samo poglejte, kaj se dogaja, tako da si ogledate vse vmesnike.

# tcpdump -i poljuben

POSEBNI Vmesnik

Osnovni pogled na dogajanje na določenem vmesniku.

# tcpdump -i eth0

PREDSTAVITEV SUROVIH IZHODOV

Podroben izpis brez razreševanja imen gostiteljev ali številk vrat, absolutnih zaporednih številk in človeku berljivih časovnih žigov.

# tcpdump -ttttnnvvS

NAJDI PROMET PO IP-ju

Ena najpogostejših poizvedb vam bo pokazala promet iz 1.2.3.4, pa naj bo to izvor ali cilj.

# gostitelj tcpdump 1.2.3.4

OGLEJTE SI VEČ INFORMACIJ O HEX PAKETU

Šestnajstiški izhod je uporaben, če želite videti vsebino zadevnih paketov, in ga je pogosto najbolje uporabiti, če izolirate več kandidatov za natančnejši pregled.

# tcpdump -nnvXSs 0 -c1 icmp tcpdump: poslušanje na eth0, vrsta povezave EN10MB (Ethernet), 23:11:10.370321 IP (tos 0x20, ttl 48, id 34859, odmik 0, 4, 2, dolžine 0, 2 zastavice) > 72.21.34.42: icmp 64: echo request seq 0 0x0000: 4520 0054 882b 0000 3001 7cf5 45fe d52b E..T.+..0.|.E..+ 0x0815 0x4015 0x025 "0. 50"..%..D 0x0020: ae5e 0500 0809 0a0b 0c0d 0e0f 1011 1213 .^............... 0x0030: 1415 1617 1819 1a1b 1c1d 02 .1e. ........!"# 0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&"()*+,-./0123 0x0050: 3435 3637 4567 1 paket prejeto s filtrom 0 paketov po jedru

FILTRIRANJE PO VIRU IN CILJU

Izločevanje prometa na podlagi vira ali cilja je zelo enostavno z uporabo src in dst.

# tcpdump src 2.3.4.5 tcpdump dst 3.4.5.6

ISKANJE PAKETOV PO OMREŽJU

Če želite poiskati pakete v ali iz določenega omrežja, uporabite možnost net. To lahko kombinirate z možnostmi src ali dst.

# tcpdump net 1.2.3.0/24

PRIKAŽI PROMET, POVEZAN S POSEBNIM PRISTANIŠČEM

Določena prometna vrata lahko najdete z možnostjo vrat, ki ji sledi številka vrat.

# tcpdump vrata 3389 tcpdump src vrata 1025

PRIKAŽI PROMET ENEGA PROTOKOLA

Če iščete določeno vrsto prometa, lahko uporabite tcp, udp, icmp in še veliko več.

# tcpdump icmp

PRIKAŽI SAMO IP6 PROMET

Z možnostjo protokola lahko najdete tudi ves promet IP6.

POIŠČITE PROMET Z UPORABO PRISTANIŠČKIH PASOV

Za iskanje prometa lahko uporabite tudi obseg vrat.

# tcpdump portrange 21-23

POIŠČITE PROMET GLEDE NA VELIKOST PAKET

Če iščete pakete določene velikosti, lahko uporabite te možnosti. Uporabite lahko majhne, ​​velike ali kakršne koli simbole, ki jih pričakujete od matematike.

# tcpdump manj kot 32 tcpdump večji od 64 tcpdump<= 128

PISNI ZAPISI V DATOTEKO

Pogosto je koristno shraniti izhode paketov v datoteko za kasnejšo analizo. Te datoteke so znane kot datoteke PCAP (PEE-cap) in jih lahko obdeluje na stotine različnih aplikacij, vključno z omrežnimi analizatorji, sistemi za odkrivanje vdorov in seveda samim tcpdump. Tukaj pišemo datoteko z imenom capture_file s stikalom -w.

# tcpdump vrata 80 -w capture_file

BRANJE DATOTEK PCAP

Datoteke PCAP lahko berete s stikalom -r. Upoštevajte, da lahko pri branju datoteke uporabite vse običajne ukaze v tcpdump; omejeni ste le z dejstvom, da ne morete zajeti in obdelati nečesa, kar v datoteki ne obstaja.

# tcpdump -r capture_file

NAPREDNO

Zdaj, ko smo videli, kaj lahko naredimo z osnovami z nekaj primeri, si oglejmo nekaj naprednejših stvari.

VSE GRE ZA KOMBINACIJE

Posameznost teh različnih stvari je močna, toda prava čarovnija tcpdump izvira iz tega, da lahko združite možnosti na ustvarjalne načine, da izolirate točno tisto, kar iščete. Obstajajo trije načini za ustvarjanje kombinacij, in če ste se sploh učili programiranja, vam bodo zelo dobro znani.

IN
in ali &&

ALI
ali ali ||

RAZEN
ne ali!

Tukaj je nekaj primerov kombiniranih ukazov.

Z DOLOČENEGA IP-ja IN DODELJENO DOLOČENIM VRATAM

Najdimo ves promet od 10.5.2.3 do katerega koli gostitelja na vratih 3389.

Tcpdump -nnvvS src 10.5.2.3 in vrata dst 3389

IZ ENEGA OMREŽJA DO DRUGEGA

Oglejmo si ves promet, ki prihaja iz 192.168.x.x in se premika proti omrežjih 10.x ali 172.16.x.x, in prikazali bomo šestnajstiški izhod brez imena gostitelja in eno stopnjo dodatnih podrobnosti.

Tcpdump -nvX src net 192.168.0.0/16 in dst net 10.0.0.0/8 ali 172.16.0.0/16

PROMET NE-ICMP GRE NA DOLOČEN IP

To nam bo pokazalo ves promet, ki gre na 192.168.0.2, ki ni ICMP.

tcpdump dst 192.168.0.2 in src net in ne icmp

PROMET OD gostitelja, KI NI V DOLOČENEM PRISTANIŠČU

To nam bo pokazalo ves promet z gostitelja, ki ni promet SSH (ob predpostavki, da se uporabljajo privzeta vrata).

Tcpdump -vv src mars in ne dst vrata 22

Kot lahko vidite, lahko ustvarite poizvedbe, da najdete skoraj vse, kar potrebujete. Ključno je, da najprej natančno določite, kaj iščete, in nato zgradite sintakso za izolacijo določene vrste prometa.

Kompleksno združevanje in posebni znaki

Upoštevajte tudi, da boste pri ustvarjanju zapletenih poizvedb morda morali svoje parametre združiti z enojnimi narekovaji. Enojni narekovaji se uporabljajo za sporočanje tcpdump, naj prezre nekatere posebne znake - v tem primeru tistega v oklepajih "()". Enako metodo lahko uporabite za združevanje z drugimi izrazi, kot so gostitelj, vrata, omrežje itd. Poglejte spodnji ukaz.

# Promet, ki je iz 10.0.2.4 IN je namenjen za vrata 3389 ali 22 (napačna) tcpdump src 10.0.2.4 in (dst vrata 3389 ali 22)

Če ste ta zelo uporaben ukaz poskušali zagnati ob drugi priložnosti, boste dobili napako v oklepaju. To lahko popravite tako, da ubežite oklepajem (tako da vsakemu dodate predpono z \) ali da celoten ukaz postavite v enojne narekovaje:

# Promet, ki je iz 10.0.2.4 IN namenjen vratom 3389 ali 22 (pravilno) # tcpdump "src 10.0.2.4 in (dst port 3389 ali 22)"

Izolirajte specifične zastave TCP

Promet lahko zajamete tudi na podlagi določenih zastav TCP.

[OPOMBA: spodnji filtri najdejo te različne pakete, ker tcp opazi odmik 13 v glavi TCP, številka predstavlja lokacijo v bajtu, eh! = 0 pomeni, da je ta zastavica nastavljena na 1, tj. je vklopljen. ]

Pokaži vse NUJNE (URG) pakete...

# tcpdump "tcp & 32!=0"

Pokaži vse pakete ACKNOWLEDGE (ACK) …

# tcpdump "tcp & 16!=0"

Pokaži vse pakete PUSH (PSH) …

# tcpdump "tcp & 8!=0"

Pokaži vse pakete RESET (RST) ...

# tcpdump "tcp & 4!=0"

Pokaži vse pakete SYNCHRONIZE (SYN) …

# tcpdump "tcp & 2!=0"

Pokaži vse FINISH (FIN) pakete ...

# tcpdump "tcp & 1!=0"

Prikaži vse pakete SYNCHRONIZE / ACKNOWLEDGE (SYNACK) …

# tcpdump "tcp=18" [Opomba: v izhodu polja tcpdump je prikazana samo zastava PSH, RST, SYN in FIN. Prikazana sta URG in ACK, vendar sta prikazana drugje v izhodu kot v polju zastavice. ]

Vendar, tako kot pri najmočnejših orodjih, obstaja veliko načinov, kako narediti, kar potrebujete. Naslednji primer prikazuje drug način za zajemanje paketov s posebnimi nabori zastav TCP.

# tcpdump "tcp == tcp-syn"

Odstranite zastavice RST z možnostjo tcpflags ...

# tcpdump "tcp == tcp-rst"

Odstranite zastavice FIN s tcpflags ...

# tcpdump "tcp == tcp-fin" [Opomba: isto metodo je mogoče uporabiti za druge zastave; zaradi prihranka prostora so bili izpuščeni. ]

Prepoznavanje omembe vrednega prometa

Nazadnje, obstaja nekaj hitrih receptov, ki si jih boste želeli zapomniti za ulov specifičnega in specializiranega prometa, kot so slabi/verjetno zlonamerni paketi.

PAKETI Z REDNIMI KOMPLETI RST IN SYN (TEGA NE SME BITI)

# tcpdump "tcp=6"

POIŠČITE OBVEZNO BESEDILO HTTP IN PREJMETE ZAHTEVKO

# tcpdump "tcp=0x47455420"

POIŠČITE SSH POVEZAVE NA KAKRŠNIH koli vratih (PREK PASICE)

# tcpdump "tcp[(tcp>>2:4] = 0x5353482D"

PAKETI Z TTL MANJ OD 10 (NASLOVNO KAŽEJO PROBLEM ALI UPORABLJAJO TRACEROUTE)

# tcpdump "ip< 10"

EVIL BIT PAKET

# tcpdump "ip & 128 != 0"

Zaključek

tcpdump je dragoceno orodje za vse, ki se želijo poglobiti v omrežno ali informacijsko varnost.
Zaradi nenavadnega načina interakcije s prometom je v kombinaciji z natančnostjo, ki jo zagotavlja pri pregledovanju paketov, najboljše orodje za učenje o TCP/IP.
Analizatorji protokolov, kot je Wireshark, so odlični, a če želite resnično obvladati pakete, morate najprej obvladati tcpdump.
Skratka, ta vadnica bi vam morala pomagati, da postanete močnejši, vendar mora biti stran man vedno priročna za najbolj napredne in enkratne primere uporabe. Iskreno upam, da vam je bilo to v pomoč in če imate kakršna koli vprašanja, me kontaktirajte.

  • Ponujamo preizkušen program in vadnico strokovnjakov iz Cisco Networking Academy in Linux Professional Institute, certificiranih inštruktorjev in osebnega mentorja.
  • Pomagali bomo pri zaposlitvi in ​​naredili kariero. 100 % naših diplomantov je zaposlenih.
  • Kako poteka trening?

    • Večerna spletna predavanja izvajamo na naši platformi ali študiramo polni delovni čas v pisarni v Kijevu.
    • Vprašali vas bomo o primernem času za prakso in prilagoditev: razumemo, da ni dovolj časa za študij.
    • Če želite individualni urnik, se bomo pogovorili in izvedli.
    • Določili bomo jasne roke za samoorganizacijo. V stiku vam bo osebni kustos, ki vam bo odgovarjal na vprašanja, vam svetoval in motiviral, da se držite rokov za opravljanje izpitov.

    Pomagali vam bomo tudi: