Arkisto ajaksi 'Packet dekoodaus "luokkaan

ICMPv6 Challenge - Vastaukset

13 joulukuu 2009

Haasteena oli: "Kirjoita tcpdump / windump suodatin joka poimii ICMPv6 Multicast Listener paketteja." Minulla on laaja kirjoittaa ylös mitä tekee vastata niin monimutkaisia. Jos tiedät IPv6 ja haluavat vain vastauksen, siirry loppuun.

Ensinnäkin eräät Tausta

Steinar teki muutamia kommentteja edelliseen virkaa ja oli 100% raiteilleen. Jos luet niitä ja ajattelin "Vau, se kuulostaa todella sotkuinen", ymmärrät ongelman laajuutta samoin. :)

Pöytäkirja Vs. Seuraava ylätunnistekenttien

IPv4: n kanssa meillä oli vaihtoehtoja kenttään. Tämä voi aiheuttaa IP-otsikko kasvavan 20 tavua yhtä suuri kuin 60 tavua. IPv6 ei ole enää vaihtoehtoja kenttä ja otsikko on vahvistettu 40 tavua. Kun vaihtoehdot ovat tarpeen, käytämme laajennus otsikot tunnistamisessa. Tämä heittää mielenkiintoinen käyrä pallo meille koska IPv4 protokollan kenttä (byte 9) olisi (melkein) aina tunnistaa ylemmän tason liikenteen (TCP, UDP, jne.). Kanssa IPv6 seuraavaan otsikkoon kenttään (tavu 6) voitaisiin nimetä ylempi kerros kuljetus, tai se saattaa tunnistaa laajennus otsikko, joka sisältää joitakin useita vaihtoehtoja.

Tässä lista muutamista IPv6 laajennus otsikot saatat törmätä sekä RFC jotka määrittävät heille:

Vaihtoehto # Vaihtoehto Kuvaus RFC
0 Hop-by-Hop 2460
6 TCP 793
17 UDP 768
43 Reititys 5095
44 Hajanaisuus 2460
50 ESP 4303
51 AH 4302
58 ICMPv6 4443
59 Ei seuraavaa otsikkoa 2460
60 Destination Options 2460
135 Liikkuvuus 3775

IPv6 ei määrää rajoitetaan laajennus otsikoita voit käyttää yhden packet.There on kuitenkin julkaistu "suositeltava", miten otsikoita olisi vahvistettava ulos. Järjestys on:

  • IPv6 Header
  • Hop-by-Hop Options
  • Reititys Header
  • Fragment Header
  • AH
  • ESP
  • Destination Options
  • Mobility Header
  • TCP/UDP/ICMPv6

Huomautus Tämä luettelo on "suositeltava" mutta ei pakollista. IPv6 isäntä on pystyttävä käsittelemään otsikot mitä ikinä jotta ne on saatu. Tämä tarkoittaa, huomaat todennäköisesti toimittajat seuraavat tässä luettelossa mutta ei hyökkääjät. Olen henkilökohtaisesti nähnyt laitteita alkaa käyttäytyä todella outoa, kun sotku otsikon järjestyksessä. Itse olen törmännyt aika vähän "IPv6-yhteensopiva koodi", jota ei käsitellä, jos haluttuun järjestykseen ei käytetä.

Chasing pöytäkirja Header

Joten IPv6 voimme olla useita otsikoita takana IPv6 header. Jos tämä kuulostaa uusi käsite, se ei oikeastaan ​​ole. Itse olet luultavasti tehnyt sen kanssa jo. Kun IPSeciä kaksi mahdollista suojausprotokollia ovat ESP ja AH. Nämä olivat todella lainattu IPv6 ja hierotaan työskennellä IPv4. Sekä AH ja ESP sisältyy seuraavaan otsikkoon kentän tunnistaa millaista paketin ne protecting.This kutsutaan pöytäkirjan ketjuttamalla kun tosiasiassa useita otsikoita istuu takana Layer 3 protokollaa otsikkoa.

