miércoles, 10 de enero de 2018

Crawling y Fuzzing

Crawling

El “crawling” también conocido como “spidering” es una técnica que se utiliza en las fases de una auditoria web cuando se realiza el análisis de información, esta técnica puede construir un mapa del sitio web descargando información de forma masiva para posteriormente indexar el contenido de un conjunto de páginas web no estructuradas, se puede decir que se “araña” el sitio web objetivo.

A medida que el “crawler” visita URL, identifica todos los hipervínculos en la página y los agrega a la lista de URL para visitar. Cuando el “crawler” está archivando sitios web, copia y guarda la información a medida que avanza. El archivo se conoce como “repositorio” y está diseñado para almacenar y administrar la colección de páginas web. Un repositorio es similar a una base de datos.


Para la ejecución de esta técnica se mencionan algunas herramientas como:
Black widow
Website Ripper Copier
Burp Suite
DirBuster
WFuzz

Fuentes de información:

Imagenes:
123rf

Fuzzing

Son técnicas capaces de generar y enviar datos secuenciales o aleatorios a una o varias áreas o puntos de una aplicación con la que es posible evaluarlas en búsqueda de vulnerabilidades, como por ejemplo, aquellas que utilizan la red para conectarse con otros módulos y que pueden ser explotables de forma remota.
Estas técnicas 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.

Las pruebas semiautomáticas o automáticas que utilizan estas técnicas se llaman fuzzers. 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 abarcan otros tipos de errores, como inyecciones sql.

El funcionamiento de los fuzzers suele realizarse en las siguientes etapas:
  • Obtención de datos: se obtendrán los datos a enviar de una lista estática almacenada en archivos o en el propio código fuente, o se generara 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.
  • Envío de datos: una vez se dispone de la información que se desea enviar a la aplicación objetivo, se realizará el proceso eligiendo los mecanismos de entradas que pueden ser a través de un archivo y, en otros casos, las entradas pueden ser a través de la interacción del usuario.
  • Análisis: después de realizado el envío, solo quedará esperar los resultados del fuzzing. Su función principal es la búsqueda de errores  y en el impacto que estos pueden tener sobre el propio sistema de prueba. A partir de los errores es posible determinar cuál de esos errores son críticos y pueden ser explotados.

Técnicas de Fuzzing

Mutación: consiste en partir de una entrada válida y realizar ciertas mutaciones de esos datos, con la intención de que sigan siendo válidas para la aplicación pero lo suficientemente inesperadas para lograr el objetivo


Generación: se deben crear los datos antes de enviarlos, pudiendo descubrir fallos que el otro método obviaba. Normalmente, los datos obtenidos también se sustituirán en una entrada válida del objetivo. Dependiendo de la forma de generar los datos se encuentran otros dos subgrupos:
  • Los recursivos, que se obtienen de la iteración sobre un alfabeto dado o de la repetición de un mismo carácter, como son:

    Permutación: teniendo en cuenta, por ejemplo, el alfabeto hexadecimal “0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F” y buscando datos de seis caracteres  para sustituir de la forma siguiente:
    Repetición: se usa generalmente para la búsqueda de fallos del tipo buffer overflow. Se suele usar un incremento en cada repetición para no alargar el proceso inútilmente

  • El otro subgrupo es el que hace uso de la sustitución, que se centrará en reemplazar cierta parte de una entrada válida por los elementos de un vector de fuzzing. Algunos casos son:

    Integer overflow: ocurre cuando un programa recibe en una entrada un número que está fuera del rango que es capaz de manejar: un cero, un número negativo, un número mayor o menor que el rango actual, o uno con diferente tipo numérico (decimal en vez de entero). Este agujero puede derivar en un ataque de buffer overflow

    Format string: este tipo de ataques se producen cuando se introducen ciertos elementos para proporcionar formato a las cadenas de texto y no existe un mínimo control de seguridad. De esta forma, se puede conseguir una denegación de servicio o incluso la ejecución de código arbitrario en el sistema.
Herramientas para la ejecución de fuzzing :
PowerFuzzer
JBroFuzz
WebScarabat
Wapiti
Socket Fuzzer


Fuentes de Información:

No hay comentarios.:

Publicar un comentario