Archive for Novembre, 2009

Weekend sfida

27 Novembre 2009

Ecco un'altra sfida per testare le tue abilità wienie po ':

Scrivi un filtro tcpdump o windump che catturerà tutto il traffico con un indirizzo di origine IPv6 del 2001: db8:: da 10 a 2001: db8:: 20. Abbastanza facile, giusto? Se non hai provato, la vostra intenzione di scoprire che tcpdump / windump lancia un paio di curve a voi.

Per controllare il tuo lavoro, ecco un file di cattura:

ipv6-icmp

Il file contiene un mix di indirizzi IPv6 di origine. Ovviamente il filtro deve visualizzare solo il campo di indirizzi specificato.

Il vincitore ottiene di ispirare rispetto e ammirazione in meno geek. ;)

Non so tutto, e va bene così

21 novembre 2009

Negli ultimi giorni ho incontrato una sfida per vedere chi potrebbe scrivere un tcpdump / windump filtro per catturare i pacchetti con l'opzione Finestra Scala. E 'stato un po' un rompicapo. Era uno di quei problemi che si inizia a pensare fuori è facile, ma poi capiscono è molto difficile. Quindi cominciare ad indagare se si è sulla strada giusta, perché non può essere così complesso come sembra. Mi è stato specificamente cercando di spingere la busta un po 'su questo.

Nella sfida che ha affermato che la gente dovrebbe pubblicare i loro pensieri / risposte nella sezione commenti. Solo una persona era disposto a farlo, mentre tutti gli altri mi hanno contattato via e-mail. In un primo momento ho pensato che fosse un problema di privacy, ma poi mi sono ricordato che ho lasciato agli utenti di scegliere qualsiasi alias che vogliono per un nome di schermo. La gente aveva alcune idee davvero buone, ma credo che avevano paura di venire attraverso come troppo di un "novellino" in un forum pubblico. Ho visto la stessa cosa in contesti scolastici, dove io insegno un argomento, chiedere se ci sono domande, nessuno alzerà la mano, ma alla fine della giornata ho una linea di fronte alla mia scrivania.

Ho colpito un po 'una pietra miliare quest'anno mi sono reso conto che sono stato nel settore da oltre 20 anni. Per darvi un idea di quanto tempo che è nel tempo di Internet, uno dei miei primi concerti stava aiutando a convertire un imprenditore dal governo per il "sistema host file" a questa nuova tecnologia denominata "Servizi Domain Name". Mi ricordo quando Gopher è stato il più destro capretto sul blocco. Sperimentato in prima persona come AOL la connessione a Internet notevolmente cambiato il panorama della sicurezza informatica. Ho lavorato con grandi artisti come Robert Morris Sr. e Alan Paller. Ho scambiato punta e trucchi con migliaia di menti più brillanti attraverso il SANS Institute. Ho passato di consulenza volta alla Casa Bianca, nonché una serie di altre agenzie governative.

E con tutto ciò che ha detto, io sono il primo ad ammettere che ho in alcun modo sapere tutto. In effetti, mi riconosco pienamente ho ancora molto da imparare di quanto ho già squirreled via nelle cellule grigie. Personalmente, ho ancora imbattuto in cose (come filtro per l'opzione WScale) che guardo e dico: "Come diavolo ho perso che in tutti questi anni?".

Una delle cose che il lato ossessivo di me ama circa la sicurezza della rete è che è un pozzo senza fondo. È possibile trascorrere ogni momento di veglia lettura blog / lista messaggi, scaricare gli strumenti, i test in laboratorio, e ancora non essere in grado di avvolgere il tuo cervello tutto. La sicurezza della rete è sottile e pieno di sfumature. Cervello di ognuno è cablato in modo diverso, per cui alcune di queste sfumature sono evidenti, e altri non così tanto. Uno dei fattori positivi di attaccare te là fuori è si ottiene il beneficio di chimica del cervello di altre persone. Chiaramente uno dei più grandi problemi sul lato cappello bianco del recinto è che noi non scambiare idee / prospettive abbastanza spesso. Penso che troppo spesso l'ego ci trattiene.

Ci sono persone che pensano di sapere tutto? Assolutamente. Anche in questo caso, l'ego può essere un maestro difficile. Mi viene in mente quelle vecchie t-shirt e poster che diceva: "Adolescenti: Lascia a casa, mentre si sa ancora tutto". Con la sicurezza della rete, come la maggior parte delle cose nella vita, c'è una barriera di illuminazione. Su un lato della barriera, lo stagno sembra piccolo e pensi di avere un manico su tutto. Una volta sfondare però si riconosce la vastità della galassia e quanto sia molto più avanti su questa strada si allunga ancora.

Così sto proponendo un programma di 12 passo geek e io sarò il primo a salire su un palco e ammettere "non so tutto e sto bene con quella". Parte del motivo per cui ho dato Jeff secondo posto è venuto il problema da un approccio completamente diverso e ha sviluppato una soluzione che non averci pensato. In altre parole, mettendo me stesso là fuori ho ricevuto il beneficio della sua chimica del cervello.

Come Jeff, tutti la lettura di questo attinge la propria esperienza di vita unica e sono pienamente in grado di trovare soluzioni uniche e innovative pure. Non saprete mai per certo però a meno di controllare il gremlin ego e il bastone da soli là fuori.

</ Soapbox>

Chris

Oh dove, oh dove può essere WScale?

20 Nov 2009

Se questa sfida sembrava più difficile di quanto dovrebbe essere, siete sulla strada giusta. ;)