Joten selvittää, mitä ylemmälle tasolle kuljetus (TCP, UDP, jne.) on käytössä, saatat joutua etsiä useita otsikoita ennen kuin löydät vastauksen. Tämä kutsutaan "jahtaavat header", ja tcpdump / Windump meille suodin tähän tehtävään. Saatat olla fimiliar kanssa proto suodatin. Vuonna IPv4 maailmassa, jos sanon:

IP proto tcp

Tämä suodatin lukee "check tavu 9 IPv4 otsikon ja jos arvo on 6 (protokolla vastinetta TCP), ottelun paketti". Tämä suodatin ei ole yhtä tehokas IPv6 maailmassa tietenkin koska tavun 6 IPv6 header voisi tunnistaa ylemmän kerroksen liikennettä, tai se voi vain tunnistaa Valinnainen laajennettu otsikko, jota käytetään. Tämän ongelman ratkaisemiseksi, protochain suodatin otettiin käyttöön. Kirjoittaminen:

ip6 protochain tcp

Kuuluu "Check tavu 6 IPv6 header nähdä, jos arvo on yhtä kuin 6. Jos sen sijaan löytää arvo, joka tunnistaa Valinnainen laajennettu otsikko, tarkista laajennus otsikon seuraava otsikko-kenttään arvo 6. Jos löydät valinnainen laajennettu otsikot, toistamaan viimeisen testin kunnes löydät viimeinen laajennus otsikon ".

Melko helppo kirjoittaa Englanti, mutta tämä on painajainen toteuttaa koodia. Useimmat valinnainen laajennettu otsikot vaihteleva pituus, joka vain lisää monimutkaisuutta. Olen tehnyt joitakin kokeita Scapy ja voit itse nähdä ero suorituskyvyssä, kun protochain saa vedota. Itse voisit ehkä tehdä melko hyvää työtä annostelun IDS / IPS pakottamalla sitä prosessia paljon hyödytön laajennus otsikot.

Kirjoitamme myös suodatin

Niinpä meidän ensimmäinen ongelma kirjallisesti haaste suodatin on, että ICMPv6 otsikko ei välttämättä näy heti IPv6 header. Meidän täytyy varoa Valinnainen laajennettu otsikot. Itse RFC 2710 todetaan: "Kaikki MLD viestejä tässä asiakirjassa lähetetään kanssa paikallisesti linkitetty IPv6-Source Address, IPv6 Hop raja on 1, ja IPv6-reitittimen Alert vaihtoehto [RTR-alert] in Hop-by-Hop Vaihtoehdot header. "Tämä tarkoittaa meidän multicast kuuntelija paketti vaaditaan Hop-by-Hop laajennus otsikon reitittimen Alert vaihtoehto asetettu. Tässä mielessä, ensimmäinen tarkastus olisi:

ip6 protochain icmp6

Varmistaa, että olemme vain katsot ICMPv6 paketteja. Nyt on vain kysymys tarkistaa, onko tyyppi kentän (tavu 0) on asetettu 130 (Multicast Listener Query) tai 131 (Multicast Listener Report). Tämä tuo meidät toiseen ongelmaan kuitenkaan. Vuonna IPv4 maailmassa voin tehdä:

ICMP [0] = <Kirjoita arvo interest>

Jos yritän tätä icmp6 saan:

[Root @ Fubar ~] # tcpdump-nn icmp6 [0] = 130
tcpdump: IPv6 ylemmän kerroksen protokolla ei tue proto [x]

Toisin sanoen, en voi käyttää vastikkeiden kanssa icmp6 etsiä tiettyjä arvoja. Windump ja tcpdump mainostetaan IPv6-yhteensopivia, mutta älä odota saada kaikki samat toiminnot sinulla on IPv4: n kanssa. Yäk!

Joten mitä me teemme? Meidän täytyy turvautua viitataan arvon ip6 offset. Toisin sanoen meidän täytyy mitata läpi IPv6 header kautta vaaditut Hop-by-Hop header, ja osaksi ICMPv6 otsikon nähdä, jos kenttä ei ole asetettu 130 tai 131. Jotkut asiat otettava huomioon:

  • IPv6 header on vahvistettu 40 tavua
  • Hop-by-Hop otsikko vaihtelee, mutta 4 tavua reititin Alert asetettu
  • Kenttä ei ole tavu 0 sisällä ICMPv6 header

