Skip to main content

Tcpdump: esimerkkejä, vaihtoehtoja ja paljon muuta

Anonim

Tcpdump on komento, jota käytetään erilaisissa Linux-käyttöjärjestelmissä (OS), jotka kokoavat TCP / IP-paketit, jotka kulkevat verkkosovittimen läpi. Paljon kuin paketinhaun työkalu, tcpdump ei voi vain analysoida verkkoliikennettä, vaan myös tallentaa sen tiedostoon.

Toisin kuin jotkut käyttöjärjestelmän oletusarvoisesti antamat komennot, saatat huomata, että tcpdumpia ei voi käyttää, koska sitä ei ole asennettu. Asenna tcpdump suorittamalla apt-get-asennus tcpdump tai yum asentaa tcpdump, riippuen käyttöjärjestelmästäsi.

Miten Tcpdump toimii

Tcpdump tulostaa pakettien otsikot verkkokäyttöliittymään, joka vastaa Boolen-arvoa ilmaisu . Sitä voidaan myös käyttää-W lippu, joka paketti sen tallentaa tiedostoon myöhempää analyysiä varten ja / tai-r lippu, joka saa sen lukemaan tallennetusta pakettitiedostosta pikemminkin kuin pakettien lukemista verkkoliitännästä. Kaikissa tapauksissa vain vastaavia paketteja ilmaisu käsitellään tcpdump .

tcpdump , jos ei ajetaan-C lippua, jatka pakettien kaappaamista, kunnes se keskeytyy SIGINT-signaalilla (luodaan esimerkiksi kirjoittamalla keskeytysmerkki, tyypillisesti Ctrl + C) tai SIGTERM - signaali (tyypillisesti generoidullatappaa(1) komento); jos ajetaan-C lippu, se kaappaa paketit, kunnes se keskeytyy SIGINT- tai SIGTERM-signaalin tai tiettyjen pakettien lukumäärä on käsitelty.

Edellä mainitut kytkimet selitetään tarkemmin tässä artikkelissa.

Kun tcpdump lopettaa pakettien kaappaamisen, se raportoi seuraavista:

  • Paketit ".
    • Tämän merkitys riippuu OS: stä, jolla olet käynnissä tcpdump , ja mahdollisesti tapa, jolla käyttöjärjestelmä on määritetty. Jos komentorivillä on määritetty suodatin, joissakin käyttöjärjestelmissä se laskee paketit riippumatta siitä, täyttyvätkö ne suodattimen ilmaisulla ja toisissa se laskee vain paketteja, jotka olivat suodattimen lausekkeen mukaisia ​​ja jotka käsiteltiin tcpdump.
  • Paketit "pudotetaan ytimellä."
    • Tämä on sellaisten pakettien määrä, jotka pudotettiin puskuritilan puutteen vuoksi pakettien kaappausmekanismilla OS: ssä, johon tcpdump on käynnissä, jos OS ilmoittaa tiedot sovelluksiin. Jos ei, se ilmoitetaan 0: ksi.

SIGINFO-signaalia tukevilla alustoilla, kuten useimmilla BSD-levyillä (Berkeley Software Distributions), se ilmoittaa laskut, kun se vastaanottaa SIGINFO-signaalin (joka syntyy esimerkiksi kirjoittamalla "status" -merkki, tyypillisesti Ctrl + T) ja jatkaa pakettien kaappaamista.

Tcpdump-yhteensopivuus

Pakettien lukeminen tcpdump-komennolla olevasta verkkoliitännästä voi edellyttää, että sinulla on erityisiä oikeuksia ( lukeminen tallennettu pakettitiedosto ei vaadi tällaisia ​​käyttöoikeuksia):

  • SunOS 3.x tai 4.x NIT: n tai BPF: n kanssa: Sinulla on oltava lukuton käyttöoikeus / Dev / NIT tai dev / BPF * .
  • Solaris ja DLPI: Sinulla on oltava luku / kirjoitusoikeus verkon pseudo-laitteeseen, kuten / Dev / le . Ainoastaan ​​joidenkin Solaris-versioiden osalta tämä ei kuitenkaan riitä tcpdump kaapata hämärässä tilassa; näissä Solaris-versioissa sinun on oltava juuri tai tcpdump on asennettava asetettu juuriksi, jotta se voidaan tallentaa halkeamattomassa tilassa. Huomaa, että monissa (ehkä kaikkiin) rajapintoihin, jos et kaapata vääristyneessä tilassa, et näe lähteviä paketteja, joten kaappaaminen, jota ei ole tehty halveksitilassa, ei ehkä ole kovin hyödyllinen.
  • HP-UX ja DLPI: Sinun on oltava juuri tai tcpdump on asennettava asetettu juuriksi.
  • IRIX snoopilla: Sinun on oltava juuri tai tcpdump on asennettava asetettu juuriksi.
  • Linux: Sinun on oltava juuri tai tcpdump on asennettava asetettu juuriksi.
  • Ultrix ja Digital UNIX / Tru64 UNIX: Jokainen käyttäjä voi kaapata verkkoliikenteen tcpdump . Kuitenkaan mikään käyttäjä (ei edes super-käyttäjä) voi kaapata halveksitilassa rajapinnassa, ellei super-käyttäjä ole mahdollistanut ristiriitainen toimintatapa kyseisen rajapinnan avulla pfconfig (8), eikä mikään käyttäjä (ei edes super-käyttäjä) voi kaapata yksikön liikennettä, jonka kone vastaanottaa tai lähettää liitännässä, ellei super-käyttäjä ole mahdollistanut kopiointitilan käyttöä kyseisellä rajapinnalla pfconfig , niin hyödyllinen pakettien kaappaaminen rajapinnalla edellyttää todennäköisesti, että joko käyttötarkoitus tai kopiointitilan toiminta tai molemmat toimintatavat on otettu käyttöön kyseisellä rajapinnalla.
  • BSD: Sinulla on oltava lukuton käyttöoikeus / Dev / BPF * .

Tcpdump Command Syntax

Kuten kaikki tietokoneen komennot, tcpdump-komento toimii oikein vain, jos syntaksi on oikea:

tcpdump -adeflnNOpqRStuvxX -C Kreivi

-C Tiedoston koko -F tiedosto

-i liitäntä -m moduuli -r tiedosto

-S snaplen -T tyyppi -U käyttäjä -W tiedosto

-E algo: salainen ilmaisu

Tcpdump-komentoasetukset