Mi sono imbattuto in questo problema quando si scrive il mio decodifica dei pacchetti strumento. Devo dire, era un esercizio di freddo per me, come non ho mai pensato di creare filtri tcpdump e Wireshark per ogni possibile IP, TCP, UDP e ICMP campo e / o valore. Di gran lunga il campo delle opzioni TCP è il più "spezzata" da una prospettiva di decodifica dei pacchetti rispetto a qualsiasi altro campo IP.

Prima di tutto parliamo di come le opzioni TCP avrebbe dovuto essere attuata. Se si guarda al campo IPv4 opzioni, inizia con un identificatore "Tipo". Se siete interessati a una soluzione IP specifico, è solo una questione di controllare questo campo per la combinazione po 'a destra. Aveva le opzioni TCP stata implementata in questo modo, la sfida sarebbe stata piuttosto semplice.

Quasi tutte le opzioni TCP hanno un "Tipo" e un campo "Lunghezza", che sono entrambi 1 byte di dimensione. Le eccezioni sono "End of Option List" e "No-Operation", che hanno solo un campo Tipo, e quindi sono un byte di dimensione. Ecco una lista delle opzioni comuni TCP:

tcp-options

Pagina 15 di RFC 793 ci dice "L'header TCP (anche uno comprese le opzioni) è un numero intero di 32 bit." In altre parole, la dimensione in byte di intestazione TCP deve essere divisibile per quattro (20 byte, 24 byte, ecc.) Se guardate l'elenco delle opzioni TCP, solo "dimensione massima del segmento" è divisibile per quattro. Quindi l'uso di tutte le altre opzioni stanno andando a richiedere imbottitura.

Come l'imbottitura deve essere applicato è un po 'poco chiara. Se guardiamo alla pagina 26 della RFC 1323 troviamo questo:

  APPENDICE A: SUGGERIMENTI DI ATTUAZIONE

    I layout sono consigliati i seguenti per l'invio di opzioni in materia di non-SYN
    segmenti, per ottenere il massimo allineamento possibile dei 32-bit e 64-bit
    macchine.

        +--------+--------+--------+--------+
        | PON | PON | TSopt | 10 |
        +--------+--------+--------+--------+
        Timestamp TSval | |
        +--------+--------+--------+--------+
        | Timestamp TSecr |
        +--------+--------+--------+--------+ 

Nota l'imbottitura PON appare prima l'opzione timestamp, non alla fine come ci si potrebbe aspettare. Si noti inoltre l'RFC dice espressamente questo è per "non-SYN segmenti" e che è "raccomandato", non richiesto. Sembra tuttavia che la maggior parte dei sistemi operativi seguire questa raccomandazione e sempre luogo imbottitura prima del tipo byte e Lunghezza. Ho controllato Windows, Linux, Mac, hardware vari, ecc e tutti hanno messo l'imbottitura all'inizio.

Così possiamo contare su questo essere "standard", giusto? Non proprio. Pagina 17 di RFC 793 descrive NOP in questo modo:

  Questo codice opzione può essere utilizzata tra le opzioni, ad esempio, per
         allineare l'inizio di una successiva opzione su un confine di parola.
         Non c'è garanzia che il mittente utilizzerà questa opzione, in modo
         ricevitori deve essere preparato a processo opzioni, anche se lo fanno
         Non iniziare su un confine di parola. 

In altre parole, non è solo che NOP può o non può presentarsi all'inizio, NOP non potrebbe essere utilizzato a tutti! E 'del tutto legale per il layout del campo di opzione TCP senza imbottitura PON e basta usare Fine della lista di opzioni come riempitivo alla fine per raggiungere il confine corretta.

Allora cosa facciamo finire con un filtro? Se contiamo sul PON prima l'opzione di cui finisce con un filtro che assomiglia a questo:

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

