Facilidad de Automatización para Fuzzing

La automatización para el proceso de pruebas puede ser muy simple o muy duro, dependiendo esto de la aplicación a evaluar. Algunas aplicaciones proporcionan diversos mecanismos, como funciones API exportadas, y capacidades de “scripting”, lo cual facilita la automatización. En casos donde tales capacidades no están disponibles, es posible utilizar herramientas dedicadas y especializadas en automatización de software. En diferentes escenarios, las herramientas específicas para automatización pueden simplificar el proceso de “Fuzzing”, haciéndolo más fácil de realizar. Antes de seleccionar o utilizar las herramientas, se debe tener una lista de requerimientos para la automatización del software de destino. Las referencias cruzadas de la lista de requerimientos con la funcionalidad ofrecida por cada solución, debe proporcionar la mejor herramientas para el trabajo.

A continuación algunas consideraciones para elegir un software de automatización.

  • Precio y licencias. En escenarios de “Fuzzing” distribuidos, una única licencia de software de computadora, puede no ser suficiente para implementar el software en una granja de Fuzzing compuesta de muchas computadoras o máquinas virtuales. Diferentes soluciones utilizan diferentes precios y esquemas de licenciamiento, por lo cual si el presupuesto es preponderante, este debe ser el primer filtro.
  • Lenguaje de automatización. Algunas herramientas para automatización utilizan lenguajes de “script” conocidos como LUA o Phyton, mientras otros usan lenguajes propietarios o archivos de configuración personalizados. Dependiendo del lenguaje, el tiempo para implementar y desarrollar un script para automatización puede variar bastante, así seleccionar un lenguaje familiar o estilo de configuración, puede ayudar a acelerar el proceso. Sin embargo, los idiomas personalizados no deben ser ignorados fácilmente, pues el tiempo en aprender un nuevo lenguaje puede ser beneficioso a largo plazo, siempre y cuando se requiera menos tiempo de desarrollo y ofrezca más flexibilidad. Una regla de otro es preferir soluciones requiriendo menos codificación.
  • Velocidad. Este requisito puede algunas veces ser pasado por alto cuando se compara el software para automatización, porque todos pueden parecer instantáneos. Dependiendo de la escala del “Fuzzig”, la velocidad de automatización puede poseer un problema significativo para lograr un alto número de pruebas realizadas. Realizar la ejecución de pruebas sobre candidatos de automatización en miles de muestras, y comparar su velocidad de ejecución puede ayudar a seleccionar la mejor.

Algunas soluciones populares para automatización son las siguientes:

  • Selenium. Un framework de automatización para el navegador, el cual puede ser utilizado para probar aplicaciones web, como también navegadores. Soporta dos tipos de automatización. Selenium IDE y Selenium WebDriver
  • AutoIt. Este software popular soporta la escritura de scripts para automatización para los sistemas operativos Windows, en un lenguaje de scripting similar al BASIC. La simplicidad de este lenguaje de scripting, acompañado de muchos recursos y documentación de su uso, lo hace un candidato muy popular. Este software podría ser una buena elección para cualquier tipo de automatización en Windows.
  • Expect. Un programa el cual es capaz de comunicarse con otros programa interactivos, y automatizar la interacción en Linux. El lenguaje de configuración Expect soporta TCL, pero también algunos comandos específicos de Expect. También la librería “libexpect” expone la funcionalidad de Expect hacia C/C++

Fuentes:

https://www.seleniumhq.org/
https://www.seleniumhq.org/projects/ide/
https://www.seleniumhq.org/projects/webdriver/
https://www.autoitscript.com/site/
https://linux.die.net/man/1/expect

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1