Joten tässä on mitä päädymme:

ip6 protochain icmp6 ja (ip6 [44] = 130 tai ip6 [44] = 131)

Vau! Olemme vihdoin sain sen! Tai emmehän?

K: Mitä tapahtuu, jos paketti on ylimääräinen pääte otsikot?

: Meidän suodatin ei toimi.

Kysymys: Entä jos Hop-by-Hop header on enemmän vaihtoehtoja, kuin reititin Alert?

: Meidän suodatin ei toimi.

Kysymys: Voimmeko korjata edellä kaksi ongelmaa?

: Vasta tcpdump / Windump suodatus lisää IF / sitten silmukka tukea.

Joten jos haluamme kaapata normaali ML liikenne, edellä suodatin toimii hienosti. Jos kuitenkin haluamme vakuuttaa olemme kiinni hyökkääjän trickiness samoin, suodatin ei aio lentää.

Mitä jos yritämme jotenkin näin:

tcpdump-nn-s 1500-x ip6 protochain icmp6 | grep-i multicast> multicast.txt

ja sitten vain käyttää Wireshark n text2cap työkalu muuntaa sen libpcap muotoon? Ongelmana tässä on saamme vasta header tiedot. Grep täsmää yhteenvetorivillä joka sisältää sanan "Multicast" Mutta sitten ohittaa kaikki Hex sen alla, joka on todellinen paketin sisällön.

Joten lopullinen vastaus on: "ei voi saada theya mistä Haya" ;)

Entä jos todella täytyy pystyä näkemään tätä liikennettä? Kunnes tuki IPv6 kypsyy, vain 100% tapa on napata kaikki ICMPv6 liikenne ja sitten manuaalisesti lajitella sen.

Ainakin se on minun käsitys. Jos joku voi todella keksiä 100% käyttöliuos, haluaisin kuulla sen.

IP-haun Valmiit

10 joulukuu 2009

Juuri päättynyt uusi työkalu nimeltään IP-haun että olen toimitetaan Applen App Storesta. Kanssa on onnea se näkee päivänvalon yli ensi viikon aikana.

Tiedän, on paljon TCP / UDP-portti viittaukset siellä. Olen yrittänyt tehdä tätä kaikkein täydellinen luettelo käytettävissä. Tällä hetkellä yli 12000 merkinnät ja olen yhä kasvava luettelo.

Yksi ominaisuuksia olen todella innoissani siitä on todellista aikaa hakemiseen. Kun kirjoitat mitä etsit, luettelo suodatetaan reaaliaikaisesti, jotta voit nähdä tuloksia.

screenshot-2

Lisätietoja löytyy osoitteesta My Mobile Security Hack sivusto.

Ja nyt takaisin kaupallisia vapaita opetusmateriaalia. ;)

ICMPv6 Challenge - Vinkkejä

09 joulukuu 2009

OK, tässä vihje kohta sinua oikeaan suuntaan.

Haasteena oli: "Kirjoita tcpdump / windump suodatin joka poimii ICMPv6 Multicast Listener paketteja."

Kuulostaa helpolta, eikö?

Hieman apua Google huomaat, että "tyyppi" multicast-kuuntelija on 130, ja ICMPv6 kenttä ei ole ensimmäinen tavu otsikossa. Joten tämä on näin helppoa:

tcpdump-nn-p-v-s 0 icmp6 [0] = 130

Kuitenkin jos suoritat komennon saat takaisin:

tcpdump: IPv6 ylemmän kerroksen protokolla ei tue proto [x]

Toisin sanoen, voit käyttää "icmp6" nähdä kaikki ICMPv6 paketteja, mutta et voi käyttää sitä suodattaa millään ICMPv6 otsikkokentät.

Joten tarvitsemme "Plan B". Selvittää suunnitelma B ja olet ratkaissut haaste. :)

ICMPv6 Challenge

04 joulukuu 2009

Pohjalta IPv6 haasteen viime kerralla, minulla on uusi sinulle: Kirjoita tcpdump / windump suodatin, joka vangitsee ICMPv6 Multicast Listener paketteja.

