2009-12-16 13 views
7

¿Cómo hago para ejecutar una estrategia de fuzzing para enfatizar una pila de red, específicamente en la tercera y cuarta capa (red y transporte)? He analizado frameworks para generar fuzzers, como SPIKE, pero me parece que están principalmente enfocados en la capa de aplicación y más arriba. ¿Hay alguna técnica conocida para difuminar protocolos bien conocidos en estas capas, por ejemplo, TCP?Red o capa de transporte Fuzzing

Gracias.

Respuesta

8

Mire Scapy. Le permite difuminarse en la red y transportar capas. La función fuzz difuminará todo lo que no especificó explícitamente en las capas IP o TCP (puede aplicarlo por separado a cada una). Esto le proporciona una gama de capacidades que van desde la generación aleatoria de direcciones IP y pares de puertos hasta la creación y el envío de paquetes sin sentido.

Es posible que también desee consultar Fragroute. Esto hará que TCP/IP se transforme en todo tipo de técnicas de evasión, pero podría revelar fallas/vulnerabilidades ocultas en su pila de red.

Además, si su organización no se opone, puede configurar un nodo de salida Tor y capturar el tráfico desde él. Lo encontré útil para probar el seguimiento correcto del estado de la conexión TCP. Aunque el final de las conexiones es bien conocido e inmutable, existe una gran variedad de servidores y problemas de congestión de red. Básicamente es una fuente inagotable de tráfico. Asegúrese de verificar con sus superiores ya que su organización puede oponerse a ser una fuente potencial de tráfico malicioso (a pesar de que existe un fuerte precedente de no responsabilidad). He solucionado ese problema al ejecutarlo/capturarlo en casa, y luego llevar las pcaps.

3

Si desea confundir el IP, UDP o TCP enrute sus paquetes desde sus servicios de alto nivel a través de un bucle invertido a un proceso que los lea, los fuzzes y los reenvíe. Necesita un controlador que le permita hablar con sockets sin procesar y necesita leer/aprender qué dicen los RFC aplicables para esos protocolos.

Hay una manera fácil de hacerlo. Tal como lo recomienda Justdelegard, Scapy es probablemente lo mejor para usar, en general.

Eche un vistazo a Releasing ICMPv4/IP fuzzer prototype de Laurent Gaffié. Su código Python, que incidentalmente ha vuelto a publicar en la moda more readable en pastebin.com, importa desde scapy y utiliza algunos métodos que define para hacer un par de tipos de fuzzing. Los paquetes IP e ICMP se manejan en su código de muestra. Entonces, esto suena exactamente como lo que estás buscando.

En este momento, parece haber muchas compañías que usan Tcl/Expect to do custom automated testing de redes. SIP, H.323, capa 2 & 3 protocolos, etc.

Así que si Scapy no satisface sus necesidades, es posible que pueda hacer o encontrar algo escrito en Tcl usando Esperar para hacer el trabajo. O bien, puede hacer algunas cosas en Python, usando Scapy y otras cosas en Tcl, usando Esperar.

Tcl se ha utilizado durante mucho tiempo para pruebas de red y aplicaciones de gestión. Había un libro sobre cómo usar Tcl para hacer gestión de red basada en SNMP en la década de 1990.

La sintaxis de Tcl es decididamente extraña, pero las bibliotecas son muy potentes. Viene con una capacidad similar a la del marco para definir el comportamiento del comportamiento de la red personalizada sobre los sockets, similar a lo que se puede hacer con las bibliotecas estándar para el lenguaje de programación Python.

A diferencia de Python y otros lenguajes de scripting, existe una herramienta extremadamente poderosa para programas Tcl llamada Expect (ver expect man page).

Esperar tiene una capacidad práctica. Puede auto generar un script de prueba Tcl. La secuencia de comandos generada realiza llamadas a las funciones Esperar. Al hacer esta grabación, funciona como un hombre pasivo en el medio, grabando ambos lados de la conversación. Tipo de forma de grabar macros mientras realiza alguna edición en MS Word o en Emacs.

A continuación, puede editar el script Expect generado automáticamente para ajustarlo, hacer que se comporte de manera diferente o crear múltiples variaciones del mismo. Es muy útil para crear pruebas de regresión. Debería poder utilizar esto para comenzar a escribir pruebas de protocolo de capa superior, en caso de que lo necesite. Beats comenzando desde cero.

Creo que puede usar Tcl/Expect para probar aplicaciones TCP estándar (FTP, HTTP, SMTP, etc.) que utilizan comandos basados ​​en cadenas. Funciona bien para probar aplicaciones basadas en caracteres como TELNET que leen entrada desde stdin y generan salida a stdout también.

Cuestiones relacionadas