Archive for November, 2009

Weekend Herausforderung

27. November 2009

Hier ist eine weitere Herausforderung für Ihre bit wienie Fähigkeiten zu testen:

Schreiben Sie eine tcpdump oder WinDump Filter, der den gesamten Datenverkehr mit einer IPv6-Quelladresse des Jahres 2001 wird zu erfassen: db8:: 10 bis 2001: db8:: 20. Ziemlich einfach, oder? Wenn Sie nicht versucht haben, gehen Sie zu finden, dass tcpdump / WinDump ein paar Kurven auf dich wirft.

So überprüfen Sie Ihre Arbeit, hier ist eine Capture-Datei:

ipv6-icmp

Die Datei enthält eine Mischung aus Quell IPv6-Adressen. Offensichtlich hat Ihr Filter sollte nur Anzeige des angegebenen Bereichs von Adressen.

Der Gewinner erhält zur Ehrfurcht und Bewunderung in geringerem Geeks zu begeistern. ;)

Ich weiß nicht alles, und das ist OK

21. November 2009

In den letzten paar Tagen traf ich eine Herausforderung zu sehen, wer könnte ein tcpdump / WinDump Filter-Pakete mit der Window Scale Option greifen zu schreiben. Es war ein bisschen wie ein Brain Twister. Es war eines jener Probleme, die Ihnen den Start zu denken ist einfach, aber dann erkennen, ist sehr hart. Dann starten Sie in Frage, wenn Sie auf dem richtigen Weg sind, weil es nicht sein kann so komplex wie es zu sein scheint. Ich war speziell versucht, schieben Sie den Umschlag ein bisschen in diesem Fall.

In der Herausforderung, die ich festgestellt, dass die Leute sollten ihre Gedanken / Antworten in den Kommentaren posten. Nur eine Person war bereit, dies zu tun, während alle anderen kontaktiert mich per E-Mail. Zuerst dachte ich, es war eine Privatsphäre besorgt, aber dann erinnerte ich mich, dass ich damit Benutzer wählen einen Alias ​​wollen sie für einen Chat-Namen. Folks hatten einige wirklich gute Ideen, aber ich denke, sie fürchteten sich, stoßen als zu viel von einem "Neuling" in einem öffentlichen Forum. Ich habe die gleiche Sache in Klassenzimmer, wo ich ein Thema vermitteln wir sehen, fragen, ob es Fragen sind, wird niemand die Hand heben, aber am Ende des Tages habe ich eine Schlange vor meinem Schreibtisch.

Ich traf ein bisschen wie ein Meilenstein in diesem Jahr in die ich realisiert habe ich in der Industrie seit über 20 Jahren. Um Ihnen eine Idee geben, wie lange das ist in Internet-Zeit, einer meiner ersten Auftritte half, eine Regierung Auftragnehmer über von der "host file system", um diese brandneue Technologie namens "Domain Name Services" zu konvertieren. Ich erinnere mich, als Gopher war die raffiniertesten Kind auf dem Block. Erfahrene erster Hand, wie AOL die Verbindung zum Internet dramatisch verändert die Landschaft der Computer-Sicherheit. Ich habe mit Größen wie Robert Morris Sr. und Alan Paller gearbeitet. Ich habe Tipp und Tricks mit Tausenden der hellsten Köpfe gehandelt über das SANS Institute. Ich habe Zeit der Beratung bis das Weiße Haus sowie eine Reihe von anderen staatlichen Stellen ausgegeben.

Und mit allem, was gesagt, ich bin der erste, der zugibt, dass ich keineswegs alles wissen. In der Tat, ich voll und ganz zu erkennen Ich habe noch viel mehr zu lernen als ich schon weg in die kleinen grauen Zellen squirreled. Persönlich bin ich immer noch über Dinge laufen (wie Filter für die WScale Option), die ich mir ansehen und sagen: "Wie zum Teufel habe ich verpasst, dass in all diesen Jahren?".

Eines der Dinge, die obsessive Seite von mir liebt über Netzwerksicherheit ist, dass es ein Fass ohne Boden ist. Sie verbringen jeden wachen Moment liest Blog / list Beiträge, Download-Tools, Tests im Labor und noch nicht in der Lage, Ihr Gehirn um all das zu wickeln. Netzwerksicherheit ist subtil und voller Nuancen. Jeder Gehirn anders verdrahtet ist, so dass einige von diesen Nuancen liegen auf der Hand, und andere nicht so sehr. Eine der coolen Dinge über Klebe selbst da draußen ist, dass Sie in den Genuss von anderen Menschen die Chemie des Gehirns. Eindeutig eines der größten Probleme auf dem weißen Hut Seite des Zauns ist, dass wir nicht tauschen / Perspektiven oft genug. Ich denke viel zu oft Ego hält uns zurück.

