namai - Programinė įranga
Įdiegti ir naudoti tcpdump. Filtruokite orą! Mes tikriname tinklo srautą naudodami tcpdump Tcpdump, kaip sustabdyti po nurodyto laiko

Todėl nusprendžiau susikurti savo cheat sheet, kad būtų... Nes be tcpdump daugiau nei vienas adminas yra ne administratorius

Įvadas

Labai dažnai jie naudojasi norėdami rasti problemų tinkle tinklo srauto analizatoriai . tcpdump yra vienas iš šios klasės programų atstovų, leidžiantis klausytis (rodyti/išsaugoti) ir analizuoti tinklo veikimą perduodamų tinklo paketų, kadrų ir kitų tinklo srauto perdavimo vienetų lygyje. Priklausomai nuo tinklo konfigūracijos, tcpdump gali klausytis ne tik paketai, skirti tam tikram MAC adresui, bet ir transliuojami paketai. Pasiklausymas tinklo paketų perėmimas yra pagrįstas „išlaidus“ režimas tinklo adapterio veikimas.

Priklausomai nuo tinklo įrangos, naudojamos kompiuteriams prijungti prie Ethernet tinklo, yra: eismo klausymosi galimybės:

  • Pagrįsta internetu koncentratoriai visas srautas iš šakotuvo pasiekiamas bet kuriam tinklo prieglobai.
  • Tinkluose jungikliai(jungikliai) tinklo priegloba turi prieigą tik prie savo srauto, taip pat prie viso šio segmento transliuojamo srauto.
  • Kai kurie valdomi komutatoriai turi funkciją nukopijuoti tam tikro prievado srautą į stebėjimo prievadą („veidrodis“, prievado stebėjimas).
  • Naudojant specialias priemones (movas), įtrauktas į tarpą tinklo prisijungimas ir siunčiant ryšio srautą į atskirą prievadą, galima klausytis per atitinkamą prievadą.
  • Su šakotuvu „gudrybė“ yra ta, kad komutatoriaus prievadas, kurio srautą reikia klausytis, įjungiamas per šakotuvą, taip pat prijungiant monitoriaus mazgą prie šakotuvo (šiuo atveju daugeliu atvejų tinklo ryšio našumas yra sumažintas).

Taigi, tcpdump įrankisįtraukta į daugumą Unix paskirstymų ir leidžia perimti ir rodyti / išsaugoti tinklo srautą į failą. Komunalinė programa naudoja libpcap biblioteka. Taip pat yra prievadas, skirtas „Windows“. Tai būtina, kad komunalinė paslauga veiktų. Pavyzdžiui, „Debian“ jis įdiegiamas naudojant komandą:

Debian: ~# apt-get install tcpdump

Komunalinės paslaugos yra būtinos darbui (kadangi tinklo sąsajos nustatymai yra pakeisti - jis perjungiamas į „promiscuous“ režimą). Apskritai tcpdump komandos formatas turi tokią formą:

Debianas: ~# tcpdump<опции> <фильтр>

tcpdump paslaugų parinktys

-i sąsaja

Nurodoma sąsaja, iš kurios turi būti analizuojamas srautas (nenurodant sąsajos – „pirmojo pasitaikiusio“ analizė).

Išjungiamas IP vertimas į domenų vardai. Jei nurodyta -nn, prievadų numerių konvertavimas į protokolų pavadinimus yra draudžiamas.

Dažniausiai naudojamos tcpdump komandos filtro parinktys yra šios:

dst šeimininkas

Patikrina, ar IP paketo paskirties adresas atitinka nurodytą reikšmę. Galima nustatyti ir IP, potinklį 10.0.0.1/24 formatu ir pagrindinio kompiuterio pavadinimą.

src priegloba

Patikrina, ar IP paketo šaltinio adresas atitinka nurodytą reikšmę. Galima nustatyti ir IP, potinklį 10.0.0.1/24 formatu ir pagrindinio kompiuterio pavadinimą.

priimančioji šeimininkė

Patikrina, ar siuntėjo arba gavėjo adresas atitinka nurodytą reikšmę. Galima nustatyti ir IP, potinklį 10.0.0.1/24 formatu ir pagrindinio kompiuterio pavadinimą.

tinklo tinklo_pavadinimas

Patikrina, ar siuntėjo/gavėjo adresas yra nurodytame tinkle. Galima nurodyti tinklą CIDR formatu (pvz., 10.0.0.1/22), arba nurodyti tinklo pavadinimą, nurodytą .

ip | arp | rarp | tcp | udp | icmp [host]

Patikrina, ar paketas priklauso vienam iš nurodytų protokolų ir, nurodydamas pagrindinio kompiuterio adresą, patikrina, ar siuntėjo/gavėjo adresas sutampa su nurodytu. Galima nustatyti ir IP, potinklį 10.0.0.1/24 formatu ir pagrindinio kompiuterio pavadinimą.

dst prievado prievado_numeris

Patikrinama, ar paketas priklauso TCP/UDP protokolui ir ar paskirties prievadas yra lygus nurodytam. Galite nurodyti prievado numerį arba pavadinimą, nurodytą faile /etc/services.

src prievado prievado_numeris

Patikrinama, ar paketas priklauso TCP/UDP protokolui ir ar šaltinio prievadas yra lygus nurodytam. Galite nurodyti prievado numerį arba pavadinimą, nurodytą faile /etc/services.

prievado prievado_numeris

Patikrinama, ar paketas priklauso TCP/UDP protokolui ir ar paskirties ar šaltinio prievadas yra lygus nurodytam. Galite nurodyti prievado numerį arba pavadinimą, nurodytą faile /etc/services.

ip transliacija

Patikrina, ar IP paketas yra transliacijos paketas.

eteris ( src | dst | pagrindinis kompiuteris ) MAC_adresas

Patikrina, ar tinklo paketas priklauso šaltiniui, paskirties vietai, šaltiniui ar paskirties vietai, turinčiai nurodytą MAC_adresą.

eterio transliacija

Patikrina, ar ARP paketas yra transliacijos paketas.

Komandos tcpdump naudojimo pavyzdžiai

Srauto analizė tinklo lygiu (ARP, ICMP) naudojant tcpdump

Tarkime, kad turime 2 šeimininkus. 1 pagrindinis kompiuteris su sąsaja eth0 ir šiais parametrais:

Host1:~# ip addr rodyti dev eth0 5: eth0: mtu 1500 qdisc pfifo_fast būsena NEŽINOMA qlen 1000 nuoroda/eteris 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.56.1/24 brd 192.168:65 et :800:27ff:fe00:0/64 taikymo srities nuoroda valid_lft forever prefer_lft forever

Taip pat host2 su sąsaja eth1

Host2:~# ip addr rodyti 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 apimtis globali eth1 inet6 fe80:7ffa0 :fefd:e5aa/64 apimties nuoroda valid_lft forever preference_lft forever

Tarkime, kad iki šiol nebuvo tinklo duomenų mainų tarp hostų, o jei paleisite komandą ip neigh show host 2, pamatysite, kad ARP lentelėje nėra įrašų. Padarykime nedidelį eksperimentą. Paleiskite tcpdump įrankį vienoje iš host1 virtualiųjų sąsajų:

Host1: ~# tcpdump -ne -i eth0 tcpdump: žodinė išvestis nuslopinta, naudokite -v arba -vv, norėdami iššifruoti visą protokolą eth0, nuorodos tipas EN10MB (Ethernet), fiksavimo dydis 65535 baitai

1 priegloba: ~ # ping -c 1 192.168.56.33 PING 192.168.56.33 (192.168.56.33) 56 (84) baitai duomenų. 64 baitai nuo 192.168.56.33: icmp_req=1 ttl=64 time=1.06 ms --- 192.168.56.33 ping statistika --- 1 paketas perduotas, 1 gautas, 0 % paketų praradimas, laikas 0ms rttmax/mdevg/v. = 1,067 / 1,067 / 1,067 / 0,000 ms

Po to host1 sistemos ARP lentelėje pasirodė įrašas apie host2 IP adresą:

Host1:~# ip kaimyninis šou dev eth0 192.168.56.33 lladdr 01:00:27:77:e5:00 HOST2

Virtualioje konsolėje tcpdump mums parodė šią informaciją:

Host1:~# tcpdump -ne -i eth0 tcpdump: išsami išvestis slopinama, naudokite -v arba -vv, norėdami iššifruoti visą protokolą eth0, nuorodos tipas EN10MB (Ethernet), fiksavimo dydis 65535 baitai 12:16:29.465780 0a:00 :27:00:00:00 > ff:ff:ff:ff:ff:ff, eterinio tipo ARP (0x0806), ilgis 42: užklausa, kas turi 192.168.56.33 pasakyti 192.168.56.1, ilgis 28 12:16:29.4617 :00:27:77:e5:00 > 0a:00:27:00:00:00, eterinis ARP tipas (0x0806), ilgis 42: Atsakyti 192.168.56.33 is-at 01:00:27:77:e5:00 , ilgis 28 12:16:29.466815 0a:00:27:00:00:00 > 01:00:27:77:e5:00, eterio tipas IPv4 (0x0800), ilgis 98: 192.168.56.1 > 192.168.56.1 > 192.168.56.1 > 192.168.56.1 > 192.168.56.1. aido užklausa, id 5284, seka 1, ilgis 64 12:16:29.467934 01:00:27:77:e5:00 > 0a:00:27:00:00:00, eterio tipas IPv4 (0x0800), ilgis 98,1619 .56.33 > 192.168.56.1: ICMP aido atsakymas, id 5284, seka 1, ilgis 64 ^C 4 paketai užfiksuoti 4 paketai gauti filtro 0 paketų atmesta branduolio