Siinä kaikki! Melko helppoa, eikö? ;)

Viikonlopun Challenge - Vastaukset

03 joulukuu 2009

No sen nyt torstai niin olen tajunnut sen aikaa lähettää vastauksia viime viikonlopun haaste. ;)

Ensinnäkin, miksi sinun pitäisi edes välitä IPv6 jos et ole aloittanut käyttöönottaminen? Tunsin paljon samalla tavalla kunnes löysin IPv6 käytetään peiteltynä viestintäkanavana sisällä asiakkaan verkkoon. Aineisto sitten työnnetty ulos Internetiin Teredo. Jos et ole perehtynyt tekniikka, Scott Hogg on joitakin erinomaisia ​​viestiä aiheesta.

Joten vaikka et tällä hetkellä käytä IPv6, kannattaa aloittaa leikkaamalla parantaa olevasta tekniikasta sekä katsomassa sen lähiverkossa.

Joten tarkistaa, haaste oli:

Kirjoita tcpdump tai Windump suodatinta, joka tallentaa kaiken liikenteen kanssa lähde IPv6-osoite 2001: DB8:: 10 kautta 2001: DB8:: 20.

On olemassa pari varoituksista kanssa kirjallisesti tätä suodatinta. Ensimmäiset I käsitellään viimeiseen viestiin. Lopulliseksi, jonka tiesin mutta koskaan ajatellut oli ongelma kunnes aloin työskennellä IPv6 melko raskaasti, että tcpdump / Windump vain voit käyttää 1, 2 tai 4 tavun maskeja. Joten vaikka me haluamme ratkaista tämän kanssa aluksi suodatin ilmoitus "ip6 [08:14] =", emme voi, koska olemme vain 4 tavua. On itse asiassa tapa kiertää tätä, mutta tulen takaisin se.

Joten tässä on suodattimen olen työskennellyt:

(Ip6 [08:04] = 0x20010db8 ja ip6 [12:04] = 0 ja ip6 [16:4] = 0 ja (ip6 [20:4]> = 0 × 0010 ja ip6 [20:4] <= 0050 ))

Hieman pitkä, mutta se toimii. Elizabeth keksi ratkaisun, joka on paljon enemmän tyylikäs kuin omani:

src net 2001: DB8:: / 122 ja ip6 [23]> = 0 × 10 & & ip6 [23] <= 0 × 20

Joten aloittamalla libpcap muodossa, hän pystyy yhdistämään ensimmäinen kolme lausumaa yhdeksi. Ei kokoa kuningatar, mutta joka tekee hänen ratkaisu on paljon lyhyempi kuin minun. Tässä tapauksessa se on hyvä asia. :)

Se siitä. Laitan toiseen IPv6 tyyppinen haaste huomenna.

Viikonlopun Challenge - vihje

01 joulukuu 2009

Vau, ääni sirkat on korvia huumaava. Varmasti joku on taitoja saada meidät läpi tämän ongelman? ;)

OK, joitakin vinkkejä saada sinut läpi haaste. Aloitetaan ratkaisemaan tätä IPv4-osoite ja sitten meidän täytyy harjoitella tietämme IPv6. Oletetaan osoitealue haluamme kaapata on 192.168.1.10 - 192.168.1.20. Suuri ongelma on IP eivät ole edes tavu rajan. Voisimme tehdä jotain:

src net 192.168.1.0/27

mutta se antaisi meille osoitteet 0.0-0.31, enemmän IP kuin meillä todella olisi halunnut nähdä. Tämän ongelman ratkaisemiseksi meidän täytyy käyttää joidenkin operaattoreiden ja perusalkioiden. Yksi mahdollisuus on:

(Ip [12] = 192 ja ip [13] = 168 ja ip [14] = 1 ja (ip [15]> = 10 ja ip [15] <= 20))

Alkaen sisempi eniten suluissa edellä esitetyt lukee "tavu 15 on oltava suurempi tai yhtä suuri kuin 10, mutta se myös on oltava pienempi tai yhtä suuri kuin 20. Jos tämä väite oikein, varmista, tavu 12 on yhtä kuin 192, tavu 13 on yhtä kuin 168 ja tavu 14 on 1. "