Gibt es Leute, sie wissen es alle denken? Absolut. Auch hier kann Ego eine schwierige Meister werden. "Jugendliche:: Lassen Sie nach Hause, während Sie wissen noch alles:" Ich bin von den alten T-Shirts und Plakate, die zu lesen erinnert. Mit Netzwerk-Sicherheit, wie die meisten Dinge im Leben, gibt es eine Barriere der Erleuchtung. Auf der einen Seite der Barriere, so scheint der Teich klein und Sie denken, Sie haben einen Handgriff auf sie alle. Sobald Sie durchbrechen Sie jedoch die Weite der Galaxie zu erkennen und nur, wie weit diese Straße immer noch ausdehnt.

So schlage ich eine 12-Schritt-Aussenseiter-Programm, und ich werde der Erste, der auf einer Seifenkiste steigen und zugeben würde: "Ich weiß nicht alles und ich bin OK mit, dass". Ein Teil der Grund, warum ich gab Jeff zweiten Platz ist er kam mit dem Problem von einer ganz anderen Ansatz und entwickelte eine Lösung, die ich nicht gedacht. Mit anderen Worten, indem ich mich da draußen, ich erhielt den Nutzen seines Gehirns Chemie.

Wie Jeff, zieht jeder Lektüre dieses auf ihre eigene, einzigartige Lebenserfahrung und sind durchaus in der Lage kommen mit einzigartigen und innovativen Lösungen sowie. Du wirst nie sicher aber wissen, wenn Sie das Ego gremlin überprüfen und bleiben Sie draußen.

</ Seifenkiste>

Chris

Oh, wo, oh wo kann WScale werden?

20. November 2009

Wenn diese Herausforderung schien schwerer als es sein sollte, sind Sie auf dem richtigen Weg. ;)

Ich rannte über dieses Problem beim Schreiben von meinem Packet Decode -Tool. Ich muss sagen, es war eine coole Übung für mich, da ich nie wirklich über das Erstellen von tcpdump und Wireshark-Filter für jeden möglich, IP, TCP, UDP und ICMP-Feld und / oder Wert gedacht. Bei weitem die TCP-Optionen Feld ist die "broken" von einem Paket entschlüsseln Perspektive als jede andere IP Bereich.

Lassen Sie uns zunächst darüber, wie die TCP-Optionen sollten umgesetzt haben zu sprechen. Wenn man sich die IPv4-Optionen Bereich suchen, beginnt es mit einem "Type"-Kennung. Wenn Sie in eine bestimmte IP-Option interessiert sind, ist es nur eine Frage der Kontrolle auf diesem Gebiet für die richtige Bit-Kombination. Hätte die TCP-Optionen umgesetzt diese Weise würde diese Herausforderung ziemlich geradlinig gewesen.

So gut wie alle TCP-Optionen haben eine "Art" und ein Feld "Länge", die beide 1 Byte groß sind. Die Ausnahmen sind "End of Option List" und "No-Operation", die nur eine Art Feld, und sind somit ein Byte groß. Hier ist eine Liste der gemeinsamen TCP-Optionen:

tcp-options

Seite 15 von RFC 793 sagt uns: "Der TCP-Header (auch wenn einschließlich Optionen) eine ganze Zahl von 32 Bit lang." In anderen Worten muss der TCP-Header-Größe in Bytes werden gleichmäßig durch vier teilbar (20 Byte, 24 Byte, etc.). Wenn man sich die Liste der TCP-Optionen aussehen, nur "Maximum Segment Size" ist durch vier teilbar. So der Einsatz anderer Optionen wirst padding erfordern.

Wie die Polsterung angewendet werden sollte ist ein bisschen unklar. Wenn wir auf Seite 26 Look RFC 1323 finden wir diese:

  ANHANG A: Detaillierte Vorschläge

    Folgende Layouts sind für das Senden von Optionen auf Nicht-SYN empfohlen
    Segmente zu erreichen maximal mögliche Ausrichtung der 32-bit und 64-Bit
    Maschinen.

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

Beachten Sie die NOP padding erscheint vor dem Timestamp-Option, nicht am Ende, wie Sie vielleicht erwarten. Beachten Sie auch die RFC speziell sagt, das ist für "Nicht-SYN-Segmente" und dass es "empfohlen", nicht erforderlich. Scheint jedoch, dass die meisten Betriebssysteme dieser Empfehlung zu folgen und immer Platz Polsterung vor der Art und Länge bytes. Ich habe Windows, Linux, Mac, verschiedene Hardware, etc. überprüft und sie alle stellen die Polsterung am Anfang.