Per abbattere questo filtro che sta facendo:

  • Le operazioni di controllo SYN e SYN / ACK: tcp [13] e 2 = 2
  • Header TCP è maggiore di 20 byte (le opzioni sono impostati): tcp [12] e 240> 80
  • Verificare il primo byte di ogni confine quattro byte per NOP: tcp [20] = 1, tcp [24 = 1, ...
  • Controllare i prossimi due byte per vedere se Tipo = 3 e lunghezza = 3: tcp [21:02] = 0 × 0303, tcp [25:2] = 0 × 0303, ...

Se però vogliamo fare in modo di cogliere tutte le possibilità nel caso in cui un sistema non implementa PON si finisce con:

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

La differenza con questo filtro è che stiamo verificando Tipo = 3 e lunghezza = 3 tutto il percorso attraverso il campo di opzioni (come Elisabetta suggerito).

Può uno di questi filtri generare falsi positivi? Assolutamente! Due possibilità:

  1. Il valore di Timestamp può corrispondere al modello che stiamo cercando.
  2. Il filtro si assume un 40 campo di opzione byte. Potrebbe essere meno con questi valori nel payload.

Quindi, quale filtro dovrebbe utilizzare? Il primo genererà un minor numero di falsi positivi, ma perdere i sistemi che siano conformi RFC ma diversi dalla norma. Il secondo sarà sempre prendere Scala finestra se è stato impostato, ma la probabilità di un falso positivo è più alto.

Ho intenzione di designare Elisabetta come il vincitore della sfida. Pochi altri sono stati altrettanto vicino ma era l'unico ad avere il coraggio di inviare la sua linea di pensiero nei commenti. Ho intenzione di assegnare un secondo premio a Jeff che è venuto su con questa soluzione in parte scherzando:

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

Questo non genera un reale acquisizione del pacchetto, ma si potrebbe fare:

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

E quindi eseguire l'uscita attraverso txt2cap per tornare indietro in formato pcap. Egli non ha seguito la sfida in particolare, ma hai devi dare complimenti per pensare fuori dagli schemi come questo risolve tutti i problemi di falsi positivi. ;)

Elizabeth e Jeff, sarò contattarvi sia via e-mail. Complimenti!

Opzioni TCP - indizio finale

19 novembre 2009

Ho avuto un posto filo e quattro le e-mail che sono mooooolto vicino alla risposta giusta. Ecco un ultimo indizio per arrivare si spera gente oltre l'ostacolo finale.

Ho citato il comando utile tshark. Ecco l'output:

C: \ test> tshark-n-r linux-syn.cap T-campi-e tcp.options
02:04:05: b4: 04:02:08:0 a: 2:47:04 a: a8: 00:00:00:00:01:03:03:05

Quindi quello che hai sopra è la sezione TCP opzioni (byte 20 e superiore) del pacchetto di prova. L'opzione Scala finestra è l'ultima opzione nella lista.

So che scrivendo questo filtro non è facile. Infatti è per questo che l'ho trasformato in una sfida. E 'possibile comunque. ;)

TCP Opzioni Challenge - indizi

18 Novembre 2009

In precedenza ho postato una sfida a dare una tcpdump / windump filtro che cattura i pacchetti che hanno l'opzione "Finestra Scala" TCP set. Alcune persone sono vicini, ma volevo inviare alcuni suggerimenti. Inoltre, non ho alcun problema con me via e-mail direttamente, ma per vincere la sfida è necessario inviare la risposta alla sezione dei commenti. In questo modo non ci sono dubbi su chi trova la prima risposta.

Tutte le opzioni TCP sono specificati da un "Registro di tipo" value (simile al ICMP campo "Type"). Nel caso della Scala finestra, quel valore è 3. Inoltre, tutte le opzioni TCP tranne NOP contenere un campo secondario denominato "Lunghezza". Questo definisce il numero di byte le opzioni sta usando, tra cui il "Registro di tipo" byte. Nel caso della Scala finestra il valore della lunghezza è sempre 3. Quindi abbiamo:

  • 1 byte per Tipo Registro
  • 1 byte di lunghezza
  • 1 byte per il valore effettivo WScale

Suggerimento 2: Se non avete mai forato nel campo TCP Opzioni, tshark ha un'opzione cool:

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

Questo produrrà l'intero campo delle opzioni TCP in esadecimale in modo da poter almeno vedere come appare.

Indizio finale, ho inviato un pacchetto SYN Linux che definisce WScale al 5 per voi da utilizzare per controllare il filtro.

linux-syn

Buona fortuna!

Chris

TCP Opzioni di Sfida

18 Novembre 2009

Ho avuto un po 'in corso compreso il rilascio di un nuovo strumento di riferimento per l'Apple iPhone e iPod. Lo strumento è chiamata decodifica dei pacchetti di configurazione e ho un sito alternativo per aiutare a mantenere esso.

Mi sento male a trascurare questo sito negli ultime settimane, quindi ho deciso di buttare via un'altra sfida. Il vincitore riceverà una copia gratuita dello strumento di decodifica dei pacchetti di cui sopra. OK, quindi non sarà in grado di andare in pensione sui proventi, ma si spera che lo strumento renderà la vostra vita un po 'più facile. ;)

Quindi ecco la sfida:

Scrivi una tcpdump o windump filtro che solo catturare i pacchetti che hanno il TCP "Scala finestre" set opzione. Tutte le altre impostazioni delle opzioni TCP può essere ignorato.

Abbastanza semplice, eh? Persona prima di inviare la risposta nella sezione commenti ottiene il premio.