Kiekviename šio formato tinklo paketo įraše yra laikas, kai paketas buvo perimtas, šaltinio ir paskirties MAC adresai, protokolo tipas, paketo ilgis ir informacija apie paketo turinį. Pirmas įrašas aprašo ARP transliacijos užklausą iš sistemos host1 sąsajos eth0 MAC adreso (" Kas turi adresą 192.168.56.33, jis sako 192.168.56.1"). Antras įrašas- atsakymas iš host2 MAC adreso į host1 MAC adresą (" 192.168.56.33 MAC adresas yra 01:00:27:77:e5:00"). Trečias ir ketvirtas įrašai (ICMP užklausa Ir ICMP atsakymas) yra ping komandos, vykdomos host1, rezultatas. Tada tcpdump buvo nutrauktas. Prieš išjungdamas tcpdump išspausdina operacijų statistiką: perimtų, filtro gautų ir branduolio atmestų paketų skaičių.

Taigi, host1 sistema, norėdama išsiųsti standartinę aido užklausą į host2 mašiną, pirmiausia gavo host2 mašinos MAC adresus naudodama ARP protokolą ir įvedė juos, susietą su IP adresu, į savo ARP lentelę.

Srauto analizė transporto lygmenyje (TCP, UDP) naudojant tcpdump

Tarkime, kad host2 sistemoje yra įdiegtas tam tikras WEB serveris. Pabandykime atidaryti puslapį iš šio žiniatinklio serverio host1 įrenginyje naudodami lynx konsolės naršyklę:

1 šeimininkas: ~# lūšis 192.168.56.33

Kitoje konsolėje pirmiausia paleiskite tcpdump su filtravimo parametrais:

Host1: ~# tcpdump -n -i eth0 priegloba 192.168.56.33 ir prievadas 80 tcpdump: žodinė išvestis nuslopinta, naudokite -v arba -vv viso protokolo dekodavimo klausymui eth0, nuorodos tipo EN10MB (Ethernet), fiksavimo dydis 61535 bytes :44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80: vėliavėlės [S], seka 1209026235, win 5840, parinktys , ilgis 0 15:44:17.30.38.38.18.18.18. > 1 92.168.56.1.41533 : vėliavėlės , sek. 370041518, ack 1209026236, win 5792, parinktys , ilgis 0 15:44:37.838157 IP 192.168.56.1.41533 > 192.168.56.1.41533 > 192.168.56.1.41533 > 192.168.56., 6. lags. , ilgis 0 1 5: 44:37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80: vėliavėlės , seka 1:222, ack 1, laimėti 46, parinktys , ilgis 221 15:43:95.368 IP 15:43:95.368. > 192 .168.56 .1.41533 : vėliavėlės [.], ack 222, win 1716, parinktys , ilgis 0 15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: q1,2 win 7,2 , parinktys , ilgis 445 15:44:37.848156 IP 192.168.56.1.41533 > 192.168.56.33.80: vėliavėlės [.], ack 446, laimėti 54, parinktys , ilgis 0 15:44:37.38 IP 15:44:938.38.38. > 192. 168.56.1. 41533: vėliavėlės, SEQ 446, ACK 222, Win 1716, Parinktys, ilgis 0 15: 44: 37.850366 IP 192.168.56.1.41533> 192.168.56.1.41533> 192.168.1.41533> Win , Options, leen GTH 0 15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: vėliavėlės [.], ack 223, laimėti 1716, parinktys , ilgis 0 ...

IN šiame pavyzdyje klientas (192.168.56.1) iš TCP prievado 41533 užmezga ryšį su serveriu (192.168.56.33), klausančiu 80 prievade, pateikia užklausą, gauna reikiamus duomenis ir ryšys baigiasi.

Be to, TCP segmento antraštė gavėjo ir siuntėjo prievadų numeriai yra keletas parametrų:

  • Eilės numeris(seq). Nustato baitų tvarką sraute, siunčiamame į tinklą (pirmojo segmento baito poslinkis, palyginti su duomenų srauto pradžia).
  • Patvirtintas numeris(ATK). Maksimalus baitų skaičius gautame segmente padidinamas 1. Patvirtinimai, siunčiami siuntėjui vienu metu, yra užklausa dėl naujos duomenų dalies.
  • Valdymo vėliavėlės(SYN – S, ACK, FIN –F, RST – R, PSH – P, URG)
  • Langas(win) - duomenų siuntėjo laukiamas duomenų baitų skaičius, pradedant nuo baito, kurio numeris nurodytas ack laukelyje. Siuntėjas, norėdamas optimizuoti perdavimą, nelaukia patvirtinimo už kiekvieną išsiųstą segmentą, bet gali siųsti grupę į tinklą į segmentą (bet ne didesniais nei lango dydis baitais). Jei kanalo kokybė prasta (prarandama daug retransliavimo užklausų, patvirtinimų), langas mažėja, jei geras, langas didėja.
  • Galimybės. Naudojamas pagalbinėms problemoms spręsti. Pavyzdžiui, perduodamas MSS (Maximum segment size) – maksimalus segmento dydis.

Dvikrypčio TCP ryšio užmezgimo procesas atsispindi pirmuosiuose trijuose tcpdump įrašuose:

  • Klientas siunčia serveriui TCP segmentą su nustatyta SYN vėliava, pradiniu „atsitiktiniu“ numeriu (1209026235), iš kurio bus sunumeruoti baitai jo siunčiamame sraute, maksimalus lango dydis yra serveriui leidžiamas kiekis. perduoti be kliento patvirtinimo (5840): 15: 44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80: vėliavėlės [S], seka 1209026235, parinktys 5840
  • Serveris siunčia klientui TCP segmentą su nustatytomis SYN ir ACK vėliavėlėmis, pradiniu „atsitiktiniu“ numeriu (370041518), nuo kurio bus sunumeruoti baitai jo siunčiamame sraute ir maksimalų kliento lango dydį (5792). Šis segmentas taip pat patvirtina prisijungimo užklausos gavimą iš kliento: 15:44:37.838118 IP 192.168.56.33.80 > 192.168.56.1.41533: vėliavėlės , seka 370041518, ack 1206,2 win 7, ilgis 5
  • Klientas siunčia serveriui TCP segmentą su nustatyta ACK vėliava, kuri yra patvirtinimas, kad segmentas gavo iš serverio (toliau tcpdump rodo santykines seq ir ask reikšmes): 15:44:37.838157 IP 192.168.56.1 .41533 > 192.168.56.33.80: vėliavėlės [. ], 1 patvirtinimas, 46 laimėjimas, parinktys , ilgis

Po to ryšys laikomas užmegztu.

Kitoje įrašų poroje klientas siunčia programos lygmens protokolo užklausą (221 baitas) į serverį segmento duomenų skiltyje ir iš serverio gauna patvirtinimą apie jos gavimą:

15:44:37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80: vėliavėlės , seka 1:222, ack 1, laimėti 46, parinktys , ilgis 221 15:43:95.368 IP 15:43:95.368. > 192.168.56.1 .41533: vėliavėlės [.], ack 222, laimėti 1716, parinktys , ilgis 0

Šiuo atveju PSH (P) vėliavėlė naudojama siunčiančiajai pusei pranešti, kad priimančioji pusė yra pasirengusi priimti duomenis. Tada serveris siunčia duomenis klientui (445 baitai) ir iš jo gauna gavimo patvirtinimą:

15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: vėliavėlės , seka 1:446, ack 222, laimėti 1716, parinktys , ilgis 445 37 15.16:448 15.16.1848. .4 1533 > 192.168. 56,33 .80: vėliavėlės [.], ack 446, laimėti 54, parinktys , ilgis 0

Tada serverio iniciatyva ryšys nutraukiamas. Serveris siunčia paketą su nustatyta FIN vėliava:

15:44:37.849738 IP 192.168.56.33.80 > 192.168.56.1.41533: vėliavėlės , seka 446, ack 222, laimėti 1716, parinktys , ilgis 0

Klientas taip pat atsako išsiųsdamas paketą su nustatyta FIN vėliava; šis paketas taip pat yra užklausos nutraukti ryšį iš serverio gavimo patvirtinimas:

15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80: vėliavėlės , seka 222, ack 447, laimėti 54, parinktys , ilgis 0

Serveris gali patvirtinti tik FIN segmento gavimą iš kliento:

15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: vėliavėlės [.], ack 223, laimėti 1716, parinktys , ilgis 0