So können wir auf dieser verlassen, dass der "Standard", nicht wahr? Nicht ganz. Seite 17 von RFC 793 beschreibt NOP auf diese Weise:

  Diese Option Code kann zwischen den Optionen verwendet werden, z. B. auf
         Richten Sie den Beginn eines nachfolgenden Option auf eine Wortgrenze.
         Es gibt keine Garantie, dass die Absender wird diese Option verwenden, so
         Empfänger müssen bereit sein, Optionen Prozess sein, auch wenn sie
         nicht auf einer Wortgrenze beginnen. 

Mit anderen Worten, es ist nicht nur so, dass NOP kann oder auch nicht zeigen, bis zu Beginn, könnte NOP überhaupt nicht verwendet werden! Es ist völlig legal, Layout die Option TCP Feld ohne NOP Polsterung und verwenden Sie einfach End of Option List als Füllstoff am Ende die richtige Grenze zu erreichen.

Also, was tun wir am Ende mit für einen Filter? Wenn wir zählen auf NOP vor der Option, die wir am Ende mit einem Filter, der wie folgt aussieht:

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

Zu brechen, was dieser Filter ist dabei:

  • Nur überprüfen SYN & SYN / ACK-Pakete: tcp [13] und 2 = 2
  • TCP-Header ist größer als 20 Byte (Optionen eingestellt sind): tcp [12] & 240> 80
  • Überprüfen Sie das erste Byte eines jeden Vier-Byte-Grenze für NOP: tcp [20] = 1, tcp [24 = 1, ...
  • Überprüfen Sie in den nächsten zwei Bytes zu sehen, ob Kind = 3 und Länge = 3: tcp [21.02] = 0 × 0303, tcp [25:2] = 0 × 0303, ...

Wenn wir aber sicherstellen, dass wir alle Möglichkeiten fangen bei wollen ein System nicht implementiert NOP wir am Ende mit:

tcp [13] und 2 = 2 und tcp [12] und 240> 80 und (tcp [20.02] = 0 × 0303 oder tcp [21.02] = 0 × 0303 oder tcp [22.02] = 0 × 0303 oder tcp [23.02] = 0 × 0303 oder tcp [24:2] = 0 × 0303 oder tcp [25:2] = 0 × 0303 oder tcp [26:2] = 0 × 0303 oder tcp [27:2] = 0 × 0303 oder tcp [28:2] = 0 × 0303 oder tcp [29:2] = 0 × 0303 oder tcp [30:2] = 0 × 0303 oder tcp [31:2] = 0 × 0303 oder tcp [32:2] = 0 × 0303 oder tcp [33:2] = 0 × 0303 oder tcp [34:2] = 0 × 0303 oder tcp [35:2] = 0 × 0303 oder tcp [36:2] = 0 × 0303 oder tcp [37:2] = 0 × 0303 oder tcp [38:2] = 0 × 0303 oder tcp [39:2] = 0 × 0303 oder tcp [40:2] = 0 × 0303 oder tcp [ 41:2] = 0 × 0303 oder tcp [42:2] = 0 × 0303 oder tcp [43:2] = 0 × 0303 oder tcp [44:2] = 0 × 0303 oder tcp [45:2] = 0 × 0303 oder tcp [46:2] = 0 × 0303 oder tcp [47:2] = 0 × 0303 oder tcp [48:2] = 0 × 0303 oder tcp [49:2] = 0 × 0303 oder tcp [50 : 2] = 0 × 0303 oder tcp [51,2] = 0 × 0303 oder tcp [52:2] = 0 × 0303 oder tcp [53:2] = 0 × 0303 oder tcp [54:2] = 0 × 0303 oder tcp [55:2] = 0 × 0303 oder tcp [56:2] = 0 × 0303 oder tcp [57:2] = 0 × 0303 oder tcp [58:2] = 0 × 0303)

Der Unterschied mit diesem Filter ist, dass wir die Überprüfung Kind = 3 und Länge = 3 den ganzen Weg durch die Optionen-Feld (als Elizabeth vorgeschlagen).

Kann einer dieser Filter erzeugen Fehlalarme? Absolut! Zwei Möglichkeiten:

  1. Der Wert des Timestamp kann mit dem Muster, die wir suchen.
  2. Der Filter nimmt eine 40-Byte-Option Feld. Es könnte sein, weniger mit diesen Werten in der Payload.

So, die Filter sollten Sie verwenden? Das erste erzeugt weniger False Positives aber verfehlen Systeme, die RFC-konform, aber anders als die Norm sind. Der zweite wird immer fangen Window Scale, wenn diese festgelegt wurde, aber die Chance eines falsch-positiven höher ist.

Ich werde Elizabeth als Sieger der Herausforderung zu bezeichnen. Ein paar andere waren einfach so nah, aber sie war die einzige, mit dem Mut, ihre Gedanken in den Kommentaren posten. Ich werde einen zweiten Preis an Jeff, die mit dieser Lösung teilweise kidding herum kam award:

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

Dies wird nicht erzeugen eine tatsächliche Paketerfassung, aber man könnte eine zu tun:

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

Und dann laufen die Ausgabe durch txt2cap, um es wieder in pcap-Format. Er folgte nicht der Herausforderung gesagt, aber du mußt geben dickes Lob für das Denken außerhalb der Box, da dies behebt alle falsch positiven Aspekte. ;)

