Archive for Noviembre, 2009

Fin de semana Desafío

27 de noviembre 2009

Aquí hay otro desafío para poner a prueba sus habilidades wienie poco:

Escribir un filtro de tcpdump o Windump que capturar todo el tráfico con una dirección IPv6 de origen de 2001: db8:: 10 a 2001: db8:: 20. Muy sencillo, ¿verdad? Si no lo he probado, la va a encontrar que tcpdump / Windump arroja unas curvas de ti.

Para comprobar su trabajo, aquí hay un archivo de captura:

ipv6-icmp

El archivo contiene una mezcla de direcciones IPv6 de origen. Es evidente que el filtro sólo debe mostrar el rango de direcciones especificado.

El ganador puede inspirar temor y admiración en menor geeks. ;)

Yo no lo sé todo, y eso está bien

21 de noviembre 2009

En los últimos días me encontré con un desafío para ver quién podría escribir un tcpdump / Windump para agarrar paquetes con la opción Ventana Escala. Fue un poco de un tornado el cerebro. Era uno de esos problemas que usted comienza pensando es fácil, pero luego se dan cuenta es muy difícil. A continuación, empezar a cuestionar si está en el camino correcto, ya que no puede ser tan complejo como parece ser. Yo estaba especialmente tratando de empujar el sobre un poco en este caso.

En el reto que me dijo que la gente debe publicar sus pensamientos / respuestas en la sección de comentarios. Sólo una persona estaba dispuesta a hacerlo, mientras todo el mundo puso en contacto conmigo vía e-mail. Al principio pensé que era un problema de privacidad, pero luego recordé que permiten a los usuarios escoger cualquier alias que quieren para un nombre de pantalla. La gente tenía algunas ideas muy buenas, pero creo que tenían miedo de venir a través como demasiado de un "novato" en un foro público. He visto lo mismo en las aulas donde se enseña un tema, pregunte si existe alguna duda, nadie va a levantar la mano, pero al final del día, tengo una línea en frente de mi escritorio.

Me tocó un poco de un hito de este año en que me di cuenta de que he estado en la industria por más de 20 años. Para darle una idea de cuánto tiempo que está en tiempo de Internet, uno de mis primeros conciertos fue ayudar a convertir a un contratista del gobierno sobre el "sistema de archivo de sistema" a esta nueva tecnología llamada "Servicios de nombres de dominio". Recuerdo que cuando Gopher fue el más hábil chico en el bloque. Mano en primera persona cómo AOL para conectarse a Internet cambiado dramáticamente el panorama de la seguridad informática. He trabajado con grandes como Robert Morris Sr. Alan Paller y. He cambiado la punta y trucos con miles de las mentes más brillantes a través del Instituto SANS. Me he pasado el tiempo de consultoría a la Casa Blanca, así como un número de otras agencias gubernamentales.

Y con todo esto dicho, yo soy el primero en admitir que de ninguna manera lo saben todo. De hecho, estoy totalmente de reconocer que todavía tengo mucho que aprender de lo que ya hemos buen recaudo en las pequeñas células grises. Personalmente, me sigue funcionando a través de cosas (como el filtrado de la opción WScale) que miro y digo "¿Cómo diablos he perdido que todos estos años?".

Una de las cosas el lado obsesivo de mi ama de seguridad de la red es que es un pozo sin fondo. Puede pasar cada momento de vigilia leyendo el blog / lista de mensajes, la descarga de las herramientas, las pruebas en el laboratorio, y aún así no ser capaz de envolver su cerebro alrededor de toda ella. Seguridad de la red es sutil y lleno de matices. El cerebro de todo el mundo está conectado de manera diferente, por lo que algunos de estos matices son obvios y otros no tanto. Una de las cosas buenas se pegue a ti mismo que hay es que te dan el beneficio de la química del cerebro de otras personas. Es evidente que uno de los mayores problemas en el lado de sombrero blanco de la cerca es que no intercambian ideas / puntos de vista con la suficiente frecuencia. Creo que demasiado a menudo el ego nos detiene.

¿Hay personas que piensan que lo saben todo? Por supuesto. Una vez más, el ego puede ser un maestro difícil. Me recuerda a esas viejas camisetas y carteles que decían: "Los adolescentes: Salga de su casa mientras todavía lo saben todo". Con la seguridad de red, como la mayoría de las cosas en la vida, hay una barrera de la iluminación. A un lado de la barrera, la laguna parece pequeño y usted piensa que tiene una manija en todo. Una vez que romper sin embargo a reconocer la inmensidad de la galaxia y lo lejos que antes de que la carretera aún se extiende.

Así que estoy proponiendo un programa de 12 pasos geek y yo seré el primero en subir a una tarima y admitir "Yo no lo sé todo y estoy bien con eso". Parte de la razón por la que dio a Jeff segundo lugar se vino el problema desde un enfoque totalmente diferente y ha desarrollado una solución que no pensaba. En otras palabras, poniéndome por ahí recibí el beneficio de la química de su cerebro.