Voimmeko lyhentää tätä ilmaisua? Ehdottomasti! Ensin meidän täytyy muuntaa se Hex kuitenkin. Miksi Hex? Jos kirjoitan esimerkiksi maininnalla "ip [12:02] =" tcpdump olettaa, että tulos on 16-bittinen numero, ei kaksi 8-bittistä numeroa. Siksi voit kirjoittaa jotain "tcp [02:02] = 12345" ja saa sen toimimaan. tcpdump muuntaa kaksi tavua osaksi 16-bittinen arvo ja vastaa sitä arvoa vastaan ​​olet määrittänyt. Muuntamalla Hex vältämme tämän ongelman. Joten:

192.168.1.10 = 0xC0A8010A

192.168.1.20 = 0xC0A80120

Nyt yksinkertaisesti kirjoittaa lauseke:

ip [12:04]> = 0xC0A8010A ja ip [12:04] <= 0xC0A80120

Tämä kaikki on sitä.

Vaikka IPv4 käyttää 4 byte osoitteet, IPv6 käyttää 16 tavua. Koska osoitteet ovat niin pitkiä, me kirjoitamme ne Hex säästää tilaa. Joten osoitteet annoin sinulle haaste olivat:

2001:0 DB8: 0000:0000:0000:0000:0000:0010

2001:0 DB8: 0000:0000:0000:0000:0000:0020

Huomaa etten aluksi kirjoittaa ne sellaisina. Löytyy muutama yleissopimusten voit säästää tilaa, kun kirjoitat IPv6-osoite. Ensinnäkin voimme katkaista johtava nollia. Joten:

2001:0 DB8: 0000:0000:0000:0000:0000:0010

tulee:

2001: DB8: 0000:0000:0000:0000:0000:10

Nyt, katso kaikki nollaa keskellä? Voimme pilkkoa niitä liikaa. Kun näet "::" se tarkoittaa täyttää tuo tila, jossa on tarpeeksi nollia laajentaa osoitteeseen takaisin ulos 16 tavua. Joten Lisää tässä temppu niin hyvin ja saamme:

2001: DB8:: 10

Paljon helpompi kirjoittaa. Toteamus on, voit vain poistaa yhden ryhmän nollat ​​kaksinkertainen kaksoispiste temppu. Mieti seuraavaan osoitteeseen:

2001:: 1234:: 10

Meillä ei ole aavistustakaan mihin paikkaan tavu peräkkäin "1234" osoite. Se alkaa missä tahansa tavun 6 kautta tavu 12.

Työskenneltäessä IPv4, tcpdump ja Windump käyttää pöytäkirjaa Hakusanalla "ip", kuten käy ilmi edellä mainitut esimerkit. IPv6 kohteliaisuus, että on "ip6". Missä lähde osoitekentän IPv6 header? No en voi antaa teille kaikille siellä vastauksia tai sitä ei enää "haaste" :)

Viikonlopun Challenge

27 marraskuu 2009

Tässä toinen haaste testata hieman wienie taidot:

Kirjoita tcpdump tai Windump suodatinta, joka tallentaa kaiken liikenteen kanssa lähde IPv6-osoite 2001: DB8:: 10 kautta 2001: DB8:: 20. Melko helppoa, eikö? Jos et ole kokeillut, sinun tulee huomaamaan, että tcpdump / Windump heittää muutaman käyrät sinua.

Voit tarkistaa työtä, tässä on kaapata tiedosto:

ipv6-ICMP

Tiedosto sisältää sekä lähteen IPv6-osoitteita. Ilmeisesti suodattimen pitäisi vain näyttää määritellyn joukon osoitteita.

Voittaja saa innostaa kunnioitusta ja ihailua vähemmän geeks. ;)

Voi missä, oi missä voi WScale olla?

20 marraskuu 2009

Jos tämä haaste tuntui vaikeampaa kuin se on, olet oikeilla jäljillä. ;)