tcpdump reakcija į bandymą prisijungti prie uždaro prievado 23/tcp:

21:56:14.381091 IP 192.168.56.1.54040 > 192.168.56.33.23: vėliavėlės [S], sek. 2956835311, win 5840, parinktys , ilgis 0 21.36.18.18.186148. 23 > 192.168.56.1.54040 : vėliavėlės, seka 0, ack 2956835312, laimėti 0, ilgis 0

Šiame pavyzdyje iš sistemos 192.168.56.1 bandoma prisijungti prie neegzistuojančios TCP paslaugos mazge 192.168.56.33. Nuotolinė sistema reaguoja siųsdama segmentą su nustatyta RST (reset) vėliava.

tcpdump atsakymas į UDP datagramos siuntimą į uždarą 53/udp prievadą:

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 prievadas 53 nepasiekiamas, ilgis 64

Šiuo pavyzdžiu bandoma nusiųsti UDP datagramą į neegzistuojantį nuotolinės sistemos prievadą. UDP paprastai atsako išsiųsdamas ICMP pranešimą šaltinio prieglobai, kad prievadas nepasiekiamas.

Kiti komandos tcpdump naudojimo pavyzdžiai:

# tcpdump -n -i ppp0 eteris src 11:20:b3:d8:d8:2c

Rodyti tinklo statistiką iš ppp0 sąsajos (-i ppp0) nekeičiant IP į DNS (-n) tiems kadrams, kurių šaltinio MAC adresas yra 11:20:b3:d8:d8:2c.

# tcpdump -n -e -i vlan0 eterio transliacija

Transliacijos srauto išvestis iš vlan0 sąsajos.

# tcpdump -n -i eth0 src 192.168.66.1

Filtruojama tinklo paketai, kurio antraštėje šaltinio laukelyje nurodomas IP adresas 192.168.66.1.

# tcpdump -n -i eth0 priegloba 192.168.66.1

Paketai, kuriuose šis IP adresas nurodytas kaip paketo šaltinis arba paskirties vieta, yra filtruojami.

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

Paketai, kurių šaltinis nurodo tinklo mazgus 10.0.0.0/8, yra filtruojami.

# tcpdump -n -i eth0 icmp

Iš eth0 sąsajos išveda tik ICMP paketus.

Tuo, manau, baigsiu dabartinį straipsnį. Atsiradus naujų pavyzdžių, atnaujinsiu straipsnį. Tikiuosi, kad medžiaga bus naudinga ne tik man

Straipsnyje panaudoti pavyzdžiai ir kai kurios medžiagos iš intuityvių paskaitų.

Pagarbiai, McSim!

2011 m. gruodžio 19 d. Henris Van Stynas
skyriuje KAIP

Paketų fiksavimas yra vienas iš galingiausių būdų analizuoti tinklo procesus. Galite daug sužinoti apie tai, kas vyksta tinkle, perimdami ir ištyrę neapdorotus duomenis tinklo jungtys. Šiuolaikinės srauto analizės priemonės leidžia užfiksuoti, interpretuoti ir aprašyti duomenų srautus žmonėms suprantamu stiliumi.

tcpdump yra esminis srauto klausymo arba uostymo įrankis, jis suteikia daug analizės galimybių ir netgi gali eksportuoti interpretuotus paketų laukus į kitas programas.

Jei manote, kad tokios paslaugos kaip tcpdump praranda savo vertę atsiradus grafiniams įrankiams, pvz., Wireshark, pagalvokite dar kartą. Wireshark yra puiki programa, tačiau ji nėra universali priemonė absoliučiai visoms situacijoms. Kaip universalus lengvas sprendimas įvairioms programoms (pvz., Unix tools cat, less ir hexdump), tcpdump atrodo daug šauniau. O įspūdingiausia jo savybė – paprastas naudojimas. Kaip elgsenos stilius, jis atitinka apytikslę „vienos eilutės komandos“ koncepciją, kad gautų greitus, vieno žingsnio atsakymus. Be to, jis gali būti naudojamas ssh seanso metu, nereikalaujant grafikos. Su sintaksės konvencijų palaikymu komandinė eilutė(pavyzdžiui, duomenų srauto išvedimas į standartinę išvestį, kurią galima nukreipti) tcpdump gali būti naudojamas visų tipų vamzdynuose, siekiant sukurti įdomių ir naudingų paslaugų.

Šiame straipsnyje apžvelgsiu kai kuriuos pagrindinius tcpdump naudojimo principus ir jo sintaksės pagrindus.

Pagrindai

Prieš tapdami tcpdump naudojimo meistru, turėtumėte suprasti keletą pagrindinių sąvokų. Pirma, paketų fiksavimas yra pasyvus procesas, jis niekaip nekeičia srauto ir nieko netransliuoja į tinklą iš savęs. Antra, galite užfiksuoti tik paketus, kuriuos gauna jūsų sistema. Jei bet kurie du pagrindiniai kompiuteriai tiesiogiai keičiasi paketais ir tas srautas apeina jūsų kompiuterį, nieko nematysite, nepaisant stebėjimo įrankio. Trečia, galite užfiksuoti tik tuos paketus, kurie yra skirti jūsų sistemai, nebent tinklo sąsaja įjungta neteisėtu režimu.

Kadangi daroma prielaida, kad jus domina ne tik jūsų sistemos paketai, tcpdump automatiškai įjungs pirmąją sistemos sąsają (jei kita nėra aiškiai nurodyta) į neteisėtą režimą. Šiai operacijai reikia supervartotojo privilegijų.

Tcpdump komandų anatomija

Komanda tcpdump susideda iš dviejų dalių: parinkčių ir filtro išraiškos (1 pav.).

1 pav. tcpdump komandos pavyzdys

Filtro išraiška nustato, kuriuos paketus fiksuoti, o parinktis – kuriuos iš jų rodyti išvestyje; parinktys taip pat nustato naudingumo elgseną.

Galimybės

Tcpdump parinktys atitinka standartines komandų eilutės nuostatas, todėl parinkties formatas yra vėliavėlės reikšmė. Kai kurios vėliavėlės neturi parametrų reikšmės, nes jos yra patys jungikliai. Pavyzdžiui, po -i rašomas sąsajos pavadinimas, o -n išjungia vardo skyrimą per DNS.

Vyro puslapyje aprašoma daug parinkčių, tačiau yra keletas, be kurių neapsieisite:

I sąsaja: sąsaja, kurioje tcpdump klausys srauto;

V, -vv, -vvv: išvesties išsamumas;

K: tylus režimas;

E: spausdinti nuorodų sluoksnio rėmelių antraštes (Ethernet);

N: išspręsti pagrindinių kompiuterių domenų vardus;

T: nespausdinti laiko žymų;

N: neišspręskite kompiuterių domenų vardų;

S0 (arba -s 0): maksimalus fiksavimas, fiksuojami visi paketai; V naujausios versijos tcpdump yra numatytasis elgesys.

Nė vienas iš variantų nereikalingas. Vartotojo nustatytos reikšmės pakeičia tik numatytąjį programos elgesį, ty fiksuoti pirmoje sąsajoje ir spausdinti paketo informaciją vienoje eilutėje.

Filtruoti išraiškas
Filtro išraiškos yra Būlio kriterijai (taip / ne), skirti įvertinti, ar paketas atitinka šabloną. Visi paketai, kurie neatitinka nurodytų sąlygų, yra ignoruojami.

Paketų filtro sintaksė yra galinga ir skaidri. Pradžioje jame yra raktažodžių, vadinamų „primityvais“, kurie yra skirtingi paketų kvalifikatoriai, tai gali būti protokolas, adresas, prievadas arba kryptis. Jie gali būti sujungti vienas su kitu grandinėmis naudojant operatorius ir (arba) sugrupuoti ir sujungti pagal paveldėjimo taisykles, surūšiuoti naudojant neigimą.

Dėl savaime suprantamų kriterijų pavadinimų filtrų išraiškos paprastai atrodo savaime suprantamos, todėl jas gana lengva sukurti ir suprasti. Visa sintaksė aprašyta pcap-filtro vadovo puslapyje, o kai kurie pavyzdžiai pateikiami čia:

ARP yra paprastas protokolas, jis naudojamas IP adresams pakeisti į MAC adresus tinklo plokštės. Kaip matote aukščiau, tcpdump šiuos paketus apibūdina gana primityviai. Kita vertus, DNS paketai bus aprašyti šiek tiek kitaip:

IP 10.0.0.2.50435 > 10.0.0.1.53: 19+ A? linuxjournal.com. (34) IP 10.0.0.1.53 > 10.0.0.2.50435: 19 1/0/0 A 76.74.252.198 (50)

Iš pradžių tai gali atrodyti nepakankamai aišku, bet kai sužinosite, kaip veikia skirtingi protokolų sluoksniai, tai bus prasmingesnė. DNS yra daug sudėtingesnis protokolas nei ARP, tačiau jis taip pat veikia aukštesniu lygiu. Tai reiškia, kad pagrindiniai protokolo paketai taip pat rodomi išvestyje. Skirtingai nuo ARP, kuris nėra nukreipiamas tarp skirtingų fizinių tinklo segmentų, DNS yra viso interneto protokolas. IP sluoksnis naudojamas šiems paketams nukreipti; UDP naudojamas transportavimui. Dėl to DNS yra 5 sluoksnio protokolas (IP yra 3 sluoksnis, UDP yra 4 sluoksnis).