Nämä ovat kaikki vaihtoehdot, joita voit käyttää tcpdump-komennolla:

  • -a: Yritä muuntaa verkko- ja yleislähetysosoitteet nimiin.
  • -C: Lopeta vastaanottamisen jälkeen Kreivi paketteja.
  • -C: Ennen raakapaketin kirjoittamista tallennusfilmiin, tarkista, onko tiedosto suurempi kuin Tiedoston koko ja jos on, sulje nykyinen tallennusfilmi ja avaa uusi.Savefiles, kun ensimmäinen savefile on määritelty nimellä-W lippu, jossa on luku sen jälkeen, alkaen 2 ja jatkuu ylöspäin. Yksiköt Tiedoston koko ovat miljoonia tavuja (1 000 000 tavua, ei 1 048 576 tavua).
  • -D: Kopioi pakettikoodin koodaus ihmisen luettavassa muodossa normaalilähtöön ja pysähtyy.
  • -dd: Dump paketti-täsmäytyskoodi aC ohjelman fragmentti.
  • -DDD: Tyhjennä paketti-täsmäytyskoodi desimaalilukuina (edeltää laskenta).
  • -e: Tulosta linkitetyn otsikon jokainen kaatopaikka.
  • -E: Käytä algo: salainen IPsec ESP-pakettien purkamista varten. Algoritmit voivat ollades-CBC, 3DES CBC, blowfish CBC, RC3 CBC, cast128 CBC, taiei mitään. Oletusasetus ondes-CBC. Pakettien salauksen purkaminen on mahdollista ainoastaan, jos tcpdump koottiin kryptografian avulla. salaisuus ESP: n salaisen avaimen ascii-teksti. Emme voi ottaa mielivaltaista binaarista arvoa tällä hetkellä. Vaihtoehto olettaa RFC2406 ESP: n, ei RFC1827 ESP: n. Tämä vaihtoehto on vain virheenkorjausta varten, ja tämän vaihtoehdon käyttäminen todella salaisella avaimella on lannistunut. Esittämällä IPsec-salainen avain komentoriville voit tehdä sen näkyviksi muille, kautta ps (1) ja muissa tilaisuuksissa.
  • -f: Tulosta "ulkomaiset" Internet-osoitteet numeerisesti eikä symbolisesti (tämä vaihtoehto on tarkoitettu lähentämään vakavia aivovaurioita Sunin yp-palvelimessa. Yleensä se riippuu ikuisesti käännetystä nonlocal-numerosta).
  • -F: Käytä tiedosto syötteenä suodattimen ilmentymälle. Komentoriville annettu ylimääräinen lauseke jätetään huomiotta.
  • -i: Kuuntele liitäntä . Jos määrittelemätön, tcpdump etsii järjestelmän rajapintaa pienimmän, konfiguroidun käyttöliittymän (poislukien loopback) avulla. Solmiot rikkoutuvat valitsemalla aikaisimman ottelun. Linux-järjestelmissä, joissa on 2.2 tai uudempi ydin, a liitäntä Kaikkien rajapintojen pakettien kaappaamiseen voidaan käyttää "kaikkien" argumenttia. Huomaa, että "minkä tahansa" laitteen kaappaaminen ei ole sallittua.
  • -l: Tee stdout-rivi puskuroitu. Hyödyllinen, jos haluat nähdä tiedot kaapattaessa sitä. Esimerkiksi "tcpdump -l | tee dat" tai "tcpdump -l> dat & tail -f dat".
  • -m: Lataa SMI MIB-moduulin määritelmät tiedostosta moduuli . Tätä vaihtoehtoa voidaan käyttää useita kertoja lataamaan useita MIB-moduuleja tcpdump .
  • -n: Älä muunna isäntäosoitteita nimiin. Tätä voidaan käyttää DNS-hakujen välttämiseksi.
  • -nn: Älä muunna pöytäkirjoja ja porttinumeroita ns.
  • -N: Älä tulosta isäntänimien nimetunnusta. Jos esimerkiksi annat tämän lipun, niin tcpdump tulostaa "nic" "sen sijaan, että" nic.ddn.mil "'.
  • -O: Älä suorita pakettikoodin optimointia. Tämä on hyödyllinen vain, jos epäilet virheen optimoijassa.
  • -p: älä laittaa käyttöliittymä halpaan tilaan. Huomaa, että käyttöliittymä voi olla halveksitilassa muusta syystä; siksi "-p" ei voi käyttää lyhenteenä "eetterin isännälle {local-hw-addr} tai eetterilähetykselle".
  • -q: Nopea (hiljainen) lähtö. Tulosta vähemmän protokollatietoja, joten lähtölinjat ovat lyhyempiä.
  • R: Oletetaan, että ESP / AH-paketit perustuvat vanhaan määrittelyyn: RFC1825 - RFC1829. Jos määritetään, tcpdump ei tulosta toistopyyntökenttään. Koska ESP / AH-spesifikaatiossa ei ole protokollan versiokenttää, tcpdump ei voi päätellä ESP / AH-protokollan versiota.
  • -r: Lue paketit tiedosto (joka luotiin -w-vaihtoehdolla). Vakiotuloa käytetään, jos tiedosto on "-".
  • -S: Tulosta absoluuttinen, ei suhteellinen TCP-sekvenssin numero.
  • -S: Snarf snaplen tavuista datasta kustakin paketista pikemminkin kuin 68: n oletusarvo; SunOS: n NIT: llä vähimmäismäärä on todellisuudessa 96. Kuusikymmentä kahdeksan tavua on riittävä IP, ICMP, TCP ja UDP, mutta ne voivat katkaista protokollatiedot nimipalvelimelta ja NFS-paketeilta (ks. alla). Rajoitetun valokuvan vuoksi katkaistut paketit on merkitty lähdössä "| Proto '', missä Proto on protokollatason nimi, jolla katkaisu on tapahtunut. Huomaa, että suurempien otosten ottaminen lisää sekä pakettien käsittelyyn kuluvaa aikaa että vähentää tehokkaasti pakettipuskurointia. Tämä voi aiheuttaa pakettien menettämisen. Sinun pitäisi rajoittaa snaplen pienimpään numeroon, joka kaappaa protokollatiedot, joista olet kiinnostunut snaplen 0 tarkoittaa sitä, että käytä haluttua pituutta kokonaisten pakettien lukitsemiseen.
  • -T: Pakota paketit, jotka on valittu " ilmaisu "tulkittava määriteltynä tyyppi . Tällä hetkellä tunnetut tyypit ovatcnfp (Cisco NetFlow-protokolla),RPC (Remote Procedure Call),RTP (Real-Time Applications -protokolla),RTCP (Reaaliaikaiset sovellukset -ohjausprotokolla),SNMP (Simple Network Management Protocol),arvonlisävero (Visual Audio Tool) jawb (jakautunut Valkoinen hallitus).
  • -t: älä tulosta aikaleima jokaiseen tyhjennyslinjaan.
  • -TT: Tulosta jokaisen tyhjennyslinjan muotoilematon aikaleima.
  • -U: Poistaa pääkäyttäjän oikeudet ja muuttaa käyttäjätunnusta käyttäjä ja ryhmän ID ensisijaisen ryhmän käyttäjä .
  • Huomautus: Red Hat Linux pudottaa automaattisesti käyttöoikeudet käyttäjän "pcap" -ohjelmaan, ellei muuta ole määritetty.
  • -ttt: Tulosta delta (mikrosekunnissa) nykyisen ja edellisen rivin välillä jokaisella tyhjennysviivalla.
  • -tttt: Tulosta aikaleima oletusmuodossa, joka etenee jokaisen tyhjennysviivan päivämäärän mukaan.
  • -u: Tulosta ei-koodattuja NFS-kädensijoita.
  • -v: (Hieman enemmän) verbose output. Esimerkiksi IP-paketin elinkaari, tunnistaminen, kokonaispituus ja vaihtoehdot tulostetaan. Sallii lisäksi pakettien eheystarkastukset, kuten IP- ja ICMP-otsikon tarkistussumman tarkastamisen.
  • -vv: Vielä enemmän vertailukelpoista tuotos. Esimerkiksi NFS-vastauspaketeista tulostetaan lisää kenttiä, ja SMB-paketit on kokonaan dekoodattu.
  • -vvv: Vielä enemmän vertailukelpoista tuotos. Esimerkiksi telnetSBSE vaihtoehdot tulostetaan kokonaan. Kanssa X Telnet-asetukset tulostetaan myös heksadesimaalina.
  • -W: Kirjoita raakapaketit kohteeseen tiedosto sen sijaan jäsentää ja tulostaa ne ulos. Ne voidaan myöhemmin tulostaa -r-vaihtoehdolla. Vakiolähtöä käytetään, jos tiedosto on "-".
  • -x: Tulosta jokaisen paketin (vähennetään sen linkitason otsikko) heksadesimaalisesti. Pienempi koko paketti tai snaplen tavut tulostetaan. Huomaa, että tämä on koko linkkikerrospaketti, joten linkkikerrosten tasolle (esim. Ethernet) myös pehmustetut tavut tulostetaan, kun korkeamman kerroksen paketti on lyhyempi kuin vaadittu pehmuste.
  • X: Kun tulostat kuusikulmia, tulosta myös ascii. Joten jos-x on myös asetettu, paketti tulostetaan hex / ascii. Tämä on kätevää uusien protokollien analysoimiseksi. Vaikka-x ei ole myöskään asetettu, jotkin pakettiosat voidaan tulostaa hex / ascii-muodossa.
  • ilmaisu : Valitsee, mitä paketteja poltetaan. Jos ei ilmaisu annetaan kaikki verkossa olevat paketit polkumyynnillä. Muussa tapauksessa vain paketit, joille ilmaisu on "tosi" polkumyynnillä. ilmaisu koostuu yhdestä tai useammasta perusalkioiden. Ensimärit koostuvat tavallisesti id (nimi tai numero), jota edeltää yksi tai useampi karsinta. On olemassa kolme erilaista karsintaturnausta:
  • tyyppi : Karsintajoukot sanovat, millaista asiaa id nimi tai numero viittaa. Mahdolliset tyypit ovatisäntä, netto, japortti- Esimerkiksi "host foo", "net 128.3", "portti 20". Jos ei ole tyyppikelpuutusta,isäntä on oletettu.
  • dir : Karsintaohjelmat määrittävät tietyn siirtosuunnan ja / tai siitä id . Mahdolliset ohjeet ovatsrc, DST, src tai dst jasrc ja DST (esim. 'src foo', 'dst net 128.3', 'src tai dst port ftp-data'). Jos ei ole dir qualifier,src tai dst on oletettu. 'Null' linkkikerrokset (eli piste-piste-protokollat ​​kuten slip) saapuvan ja lähtevä karsinnassa voidaan käyttää haluttua suuntaa.
  • Proto : Karsinta rajoittaa ottelun tietylle protokollalle. Mahdolliset protot ovat: eetteri, FDDI, tr, IP, IP6, ARP, rarp, DECnet, tcp, jaudpEsimerkiksi "ether src foo", "arp net 128.3", "tcp-portti 21". Jos proto-kelpoisuutta ei ole, kaikki tyypin mukaiset protokollat ​​oletetaan. Esimerkiksi "src foo" tarkoittaa "(ip tai arp tai rarp) src foo" (paitsi jos jälkimmäinen ei ole laillinen syntaksi), "net bar" tarkoittaa "(ip tai arp tai rarp) net bar" ja "portti 53" tarkoittaa "(tcp tai udp) -porttia 53 '.
    • 'fddi' on oikeastaan ​​alias "eetterille"; parseri käsittelee ne identtisesti merkitsevänä "määritellyn verkkorajapinnan tietoliikennetasona." FDDI-otsakkeissa on Ethernet-tyyppisiä lähde- ja kohdeosoitteita ja usein sisältävät Ethernet-tyyppisiä pakettityyppejä, joten voit suodattaa näillä FDDI-kentillä juuri kuten samoilla Ethernet-kentillä. FDDI-otsakkeissa on myös muita kenttiä, mutta et voi nimetä niitä nimenomaisesti suodattimessa.
    • Vastaavasti "tr" on "eetterin" alias; edellisen kappaleen lausunnot FDDI-otsakkeista koskevat myös Token Ring -otsikoita.