Al igual que Jeff, todos los que lean este se basa en su propia experiencia de vida única y son plenamente capaces de dar con soluciones únicas e innovadoras, así. Nunca lo sabremos con certeza sin embargo a menos que compruebe el gremlin ego y se adhieren a ti mismo ahí fuera.

</ Tarima>

Chris

Oh donde, oh donde puede ser WScale?

20 de noviembre 2009

Si este reto parecía más difícil de lo que debería ser, usted está en el camino correcto. ;)

Me encontré con este problema al escribir mi Decode paquete de herramientas. Tengo que decir que fue un ejercicio fresco para mí, pues nunca he pensado en la creación de filtros tcpdump y Wireshark para cada IP que sea posible, TCP, UDP y ICMP de campo y / o valor. Con mucho, el campo de opciones TCP es la más "roto" desde una perspectiva de decodificación de paquetes IP que cualquier otro campo.

En primer lugar vamos a hablar de cómo las opciones TCP que se han implementado. Si nos fijamos en el campo de opciones de IPv4, que comienza con un "tipo" de identificación. Si usted está interesado en una opción de IP específica, es sólo una cuestión de comprobación de este campo de la combinación de bits derecha. Tenía las opciones de TCP han implementado esta manera, este problema habría sido bastante sencillo.

Casi todas las opciones de TCP tienen una "clase" y "longitud" de campo, los cuales son 1 byte de tamaño. Las excepciones son "Fin de la lista de opciones" y "no-operación" que sólo tiene un campo de clase, y por lo tanto son un byte de tamaño. Aquí hay una lista de las opciones comunes de TCP:

tcp-options

La página 15 de RFC 793 nos dice: "La cabecera TCP (incluso un incluidas las opciones) es un número entero de 32 bits." En otras palabras, el tamaño del encabezado TCP en bytes debe ser divisible por cuatro (20 bytes, 24 bytes, etc.) Si nos fijamos en la lista de opciones TCP, sólo "el tamaño máximo de segmento" es divisible por cuatro. Por lo tanto el uso de cualquier otra opción se va a requerir de relleno.

¿Cómo el relleno se debe aplicar es un poco confuso. Si nos fijamos en la página 26 del RFC 1323, encontramos lo siguiente:

  Apéndice A: sugerencias de aplicación

    Los diseños se recomienda lo siguiente para las opciones de envío en la no-SYN
    segmentos, para lograr la máxima alineación posible de 32-bit y 64-bit
    máquinas.

        +--------+--------+--------+--------+
        | NOP ​​| NOP ​​| TSopt | 10 |
        +--------+--------+--------+--------+
        Fecha y hora TSval | |
        +--------+--------+--------+--------+
        | Timestamp TSecr |
        +--------+--------+--------+--------+ 

Tenga en cuenta el relleno NOP se presenta ante la opción de marca de tiempo, no al final como era de esperar. También tenga en cuenta el RFC específicamente dice que esto es para los "no-SYN segmentos" y que es "recomendable", no es necesario. Sin embargo, parece que la mayoría de los sistemas operativos de seguir esta recomendación y siempre con material acolchado antes de que el tipo y bytes de longitud. He comprobado Windows, Linux, Mac, de hardware, etc, y todos ponen el relleno al principio.

Así que podemos contar con este ser el "estándar", ¿verdad? No del todo. La página 17 de RFC 793 describe NOP de esta manera:

  Este código de opción puede ser utilizado entre opciones, por ejemplo, para
         alinear el comienzo de una opción posterior de un límite de palabra.
         No hay garantía de que los remitentes a utilizar esta opción, por lo que
         Los receptores deben estar preparados para procesar opciones incluso si lo hacen
         no comenzar en un límite de palabra. 

En otras palabras, no es sólo que NOP puede o no puede aparecer al principio, NOP, no puede ser utilizado en todos! Es totalmente legal a la disposición del campo de opción TCP sin relleno NOP y sólo el uso final de la lista de opciones como material de relleno al final de alcanzar el límite adecuado.

Entonces, ¿qué nos encontramos con un filtro? Si contamos con NOP antes de que la opción que terminar con un filtro que tiene este aspecto:

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