UDP/IP sluoksnio informacija, kurioje yra šaltinio adresas ir prievadas, rodoma kairėje eilutės pusėje, o konkreti DNS informacija rodoma dešinėje. Nors sintaksė gana sutrumpinta, jos pakanka apibrėžti pagrindinius DNS elementus. Pirmasis paketas yra linuxjournal.com adreso užklausa, antrasis paketas yra atsakymas, nurodantis adresą 76.74.252.198. Tai yra įprasta paprastų DNS užklausų seka.

Išsamų visų nuo protokolo priklausomų išvesties formatų aprašymą rasite tcpdump man puslapio skyriuje „IŠVESTIES FORMATAS“. Vienų protokolų paketai išvestyje matomi geriau, kitų blogiau, bet svarbi informacija paprastai lengva rasti.

Užfiksuokite išvestį į failą
Be įprasto režimo su išvestimi į konsolę (standartinė išvestis), tcpdump taip pat palaiko išvesties įrašymo į failą režimą. Režimas įjungiamas naudojant -w parinktį, kuri nurodo kelią į failą.

Rašydamas į failą, tcpdump naudoja kitą formatą nei išvesdamas į ekraną. Tai vadinamoji neapdorota išvestis; ji neatlieka pirminės paketo analizės. Tada šie failai gali būti naudojami trečiųjų šalių programosįveskite Wireshark, nes failo įrašų formatas atitinka universalų „pcap“ formatą (toks failas gali būti pateiktas į tcpdump įvestį naudojant parinktį -r). Ši funkcija leidžia užfiksuoti paketus vienoje mašinoje ir analizuoti juos kitame. Pavyzdžiui, nešiojamajame kompiuteryje yra „Wireshark“. Norint nuskaityti anksčiau užfiksuotą failą, jo nereikia prijungti prie analizuojamo tinklo.

TCP pagrindu veikiančių protokolų analizė
tcpdump yra paketų analizatorius, todėl jis gerai veikia su paketais pagrįstais protokolais, tokiais kaip IP, UDP, DHCP, DNS ir ICMP. Jei yra „srautas“ arba paketų seka ryšiui užmegzti, „tcpdump“ negalės tiesiogiai analizuoti šių srautų ir ryšio scenarijų. Protokolai, tokie kaip HTTP, SMTP ir IMAP, yra daug panašesni į interaktyvias programas tinklo požiūriu nei į „paketinius“ protokolus.

TCP vartotojui skaidriai tvarko visą žemo lygio informaciją, reikalingą ryšio seansams seanso protokoluose. Čia į srautą orientuoti duomenys sujungiami į paketus (segmentus), kuriuos vėliau galima siųsti tinklu. Visos tokios detalės yra paslėptos po programos sluoksniu. Todėl norint užfiksuoti į ryšį orientuotų protokolų paketus, reikia atlikti papildomus veiksmus. Kadangi kiekvienas TCP segmentas yra programos lygio duomenų dalis, informacija apie jį negali būti naudojama tiesiogiai. Kad tai būtų prasminga, turite visiškai atkurti TCP seansą (srauto) iš atskirų paketų sekos. tcpdump šios funkcijos neturi. Norėdami analizuoti seanso protokolus, galite naudoti tai, ką aš vadinu "styginių triuku".

Styginių triukas
Dažniausiai fiksuodamas srautą turiu galvoje tikslą išanalizuoti kai kurių klaidų priežastis. Duomenys nebūtinai turi būti tobuli, kad būtų galima suprasti bet kokių incidentų priežastis. Tokiais atvejais supratimo greitis yra svarbiau už viską. Kitas triukas yra vienas iš mano mėgstamiausių tcpdump metodų. Tai veikia, nes:

TCP segmentai paprastai yra chronologine tvarka;
- tekstiniai taikomųjų programų protokolai generuoja paketus su teksto įkėlimu;
- teksto įkėlimą supantys duomenys (pavyzdžiui, paketo antraštės) nėra tekstas;
- UNIX programos gali išsaugoti tekstą iš programos dvejetainės išvesties;
- jei paleisite tcpdump su parinktimi -w, ji generuos neapdorotą informaciją į standartinę išvestį.

Viską sudėjus, gauname HTTP seanso duomenų fiksavimo įrankį.

Be to, turėtumėte žinoti, kad išvestyje gali būti šiukšlių. Perteklių galima nupjauti naudojant strings utility parinktį, kuri riboja eilutės išvesties ilgį (žr. man strings).

Šis triukas gana gerai tinka bet kokiems teksto protokolams.

HTTP ir SMTP analizė
Ankstesnės dalies eilutės triukas gali padėti užfiksuoti HTTP seanso duomenis, nepaisant to, kad nėra integruoto srauto analizatoriaus. Gauti duomenys gali būti „analizuojami“ ir vėliau įvairiais būdais.

Pavyzdžiui, galbūt norėsite patikrinti visų svetainių, kurių pavadinimuose yra „davepc“, prieinamumą realiuoju laiku. Ši komanda, paleista ugniasienėje, padės (darant prielaidą, kad vidinė sąsaja yra eth1):

Tai tik du paprasti pavyzdžiai iliustruoti galimybes. Pavyzdžiui, galite parašyti „Perl“ scenarijų, kad gautumėte eilutes išsamiau.

Taigi tikroji tcpdump galia atsiranda tada, kai norite greitai ir be didelių pastangų gauti atsakymus į kai kuriuos klausimus. Tai ypač svarbu derinant tinklo programas.

Maršruto ir VPN jungčių derinimas
tcpdump gali būti puiki pagalba derinant tokius dalykus kaip VPN ryšiai. Viskas, ko jums reikia, yra suprasti, kuriuose kompiuteriuose kurie paketai rodomi, o kuriuose ne.

Paimkime standartinę dviejų tinklų sujungimo VPN ryšiu schemą. Tinklai 10.0.50.0/24 ir 192.168.5.0/24 (2 pav.).

2 pav. VPN topologijos pavyzdys

Jei tai veikia tinkamai, prieglobos serveriai skirtinguose tinkluose turėtų siųsti vieni kitiems ping. Jei ping nereaguoja (šiuo atveju, tarkime, kad jie nesiunčiami iš D į pagrindinį kompiuterį A), galime naudoti tcpdump, kad išsiaiškintume, kur dingsta daiktai.

Jei užklausų paketai eina į pagrindinį kompiuterį C ( nuotolinis vartai), bet ne D, tai rodo VPN ryšys veikia, bet yra maršruto problemų. Jei pagrindinis kompiuteris D gauna užklausas, bet nesiunčia atsakymų, tai gali reikšti, kad ICMP užblokuotas. Jei atsakymai siunčiami, bet nepasiekia C, numatytasis šliuzas gali būti neteisingai sukonfigūruotas D.

KODĖL TCPDUMP?

Tcpdump – pagrindinis įrankis tinklo analizė programinės įrangos specialistams informacijos saugumas. Tiems, kurie nori visiškai suprasti TCP/IP, būtina pakankamai suprasti šią svarbią programą. Daugelis žmonių nori naudoti aukštesnio lygio įrankius, tokius kaip „Wireshark“, bet manau, kad tai klaida.

Kai naudojate įrankį, kuris tinklo srautą rodo natūralesniu (paprastesniu) būdu, analizės sudėtingumas tenka tiesiogiai asmeniui, o ne programai. Šis metodas lavina supratimą apie TCP/IP rinkinį, todėl primygtinai rekomenduoju naudoti tcpdump vietoj kitų įrankių, kai tik įmanoma.

15:31:34.079416 IP (tos 0x0, ttl 64, id 20244, poslinkis 0, vėliavėlės , proto: TCP (6), ilgis: 60) šaltinis.35970 > dest.80: S, cksum 0x0ac1 (teisinga), 22645:0 2647022145(0) win 5840 0x0000: 4500 003c 4f14 4006 7417 0afb 0257 E.. 0x0010: 4815 222a 8c82 0060 904dc... ZA.... 0x0020: a002 16d0 0ac1 0000 0204 05b4 0402 080a................0x0030: 14b4 1555 0000 0000 0103 0302

PAGRINDAI

Žemiau yra keletas parinkčių, kurias galite naudoti konfigūruodami tcpdump. Juos galima lengvai pamiršti ir (arba) supainioti su kitų tipų filtrais, pvz., „Wireshark“, todėl šis puslapis gali būti jums kaip nuoroda. Priklausomai nuo to, ką žiūriu, norėčiau atsiminti šiuos pagrindinius dalykus.