Minä juoksin koko tämän ongelman, kun kirjoittaessani Packet Decode työkalu. Minun täytyy sanoa, se oli viileä harjoitus minulle, koska en ole koskaan oikeastaan ​​ajatellut luoda tcpdump ja Wireshark suodattimet kaikkiin mahdollisiin IP, TCP, UDP ja ICMP alalla ja / tai arvo. Ylivoimaisesti TCP Kenttä on kaikkein "rikki" mistä paketti purkaa näkökulmasta kuin muut IP-kenttään.

Ensimmäinen Puhutaanpa miten TCP vaihtoehtoja olisi pitänyt panna täytäntöön. Jos katsot IPv4 vaihtoehtoja kentän, se alkaa "Type" tunniste. Jos olet kiinnostunut tietyn IP-vaihtoehto, se on vain asia tarkistaa tämän alan oikeutta bittinen yhdistelmä. Oli TCP vaihtoehtoja on toteutettu tällä tavalla, tähän haasteeseen olisi ollut melko yksinkertaista.

Lähes kaikki TCP vaihtoehtoja on "laji" ja "Pituus" kentässä, jotka molemmat ovat 1 tavu kooltaan. Poikkeuksia ovat "End of Option List" ja "Ei-operaatio", joka vain on eräänlainen toimintaedellytykset ja ovat yhden tavun kokoisia. Tässä lista yhteistä TCP vaihtoehdoista:

tcp-options

Sivu 15 RFC 793 kertoo meille "TCP header (yksikin optiot mukaan lukien) on olennainen määrä 32 bittiä pitkä." Toisin sanoen, TCP-otsikon koko tavuina on jaollinen neljällä (20 tavua, 24 tavua, jne.). Jos tarkastellaan luetteloa TCP vaihtoehtoja, vain "segmentin enimmäiskoko" on jaollinen neljällä. Joten käyttää mitään muita vaihtoehtoja, on tehtävä täyte.

Miten pehmuste olisi sovellettava on vähän epäselvä. Jos katsomme sivu 26 RFC 1323 löydämme tähän:

  LIITE: TOTEUTUS EHDOTUKSET

    Seuraavat kaaviot ovat suositellaan lähetysvalintoja ei-SYN
    segmentit, maksimaalisen mahdollista yhdenmukaistamista 32-bittinen ja 64-bittinen
    koneita.

        +--------+--------+--------+--------+
        | NOP ​​| NOP ​​| TSopt | 10 |
        +--------+--------+--------+--------+
        | TSval timestamp |
        +--------+--------+--------+--------+
        | TSecr timestamp |
        +--------+--------+--------+--------+ 

Huom NOP täyte näkyy ennen timestamp vaihtoehto, ei lopussa kuten arvata saattaa. Huomaa myös RFC nimenomaan sanoo että tämä on "ei-SYN segmentit" ja että se on "suositeltu", ei tarvita. Näyttää kuitenkin siltä, ​​että useimmat käyttöjärjestelmät noudattaa suositusta ja aina paikka pehmuste ennen Kind ja pituus tavua. Olen tarkistanut Windows, Linux, Mac, eri laitteisto, jne. ja ne kaikki laittaa pehmusteet alussa.

Joten voimme luottaa että tämä on "standardi", eikö? Ei aivan. Sivu 17 RFC 793 kuvaa NOP näin:

  Tämä vaihtoehto koodia voidaan käyttää eri vaihtoehtojen välillä, esimerkiksi
         Kohdista alusta myöhemmän vaihtoehdon sanan rajan.
         Ei ole mitään takeita siitä, että lähettäjä käyttää tätä vaihtoehtoa, joten
         vastaanottimia on oltava valmis käsittelemään vaihtoehtoja, vaikka ne eivät
         ei alkaa sanan rajan. 

Toisin sanoen, se ei ole vain siitä, että NOP välttämättä näy alussa, NOP ei välttämättä käytetä lainkaan! On täysin laillista layout TCP Option Field ilman NOP pehmusteet ja vain käyttää loppu Asetusluettelo täyteaineena lopussa saavutettaisiin asianmukainen raja.

Mitä me lopulta varten suodattimen? Jos me luottaa NOP ennen optio päädymme suodatin näyttää tältä:

