Archive pour Novembre 2009

Défi Week-end

27 novembre 2009

Voici un autre défi pour tester vos compétences wienie bits:

Ecrire un filtre tcpdump ou WinDump qui va capturer tout le trafic avec une adresse IPv6 source de l'année 2001: db8:: 10 à 2001: db8:: 20. Assez facile, non? Si vous ne l'avez pas essayé, vous allez trouver que tcpdump / WinDump jette quelques courbes à vous.

Pour vérifier votre travail, voici un fichier de capture:

ipv6-icmp

Le fichier contient un mélange d'adresses IPv6 source. Evidemment, votre filtre doit afficher uniquement la gamme d'adresses spécifiée.

Le gagnant obtient pour inspirer la crainte et l'admiration en moins geeks. ;)

Je ne sais pas tout, et c'est OK

21 novembre 2009

Au cours des derniers jours, j'ai couru un défi pour voir qui pouvait écrire un filtre tcpdump / WinDump pour attraper les paquets avec l'option Window Scale. C'était un peu un twister cerveau. Il était un de ces problèmes que vous commencez la pensée est facile, mais ensuite réaliser est très dur. Vous pouvez alors commencer à interroger si vous êtes sur la bonne voie, car il ne saurait être aussi complexe que cela semble être. J'ai été spécifiquement essayant de pousser l'enveloppe un peu sur celui-ci.

Dans le défi, j'ai déclaré que les gens doivent publier leurs réflexions / réponses dans la section commentaires. Une seule personne était disposé à faire, alors que tout le monde m'a contacté par e-mail. Au début, je pensais que c'était une préoccupation de confidentialité, mais ensuite je me suis souvenu que je laisse les utilisateurs choisir n'importe quel alias qu'ils veulent pour un nom d'écran. Les gens avaient très bonnes idées, mais je pense qu'ils avaient peur d'apparaître comme trop de "newbie" dans un forum public. J'ai vu la même chose dans les paramètres de classe où je vais enseigner un sujet, demandez s'il ya des questions, personne ne lève la main, mais à la fin de la journée, j'ai une ligne en face de mon bureau.

J'ai touché un peu d'une étape importante cette année dans ce j'ai réalisé que je suis dans l'industrie depuis plus de 20 ans. Pour vous donner une idée du temps qui est en temps Internet, un de mes premiers concerts était d'aider à convertir un entrepreneur du gouvernement au cours du «système de fichier hôte» à cette toute nouvelle technologie appelée «Domain Name Services". Je me souviens quand Gopher a été le plus lisse gosse sur le bloc. Expérimenté première main comment AOL connexion à l'Internet a radicalement changé le paysage de la sécurité informatique. J'ai travaillé avec les plus grands tels que Robert Morris père et Alan Paller. J'ai échangé pointe et astuces avec des milliers des plus brillants esprits via le SANS Institute. J'ai passé le temps de consulter la Maison Blanche ainsi que d'un certain nombre d'autres organismes gouvernementaux.