Para romper este filtro, lo que está haciendo:

  • Sólo comprobar SYN y SYN / ACK: tcp [13] y 2 = 2
  • Encabezado TCP es mayor de 20 bytes (las opciones se establecen): tcp [12] y 240> 80
  • Compruebe que el primer byte de cada límite de cuatro bytes para NOP: tcp [20] = 1, tcp [24 = 1, ...
  • Compruebe los dos bytes siguientes para ver si Tipo = 3 y Longitud = 3: tcp [21:02] = 0 × 0303, tcp [25:2] = 0 × 0303, ...

Sin embargo, si queremos asegurarnos de que tenemos todas las posibilidades de captura en caso de que un sistema no implementa NOP nos encontramos con:

tcp [13] y 2 = 2 y tcp [12] y 240> 80 y (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 diferencia con este filtro es que estamos revisando Tipo = 3 y Longitud = 3 hasta el final a través del campo de opciones (como Elizabeth sugerido).

¿Puede alguno de estos filtros de generar falsos positivos? ¡Por supuesto! Dos posibilidades:

  1. El valor de marca de tiempo coincida con el patrón que estamos buscando.
  2. El filtro supone un campo de 40 bytes opción. Podría ser menos con estos valores en la carga útil.

Entonces, ¿qué filtro debe usar? El primero va a generar menos falsos positivos, pero se pierda los sistemas que son compatibles con RFC, pero diferente de la norma. El segundo, siempre se encontrará la escala de ventana si se ha establecido, pero la posibilidad de un falso positivo es mayor.

Voy a designar a Isabel como el ganador del desafío. Algunos otros estaban tan cerca, pero ella era la única que tiene las agallas para publicar su línea de pensamiento en los comentarios. Voy a conceder un segundo premio a Jeff quien se le ocurrió esta solución parcial bromeando:

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

Esto no va a generar una captura de paquetes reales, pero se puede hacer a:

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

Y luego ejecutar a traves de txt2cap para volver al formato pcap. Él no siguió específicamente el reto, pero tienes que dar felicitaciones por pensar fuera de la caja, ya que soluciona todos los problemas de falsos positivos. ;)

Elizabeth y Jeff, voy a estar en contacto con usted, tanto a través de e-mail. ¡Felicidades!

Opciones TCP - pista final

19 de noviembre 2009

He tenido un puesto de hilo y cuatro correos electrónicos que se soooooo cerca de la respuesta correcta. Aquí hay una última pista para llegar con suerte la gente sobre el último obstáculo.

He mencionado el comando tshark útil. Aquí está la salida:

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

Así que lo que tienen encima es la sección de Opciones TCP (20 bytes y superior) del paquete de prueba. La opción de escala de la ventana es la última opción en la lista.

Sé escribir este filtro no es fácil. De hecho, es por eso que se convirtió en un reto. Sin embargo es posible. ;)

Opciones TCP Challenge - pistas

18 de noviembre 2009

Anteriormente he publicado un reto de escribir un filtro de tcpdump / Windump que capturar los paquetes que tienen la opción TCP "ventana de escala" set. Algunas personas están muy cerca, pero yo quería escribir unas cuantas pistas. Además, no tengo ningún problema con que me envío por correo electrónico directamente, sino para ganar el reto que tiene que poner la respuesta a la sección de comentarios. De esa manera no hay duda en cuanto a que encontró la primera respuesta.

Todas las opciones de TCP son especificados por un "tipo de registro" de valores (similar a la ICMP campo "Type"). En el caso de la Escala de ventana, que el valor es de 3. Además, todas las opciones excepto TCP NOP contiene un campo secundario llamado "Largo". Esto define la cantidad de bytes de las opciones es el uso, incluyendo el "Tipo de registro" byte. En el caso de la Escala de ventana el valor de longitud es siempre 3. Así, tenemos:

  • 1 byte para el tipo de registro
  • 1 byte para la longitud
  • 1 byte por el valor real WScale

Consejo 2: Si usted nunca ha perforado en el campo de Opciones TCP, tshark tiene una opción fresca:

tshark-n-r captura-file.cap-T campos-e tcp.options

Esta es la salida de todo el campo de opciones TCP en hexadecimal para que pueda ver por lo menos lo que parece.

Pista final, he publicado un paquete SYN Linux que establece WScale a 5 para que usted pueda utilizar para comprobar el filtro.

linux-syn

¡Buena suerte!

Chris

Opciones TCP Desafío

18 de noviembre 2009

He tenido un poco pasando incluso el lanzamiento de una nueva herramienta de referencia para el iPhone y el iPod. La herramienta se llama decodificación de paquetes y he configuración de un sitio alternativo para ayudar a mantenerlo.

Me siento mal en desatender este sitio durante las últimas semanas, así que he decidido tirar otro desafío. El ganador recibirá una copia gratis del paquete de herramientas de decodificación antes mencionados. Aceptar, por lo que no será capaz de retirarse en el producto, pero espero que la herramienta le hará la vida un poco más fácil. ;)

Así que aquí está el reto:

Escriba un tcpdump o filtro Windump que sólo capturar los paquetes TCP que tienen el "Scale Window" conjunto de opciones. Todos los demás parámetros TCP opción puede ser ignorada.

Bastante simple, ¿eh? Primera persona en publicar la respuesta en la sección de comentarios se lleva el premio.