tcp [13] & 2 = 2 ja tcp [12] ja 240> 80 ja ((tcp [20] = 1 ja tcp [21:2] = 0 × 0303) tai (TCP [24] = 1 ja tcp [25:2 ] = 0 × 0303) tai (TCP [28] = 1 ja tcp [29:2] = 0 × 0303) tai (TCP [32] = 1 ja tcp [33:2] = 0 × 0303) tai (tcp [ 36] = 1 ja tcp [37:2] = 0 × 0303) tai (TCP [40] = 1 ja tcp [41:2] = 0 × 0303) tai (TCP [44] = 1 ja tcp [45:2 ] = 0 × 0303) tai (TCP [48] = 1 ja tcp [49:2] = 0 × 0303) tai (TCP [52] = 1 ja tcp [53:2] = 0 × 0303) tai (tcp [ 56] = 1 ja tcp [57:2] = 0 × 0303))

Murtamaan mitä tämä suodatin on tekemässä:

  • Vain Tarkista SYN & SYN / ACK-paketteja: tcp [13] & 2 = 2
  • TCP header on suurempi kuin 20 tavua (asetukset ovat): TCP [12] ja 240> 80
  • Tarkista ensimmäinen tavu kunkin neljän tavun rajalla on NOP: tcp [20] = 1, tcp [24 = 1, ...
  • Tarkista seuraavat kaksi tavua, onko Kind = 3 ja pituus = 3: TCP [21:2] = 0 × 0303, tcp [25:2] = 0 × 0303, ...

Jos kuitenkin haluamme varmistaa, että me kiinni kaikki mahdollisuudet asiassa järjestelmä ei toteuta NOP päädymme:

tcp [13] & 2 = 2 ja tcp [12] ja 240> 80 ja (tcp [20:2] = 0 × 0303 tai tcp [21:2] = 0 × 0303 tai tcp [22:2] = 0 × 0303 tai tcp [23:2] = 0 × 0303 tai tcp [24:2] = 0 × 0303 tai tcp [25:2] = 0 × 0303 tai tcp [26:2] = 0 × 0303 tai tcp [27:2] = 0 × 0303 tai tcp [28:2] = 0 × 0303 tai tcp [29:2] = 0 × 0303 tai tcp [30:2] = 0 × 0303 tai tcp [31:2] = 0 × 0303 tai tcp [32:2] = 0 × 0303 tai tcp [33:2] = 0 × 0303 tai tcp [34:2] = 0 × 0303 tai tcp [35:2] = 0 × 0303 tai tcp [36:2] = 0 × 0303 tai tcp [37:2] = 0 × 0303 tai tcp [38:2] = 0 × 0303 tai tcp [39:2] = 0 × 0303 tai tcp [40:2] = 0 × 0303 tai tcp [ 41:2] = 0 × 0303 tai tcp [42:2] = 0 × 0303 tai tcp [43:2] = 0 × 0303 tai tcp [44:2] = 0 × 0303 tai tcp [45:2] = 0 × 0303 tai tcp [46:2] = 0 × 0303 tai tcp [47:2] = 0 × 0303 tai tcp [48:2] = 0 × 0303 tai tcp [49:2] = 0 × 0303 tai tcp [50 : 2] = 0 × 0303 tai tcp [51:2] = 0 × 0303 tai tcp [52:2] = 0 × 0303 tai tcp [53:2] = 0 × 0303 tai tcp [54:2] = 0 × 0303 tai tcp [55:2] = 0 × 0303 tai tcp [56:2] = 0 × 0303 tai tcp [57:2] = 0 × 0303 tai tcp [58:2] = 0 × 0303)

Ero Kun suodatin on, että olemme tarkistaa Kind = 3 ja pituus = 3 kaikki läpi vaihtoehtoja kentän (kuten Elizabeth ehdotti).

Voi jompikumpi näistä suodattimet aiheuttaa vääriä positiivisia? Ehdottomasti! Kaksi mahdollisuutta:

  1. Arvo aikaleima voi vastaisivat mallia etsimme.
  2. Suodatin olettaa 40 tavun vaihtoehto kenttään. Se voisi olla vähemmän näitä arvoja hyötykuorma.

Joten mikä suodatin tulisi käyttää? Ensimmäinen tuottaa vähemmän vääriä positiivisia, mutta miss järjestelmiä, jotka ovat RFC-yhteensopiva, mutta eroaa normi. Toinen on aina kiinni Window mittakaavassa, jos se on asetettu, mutta mahdollisuus vääriä positiivisia on korkeampi.

Aion nimetä Elizabeth kuin voittaja haaste. Muutamat muut olivat yhtä lähellä, mutta hän oli ainoa, jolla on kanttia lähettää hänelle ajatusketju kommenteissa. Aion tehdä toisen palkinnon Jeff kuka keksi tähän ratkaisuun osittain vitsi ympärillä:

tcpdump-nn | grep 'wscale "> wscale-matches.txt

Tämä ei synny todellista packet capture, mutta voit tehdä:

tcpdump-nn-X-s 0 | grep 'wscale "> wscale-matches.txt

Ja sitten ajaa ääntä txt2cap saada se takaisin pcap muotoon. Hän ei noudata haaste erityisesti, mutta sinun pitää antaa Kudos ajatella ulkopuolella ruutuun, koska se korjaa kaikki vääriä positiivisia asioita. ;)