GALIMYBĖS

  • -i any: klausykitės visose sąsajose, kad pamatytumėte, ar matote srautą.
  • -i eth0: klausykite sąsajoje eth0.
  • -D: Rodyti galimų sąsajų sąrašą
  • -n: Rodyti IP adresus, o ne pagrindinio kompiuterio pavadinimus.
  • -nn: Rodyti IP adresus ir prievadų numerius, o ne pagrindinio kompiuterio pavadinimus ir protokolų pavadinimus.
  • -q: rodo minimalų informacijos apie paketą kiekį.
  • -t: nerodykite laiko žymos kiekvienoje eilutėje.
  • -tttt: nustato kiekvienos eilutės laiko žymų išvestį numatytuoju formatu.
  • -X: Rodyti paketo turinį šešioliktainiu ir ASCII formatu.
  • -XX: tas pats kaip -X, bet taip pat rodoma eterneto antraštė.
  • -v, -vv, -vvv: Padidinkite grąžinamos paketo informacijos kiekį.
  • -c: gaukite tik x paketų skaičių ir sustokite.
  • -s: apibrėžkite fiksavimo momentinį ilgį (dydį) baitais. Naudokite -s0, kad gautumėte viską, nebent tyčia patraukėte mažiau.
  • -S: spausdinkite absoliučius eilės numerius.
  • -e: gauti Ethernet antraštę.
  • -q: rodyti minimalią pakuotės informaciją.
  • -E: iššifruokite IPSEC srautą pateikdami šifravimo raktą.
[Numatytasis tcpdump 4.0 momentinis ilgis pakeistas nuo 68 iki 96 baitų. Nors tai leis matyti daugiau informacijos apie paketą, tai nebus visa informacija. Naudokite -s1514 arba -s0, kad gautumėte visą aprėptį]

IŠRAIŠKOS

tcpdump išraiškos leidžia apkarpyti Įvairių tipų srautą ir raskite būtent tai, ko ieškote. Išraiškų įvaldymas ir gebėjimas jas kūrybiškai derinti yra tai, kas daro tcpdump tikrai galingą.

Yra trys pagrindiniai išraiškų tipai: tipas, dir ir proto.

Parinkčių tipai: pagrindinis kompiuteris, tinklas ir prievadas.

Katalogai leidžia atlikti src, dst ir jų derinius.

Protokolas leidžia apibrėžti: tcp, udp, icmp, ah ir daugelį kitų.

PAVYZDŽIAI

Taigi dabar, kai pamatėme, kokias galimybes turime, pažvelkime į keletą realaus pasaulio pavyzdžių, kuriuos greičiausiai pamatysime savo kasdieniame darbe.

PAGRINDINIS PRANEŠIMAS

Tiesiog pažiūrėkite, kas atsitiks, žiūrėdami į visas sąsajas.

# tcpdump -i bet koks

SPECIALI SĄSAJA

Pagrindinis supratimas apie tai, kas vyksta konkrečioje sąsajoje.

# tcpdump -i eth0

PRISTATYMAS NEAPGYVINTAS IŠVESTIS

Išsamus išvestis, neatskleidžiant pagrindinio kompiuterio pavadinimų ar prievadų numerių, absoliučių eilės numerių ar žmogaus skaitomų laiko žymų.

# tcpdump -ttttnnvvS

RASTI EISMĄ PAGAL IP

Viena iš dažniausiai pasitaikančių užklausų parodys srautą iš 1.2.3.4, nesvarbu, ar tai šaltinis, ar paskirties vieta.

# tcpdump host 1.2.3.4

ŽR. DAUGIAU INFORMACIJOS APIE HEX IŠVESTIES PAKETĄ

Šešioliktainė išvestis yra naudinga, kai norite pamatyti atitinkamų paketų turinį, ir dažnai geriausia naudoti, kai išskiriate kelis kandidatus atidžiau apžiūrėti.

# tcpdump -nnvXSs 0 -c1 icmp tcpdump: klausymasis eth0, nuorodos tipas EN10MB (Ethernet), 23:11:10.370321 IP (tos 0x20, ttl 48, id 34859, poslinkis 0: .6 vėliavėlės 44, .2 3 > 72.21.34.42: icmp 64: aido užklausa seq 0 0x0000: 4520 0054 882b 0000 3001 7cf5 45fe d52b E..T.+..0.|.E..+ 0x202015. 72a 0000 25ff d744 H. "..50"...%..D 0x0020: ae5e 0500 0809 0a0b 0c0d 0e0f 1011 1213 .^.............. 0x0030: 1415 1617 1819 1a1b 1c02 2321d .......!"# 0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&"()*+,-./0123 0x0050: 3435 3637 4567 gautas filtras 10 paketų branduolio numesti paketai

FILTRAVIMAS PAGAL ŠALTINĮ IR PASKIRTĮ

Atskirti srautą pagal šaltinį arba paskirties vietą labai paprasta naudojant src ir dst.

# tcpdump src 2.3.4.5 tcpdump dst 3.4.5.6

IEŠKOKITE PAKETŲ TINKLE

Norėdami rasti paketus, einančius į konkretų tinklą arba iš jo, naudokite tinklo parinktį. Tai galite derinti su src arba dst parinktimis.

# tcpdump net 1.2.3.0/24

RODYTI EISMĄ, SUSIJĘ SU SPECIALIU UOSTU

tu gali rasti konkretus uostas srautą naudojant prievado parinktį, po kurios nurodomas prievado numeris.

# tcpdump prievadas 3389 tcpdump src prievadas 1025

RODYTI VIENO PROTOKOLO EISMAS

Jei ieškote konkretaus srauto tipo, galite naudoti tcp, udp, icmp ir daugelį kitų.

# tcpdump icmp

RODYTI TIK IP6 EISMĄ

Taip pat galite rasti visą IP6 srautą naudodami protokolo parinktį.

RASTI EISMĄ NAUDOJANT UOSTŲ JUOSTAS

Norėdami rasti srautą, taip pat galite naudoti prievado diapazoną.

# tcpdump portrange 21-23

RASTI EISMĄ PAGAL PAKELTŲ DYDĮ

Jei ieškote konkretaus dydžio pakuočių, galite pasinaudoti šiomis parinktimis. Galite naudoti mažus, didelius arba atitinkamus simbolius, kurių tikitės iš matematikos.

# tcpdump mažiau 32 tcpdump didesnis 64 tcpdump<= 128

RAŠYTI FAILŲ ĮRAŠAI

Dažnai naudinga išsaugoti paketų rezultatus faile, kad būtų galima atlikti analizę ateityje. Šie failai yra žinomi kaip PCAP (PEE-cap) failai ir gali būti apdoroti šimtais skirtingų programų, įskaitant tinklo analizatorius, įsibrovimų aptikimo sistemas ir, žinoma, pačią tcpdump. Čia mes rašome failą, vadinamą capture_file, naudodami jungiklį -w.

# tcpdump prievadas 80 -w capture_file

PCAP FAILŲ SKAITYMAS

Galite skaityti PCAP failus naudodami jungiklį -r. Atminkite, kad skaitydami failą galite naudoti visas įprastas tcpdump komandas; jus riboja tik tai, kad negalite užfiksuoti ir apdoroti nieko, ko nėra faile.

# tcpdump -r capture_file

IŠPLĖSTI

Dabar, kai pamatėme, ką galime padaryti su pagrindiniais pavyzdžiais, pažvelkime į kai kuriuos sudėtingesnius dalykus.

VISKAS APIE DERINIUS

Šiuos skirtingus dalykus paversti individualiais yra galingas gebėjimas, tačiau tikroji tcpdump magija kyla iš gebėjimo kūrybiškai derinti parinktis, kad būtų galima tiksliai atskirti tai, ko ieškote. Yra trys derinių sudarymo būdai, ir jei iš viso studijavote programavimą, jie jums bus labai pažįstami.

IR
ir arba &&

ARBA
arba arba ||

IŠSKYRUS
ne arba!

Štai keletas kombinuotų komandų pavyzdžių.

NUO KONKREČIO IP IR PRISKIRTA KONKREČIAM PRIESTAM

Raskime visą srautą nuo 10.5.2.3 iki bet kurio pagrindinio kompiuterio 3389 prievade.

Tcpdump -nnvvS src 10.5.2.3 ir dst prievadas 3389

NUO VIENO TINKLO PRIE KITO

Pažiūrėkime į visą srautą, gaunamą iš 192.168.x.x ir į 10.x arba 172.16.x.x tinklus, ir parodysime šešioliktainę išvestį be prieglobos pavadinimo ir vieno lygio papildomos informacijos.

Tcpdump -nvX src net 192.168.0.0/16 ir dst net 10.0.0.0/8 arba 172.16.0.0/16

NE ICMP SRAUTAS, VEIKIANTAS Į KONKRETĮ IP

Tai parodys mums visą srautą, nukreiptą į 192.168.0.2, kuris nėra ICMP.

Tcpdump dst 192.168.0.2 ir src net, o ne icmp

EISMAS IŠ PAGRINDINĖS MEDŽIAGOS, KURIE NĖRA KONKREČIAME UOSTE

Tai parodys mums visą srautą iš pagrindinio kompiuterio, kuris nėra SSH srautas (darant prielaidą, kad naudojamas numatytasis prievadas).

