17 noviembre 2011

Uso de Burp Intruder para ataques de diccionario y fuerza bruta


Existen múltiples herramientas para ejecutar ataques de fuerza bruta contra aplicaciones web. Vamos a ver una forma de realizar esta operativa con una bastante potente, Burp Intruder, incluida en BurpSuite. Con ella se pueden automatizar varios procesos, como el de obtención de credenciales de acceso de una aplicación, búsqueda de valores aceptados en los parámetros de una petición (vayan por GET o por POST), ataques de inyección de código, descubrimiento de directorios... vamos, en general, un completo fuzzer para web. Para mostrar su uso, la explicación se centrará en hacer un ataque de diccionario, utilizando como víctima el panel de identificación de DVWA. 

Para empezar, se debe activar el Burp Proxy, también incluido en la suite, así como preparar el navegador para ir a través del proxy. Una vez se tenga seleccionada la petición que contiene los parámetros, bien por intercepción (intercept) o desde el histórico (history), habrá que pulsar el botón derecho y pinchar en “send to intruder”, cuya pestaña se pondrá en color rojo.

Menú contextual que aparece al hacer clic con el botón
derecho en la petición que contiene los parámetros

Situándose en la pestaña intruder, se observan debajo 4 nuevas pestañas, que son las que se deberán personalizar para cada tipo de ataque. Generalmente, no es necesario modificar nada en la pestaña target en el que viene especificado el objetivo. En positions, habrá que indicar dos aspectos: el tipo de ataque que se desea realizar y sobre qué parámetros se aplicará.


Los parámetros se eligen con los botones de la parte derecha (add, clear, auto y refresh). Por defecto suelen marcarse algunos. Lo mejor es hacer click en clear e ir seleccionando uno a uno los que interesen cada vez.

Los tipos de ataque (attack type) posibles son:
  • Sniper
  • Battering ram
  • Pitchfork
  • Cluster bomb
Sniper: En este tipo de ataque, se fijarán todos los parámetros excepto uno, en el que se probarán todas las opciones posibles del payload seleccionado. Una vez finalizado para ese parámetro, tomará el valor que recibió en la petición original e irá variando el siguiente parámetro. Así hasta haber completado el proceso para todos los parámetros seleccionados.

En position se indica el parámetro sobre el que se está aplicando el payload.
En este ejemplo, el parámetro 1 es username y el 2 password.

Battering ram: Permite la carga de un único payload por lo que, si hay más de un parámetro, se utilizarán los mismos datos en todas las posiciones simultáneamente.

Ejemplo de uso del mismo payload en ambos parámetros.

Pitchfork: Se prueba cada entrada del payload con su correspondiente en orden del resto de bloques de datos, es decir, el primer elemento del payload de la primera posición con el primer elemento del de la segunda posición marcada, el segundo con el segundo, y así sucesivamente.


Cluster bomb: En este caso, teniendo varias posiciones en las que automatizar el proceso, el ataque se realizará de manera que se prueben todos los valores de un parámetro contra todas las posibles combinaciones de valores del resto.


Como se puede intuir, en caso de tener una sola posición que automatizar, dará lo mismo el tipo de ataque seleccionado, ya que en todos los casos se permitirá elegir un solo payload con el que ejecutar el ataque.

La selección del payload dependerá del tipo de dato que se quiera utilizar. Las opciones que ofrece Intruder son amplias: desde la carga de diccionarios, hasta la selección de caracteres para efectuar una fuerza bruta clásica, pasando por fechas o generador en base a una cadena dada. Además, pueden realizarse operaciones sobre los datos seleccionados, como codificación en Base64 o aplicación de funciones hash.

Desde "payload set" se selecciona el tipo de dato que se utilizará como entrada, dinámico o diccionario.
En "payload processing rules" se puede seleccionar la operación a realizar sobre el tipo de dato.
Normalmente, se sabrá que el ataque ha tenido éxito por alguno de los siguientes aspectos:
  1. La respuesta del servidor (status): el servidor devuelve distintos códigos en función de tener éxito o no tenerlo.
  2. La longitud de la respuesta cuando el status no varía (length): Los casos de éxito tienen un longitud de respuesta diferente al resto.
  3. Otros factores.
En este ejemplo, aplica el tercer caso, ya que hasta que no se envía la petición que se había interceptado con el proxy (una vez ya finalizado el ataque), no se muestra el contenido de las respuestas, teniendo que retornar a la ventana del ataque, para ver qué posición ocupa la petición exitosa, algo incómodo, todo sea dicho de paso.