Et avec tout ce que dit, je suis le premier à admettre que je n'ai nullement tout savoir. En fait, je reconnais pleinement j'ai encore beaucoup plus à apprendre que j'ai déjà amassés dans les petites cellules grises. Personnellement, j'ai toujours courir à travers stuff (comme le filtrage de l'option WScale) que je regarde et dis "Comment diable ai-je manqué que toutes ces années?".

Une des choses que le côté obsessionnel de m'aime sur la sécurité réseau est qu'il est un puits sans fond. Vous pouvez passer chaque moment de la lecture réveil blog / liste de messages, télécharger des outils, des tests en laboratoire, et ne pas être en mesure d'emballer votre cerveau tout autour de lui. La sécurité réseau est subtil et plein de nuances. Tout le monde a le cerveau est câblé différemment, de sorte que certaines de ces nuances sont évidentes, et d'autres pas tellement. Une des choses cool sur vous-même sortait il ya que vous obtenez le bénéfice de la chimie du cerveau des autres. Clairement l'un des plus gros problèmes du côté chapeau blanc de la barrière, c'est que nous ne sommes pas d'échanger des idées / des perspectives assez souvent. Je pense que trop souvent l'ego nous retient.

Y at-il des gens qui pensent qu'ils savent tout cela? Absolument. Encore une fois, l'ego peut être un maître délicat. Je me rappelle ces vieux t-shirts et les affiches on pouvait lire: «Les adolescents: Quitter la maison alors vous savez toujours tout". Avec la sécurité du réseau, comme la plupart des choses dans la vie, il ya une barrière de l'illumination. D'un côté de la barrière, l'étang semble petit et que vous pensez que vous avez une poignée sur le tout. Une fois que vous briser Mais vous reconnaître l'immensité de la galaxie et juste combien de temps avant que la route s'étire encore.

Je propose donc une étape 12 Geek programme et je serai le premier à monter sur une caisse à savon et d'admettre "Je ne sais pas tout et je suis OK avec ça». Une partie de la raison pour laquelle j'ai donné Jeff deuxième place est-il venu sur le problème d'une approche complètement différente et a développé une solution que je n'ai pas pensé. En d'autres termes, en me mettant là que j'ai reçu le bénéfice de sa chimie du cerveau.

Comme Jeff, tout le monde la lecture de ce tire sur leur propre expérience de vie unique et sont parfaitement capables de venir avec des solutions uniques et innovatrices ainsi. Vous ne saurez jamais à coup sûr cependant, sauf si vous vérifiez le gremlin ego et vous piquer là-bas.

</ Tacots>

Chris

Oh où, oh, où peut WScale être?

20 novembre 2009

Si ce défi semblait difficile que ce qu'elle devrait être, vous êtes sur la bonne voie. ;)

J'ai couru à travers ce problème lorsque l'écriture de mon Decode Packet outil. Je dois dire, il a été un exercice cool pour moi, comme je n'ai jamais vraiment pensé à créer tcpdump et filtres Wireshark pour chaque IP possibles, TCP, UDP et ICMP de terrain et / ou de valeur. De loin le champ des options TCP est le plus "cassé" dans une perspective de décoder les paquets que tout autre champ IP.

D'abord nous allons parler de comment les options TCP doit avoir été mis en œuvre. Si vous regardez le champ options IPv4, il commence par un "type" identifiant. Si vous êtes intéressé par une option IP spécifique, il est juste une question de vérification de ce domaine pour la combinaison de bits de droite. Si les options TCP été mis en œuvre de cette façon, ce défi aurait été assez simple.

Juste au sujet de toutes les options TCP ont un «genre» et une «longueur» de terrain, qui sont tous deux 1 octet en taille. Les exceptions sont les «Fin de la liste des options" et "Non-fonctionnement" qui ont seulement un champ Kind, et sont donc un octet en taille. Voici une liste des options TCP commun:

tcp-options

Page 15 de la RFC 793 nous dit: "L'en-tête TCP (même y compris les options) est un nombre entier de 32 bits de long." En d'autres termes, la taille en octets en-tête TCP doit être divisible par quatre (20 octets, 24 octets, etc.) Si vous regardez la liste des options TCP, seul "taille maximale de segment" est divisible par quatre. Ainsi, l'utilisation de toute autre option vont exiger un rembourrage.

Comment le rembourrage doit être appliqué est un peu floue. Si l'on regarde la page 26 de la RFC 1323 , nous trouvons ceci:

  ANNEXE A: SUGGESTIONS DE MISE EN ŒUVRE

    Les dispositions suivantes sont recommandées pour les options d'envoi sur la non-SYN
    segments, pour atteindre un maximum d'alignement possible du 32-bit et 64-bit
    des machines.

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

Notez le rembourrage NOP apparaît devant l'option d'horodatage, et non pas à la fin comme on pouvait s'y attendre. A noter également la RFC dit spécifiquement ce n'est pour "non-SYN segments" et qu'il est «recommandé», pas nécessaire. Semble cependant que la plupart des systèmes d'exploitation suivre cette recommandation et toujours placer un rembourrage avant la nature et les octets de longueur. J'ai vérifié sous Windows, Linux, Mac, matériels divers, etc et ils ont tous mis du rembourrage au début.

Donc nous pouvons compter sur ce qui est le "standard", pas vrai? Pas tout à fait. Page 17 de la RFC 793 décrit NOP cette façon:

  Ce code option peut être utilisée entre les options, par exemple, pour
         d'aligner le début d'une option ultérieure sur une frontière de mot.
         Il n'ya aucune garantie que les expéditeurs utilisent cette option, donc
         récepteurs doivent être prêts à traiter les options même si elles ne
         commence pas sur une frontière de mot. 

En d'autres termes, ce n'est pas juste que les NOP peut ou peut ne pas apparaître au début, NOP ne pourrait pas être utilisé à tous! Il est tout à fait légal d'aménagement du champ de l'option TCP sans rembourrage NOP et il suffit d'utiliser l'option Fin de la liste en tant que charge à la fin pour atteindre la frontière adéquate.

Alors qu'est-ce que nous nous retrouvons avec un filtre? Si nous comptons sur NOP avant que l'option nous nous retrouvons avec un filtre qui ressemble à ceci:

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

Pour briser ce ce filtre est fait:

  • Ne vérifie SYN & paquets SYN / ACK: tcp [13] & 2 = 2
  • En-tête TCP est supérieur à 20 octets (les options sont définies): tcp [12] & 240> 80
  • Vérifiez le premier octet de chaque limite de quatre octets pour le NOP: tcp [20] = 1, tcp [24 = 1, ...
  • Vérifiez les deux octets suivants pour voir si Kind = 3 et Longueur = 3: tcp [21:02] = 0 × 0303, tcp [25:2] = 0 × 0303, ...

Si toutefois nous voulons nous assurer que nous attrapons toutes les possibilités dans le cas d'un système ne donne pas suite NOP nous nous retrouvons avec:

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

La différence avec ce filtre est que nous vérifions Kind = 3 et Longueur = 3 tout le chemin à travers le champ d'options (comme Elizabeth suggéré).

Pouvez-un de ces filtres générer des faux positifs? Absolument! Deux possibilités:

  1. La valeur de timestamp peut correspondre au modèle que nous recherchons.
  2. Le filtre prend un champ 40 octets d'option. Il pourrait être inférieur à ces valeurs dans la charge utile.

Ainsi le filtre qui doit-on utiliser? La première va générer moins de faux positifs, mais manquent de systèmes qui sont conformes à la RFC, mais différent de la norme. Le second sera toujours attraper Window Scale si elle a été fixée, mais la chance d'un faux positif est plus élevé.

Je vais désigner Elisabeth comme le gagnant du défi. Quelques autres ont été tout aussi proche, mais elle était la seule à avoir le courage d'afficher son train de pensée dans les commentaires. Je vais attribuer un deuxième prix à Jeff qui est venu avec cette solution partielle plaisante:

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

Ce ne sera pas de générer une capture de paquets réels, mais vous pourriez faire un:

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

Et puis exécutez la sortie par txt2cap de le récupérer au format pcap. Il n'a pas suivi le défi spécifique, mais tu dois donner des kudos pour sortir des sentiers battus que cela résout tous les problèmes de faux positifs. ;)

Elisabeth et Jeff, je vais être à la fois vous contacter par e-mail. Félicitations!

Options TCP - indice final

19 novembre 2009

J'ai eu un poste de fil et quatre e-mails qui sont hyper proche de la bonne réponse. Voici un indice dernier nous espérons obtenir des gens au cours de la dernière haie.

J'ai mentionné la commande tshark utile. Voici le résultat:

C: \ test> tshark-n-r linux-syn.cap-T champs 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

Donc ce que vous avez ci-dessus est la section options TCP (octet 20 et supérieur) du paquet de test. L'option Window Scale est la dernière option dans la liste.

Je sais écrire ce filtre n'est pas facile. En fait, c'est pourquoi je l'ai transformé en un véritable défi. Il est cependant possible. ;)

Options TCP Challenge - indices

18 novembre 2009

Précédemment, j'ai posté un défi d'écrire un filtre tcpdump / WinDump qui serait de capturer les paquets qui ont l'option TCP "Window Scale" ensemble. Certaines personnes sont proches, mais je voulais poster quelques trucs. Aussi, je n'ai aucun problème avec vous e-mailing moi directement, mais pour gagner le défi que vous avez à poster la réponse à la section des commentaires. De cette façon, il n'est pas question de savoir qui a trouvé la réponse en premier.

Toutes les options TCP sont spécifiées par une «sorte de registre" valeur (similaire à l'ICMP champ "Type"). Dans le cas de Window Scale, cette valeur est de 3. Aussi, toutes les options TCP sauf pour NOP contenir un champ secondaire appelée "longueur". Ceci définit combien d'octets en utilisant des options est, y compris le "Kind registre" octet. Dans le cas de Window Scale la valeur de longueur est toujours 3. Nous avons donc:

  • 1 octet pour le genre de registre
  • 1 octet pour la longueur
  • 1 octet pour la valeur réelle WScale

Astuce 2: Si vous n'avez jamais foré dans le champ des options TCP, tshark dispose d'une option cool:

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

Ce sera la sortie la totalité des options TCP terrain Hex afin que vous puissiez au moins voir à quoi il ressemble.

Indice final, j'ai posté un paquet SYN Linux qui établit WScale à 5 pour vous permettre de l'utiliser pour vérifier votre filtre.

linux-syn

Bonne chance!

Chris

Options TCP Défi

18 novembre 2009

J'ai eu un peu passe notamment la publication d'un nouvel outil de référence pour l'Apple iPhone et iPod. L'outil est d'appeler Decode Packet et j'ai configurer un autre site pour aider à l'entretenir.

Je me sens mal à négliger ce site au cours des dernières semaines, j'ai donc décidé de jeter un autre défi. Le gagnant recevra un exemplaire gratuit de l'outil de décodage des paquets ci-dessus mentionnés. OK, donc vous ne serez pas en mesure de prendre sa retraite sur le produit, mais nous espérons que l'outil va vous rendre la vie un peu plus facile. ;)

Alors, voici le défi:

Ecrire un tcpdump ou WinDump filtre qui ne fera que de capturer les paquets qui ont le TCP "Window Scale" option définie. Tous les autres paramètres option TCP peut être ignoré.

Assez simple, hein? La première personne à poster la réponse dans la section commentaires obtient le prix.