Tcpdump -vv src mars, o ne dst prievadas 22

Kaip matote, galite kurti užklausas, kad rastumėte beveik viską, ko jums reikia. Svarbiausia yra pirmiausia tiksliai nustatyti, ko ieškote, o tada sukurti sintaksę, kad atskirtumėte konkretų srauto tipą.

Sudėtingas grupavimas ir specialieji simboliai

Taip pat atminkite, kad kuriant sudėtingas užklausas gali tekti sugrupuoti parametrus naudodami atskiras kabutes. Pavienės kabutės naudojamos nurodant tcpdump nepaisyti tam tikrų specialiųjų simbolių – šiuo atveju skliausteliuose esančio „()“. Tas pats metodas gali būti naudojamas grupuojant naudojant kitas išraiškas, tokias kaip pagrindinis kompiuteris, prievadas, tinklas ir kt. Pažvelkite į žemiau esančią komandą.

# Srautas iš 10.0.2.4 IR skirtas 3389 arba 22 prievadams (neteisingas) tcpdump src 10.0.2.4 ir (dst prievadas 3389 arba 22)

Jei bandėte paleisti šią labai naudingą komandą kitu atveju, gausite klaidą dėl skliaustų. Tai galite ištaisyti išmesdami skliaustus (prieš kiekvieną įdėdami \) arba įvesdami visą komandą į kabutes:

# Srautas iš 10.0.2.4 IR skirtas 3389 arba 22 prievadams (teisingai) # tcpdump "src 10.0.2.4 and (dst port 3389 or 22)"

Konkrečių TCP vėliavėlių išskyrimas

Taip pat galite užfiksuoti srautą pagal konkrečias TCP vėliavėles.

[PASTABA: Žemiau esantys filtrai randa šiuos skirtingus paketus, nes tcp pastebi poslinkį 13 TCP antraštėje, skaičius rodo baito vietą, eh! = 0 reiškia, kad ši vėliavėlė nustatyta į 1, t.y. Tai prasidėjo. ]

Rodyti visus URGENT (URG) paketus...

# tcpdump "tcp & 32!=0"

Rodyti visus ACKNOWLEDGE paketus (ACK)...

# tcpdump "tcp & 16!=0"

Rodyti visus PUSH paketus (PSH)...

# tcpdump "tcp & 8!=0"

Rodyti visus RESET paketus (RST)...

# tcpdump "tcp & 4!=0"

Rodyti visus SYNCHRONIZE paketus (SYN)...

# tcpdump "tcp & 2!=0"

Rodyti visus FINISH (FIN) paketus...

# tcpdump "tcp & 1!=0"

Rodyti visus SYNCHRONIZE / ACKNOWLEDGE paketus (SYNACK) ...

# tcpdump "tcp=18" [Pastaba: tcpdump lauko išvestyje rodomos tik PSH, RST, SYN ir FIN vėliavėlės. Rodomi URG ir ACK, bet jie rodomi kitoje išvesties vietoje nei vėliavėlių lauke. ]

Tačiau, kaip ir naudojant galingiausius įrankius, yra daug būdų, kaip padaryti tai, ką reikia padaryti. Šiame pavyzdyje parodytas kitas būdas užfiksuoti paketus su konkrečiais TCP vėliavėlių rinkiniais.

# tcpdump "tcp == tcp-syn"

Išvalykite RST vėliavėles naudodami parametrą tcpflags...

# tcpdump "tcp == tcp-rst"

Išvalykite FIN vėliavėles naudodami parametrą tcpflags...

# tcpdump "tcp == tcp-fin" [Pastaba: tą patį metodą galima naudoti ir kitoms vėliavėlėms; kosmoso labui jie buvo praleisti. ]

Atpažinti vertą eismą

Galiausiai, yra keletas greitų receptų, kuriuos norėsite atsiminti, kad gautumėte konkretų ir specializuotą srautą, pvz., blogus / galbūt kenkėjiškus paketus.

PAKUOTĖS SU ĮRENGINIAIS RST IR SYN RINKINIAIS (TAIP NETURI BŪTI)

# tcpdump "tcp = 6"

RASTI HTTP PRANEŠĮ TEKSTĄ IR GAUKTI UŽKLAUSĄ

# tcpdump "tcp = 0x47455420"

RASTI SSH RYŠIUS PRIE BET KOKIO UOSTO (PER BANNER)

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

PAKETAI, KURIŲ TTL MAŽESNIS nei 10 (PAprastai RODYTI PROBLEMĄ ARBA NAUDOKITE TRACEROUTE)

# tcpdump "ip< 10"

PAKUOTĖS SU EVIL BIT MONTAVIMU

# tcpdump "ip & 128 != 0"

Išvada