Elizabeth und Jeff, ich werde mit Ihnen Kontakt aufnehmen sowohl per E-Mail. Herzlichen Glückwunsch!

TCP-Optionen - Final Ahnung

19. November 2009

Ich habe einen Thread Beitrag und vier E-Mails, soooooo die richtige Antwort sind zu schließen. Hier ist noch eine letzte Hinweis auf hoffentlich Leute über die letzte Hürde.

Ich erwähnte die hilfreichen tshark Befehl. Hier ist die Ausgabe:

C: \ Test> tshark-n-r linux-syn.cap-T Felder-e tcp.options
02.04.05: b4: 04:02:08:0 a: 02.47.04 a: a8: 00:00:00:00:01:03:03:05

Also, was haben Sie über die TCP-Optionen Abschnitt (Byte 20 und höher) der Test-Paket. Die Window Scale Option ist die letzte Option in der Liste.

Ich weiß, schreibe diesen Filter ist nicht einfach. In der Tat, deshalb habe ich es verwandelte sich in eine Herausforderung. Es ist jedoch möglich. ;)

TCP-Optionen Challenge - Hinweise

18. November 2009

Früher habe ich geschrieben eine Herausforderung zu einem tcpdump / WinDump Filter, der Pakete, die die TCP-Option "Window Scale" gesetzt haben einzufangen schreiben würde. Einige Leute sind in der Nähe, aber ich wollte ein paar Tipps zu posten. Außerdem habe ich kein Problem mit Ihnen per E-Mail direkt an mich, sondern um die Herausforderung, die Sie haben, um die Antwort zu den Kommentaren nach zu gewinnen. So gibt es keine Frage, wer die Antwort gefunden, zuerst.

Alle TCP-Optionen werden durch ein "Registry Kind"-Wert (ähnlich der ICMP Feld "Typ") angegeben. Im Fall von Window Scale, ist, dass Wert 3. Außerdem enthalten alle TCP-Optionen mit Ausnahme von NOP eine sekundäre Feld "Länge". Diese legt fest, wie viele Bytes der Optionen ist mit, darunter die "Registry Kind" Byte. Im Fall von Window Scale die Länge beträgt immer 3. Also haben wir:

  • 1 Byte für Registry Art
  • 1 Byte für Länge
  • 1 Byte für die tatsächliche WScale Wert

Tipp 2: Wenn Sie noch nie in die TCP-Optionen Bereich haben gebohrt, hat tshark einem kühlen Option:

tshark-n-r capture-file.cap-T Felder-e tcp.options

Dadurch wird der gesamte TCP-Optionen Bereich in Hex-Ausgang, so dass Sie zumindest sehen können, wie es aussieht.

Finale Ahnung, ich habe eine Linux-SYN-Paket, das WScale bis 5 Sets für Sie zu nutzen, um den Filter zu überprüfen veröffentlicht.

linux-syn

Viel Glück!

Chris

TCP-Optionen Herausforderung

18. November 2009

Ich habe ein bisschen los, einschließlich der Veröffentlichung einer neuen Referenz-Tool für das Apple iPhone und iPod. Das Tool ist Call Packet Decode und ich habe Setup einen alternativen Ort zu helfen, pflegen sie.

Ich fühle mich vernachlässigt diese Seite in den letzten paar Wochen schlecht, so habe ich beschlossen, zu werfen, eine weitere Herausforderung. Der Gewinner erhält eine kostenlose Kopie der oben genannten Packet Decode-Tool. OK, so dass Sie nicht in der Lage sein, auf den Erlös den Ruhestand, aber hoffentlich wird das Tool die Ihnen das Leben ein bisschen leichter. ;)

Also hier ist die Herausforderung:

Schreiben Sie eine tcpdump oder WinDump Filter, der nur erfassen werden Pakete, die das TCP "Window Scale"-Option eingestellt haben. Alle anderen TCP-Option Einstellungen können ignoriert werden.

Ziemlich einfach, nicht wahr? Erste Person, um die Antwort in den Kommentaren Beitrag erhält den Preis.