Pero lo normal es que salga algo similar a esto donde tanto la respuesta del servidor como la longitud varían respecto al resto de opciones:


BurpSuite ofrece dos versiones, una gratuita y otra de pago. Las diferencias entre ellas las podéis ver en la página oficial: http://portswigger.net/burp/download.html, pero os avanzo que para el intruder la diferencia radica en la velocidad de ejecución del ataque, ralentizado para la versión free.

---------------------------
Contribución por Beatriz Portela

18 comments :

Anonimo dijo...

En las ultimas versiones la velocidad del intruder es mas que decente

---|O|--- dijo...

"Sniper: En este tipo de ataque, se fijarán todos los parámetros excepto uno". Creo que puedes seleccionar todos los parámetros que quieras, luego Burp irá probándolos secuencialmente. De hecho es (número de payloads añadidos) * (número de parámetros seleccionados) = número de peticiones que va hacer Burp. 

Beatriz Portela dijo...

Igual no me he 

Yasabesquiensoy dijo...

Beatriz se nota que tuviestes un buen profesor....
A pesar de no merecerlo.

Poisinglaura dijo...

no es lo mismo que lo que dice la guia online de burpsuita?

Beatriz Portela dijo...

Por suerte, he tenido y tengo la oportunidad de aprender de muchas personas. Pero lo que más ayuda a aprender es probar las cosas por una misma, es como mejor se afianzan conocimientos. En cualquier caso, gracias por tu aportación, anónimo.

Beatriz Portela dijo...

Si la pregunta es que si he hecho una mera traducción, la respuesta es no. Aquí sólo se presentan unas breves y concisas indicaciones, a partir de mi propia experiencia con la herramienta, para poder usarlo al momento sin tener que andar buscando y leyendo extensas guías. Además, en castellano, que no he visto demasiado al respecto. 
Si alguien quiere profundizar, http://portswigger.net/burp/help/intruder.html. Gracias. 

Alejandro Ramos dijo...

Enhorabuena por este primer post, está genial.

Fon dijo...

Me ha parecido útil, no conocía este programa, gracias!

Anonimo dijo...

esto no lo hace el hydra en forma mas eficiente?

Beatriz Portela dijo...

Ahora si que escribe el que tú sabes, toma aprende algo de verdad, no contar mentiras y dar puñaladas... ahh el dia que sepas hacer esas cosas y pedir perdon te ira mejor en la vida.

http://www.upyd.es/Uploads/Anonymous/elcaudillo.jpg

Beaportela dijo...

Creo que te equivocastes, ahora soy yo de verdad:

http://www.upyd.es/Uploads/Anonymous/elcaudillo.jpg

La vida da muchas vueltas...

Y te equivocastes.

Poisinglaura dijo...

En primer lugar disculpa por la manera en que he escrito antes,
un poco desconsiderada por mi parte.

Sobre la guía de burpsuite intruder:


La guía entera del aplicativo no son ni 30 caras;
con esto quiero decir que no es una guía especialmente complicada...
(inglés básico si quieres llegar a alguna parte en informática o lo que sea)
..no seaís vagos.

De todas maneras para la gente que quiera respuestas rápidas agradecerán
efusivamente estas aportaciones. No dejes de hacer este tipo de guías,
ya que efectivamente, sirven de ayuda.

Sin más me despido no sin antes recomendar a la gente que le interese de verdad
burpsuite, que se empoye de p a pa la guía y se inche a ver tutoriales.
Es una herramienta muy versátil y potente y no es nada difícil de utilizar una
vez que se empoya. Pero claro, hace falta un poco de interés.

Un saludo y gracias.

Poisinglaura dijo...

....Aunque la guía es muy mediocre XD

Bocachanclauqedices dijo...

como dice "anonimo" hydra lo hace más finamente y la guía la verdad es un poco chapucera

Alejandro Ramos dijo...

¿De verdad os poneis todos los coleguillas de acuerdo para comentaros unos a otros?

Anonymous dijo...

Bien visto, Alex.

¿a que juegan?

José Fernando Buitrago Arboled dijo...

Buen tutorial.

Aunque en la web oficial dice que la opcion intruder en la version free es como un demo. Dice algo como esto: "Time-throttled demo". ¿Alguien sabe mas a detalle a que se refiere?