martes, 31 de enero de 2012

Fuzzing, Descripcion y Conceptos basicos

  1.       Que es?
       Se llama fuzzing a las diferentes técnicas de testeo de software capaces
de generar y enviar datos secuenciales o aleatorios a una o varias áreas o
puntos de una aplicación, con el objeto de detectar defectos o vulnerabilidades  existentes en el software auditado. Es utilizado como complemento a las practicas habituales de chequeo de software, ya que proporcionan cobertura  a fallos de datos y regiones de código no testados, gracias a la combinación  del poder de la aleatoriedad y ataques heurísticos entre otros.
        El fuzzing es usado por compañías de software y proyectos opensource
para mejorar la calidad del software, por investigadores de seguridad para
descubrir y publicar vulnerabilidades, por auditores informáticos para analizar sistemas, y, en ultima instancia, por delincuentes para encontrar agujeros  en sistemas y explotarlos de forma secreta.
       Como se ha comentado, las herramientas semiautomáticas que utilizan
esta técnica se llaman fuzzers. Son semiautomáticas porque pese a ser un
proceso automatizado de envío de datos, se necesita de una persona que
analice los resultados y verifique las posibles vulnerabilidades encontradas.
En general, la mayoría de los fuzzers intentan encontrar vulnerabilidades del tipo buffer overflow, integer overflow, format string o condiciones de
carrera, aunque también pueden abarcar otros tipos de errores, como inyecciones sql, por ejemplo.
        El funcionamiento de los fuzzers suele componerse de las siguientes etapas:
Obtención de datos: dependiendo del tipo de fuzzing deseado y según
la implementación de la herramienta, se obtendrán los datos a enviar de  una lista estática almacenada en archivos o en el propio código fuente, o
se generar´a en el mismo momento según las configuraciones efectuadas.
Este proceso se puede realizar únicamente al inicio de la sesión o justo
antes de cada envío.
Envio de datos: una vez se dispone de la información que se desea
enviar a la aplicación objetivo, se realizara el proceso, dependiendo, por
ejemplo, de si se hace a través de una red informática o de si se quiere
realizar únicamente un chequeo local.
Análisis: después de realizado el envío, solo quedaría esperar los resultados del fuzzing. Si no se espera ninguna respuesta por parte del
objetivo, se deberá estar alerta por si se produce un comportamiento
inesperado. Si, en cambio, se recibe una respuesta, entonces en este
momento se comprobaría si esta indica un comportamiento normal o si,
por el contrario, el ataque ha tenido éxito y la aplicación ha quedado
inestable.

2.        Herramientas:

Algunas:

  1. SPIKE - Una colección de muchos fuzzers de Inmunidad. Usado para encontrar el reciente remoto RDP kernel DoS against a firewalled XP SP2, y muchos otros.
  2. PROTOS WAP - Un fuzzer del proyecto PROTOS para fuzzing WAP
  3. PROTOS HTTP-reply - Otro fuzzer de los tipos PROTOS para ataque/ respuestas de HTTP, útiles para broswer vulns.
  4. PROTOS LDAP - Para fuzzing LDAP, no tan acertado como los demás del proyecto PROTOS
  5. PROTOS SNMP - Clasico SNMP fuzzer, encontrando una vuln en casi cada engranaje conectado a una red disponible en el tiempo (2002).
  6. PROTOS SIP - Para fuzzing a todos aquellos nuevos dispositivos de VOIP SIP que usted ve por todas partes.
  7. PROTOS ISAKMP - Para atacar implementaciones IPSec.
  8. RIOT & faultmon - Para atacar protocolos de texto simples (Telnet, HTTP, SMTP). Usado por Riley Hassell cuando él trabajó en eEye para descubrir el IIS .printer overflow e incluido en The Shellcoder’s Handbook.
  9. SPIKE Proxy - Un semi-funcional web fuzzer del Inmunidad que trajo el original SPIKE
  10. Tag Brute Forcer - Fuzzer imponente de Drew Copley de eEye para atacar ActiveX en uso. Usado para encontrar un manojo de bugs en IE, incluyendo unos realmente poderosos para alcanzar heap overflows.
  11. FileFuzz - Un formato de archivo fuzzer para PE (windows) binarios de iDefense. Tiene bonito GUI. Recientemente usado para encontrar bugs en Word.
  12. SPIKEFile - Un formato de archivo fuzzer para ataque ELF (Linux) binarios de iDefense. Basado en SPIKE
  13. notSPIKFile - Un ELF fuzzer estrechamente relacionado con FileFuzz, en vez de usar SPIKE como un punto de partida.
  14. Screaming Cobra -El nombre hace al fuzzer parecer mejor de lo que realmente es, pero está bien para encontrar bugs CGI. También,es un perl script fácil de modificar o extenderse.
  15. WebFuzzer -Un fuzzer para (adivina qué?) web app vulns.
  16. eFuzz - Un fuzzer para el protocolo generico TCP/IP. Fácil de usar, pero tal vez no tan destacado como otros de esta lista.
  17. Peach Fuzzer - Gran fuzzer escrito por Michael Eddington. Este Fuzzer es más un marco para construir otros fuzzers.
  18. Fuzz - El ORIGINAL fuzzer desarrollado por Dr. Barton Miller que fue el Alma Matter, de la University of Wisconsin-Madison en 1990.
  19. Fuzzball2 un pequeño fuzzer para TCP e IP. Esto envía un manojo de paquetes más o menos falsos a la host de su eleccion.
  20. Fuzzer version 1.1 es una herramienta para fuzzing de multiple protocolo escrita en python.Esto puede ser usado encontrar SQL injection, format string, buffer overflow, directory traversal, y otras vulnerabilidades.
  21. Scratch es un destructor de protocolo avanzado (”fuzzer”) que rutinariamente puede encontrar una amplia variedad de vulnerabilidades de un paquete simple. El programa hace el análisis de complejos archivos binarios. También viene con un marco para protocolos fuzzing binarios como SSL Y SMB.

Fuente: http://www.infosecinstitute.com/blog/2005/12/fuzzers-ultimate-list.html

No hay comentarios:

Publicar un comentario