Elizabeth ja Jeff, otan sinuun yhteyttä niin sähköpostitse. Onnea!

TCP Options - Lopullinen vihje

19 marraskuu 2009

Minulla oli yksi kierre viesti ja neljä sähköpostiviestejä, jotka ovat soooooo lähellä oikeaa vastausta. Tässä yksi viime vihjeen toivottavasti saamme ihmiset yli viimeisen esteensä.

Mainitsin avulias tshark komento. Tässä lähtö:

C: \ testaus> tshark-n-R linux-syn.cap-T kentät-e tcp.options
02:04:05: B4: 04:02:08:0: 02:47:04: A8: 00:00:00:00:01:03:03:05

Joten mitä olet edellä on TCP-osio (tavu 20 ja uudemmat) testin paketin. Window Scale vaihtoehto on viimeinen vaihtoehto luettelosta.

Tiedän kirjallisesti tätä suodatinta ei ole helppoa. Itse asiassa siksi minä muutti sen haaste. On mahdollista kuitenkin. ;)

TCP Options Challenge - vihjeitä

18 marraskuu 2009

Aikaisemmin olen lähettänyt haasteen kirjoittaa tcpdump / Windump suodatin, joka kaapata paketteja, jotka ovat TCP vaihtoehto "Ikkuna Scale" set. Jotkut ihmiset ovat lähellä, mutta halusin lähettää joitakin vihjeitä. Lisäksi minulla ei ole ongelma sinulle sähköpostitse minulle suoraan, mutta voittaa haasteen sinun täytyy lähettää vastaus kommentit osiossa. Näin ei ole kysymys siitä, kuka löytänyt vastausta ensin.

Kaikki TCP vaihtoehdot ovat määritelty "Registry Kind" arvo (samanlainen ICMP "Type"-kenttään). Kun kyseessä Window Scale, että arvo on 3. Myös kaikki TCP vaihtoehtoja paitsi NOP sisältävät toisen kentän nimeltä "Pituus". Tämä määrittää kuinka monta tavua vaihtoehtoja käyttää myös "Registry Kind" tavu. Kun kyseessä ikkuna Scale pituus arvo on aina 3. Joten meillä on:

  • 1 tavu Rekisterin Kind
  • 1 tavun pituus
  • 1 tavu varsinaiseen WScale arvo

Vihje 2: Jos et ole koskaan porattu TCP asetusten kenttä tshark on viileä vaihtoehto:

tshark-n-r capture-file.cap-T kentät-e tcp.options

Tämä lähtö koko TCP vaihtoehtoja kentän Hex joten voit ainakin nähdä miltä se näyttää.

Lopullinen vihje, olen lähettänyt Linux SYN paketin jossa WScale 5 voit käyttää tarkistaaksesi suodattimen.

linux-SYN

Onnea!

Chris