Edellä mainittujen lisäksi on olemassa joitain "primitiivisiä" avainsanoja, jotka eivät noudata mallia:portti, lähettää, Vähemmän, suurempi, ja aritmeettinen ilmaisuja. Kaikki nämä on kuvattu alla.

Monimutkaisempia suodattimen ilmaisuja syntyy sanojen avullaja, tai, jaei yhdistää primitiivit - esimerkiksi "host foo eikä port ftp eikä port ftp-data". Työntämisen tallentamiseksi identtiset karsintaluettelot voidaan jättää pois (esim. "Tcp dst port ftp tai ftp-data tai verkkotunnus" on täsmälleen sama kuin "tcp dst -portti ftp- tai tcp-dst-portti ftp-data tai tcp-dst-porttialue".)

Nämä ovat tcpdump-komennon sallitut primitiot:

  • dst isäntä isäntä
    • Totta, jos paketin IPv4 / v6-kohdealue on isäntä , joka voi olla joko osoite tai nimi.
  • src isäntä isäntä
    • Totta, jos paketin IPv4 / v6 lähdekenttä on isäntä .
  • isäntä isäntä
    • Tosi, jos joko IPv4 / v6-lähde tai paketin kohde on isäntä . Jokin edellä mainituista isännöistä voi olla lisätty avainsanoilla,IP, ARP, rarp, taiIP6, kuten vuonna ip-isäntä isäntä (joka vastaa eetteriproto IP ja isäntä isäntä).
    • Jos isäntä on nimi, jolla on useita IP-osoitteita, jokaisen osoitteen tarkistaminen otteluun.
  • eetteri dst ehost
    • Todellinen, jos Ethernet-kohdeosoite on ehost . Ehost voi olla joko nimi / etc / ethers tai numero (ks eetterit (3N) numeerisessa muodossa).
  • eetteri src ehost
    • Todellinen, jos Ethernet-lähdeosoite on ehost .
  • eetterisäntä ehost
    • Todellinen, jos joko Ethernet-lähde tai kohdeosoite on ehost .
  • portti isäntä
    • Totta, jos paketti on käytössä isäntä kuten yhdyskäytävä (eli Ethernet-lähde tai kohdeosoite oli isäntä mutta IP-lähde tai IP-kohde eivät olleetkaan isäntä ).
    • isäntä on oltava nimi, ja se on löydettävä sekä koneen isäntänimeä-IP-osoitteen resoluutiomekanismeista (isäntänimi- tiedosto, DNS, NIS, jne.) ja koneen isäntä-nimi-ethernet-osoitteenmääritysmekanismilla (/ etc / ethers jne.).
    • Vastaava ilmaus on eetterisäntä ehost ja nyt isäntä isäntä , jota voidaan käyttää joko nimeä tai numeroita varten isäntä / ehost .) Tämä syntaksi ei toimi tällä hetkellä IPv6-yhteensopivassa kokoonpanossa.
  • dst net netto
    • Totta, jos paketin IPv4 / v6-kohdeosoitteella on verkon numero netto . Netto voi olla joko nimi / etc / networks tai verkon numero (ks verkot (4) yksityiskohtia varten).
  • src net netto
    • Totta, jos paketin IPv4 / v6-lähdeosoitteella on verkon numero netto .
  • netto netto
    • Todellinen, jos joko paketin IPv4 / v6-lähde tai määränpään osoite on verkon numero netto .
  • netto netto naamio netmask
    • Totta, jos IP-osoite vastaa netto erityisellä netmask . Voidaan pätevöidäsrc taiDST. Huomaa, että tämä syntaksi ei kelpaa IPv6: lle netto .
  • netto netto / len
    • Totta, jos IPv4 / v6-osoite vastaa netto verkkokalvolla len bittiä leveä. Voidaan pätevöidäsrc taiDST.
  • dst-porttiin portti
    • Todellinen, jos paketti on ip / tcp, ip / udp, ip6 / tcp tai ip6 / udp ja sillä on kohdeportin arvo portti . portti voi olla numero tai nimi, jota käytetään / etc / services (ks tcp (4P) ja udp (4P)). Jos käytetään nimeä, sekä portin numero että protokolla tarkistetaan. Jos käytetään numeroa tai epäselvä nimi, vain sataman numero valitaan (esim.dst-portti 513 tulostaa sekä tcp / login - liikenteen että udp / liikenteen, jasatama-aluetta tulostaa sekä tcp / domain- että udp / domain -liikenteen).
  • src-portti portti
    • Todellinen, jos paketin lähdeportin arvo on portti .
  • portti portti
    • Tosi, jos paketin lähde tai kohdeportti on portti . Jokin edellä mainituista satama-ilmaisuista voidaan korvata avainsanoilla,tcp taiudp, kuten vuonna tcp src -portti portti , joka vastaa vain TCP-paketteja, joiden lähdesatama on portti .
  • Vähemmän pituus
    • Totta, jos paketin pituus on pienempi tai yhtä suuri kuin pituus . Tämä vastaa len <= Pituus .
  • suurempi pituus
    • Totta, jos paketin pituus on suurempi tai yhtä suuri kuin pituus . Tämä vastaa len> = Pituus .
  • ip proto protokolla
    • Totta, jos paketti on IP-paketti (ks IP (4P)) protokolla . protokolla voi olla numero tai yksi nimistä ICMP , icmp6 , IGMP , IGRP , pim , Ah , esp , VRRP , udp , tai tcp . Huomaa, että tunnisteet tcp , udp , ja ICMP ovat myös avainsanoja, ja ne on pakko kääntää takaisin (), joka on C-kuori. Huomaa, että tämä alkukirjain ei ajaa protokollan otsikkoketjua.
  • ip6 proto protokolla
    • Totta, jos paketti on protokollatyyppinen IPv6-paketti protokolla . Huomaa, että tämä alkukirjain ei ajaa protokollan otsikkoketjua.
  • ip6-protokolli protokolla
    • Totta, jos paketti on IPv6-paketti, ja siinä on tyyppinen protokollan otsikko protokolla sen protokollan otsikkoketjussa. Esimerkiksi, ipv6-protokolla 6 vastaa mitä tahansa IPv6-pakettia, jossa on TCP-protokollan otsikko protokollan otsikkoketjussa. Paketti voi sisältää esimerkiksi autentikointiotsikon, reititysotsikon tai hop-by-hop -otsikon, IPv6-otsikon ja TCP-otsikon välillä. Tämän alkukirjaimen lähettämä BPF-koodi on monimutkainen eikä sitä voida optimoida BPF: n optimointikoodilla tcpdump , joten tämä voi olla jonkin verran hidasta.
  • ip protochain protokolla
    • Vastaaip6-protokolli protokolla , mutta tämä koskee IPv4: tä.
  • eetterilähetys
    • Totta, jos paketti on Ethernet-lähetyspaketti. eetteri avainsana on valinnainen.
  • ip-lähetystä
    • Totta, jos paketti on IP-lähetyspaketti. Se tarkistaa sekä nollia että kaikkia lähetyssopimuksia ja etsii paikallisen aliverkon peitteen.
  • eetteriryhmä
    • Totta, jos paketti on Ethernet-monilähetyspaketti. eetteri avainsana on valinnainen. Tämä on pikemminkin "eetteri 0 & 1! = 0'.
  • ip multicast
    • Totta, jos paketti on IP-ryhmälähetyspaketti.
  • ip6-ryhmälähetys
    • Totta, jos paketti on IPv6-ryhmälähetyspaketti.
  • eetteriproto protokolla
    • Totta, jos paketti on eetterityyppistä protokolla . protokolla voi olla numero tai yksi nimistä IP , IP6 , ARP , rarp , puhe , AARP , DECnet , sca , lat , mopdl , moprc , ISO , STP , IPX , tai NetBEUI . Huomaa, että nämä tunnisteet ovat myös avainsanoja, ja ne on poistettava käänteisarkilla ().
    • FDDI: n tapauksessa (esim. "fddi protokolla arp') ja Token-rengas (esim.tr protokolla arp'), suurin osa näistä protokollista, protokollan tunniste tulee 802.2 Logical Link Control (LLC) -otsikoosta, joka yleensä kerrotaan FDDI: n tai Token Ring -otsikon päälle.
    • Suodatettaessa useimmat protokollatunnisteet FDDI: ssä tai Token Ringissä, tcpdump tarkistaa vain LLC-otsikon protokollan ID-kenttään ns. SNAP-muodossa, jossa on 0x000000: n organisatorisen yksikön tunniste (OUI) kapseloidulle Ethernetille; se ei tarkista, onko paketti SNAP-muodossa, jonka OUI on 0x000000.
    • Poikkeukset ovat ISO , jolla se tarkistaa LLC-otsikon DSAP (Destination Service Access Point) ja SSAP (Source Service Access Point) -kentät, STP ja NetBEUI , jossa se tarkistaa LLC: n otsikon DSAP: n ja puhe , jossa se tarkistaa SNAP-formaattipaketin, jonka OUI on 0x080007 ja Appletalk etype.
    • Jos kyseessä on Ethernet, tcpdump tarkistaa Ethernet-tyyppikentän useimmille näistä protokollista; poikkeukset ovat ISO , mahla , ja NetBEUI , jota varten se tarkistaa 802.3-kehyksen ja sitten tarkistaa LLC-otsikon, kuten FDDI: n ja Token Ringin kohdalla; puhe , jossa se tarkistaa sekä Appletalk etypeä Ethernet-kehyksessä että SNAP-formaattipaketille, kuten FDDI: lle ja Token Ringille; AARP , jossa se tarkistaa Appletalk ARP -tyypin joko Ethernet-kehyksestä tai 802.2 SNAP-kehyksestä, jonka OOI on 0x000000; ja IPX , jossa se tarkistaa IPX-etyypin Ethernet-kehyksessä, IPX DSAP LLC-otsikossa, 802.3 ilman IPX: n LLC-otsakkeen kapselointia ja IPX-etyypin SNAP-kehyksessä.
  • decnet src isäntä
    • Tosi, jos DECNET-lähdeosoite on isäntä , joka voi olla lomakkeen "10.123" osoite tai DECNET-isäntänimi DECNET-isäntänimi on käytettävissä vain Ultrix-järjestelmissä, jotka on määritetty suorittamaan DECNET.
  • decnet dst isäntä
    • Tosi, jos DECNET-kohdeosoite on isäntä .
  • decnet isäntä isäntä
    • Tosi, jos joko DECNET-lähde tai kohdeosoite on isäntä .
  • IP, IP6, ARP, rarp, puhe, AARP, DECnet, ISO, STP, IPX, NetBEUI
    • Lyhenteet eetteriproto p missä p on yksi edellä mainituista protokollista.
  • lat, moprc, mopdl
    • Lyhenteet eetteriproto p missä p on yksi edellä mainituista protokollista. Ota huomioon, että tcpdump ei tällä hetkellä osaa jäsentää näitä protokollia.
  • VLAN Vlan_id
    • Totta, jos paketti on IEEE 802.1Q VLAN-paketti. Jos Vlan_id on määritetty, vain totta, jos paketti on määritetty vlan_id . Huomaa, että ensimmäinenVLAN avainsana, johon on kertynyt ilmaisu muuttaa dekoodauksen siirtymät loppuosalle ilmaisu olettaen, että paketti on VLAN-paketti.
  • tcp, udp, ICMP
    • Lyhenteet ip proto p tai ip6 proto p missä p on yksi edellä mainituista protokollista.
  • iso proto protokolla
    • Totta, jos paketti on protokollatyyppistä OSI-pakettia protokolla . protokolla voi olla numero tai yksi nimistä CLNP , ESIS , tai Isis .
  • CLNP, ESIS, Isis
    • Lyhenteet iso proto p missä p on yksi edellä mainituista protokollista. Ota huomioon, että tcpdump tekee epätäydellisen työn näiden pöytäkirjojen jäsentämisestä.
  • expr relop expr
    • Todellinen, jos suhde vallitsee, missä relop on yksi>, <,> =, <=, =,! = ja expr on aritmeettinen lauseke, joka koostuu kokonaisluvakannoista (ilmaistuna standardin C syntaksissa), tavallisista binäärioperaattoreista +, -, *, /, &,, pituusoperaattorista ja erityisistä pakettidatojen lisävarusteista. Voit käyttää paketin sisältämiä tietoja käyttämällä seuraavaa syntaksia: proto expr: koko .

Proto on yksieetteri, FDDI, tr, ppp, lipsahdus, linkki, IP, ARP, rarp, tcp, udp, ICMP, tai IP6, ja ilmaisee indeksitoiminnon protokollakerroksen (eetteri, FDDI, tr, ppp, lipsahdus, jalinkki kaikki viittaavat linkkikerrokseen). Ota huomioon, että tcp, udp , ja muut ylemmän kerroksen protokollatyypit koskevat vain IPv4: a, ei IPv6 (tämä määritetään tulevaisuudessa). Byte offset, suhteessa ilmoitettuun protokollakerrokseen, annetaan luvulla expr . Koko on valinnainen ja osoittaa tavujen lukumäärän kiinnostuksen alalla; se voi olla joko yksi, kaksi tai neljä ja oletusarvoisesti yksi. Pituusoperaattori, jota ilmaisee avainsanalen, antaa paketin pituuden.

Esimerkiksi, 'eetteri 0 & 1! = 0'saalis kaikki monilähetysliikenteen. Ilmaisu "ip 0 & 0xf! = 5'saalis kaikki IP-paketit, joilla on vaihtoehtoja. Ilmaisu "ip 6: 2 ja 0x1fff = 0"saaliit vain kehittymättömiä datagrammeja ja hajonneita datagrammeja. Tätä tarkistusta sovelletaan implisiittisestitcp jaudp indeksitoiminnot. Esimerkiksi, tcp 0 tarkoittaa aina TCP: n ensimmäistä tavua ylätunniste , eikä koskaan merkitse välikappaleen ensimmäistä tavua.

Jotkut offset- ja kentän arvot voidaan ilmaista nimiksi pikemminkin kuin numeerisina arvoina. Seuraavat protokollan otsakkeen kentän siirtymät ovat käytettävissä: icmptype (ICMP-tyyppikenttä),icmpcode (ICMP - koodikenttä) jatcpflags (TCP-lippujen kenttä).

Seuraavat ICMP-tyyppiset kenttäarvot ovat käytettävissä:ICMP-echoreply, ICMP-unreach, ICMP-sourcequench, ICMP-uudelleenohjaus, ICMP-kaiku, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-IREQ, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.

Seuraavat TCP-lippujen kenttäarvot ovat käytettävissä:tcp-fin, tcp-syn, tcp-RST, tcp-push, tcp-push, tcp-ack, tcp-URG.

Primitives voidaan yhdistää käyttämällä jotain seuraavista:

  • Sulkeutunut ryhmä primitiivejä ja operaattoreita (sulkeet ovat erikoisia Shellille ja ne on pakko välttää)
  • Negation ('!"tai"ei')
  • Yhdistelmä ("&&"tai"ja')
  • Vaihtoehto ('||"tai"tai')

Negationilla on korkein etusija. Vaihto ja ketjuttaminen ovat yhtäläisiä etuoikeuksia ja liittävät vasemmalta oikealle. Huomaa selkeäja merkkijonoja, ei rinnakkaistoimintaa, tarvitaan ketjuttamiseen.

Jos tunniste annetaan ilman avainsanaa, oletetaan viimeisin avainsana. Esimerkiksi, ei isäntä vs ja ässä on lyhyt ei isäntä vs ja isäntä ässä. Tätä ei kuitenkaan pidä sekoittaa ei (isäntä vs tai ässä).

Ekspression argumentteja voidaan välittää tcpdump joko yhtenä argumenttina tai useina argumentteina, kumpi on helpompi. Yleensä, jos lauseke sisältää Shellin metakaraktereja, on helpompi siirtää se yksittäisenä, lainattuna argumenttina. Useita argumentteja ketjutetaan välilyönneillä ennen jäsentämistä.

Tcpdump-esimerkkejä

tcpdump isäntänä sundown

Edellä tcpdump-komennolla tulostetaan kaikki saapuvat tai lähtevät paketit auringonlaskuun.

tcpdump isäntä helios ja (kuuma tai ässä )

Tämä tcpdump-esimerkki tulostaa liikenteen välillä Helios ja joko kuuma tai ässä.

tcpdump ip isäntä ässä eikä helios

Tämän tcpdump-komennon avulla voit tulostaa kaikki IP-paketit ässä ja jokainen isäntä, paitsi Helios.

tcpdump net ucb-eetteri

Edellä olevassa esimerkissä tcpdump tulostaa kaiken liikenteen Berkeleyn paikallisten isännän ja isäntien välillä.

tcpdump "gateway snup ja (port ftp tai ftp-data)"

Seuraava tcpdump-komento-esimerkki tulostaa kaiken FTP-liikenteen Internet-yhdyskäytävän kautta snup . Huomaa, että lauseke on mainittu estääkseen kuoren sulkemasta virheellisesti.

tcpdump ip ja ei netto localnet

Edellä olevassa tcpdump-esimerkissä komento tulostaa liikennettä, joka ei ole peräisin paikallisilta koneilta.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 eikä src ja dst net localnet '

Yllä olevassa esimerkissä tcpdump, komennolla tulostetaan kunkin TCP-keskustelun aloitus- ja loppupaketit (SYN- ja FIN-paketit), jotka sisältävät nonlocal-isännän.

tcpdump 'yhdyskäytävä snup ja ip 2: 2> 576'

Yllä oleva komento tulostaa IP-paketit, jotka ovat yli 576 tavua, jotka on lähetetty yhdyskäytävän kautta snup.

tcpdump 'eetteri 0 & 1 = 0 ja ip 16> = 224'

Edellä esitetty tcpdump-komento tulostaa IP-lähetystä tai multicast-paketteja, jotka olivat ei lähetetään Ethernet-lähetyksen tai monilähetyksen kautta.

tcpdump 'icmp icmptype! = icmp-echo ja icmp icmptype! = icmp-echoreply'

Tässä viimeisessä esimerkissä tcpdump, komento tulostaa kaikki ICMP-paketit, jotka eivät ole echo-pyyntöjä tai vastauksia (eli ei ping-paketteja).

Tcpdump-ulostulomuoto

Tuotos tcpdump on protokollasta riippuvainen. Seuraavassa on lyhyt kuvaus ja esimerkkejä useimmista formaateista.

Linkitason otsikot. Jos -e-vaihtoehto annetaan, linkitason otsikko tulostetaan. Ethernet-verkkoissa tulostetaan lähde- ja kohdeosoitteet, protokolla ja paketin pituus.

FDDI-verkoissa -e-vaihtoehto aiheuttaa tcpdump tulostetaan "kehysvalvonta" -kenttä, lähde- ja kohdeosoitteet sekä paketin pituus. Normaalit paketit (kuten IP-datagrammeja sisältävät) ovat 'async'-paketteja, joiden prioriteettiarvo on 0 ja 7: esimerkiksi `async4'. Tällaisten pakettien oletetaan sisältävän 802.2 Logical Link Control (LLC) -paketin; LLC-otsikko tulostetaan, jos se on ei ISO-datagrammi tai niin kutsuttu SNAP-paketti.

Token Ring -verkoissa -e-vaihtoehto aiheuttaa tcpdump tulostaa "kulunvalvonta" ja "kehyksenvalvonta" kentät, lähde- ja kohdeosoitteet sekä paketin pituus. Kuten FDDI-verkoissa, pakettien oletetaan sisältävän LLC-paketin. Riippumatta siitä, onko "-e" -vaihtoehto määritetty vai ei, lähdereititysinformaatio tulostetaan lähdepaketeille.

(N.B .: Seuraava kuvaus olettaa perehtyneen RFC-1144: ssa kuvattuun SLIP-puristusalgoritmiin.)

SLIP-yhteyksissä tulostetaan suunnan osoitin ("I" saapuville, "O" lähtevälle), pakettityyppi ja pakkaustiedot. Paketin tyyppi tulostetaan ensin. Nämä kolme tyyppiä ovat IP , utcp , ja CTCP . Muita linkkitietoja ei tulosteta IP paketteja. TCP-paketteja varten yhteystunniste tulostetaan tyypin mukaan. Jos paketti pakataan, sen koodattu otsikko tulostetaan. Erityistapaukset tulostetaan nimellä* S + n ja* TI + n , missä n on se määrä, jolla järjestysnumero (tai järjestysnumero ja ack) on muuttunut. Jos se ei ole erityinen tapaus, tulostetaan nolla tai useampi muutos. Muutos on U (kiireellinen osoitin), W (ikkuna), A (ack), S (järjestysnumero) ja I (pakettidunnus), jota seuraa delta (+ n tai -n) tai uusi arvo (= n). Lopuksi pakattujen tietojen ja pakatun otsikon pituuden tiedot tulostetaan.

Esimerkiksi seuraava rivi näyttää lähtevän pakatun TCP-paketin, jossa on implisiittinen yhteysanturi; ack on muuttunut 6: llä, sekvenssinumerolla 49 ja pakettidunnuksella 6; on 3 tavua dataa ja 6 tavua pakattua otsikkoa:

O ctcp * A + 6 S + 49 I + 6 3 (6)

Arp / rarp paketit. Arp / rarp-ulostulo näyttää pyynnön tyypin ja sen argumentit. Muodon on tarkoitus olla itsestään selvä. Tässä on lyhyt näyte, joka otettiin "rlogin" alkamisesta isännältä rtsg järjestää csam :

arp who-has csam kertoa rtsgarp vastaus csam on CSAM

Ensimmäinen rivi kertoo, että rtsg lähetti arp-paketin, jossa kysyttiin internet-isäntänavigaattorin Ethernet-osoitetta. Csam vastaa Ethernet-osoitteensa kanssa (tässä esimerkissä Ethernet-osoitteet ovat caps- ja internet-osoitteissa pienissäkin tapauksissa).

Tämä olisi vähemmän tarpeetonta, jos olisimme tehneet tcpdump -n :

arp who-has 128.3.254.6 kertoo 128.3.254.68arp vastaus 128.3.254.6 on-02: 07: 01: 00: 01: c4

Jos olisimme tehneet tcpdump -e , se, että ensimmäinen paketti lähetetään ja toinen on pisteestä pisteeseen nähden:

RTSG Broadcast 0806 64: arp who-has csam kertoa rtsgCSAM RTSG 0806 64: ARP vastaus csam on CSAM

Ensimmäisessä paketissa tämä sanoo, että Ethernet-lähdeosoite on RTSG, kohde on Ethernet-lähetysosoite, tyypin kenttä, joka sisälsi heksadesimaali 0806 (tyyppi ETHER_ARP) ja kokonaispituus 64 tavua.

TCP-paketit (N.B.: Seuraava kuvaus olettaa tunnetusti RFC-793: ssä kuvatun TCP-protokollan. Jos et ole perehtynyt protokollan kanssa, niin tämä kuvaus eikä tcpdump ei ole kovinkaan hyödyllinen sinulle) . Tcp-protokollarivin yleinen muoto on:

src> dst: flags data-seqno ack ikkuna kiireelliset vaihtoehdot

src ja DST ovat lähde- ja kohde-IP-osoitteet ja -portit. Liput ovat jokin yhdistelmä S (SYN), F (FIN), P (PUSH) tai R (RST) tai yksi "." (ei lippuja). Data-seqno kuvaa tässä paketissa olevien tietojen peittämää sekvenssitilaa (ks. alla oleva esimerkki). ack on seuraavan datan järjestysnumero odotettu toista suuntaa tällä yhteydellä. Ikkuna on vastaanottopuskuritilan tavujen lukumäärä toisella suunnalla tällä yhteydellä. URG ilmaisee, että paketissa on "kiireellisiä" tietoja. vaihtoehdot ovat tcp-vaihtoehtoja, jotka on suljettu kulmakappaleisiin (esim. ).

Src, dst, ja liput ovat aina läsnä. Muut kentät riippuvat paketin tcp-protokollan otsakkeen sisällöstä ja ne tulostetaan vain tarvittaessa.

Tässä on rlogin avausosa isännältä rtsg järjestää csam .

rtsg.1023> csam.login: S 768512: 768512 (0) voittaa 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 voittaa 4096 rtsg.1023> csam.login:. ack 1 voitto 4096rtsg.1023> csam.login: P 1: 2 (1) ack 1 voitto 4096csam.login> rtsg.1023:. ack 2 voittaa 4096rtsg.1023> csam.login: P 2:21 (19) ack 1 voitto 4096csam.login> rtsg.1023: P 1: 2 (1) ack 21 voittaa 4077csam.login> rtsg.1023: P 2: 3 (1) ack 21 voittaa 4077 urg 1csam.login> rtsg.1023: P 3: 4 (1) ack 21 voittaa 4077 urg 1

Ensimmäinen rivi kertoo, että tcp-portti 1023 rtsg lähetti paketin porttiin Kirjaudu sisään on csam.S osoittaa, että SYN lippu oli asetettu. Paketin järjestysnumero oli 768512 ja se sisälsi tietoja. (Merkintä on "ensimmäinen: viimeinen (nbytes)", mikä tarkoittaa "järjestysnumeroita ensimmäinen enintään, mutta ei kestää mikä on nbytes käyttäjätietojen tavua ".) Ei ollut porsaanvarmistettua ackia, käytettävissä oleva vastaanottoikkuna oli 4096 tavua ja enimmäisosakekokoinen valinta, joka vaatii 1024 tavun mss.

Csam vastaa samanlaisen paketin kanssa, paitsi että se sisältää rtsg: n SYN: n sormisuojan. Rtsg sitten acks csam: n SYN. "." tarkoittaa, ettei lippuja asetettu. Paketti ei sisältänyt tietoja, joten datan järjestysnumeroa ei ole. Huomaa, että ack-järjestysnumero on pieni kokonaisluku (1). Ensimmäinen kerta tcpdump näkee tcp "keskustelun", se tulostaa järjestysnumeron paketista. Seuraavien keskustelupakettien yhteydessä tulostetaan nykyisen paketin järjestysnumeron ja tämän alkujärjestysnumeron välinen ero. Tämä tarkoittaa, että sekvenssinumerot ensimmäisen jälkeen voidaan tulkita suhteellisen tavun paikoiksi keskustelun datavirrassa (kun ensimmäinen datatavu on jokaisen suunnan ollessa '1'). '-S' ohittaa tämän ominaisuuden, jolloin alkuperäiset järjestysnumerot tulostetaan.

Kuudennella rivillä rtsg lähettää csam 19 bytes of data (tavut 2 - 20 keskustelun rtsg -> csam puolella). PUSH-lippu on asetettu pakettiin. Seitsemännessä rivissä csam kertoo, että sen vastaanottamat tiedot ovat rtsg: n lähettämiä, mutta ei tavua 21. Useimmat näistä tiedoista näyttävät istuvan puskopuskurissa, koska csam: n vastaanottoikkuna on saanut 19 tavua pienemmäksi. Csam lähettää myös yhden tavun datan rtsg: lle tässä paketissa. Kahdeksannella ja yhdeksällä rivillä csam lähettää kaksi tavua kiireellisestä, työnnetystä datasta rtsg: hen.

Jos otos oli tarpeeksi pieni niin tcpdump ei kaappaa koko TCP-otsikkoa, tulkitsee niin paljon otsikkoa kuin mahdollista ja sitten raportoi "| tcp '' osoittamaan, että jäljelle jäävää osaa ei voitu tulkita. Jos otsakkeessa on väärä vaihtoehto (yksi, jonka pituus on joko liian pieni tai ylätunnisteen loppu), tcpdump raportoi sen " huono opt '' eikä tulkita muita vaihtoehtoja (koska on mahdotonta kertoa missä he aloittavat). Jos otsikkopituus ilmaisee vaihtoehtoja, IP-datagrammin pituus ei ole riittävän pitkä, jotta vaihtoehdot todella olisivat siellä, tcpdump raportoi sen " huono hdr pituus ''.

Kaappaa paketit tiettyihin lipun yhdistelmiin. TCP-otsakkeen ohjausbittiosassa on kahdeksan bittiä:

CWR | ECE | URG | ACK | PSH | RST | SYN | FIN

Oletetaan, että haluamme tarkkailla paketteja, joita käytetään TCP-yhteyden muodostamiseen. Muista, että TCP käyttää kolmitoimista kättelyprotokollaa alustamalla uuden yhteyden; yhteysjono TCP-ohjausbittien suhteen on:

  1. Soitin lähettää SYN: n.
  2. Vastaanottaja vastaa SYN: llä, ACK: lla.
  3. Soittaja lähettää ACK: n.

Nyt olemme kiinnostuneita saamaan paketteja, joissa on vain SYN-bittijoukko (vaihe 1). Huomaa, että emme halua paketteja vaiheesta 2 (SYN-ACK), vain tavallinen SYN. Tarvitsemme oikean suodattimen lausekkeen tcpdump .

Muista TCP-otsikon rakenne ilman vaihtoehtoja:

0 15 31-----------------------------------------------------------------| lähdeportti kohdeportti |-----------------------------------------------------------------| järjestysnumero |-----------------------------------------------------------------| kuittausnumero |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | ikkunan koko |-----------------------------------------------------------------| TCP-tarkistussumma kiireellinen osoitin-----------------------------------------------------------------

TCP-otsikko pitää yleensä 20 oktetietoa, ellei vaihtoehtoja ole. Kaavion ensimmäinen rivi sisältää oktkeja 0-3, toinen rivi näyttää oktettejä 4-7 jne.

Lasku alkaa 0: lla, joten asiaankuuluvat TCP-ohjausbitit sisältyvät oktettiin 13:

0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | ikkunan koko |----------------|---------------|---------------|----------------| | 13. oktetti | |

Tarkastellaan tarkemmin oktettiä ei. 13:

| | |---------------| | C | E | U | A | P | R | S | F | |---------------| |7 5 3 0|

Nämä ovat TCP-ohjausbittejä, joista me olemme kiinnostuneita. Olemme numeroineet tämän oktetin bittiä 0 - 7, oikealle vasemmalle, joten PSH-bitti on bitti numero 3 ja URG bitti on numero 5.

Muista, että haluamme tallentaa paketteja vain SYN-asetuksella. Katsotaanpa, mitä tapahtuu oktetille 13, jos TCP-datagrammi saapuu SYN-bittien otsakkeessa:

| C | E | U | A | P | R | S | F | |---------------| |0 0 0 0 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|

Ohjausbittien osiossa tarkastellaan, että vain bitti numero 1 (SYN) on asetettu.

Olettaen, että oktetin numero 13 on 8-bittinen allekirjoittamaton kokonaisluku verkon tavutilauksessa, tämän oktetin binaariarvo on:

00000010

Sen desimaaliluku on:

7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2 = 2

Olemme melkein valmiit, koska nyt tiedämme, että jos vain SYN on asetettu, TCP-otsikon 13: n oktetin arvo, kun se tulkitaan 8-bittisiksi allekirjoittamattomaksi kokonaislukuvuudeksi verkkotavuusjärjestyksessä, on oltava täsmälleen 2.

Tämä suhde voidaan ilmaista nimellä

tcp 13 == 2

Voimme käyttää tätä ilmaisua suodattimena tcpdump jotta voidaan katsella paketteja, joilla on vain SYN-asetus:

tcpdump -i xl0 tcp 13 == 2

Ilmaus sanoo "anna TCP-datagramman 13. oktetille desimaaliluku 2", mikä on juuri sitä mitä haluamme.

Oletetaan, että meidän on otettava SYN-paketit, mutta emme välitä, jos ACK tai muu TCP-ohjausbitti asetetaan samaan aikaan. Katso, mitä tapahtuu oktetiin 13, kun SYN-ACK-joukon TCP-datagrammi saapuu:

| C | E | U | A | P | R | S | F | |---------------| |0 0 0 1 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|

Bittiä 1 ja 4 on nyt asetettu 13. oktetiksi. Oktettin 13 binääriarvo on:

00010010

joka tarkoittaa desimaalia:

7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18

Emme voi käyttää vain 'tcp 13 == 18' in tcpdump koska se valitsisi vain ne paketit, jotka ovat SYN-ACK: n asetettuja, mutta ei vain SYN-asetettuja paketteja. Muista, että emme välitä, onko ACK tai mikä tahansa muu ohjausbitti asetettu niin kauan kuin SYN on asetettu.

Tavoitteen saavuttamiseksi meidän on johdonmukaisesti JA oktetiinin 13 binäärinen arvo jonkin muun arvon avulla säilytettävä SYN-bitti. Tiedämme, että haluamme SYN: n asettamisen joka tapauksessa, joten loogisesti JA arvo 13th oktetilla SYN: n binäärisellä arvolla:

00010010 SYN-ACK 00000010 SYN JA 00000010 (haluamme SYN) JA 00000010 (haluamme SYN) -------- -------- = 00000010 = 00000010

Näemme, että AND-operaatio antaa saman tuloksen riippumatta siitä, onko ACK tai jokin muu TCP-ohjausbitti asetettu. AND-arvon desimaaliluku ja tämän toiminnon tulos ovat 2 (binäärinen 00000010), joten tiedämme, että pakettia, joissa SYN on asetettu, pitää noudattaa seuraavia suhteita:

((oktettin 13 arvo) AND (2)) == (2)

Tämä viittaa meihin tcpdump suodatusilmaisu

tcpdump -i xl0 'tcp 13 & 2 == 2'

Huomaa, että lausekkeessa on käytettävä yksittäisiä lainauksia tai kenoviivaa piilottaaksesi AND ('&') erikoismerkin kuoresta.

UDP-paketit. UDP-muotoa kuvaa tämä rwho-paketti:

actinide.who> broadcast.who: udp 84

Tämä sanoo sataman Kuka isännässä aktinidi- lähetti udp-datagrammin porttiin Kuka isännässä lähettää , Internet-lähetysosoite. Paketti sisälsi 84 tavua käyttäjädataa.

Jotkin UDP-palvelut tunnistetaan (lähde- tai kohdesatamamäärästä) ja korkeamman tason protokollatiedot, erityisesti Domain Name -palvelupyynnöt (RFC-1034/1035) ja Sun RPC -puhelut (RFC-1050) NFS: ään.

UDP-nimipalvelinpyynnöt (N.B.: Seuraavassa kuvauksessa oletetaan perehtyneeksi RFC-1035: ssä kuvattuun Domain Service -protokollaan. Jos et ole perehtynyt protokollaan, seuraava kuvaus ei ole järkevää.)

Nimipalvelinpyynnöt muotoillaan seuraavasti:

src> dst: id op? liput qtype qclass nimi (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

isäntä h2opolo kysyi verkkotunnuksen palvelimelta Helios nimiin liittyvän osoitetiedon (qtype = A) osalta ucbvax.berkeley.edu. Kyselyn tunnus oli '3'. "+" Tarkoittaa toivottua rekursiota lippu oli asetettu. Kyselypituus oli 37 tavua, ei kuitenkaan UDP- ja IP-protokollan otsakkeita. Kyselyn toiminta oli normaalia, tiedustelu , joten op-kenttä jätettiin pois. Jos op olisi ollut jotain muuta, se olisi painettu "3" ja "+" välillä. Samoin qclass oli normaali, C_IN , ja jätetty pois. Jokainen muu qclass olisi tulostettu välittömästi "A": n jälkeen.

Muutama poikkeama tarkistetaan ja se voi johtaa ylimääräisiin kenttiin, jotka on suljettu hakasulkeisiin: Jos kyselyssä on vastaus, viranomainen tai muu rekisteriosa, ancount , nscount , tai arcount painetaan " n a ', " n ei myöskään ' n au "missä n on asianmukainen määrä. Jos jokin vastebiteistä on asetettu (AA, RA tai rcode) tai jokin "must on nolla" biteistä asetetaan tavuihin kaksi ja kolme, `b2 & 3 = x "painetaan, missä x on otsikon tavujen kaksi ja kolme heh-arvoa.

UDP-nimipalvelimen vastaukset. Nimipalvelimen vastaukset muotoillaan seuraavasti:

src> dst: id op rcode liput a / n / au-tyypin luokkatiedot (len) helios.domain> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

Ensimmäisessä esimerkissä, Helios vastaa kyselylomakkeeseen 3 alkaen h2opolo kolmella vastausrekisterillä, kolmella nimipalvelimella ja seitsemällä ylimääräisellä tietueella. Ensimmäinen vastausraportti on tyyppi A (osoite) ja sen tiedot ovat Internet-osoitetta 128.32.137.3. Vastauksen koko oli 273 tavua, pois lukien UDP- ja IP-otsakkeet. Op (Query) ja vastauskoodi (NoError) jätettiin pois, samoin kuin A-tietueen luokka (C_IN).

Toisessa esimerkissä, Helios vastaa kyselyyn 2, jossa ei ole olemassa olevaa vastauskoodia (NXDomain), jossa ei ole vastauksia, yksi nimipalvelin eikä viranomaisen tietueita. '*' Tarkoittaa, että arvovaltainen vastaus bitti asetettiin. Koska vastauksia ei saatu, mitään tyyppiä, luokkaa tai tietoja ei tulostettu.

Muut mahdollisesti näkyvät lippumerkit ovat '-' (rekursiota saatavilla, RA, ei set) ja "|" (katkaistu viesti, TC, asetus). Jos "kysymys" -osiossa ei ole täsmälleen yhtä merkintää, " n q 'painetaan.

Huomaa, että nimipalvelinpyynnöt ja vastaukset ovat yleensä suuria ja oletusarvoisia snaplen 68 tavua ei välttämättä kerää riittävästi pakettia tulostettavaksi. Käytä-S lippua snaplenin lisäämiseksi, jos sinun on vakavasti tutkittava nimipalvelinten liikennettä. '-s 128"on toiminut hyvin minulle.

SMB / CIFS-dekoodaus. tcpdump sisältää melko laajan SMB / CIFS / NBT-dekoodauksen UDP / 137: lle, UDP / 138: lle ja TCP / 139: lle. Myös IPX- ja NetBEUI SMB -tietojen alkeelliset dekoodaus suoritetaan.

Oletuksena melko vähäinen dekoodaus tehdään, ja paljon tarkempi dekoodaus tehdään, jos -v käytetään. Varoitetaan, että -v yksittäinen SMB-paketti voi viedä sivun tai enemmän, joten käytä vain -v, jos todella haluat kaikki kelvolliset tiedot.

Jos dekoodataan SMC-istuntoja, jotka sisältävät unicode-merkkijonoja, saatat haluta asettaa ympäristömuuttujan USE_UNICODE arvoksi 1. Lause, joka tunnistaa automaattisesti unicode-merkkijonot, olisi tervetullut.

Lisätietoja SMB-pakettimuodoista ja mitä kaikki kentät tarkoittavat, katso www.cifs.org tai pub / samba / specs / -hakemisto suosikki samba.org-peilisivustossasi. SMB-laastareita kirjoitti Andrew Tridgell ([email protected]).

NFS-pyynnöt ja vastaukset. Sun NFS (Network File System) -pyynnöt ja vastaukset tulostetaan seuraavasti:

src.xid> dst.nfs: len op args src.nfs> dst.xid: vastaus stat len ​​op tuloksiin sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165wrl.nfs> sushi.6709: vastaus ok 40 readlink "../var"sushi.201b> wrl.nfs: 144 haku fh 9,74 / 4096,6878 "xcolors"wrl.nfs> sushi.201b: vastaus ok 128 lookup fh 9,74 / 4134,3150

Ensimmäisessä rivissä isäntä sushi lähettää tapahtuman id: llä 6709 että WRL (Huomaa, että src-isäntän jälkeinen numero on transaktion tunnus, ei lähdesatama). Pyyntö oli 112 tavua, pois lukien UDP- ja IP-otsikot. Toiminta oli a readlink (lue symbolinen linkki) tiedostokahvassa ( FH ) 21,24 / 10,731657119. (Jos joku on onnekas, kuten tässä tapauksessa, tiedoston kahvasta voidaan tulkita merkittäväksi, vähäiseksi laitteiden numeropariksi, jota seuraa inodin numero ja sukupolvenumero.) WRL vastaukset "ok" linkin sisällön kanssa.

Kolmannella rivillä, sushi kysyy WRL etsiä nimi " xcolors 'hakemistotiedostossa 9,74 / 4096,6878. Huomaa, että tulostetut tiedot riippuvat toimintotyypistä. Muoto on tarkoitus olla itsestään selvä, jos sitä luetaan yhdessä NFS-protokollan kanssa.

Jos -v (verbose) -lippu on annettu, tulostetaan lisätiedot. Esimerkiksi:

sushi.1372a> wrl.nfs: 148 lue fh 21,11 / 12.195 8192 bytes @ 24576wrl.nfs> sushi.1372a: vastaus ok 1472 luku REG 100664 ids 417/0 sz 29388

(-v tulostaa myös IP-otsikon TTL-, ID-, pituus- ja pirstoutuskent