tcpdump yra vertingas įrankis visiems, norintiems prisijungti prie tinklo ar informacijos saugumo.
Neįprastas būdas sąveikauti su srautu ir tikslumas, kurį užtikrina tikrinant paketus, daro jį geriausiu įrankiu mokytis TCP/IP.
Protokolo analizatoriai, tokie kaip Wireshark, yra puikūs, bet jei norite tikrai valdyti paketus, pirmiausia turite valdyti tcpdump.
Apskritai, ši pamoka turėtų padėti jums stiprėti, tačiau vadovas visada turėtų būti pritaikytas pažangiausiems ir vienkartiniams naudojimo atvejams. Nuoširdžiai tikiuosi, kad tai jums buvo naudinga, todėl nedvejodami susisiekite su manimi, jei turite klausimų.

  • Siūlome patikrintą programą ir vadovėlį iš „Cisco Networking Academy“ ir „Linux Professional Institute“ ekspertų, sertifikuotų instruktorių ir asmeninio mokytojo.
  • Padėsime susirasti darbą ir sukurti karjerą. 100% mūsų absolventų dirba.
  • Kaip vyksta mokymai?

    • Vakarines paskaitas internetu vedame savo platformoje arba mokomės asmeniškai Kijevo biure.
    • Pasiteirausime dėl patogaus laiko praktikai ir derinsime: suprantame, kad laiko mokytis mažai.
    • Jeigu norite individualaus grafiko, aptarsime ir įgyvendinsime.
    • Nustatysime aiškius terminus saviorganizacijai. Asmeninis vadovas susisieks ir atsakys į klausimus, patars ir motyvuos laikytis egzaminų terminų.

    Taip pat padėsime:

    tcpdump įrankis yra labai galingas ir populiarus įrankis tinklo paketams perimti ir analizuoti. Tai leidžia peržiūrėti visus įeinančius ir išsiunčiamus paketus iš konkrečios sąsajos ir veikia komandinėje eilutėje. Žinoma, galite naudoti Wirshark analizuoti tinklo paketus, tai yra grafinis įrankis, tačiau kartais pasitaiko situacijų, kai reikia dirbti tik terminale.

    Tcpdump nėra prastesnis už Wireshark ir turi visas reikiamas galimybes analizuoti paketus, be to, visus perimtus paketus galite įrašyti į failą, kad vėliau galėtumėte juos analizuoti naudodami tą patį Wireshark. Šiame straipsnyje apžvelgsime, kaip naudoti tcpdump tinklo paketams perimti.

    Daugelis platinimų pagal numatytuosius nustatymus pateikiami su komanda tcpdump, bet jei jūsų platinimas jos neturi, galite labai lengvai ją įdiegti iš oficialių saugyklų. Pavyzdžiui, Ubuntu / Debian:

    sudo apt install tcpdum p

    „Fedora“ / „Red Hat“ / „CentOS“:

    sudo yum įdiegti tcpdump

    Kai diegimas bus baigtas, galite tęsti darbą.

    tcpdump komanda

    Prieš pereidami prie darbo su programa pavyzdžių, pažvelkime į jos sintaksę ir pagrindines parinktis. Komanda turi tokią sintaksę:

    $ tcpdump parinktys -i sąsajos filtrai

    Skambindami turite pereiti sąsają, kurią stebėsite. Jei sąsaja nenurodyta, bus naudojama pirmoji sąraše. Parinktys sukonfigūruoja ekraną ir pagrindines paslaugų programos galimybes, o filtrai leidžia filtruoti nereikalingus paketus. Dabar pažvelkime į pagrindines parinktis:

    • -A- išvesti visus paketus ASCII formatu;
    • -c- uždarykite programą perėmus n-ąjį paketų skaičių;
    • -C- rašydami paketus į failą, patikrinkite failo dydį, o jei jis didesnis nei nurodytas, sukurkite naują failą;
    • -D- rodyti galimų tinklo sąsajų sąrašą;
    • -e- rodyti kiekvieno paketo ryšio lygio informaciją, tai gali būti naudinga, pavyzdžiui, norint parodyti MAC adresą;
    • -f- rodyti IP adresų domeno vardą;
    • -F- skaityti paketus iš failo, o ne iš sąsajos;
    • -G- po nurodyto laiko sukurti naują žurnalo failą;
    • -H- aptikti 802.11s antraštes;
    • -i- paketų perėmimo sąsajos pavadinimas. Galite užfiksuoti paketus iš visų sąsajų; norėdami tai padaryti, nurodykite bet kurią;
    • -Aš- perjunkite sąsają į monitoriaus režimą, kad užfiksuotumėte visus perduodamus paketus;
    • -j- nustatyti paketų įrašymo laiko žymos formatą;
    • -J- peržiūrėti turimus laiko žymes;
    • -K- netikrinkite paketų kontrolinių sumų;
    • -l- pridėti slinkimo palaikymą prie išvesties;
    • -L- rodyti palaikomus sąsajos ryšio protokolus;
    • -n- nerodyti domenų vardų;
    • -r- skaityti paketus iš failo, sukurto naudojant -w;
    • -v, -vv, -vvv- išsamesnė produkcija;
    • -q- rodyti minimalią informaciją;
    • -w- įrašyti išvestį į failą;
    • -Z- vartotojas, kurio vardu bus kuriami failai.

    Tai ne visos galimybės, bet jų pakaks, kad išspręstumėte daugumą problemų. Filtrus naudosime dažniau. Naudodami filtrus galite filtruoti tik tuos paketų tipus, kuriuos norite matyti. Galite filtruoti pagal IP adresą, protokolą, tinklą, sąsają ir daugelį kitų parametrų. Bet mes pažvelgsime į tcpdump filtrus naudodami pavyzdžius.

    Kaip naudoti tcpdump

    Prieš pradėdami naudoti tcpdump, turite išsiaiškinti, kokias tinklo sąsajas galite naudoti. Norėdami tai padaryti, paleiskite komandą su -D parinktimi:

    Pradėkime žiūrėti tcpdump pavyzdžius, fiksuodami srautą eth0 sąsajoje; man tai yra pagrindinė sąsaja, prijungta prie interneto. Programai paleisti reikalingos supervartotojo teisės, todėl nepamirškite naudoti sudo:

    sudo tcpdump -i eth0

    Norėdami sustabdyti komandą, paspauskite Ctrl + C. Išvestyje iškart pamatysite visus perimtus paketus. Kiekvienos pakuotės įrašo formatas atrodys taip:

    13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881> 192.168.1.2.52055 : vėliavėlės [.], seka 640160396:640161844, ack 436677393, laimėti 2050, parinktys , ilgis 1448

    Šis formatas būdingas duomenų paketams; priklausomai nuo protokolo, juodai paryškintas tekstas skirsis. Pirmiausia pasirodo laiko žyma, tada protokolas, tada siuntėjo IP adresas yra žalias, o gavėjo, šiuo atveju mūsų kompiuterio, adresas yra mėlynas. Toliau jie eina Papildomos parinktys tcp ir pabaigoje paketo dydis baitais. Išvesties detales galima valdyti naudojant -v parinktis. Pavyzdžiui:

    sudo tcpdump -v -i eth0

    Informacija apie IP protokolą jau rodoma čia:

    IP (tos 0x0, ttl 64, id 50309, poslinkis 0, vėliavėlės, proto TCP (6), ilgis 64)

    Galime sužinoti informaciją apie TTL paketo galiojimo laiką, versiją TCP protokolas ir antraštės lauko ilgis. Parinktis -vv kai kuriais atvejais išves paketo kontrolinės sumos patikrinimą ir turinį.

    Po parinkčių galite nurodyti paketų filtrus. Štai pagrindiniai parametrai, pagal kuriuos galite filtruoti paketus:

    • šeimininkas- pagrindinio kompiuterio pavadinimas;
    • ip- IP adresas;
    • proto- protokolas;
    • neto- tinklo arba potinklio adresas;
    • uostas- uosto adresas;
    • src- su siuntėju susijęs parametras;
    • dst- su gavėju susijęs parametras;
    • Galimi šie protokolai: eteris, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp Ir udp.

    Visa tai galite derinti tarpusavyje, kad gautumėte norimą rezultatą. Pažiūrėkime išsamiau naudodami pavyzdžius. Išfiltruokime tik į mūsų kompiuterį skirtus paketus:

    sudo tcpdump -i eth0 ip dst 192.168.1.2

    Taip pat galime pasirinkti paketus, siunčiamus į konkretų mazgą:

    sudo tcpdump -i eth0 dst priegloba google-public-dns-a.google.com

    Kaip matote, tai yra DNS paketai ir juose yra vietoj TCP vėliavėlių naudingos informacijos, paprašykite pagrindinio kompiuterio IP adreso. Taip pat galite pasirinkti atsakymo paketus iš konkretaus pagrindinio kompiuterio:

    sudo tcpdump -i eth0 src priegloba google-public-dns-a.google.com

    Tai nėra visas paketo turinys, jei norite jį gauti, turite naudoti parinktį -v arba -vv:

    sudo tcpdump -vv -i eth0 priegloba dst google-public-dns-a.google.com

    Naudodami ir operatorių galite sujungti kelis filtrus į vieną:

    sudo tcpdump -i eth0 dst priegloba google-public-dns-a.google.com ir src priegloba google-public-dns-a.google.com

    Galimos sujungimo operacijos yra ir ir arba, taip pat galite naudoti skliaustus, kad nurodytumėte pirmenybę. Nereikia nurodyti host, daugeliu atvejų pakanka src arba dst, programa pati supras, kas buvo turėta omenyje. Lygiai tą patį dizainą galima naudoti prievadams. Pavyzdžiui, galime filtruoti visas užklausas ar atsakymus į DNS (53 prievade):

    sudo tcpdump -vv -i eth0 prievadas 53

    Lygiai tą patį galima padaryti su http (80 prievadas):

    sudo tcpdump -vv -i eth0 prievadas 80

    Žinoma, dst ir src čia taip pat gali būti naudojami konkretesniems rezultatams gauti. Galite filtruoti ne tik vieną prievadą, bet ir visą eilę prievadų:

    sudo tcpdump portrange 21-23

    Jei nurodysite vieną iš protokolų, filtruosite tik to protokolo paketus, pvz., tcp, udp arba arp:

    sudo tcpdump -vv arp

    Taip pat galite pasirinkti visus udp paketus:

    sudo tcpdump -vv udp

    Taip pat galimas filtras pagal tinklo pavadinimą:

    sudo tcpdump net 129.168.1.1/24

    Be to, galite filtruoti paketus pagal jų dydį, pavyzdžiui, mažesnius nei 32 baitai:

    sudo tcpdump mažesnis nei 32

    Arba daugiau nei 128:

    tcpdump didesnis nei 128

    sudo tcpdump -i eth0 -w failas.pcap

    Šį failą galima atidaryti naudojant bet kurią tokių failų skaitymo programą, pvz., Wireshark. Norėdami atidaryti faile išsaugotus paketus, naudokite parinktį -r:

    sudo tcpdump -r failas.pcap

    Yra dar vienas dalykas, į kurį verta atkreipti dėmesį. Tai yra paketų turinio rodymo formatas. Paketo turinį galite išvesti ASCII formatu naudodami parinktį -A:

    sudo tcpdump -A -i eth0

    Taip pat galite rodyti turinį HEX ir ASCII formatu, naudokite -XX:

    sudo tcpdump -XX -i eth0

    išvadas

    Šiame straipsnyje apžvelgėme, kaip naudoti tcpdump. Tai labai galingas tinklo analizatorius, veikiantis tik per komandinę eilutę. Tikiuosi, kad ši informacija jums buvo naudinga ir dabar naudoti tcpdump bus daug lengviau, jei turite klausimų, klauskite komentaruose!

    Norėdami užbaigti vaizdo įrašą paskaita apie tcpdump:

    tcpdump yra galingas komandų eilutės analizatorius ir Libpcap, nešiojama biblioteka, skirta tinklo srautui užfiksuoti. Tcpdump spausdina atitinkamų paketų turinio aprašą tinklo sąsajoje loginė išraiška. Jis taip pat gali būti paleistas naudojant jungiklį -w, dėl kurio jis išsaugo paketinius duomenis į failą, kad būtų galima vėliau analizuoti, ir (arba) su vėliava -r, dėl kurios jie nuskaitomi iš išsaugoto paketinio failo. Naudodamiesi šia programa galite perimti ir analizuoti tinklo srautą, einantį per kompiuterį, kuriame veikia ši programa.

    Šioje temoje „tcpdump diegimas ir naudojimas“ norėčiau pakalbėti apie tcpdump diegimą, kaip jį naudoti ir kam jis reikalingas.

    Naudodami tcpdump galite:

    • Galite derinti tinklo programas.
    • Galite derinti tinklą arba visą tinklo įrangą.

    Norėdami įdiegti tcpdump debian/ubuntu/linux mint, turite paleisti:

    # sudo apt-get install tcpdump

    Norėdami įdiegti „tcpdump“ „RedHat“ / „CentOS“ / „Fedora“, naudokite:

    # sudo yum install tcpdump

    Norėdami įdiegti „tcpdump“ „MacOS“, naudokite.

    # brew įdiegti tcpdump

    Naudojant tcpdump.

    Norėdami patikrinti, ar tcpdump mums tinka, galite paleisti komandą:

    # tcpdump -i eth0 80 prievadas

    Yra nemažai jungiklių, skirtų pačiam tcpdump įrankiui naudoti, čia pateikiamas įprastų sąrašas:

    Jei reikia išsiaiškinti, kokiais paketais keičiasi 21 serveris (pavyzdžiui, jūsų_serveris_1 ir jūsų_serveris_2), naudokite komandą:

    # tcpdump priegloba jūsų_serveris_1 ir jūsų_serveris_2

    Jei jums reikia tik stebėti siunčiamus paketus iš pagrindinio kompiuterio, paleiskite:

    # tcpdump src priegloba jūsų_serveris

    Jei jums reikia tik stebėti gaunamus paketus iš pagrindinio kompiuterio, paleiskite:

    # tcpdump dst priegloba jūsų_serveris

    Taip pat galite klausytis išeinančių ar gaunamų paketų iš serverio ir tam tikrame prievade. Norėdami tai padaryti, tiesiog pridėkite prievadą, kurio norite klausytis (dažniausiai naudojamas 80, 8080).

    Peržiūrėkite sąsajų, kuriose galite klausytis tcpdumt, sąrašą:

    # tcpdump -D

    Klausytis sąsajos eth0:

    # tcpdump -i eth0

    Klausykite naudodami bet kurią pasiekiamą sąsają (reikalinga Linux branduolio versija 2.2 arba naujesnė):

    # tcpdump -i bet koks

    Rodyti viską ekrane (viską, ką vykdo programa):

    # tcpdump -v

    Rodyti daug dalykų ekrane (viską, ką vykdo programa):

    # tcpdump -vv

    Daug dalykų išveda į ekraną (viską, ką vykdo programa):

    # tcpdump -vvv

    Nerodyti daug informacijos, kai fiksuojami paketai (ne taip, kaip standartinis):

    # tcpdump -q

    Apriboti paketų fiksavimą iki 100:

    # tcpdump -c 100

    Įrašykite visus duomenis (užfiksuotus paketus) į failą, pavadintą capture.cap:

    # tcpdump -w capture.cap

    Įrašykite visus duomenis (užfiksuotus paketus) į failą Capture.cap ir parodykite juos ekrane realiuoju laiku:

    # tcpdump -v -w capture.cap

    Paketų išėjimas iš Capture.cap failo:

    # tcpdump -r capture.cap

    Išveskite paketus iš Capture.cap failo naudodami kuo daugiau informacijos:

    # tcpdump -vvv -r capture.cap

    Išvesties IP ir prievadai vietoj domenų yra paketų fiksavimas:

    # tcpdump -n

    Užfiksuokite visus paketus, kurių paskirties kompiuteris yra 192.138.1.1. Rodyti IP ir prievadus ekrane:

    # tcpdump -n dst host 192.138.1.1

    # tcpdump -n src host 192.138.1.1

    Užfiksuokite visus paketus iš pagrindinio kompiuterio 192.138.1.1. Rodyti IP ir prievadus ekrane:

    # tcpdump -n priegloba 192.138.1.1

    Užfiksuokite paketus, kai tinklas yra 192.138.1.0/24. Rodyti IP ir prievadus ekrane:

    # tcpdump -n dst net 192.138.1.0/24

    # tcpdump -n src net 192.138.1.0/24

    Užfiksuokite paketus iš tinklo 192.138.1.0/24. Rodyti IP ir prievadus ekrane:

    # tcpdump -n net 192.138.1.0/24

    Užfiksuokite paketus iš 23 prievado. Rodyti IP ir prievadus ekrane:

    # tcpdump -n dst 23 prievadas

    Užfiksuokite paketus iš 1 iki 1023 prievadų. Ekrane rodykite IP ir prievadus:

    # tcpdump -n dst portrange 1-1023

    Užfiksuokite tik TCP paketus, kurių paskirties vieta yra 1–1023 prievaduose. Ekrane rodykite IP ir prievadus:

    # tcpdump -n tcp dst portrange 1-1023

    Užfiksuokite tik UDP paketus, kurių paskirties vieta yra 1–1023 prievaduose. Ekrane rodykite IP ir prievadus:

    # tcpdump -n udp dst portrange 1-1023

    Užfiksuokite paketus iš paskirties vietos, kur IP yra 192.138.1.1, o paskirties prievadas yra 23. Rodymas ekrane:

    # tcpdump -n "dst host 192.138.1.1 ir dst prievadas 23"

    Užfiksuokite paketus iš paskirties vietos, kur IP yra 192.138.1.1, ir per 80 arba 443 prievadus. Ekranas:

    # tcpdump -n "dst prievadas 192.138.1.1 ir (dst prievadas 80 arba dst prievadas 443)"

    Užfiksuokite bet kokius ICMP paketus:

    # tcpdump -v icmp

    Užfiksuokite bet kokius ARP paketus:

    # tcpdump -v arp

    Užfiksuokite bet kokius ICMP arba ARP paketus:

    # tcpdump -v "icmp arba arp"

    Užfiksuokite bet kokius transliuojamus arba daugialypius siuntimus:

    # tcpdump -n "transliacija arba daugialypė transliacija"

    Užfiksuokite didelius paketus (500 baitų), o ne standartinį 68b:

    # tcpdump -s 500

    Užfiksuokite visus duomenų baitus į paketą:

    # tcpdump -s 0

    „Sunkių paketų“ peržiūra:

    # tcpdump -nnvvXSs 1514

    Užfiksuokite ICMP paketus su ping ir pong:

    # tcpdump -nnvXSs 0 -c2 icmp

    Išvada be daugelio variantų:

    # tcpdump -nS

    Pagrindinės komunikacijos (labai žodinis režimas), galite matyti didelį srautą su daugžodžiu:

    # tcpdump -nnvvS

    Gilus žvilgsnis į eismą, pridedant -X naudingajam kroviniui:

    # tcpdump -nnvvXS

    Peržiūrėkite sunkų paketą ir padidinkite momentinį ilgį, užfiksuodami visą paketą:

    # tcpdump -nnvvXSs 1514

    Taip pat galite filtruoti pagal konkrečias paketo dalis, taip pat sugrupuoti kelias sąlygas. Tai naudinga, pavyzdžiui, ieškant tik SYN arba PCT, o pastarųjų – norint dar labiau izoliuoti srautą.

    Rodyti visus URGENT (URG) paketus:

    # tcpdump "tcp & 32!=0"

    Rodyti visus ACKNOWLEDGE (ACK) paketus:

    # tcpdump "tcp & 16!=0"

    Rodyti visus PUSH (PSH) paketus:

    # tcpdump "tcp & 8!=0"

    Rodyti visus RESET (RST) paketus:

    # tcpdump "tcp & 4!=0"

    Rodyti visus SYNCHRONIZE (SYN) paketus:

    # tcpdump "tcp & 2!=0"

    Rodyti visus FINISH (FIN) paketus:

    # tcpdump "tcp & 1!=0"

    Rodyti visus SYNCHRONIZE/ACKNOWLEDGE (SYNACK) paketus:

    # tcpdump "tcp=18"

    Užfiksuokite TCP vėliavėles naudodami tcpflags:

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

    Paketai su RST ir SYN vėliavėlėmis (patikrinkite):

    # tcpdump "tcp = 6"

    Eismas iš „Evil Bit“ (patikrinkite):

    # tcpdump "ip & 128 != 0"

    Čia aš užbaigsiu savo straipsnį „tcpdump diegimas ir naudojimas“, tikiuosi, kad viskas yra aišku ir suprantama.



     


    Skaityti:



    Kaip pasirinkti „flash drive“ failų sistemą „Mac“.

    Kaip pasirinkti „flash drive“ failų sistemą „Mac“.

    „Rifat, aš nusipirkau naują diską ir turiu, kad jis veiktų tiek „Mac“, tiek „Windows“. „Sveiki, turiu diską, bet negaliu į jį įrašyti...

    Kaip pašalinti įbrėžimus nuo telefono kameros?

    Kaip pašalinti įbrėžimus nuo telefono kameros?

    Sveiki visi! Viskas prasidėjo, kai 2011 metais nusipirkau iPhone 4, ne, ne už 14 000 rublių :). Pirkau 2016 metais uz 3700, vidutiniska kaina Avito...

    Kaip pašalinti programas iš „Mac OS“ – visas vadovas

    Kaip pašalinti programas iš „Mac OS“ – visas vadovas

    Paprastai „Mac OS“ failų ištrynimo procesas yra paprastas. Skirtingai nei „Windows“, joje nėra specialios pašalinimo programos, kuri pašalintų nereikalingą...

    Naudingi spartieji klavišai, skirti Mac OS X mac os spartiesiems klavišams

    Naudingi spartieji klavišai, skirti Mac OS X mac os spartiesiems klavišams

    Tikrai ne visi žino, kad dirbdami su „MacBook Pro“ galite naudoti daugybę sparčiųjų klavišų. Mygtukų derinių išmanymas yra tam tikro dydžio...

    tiekimo vaizdas RSS