jueves, agosto 14, 2008

Marathon Tool

La técnica de Time-Based Blind SQL Injection using Heavy Queries necesitaba una POC, así que había que realizar una herramienta que sacara partido de esto. Yo tenía más o menos escrito como quería hacerlo cuando Dani Kachakil me dijo algo como: "Ey, ¿puedo ir haciendo algo por ahí?".

De ahí surgió Marathon Tool, una herramienta que extrae datos de bases de datos a través de vulnerabilidades Blind SQL Injection explotadas en base a tiempos, es decir, si la respuesta es larga es Verdad y si la respuesta es corta es Falso, pero utilizando consultas pesadas. En las siguientes diapositivas, utilizadas en la Defcon, está un resumen de todo esto.

La herramienta está en versión alpha aun, pero es funcional en varios entornos y útil para explotar casi todas las situaciones.
Ahora mismo está preparada para MS SQL Server, Oracle, MySQL, MS Access 97/2000 y MS Access 2003/2007. Como se puede ver en la siguiente imagen, se configura de forma muy similar a Absinthe, es decir, primero la URL, luego los parámetros y se selecciona que parámetro es injectable. Las opciones permiten configurar cookies, sistemas de autenticación y un servidor proxy.

Configuración Injección

Como el método de extracción de datos basado en tiempos es bastante lento, la herramienta permite configurar varios parámetros para conseguir mejores rendimientos, así, primero se define que diferencia en tiemnpo debe haber entre una consulta Falsa y una consulta Verdadera. Esto le hará a la aplicación ir añadiendo copias de la tabla seleccionada a la consulta pesada para generar un mayor retardo en consultas TRUE. El resto de los parámetros son bastante sencillos de entender ya que son las pausas entre consultas, la pausa después de ejecutarse una consulta pesada (un valor TRUE), el número de tablas a probar, el time-out, etc...Como se puede ver, por defecto, cuando se selecciona un motor de bases de datos se utilizan unas tablas para intentar generar consultas pesadas, pero es editable y se puede utilizar cualquier tabla conocida o adivinada.

Parámetros de ajuste

Después de configurar el entorno, se inicializa la aplicación y se puede extraer el usuario o la extructura de la base de datos.

Extracción de datos

En caso de ser seleccionado un motor de base de datos MS Access, al no disponer en este de un diccionario de datos, se debe especificar la tabla y la columna de la que se quieren extraer valores.

La herramienta cuenta con un sistema de logs muy cómodo que permite distintos nivels de detalle. Si se selecciona el nivel 90 se verá, por ejemplo, un resumen de lo que la aplicación está realizando, y si se selecciona el nivel 100 se verán todas y cada una de las peticions al servidor web que se están realizando.

Sistema de Logs

La herramienta la está controlando ahora el bueno de Alekusu y está publicada, junto con el código fuente, en Codeplex. Está desarrollada en .NET utilizando Visual Basic.

A día de hoy está en versión alpha, funciona, pero no hemos podido realizar todas las pruebas necesarias, asi que, cualquier sugerencia, duda, o error que encontréis será bien recibido para poder mejorarla poco a poco. Descárgala de esta URL: Marathon Tool

Saludos Malignos!

8 comentarios:

  1. Además de la herramienta (que es genial), la presentación estuvo fabulosa.

    Felicitaciones Chema.

    Saludos desde Arg.

    ResponderEliminar
  2. En dos palabras...¡im presionante!
    :)

    ResponderEliminar
  3. esto hoy está un poco paradete...todos en la playa?

    @maligno,
    hay algún motivo especial para haberlo hecho en vb.net y distribuir el código libremente?

    por qué no se ha hecho en c++.net compilando en nativo?

    oye, 90 descargas en una semana esta muy bien!

    ResponderEliminar
  4. @mikelats: Supongo que básicamente es porque la hice yo... y VB.net es el lenguaje con el que me siento más cómodo (C++ es de los lenguajes que menos me gustan) ;-)

    Gracias por los comentarios sobre la herramienta por la parte que me toca. Por cierto, es la primera vez que regalo un código fuente (y creo que volveré a hacerlo por lo menos una vez más)

    Saludos!

    ResponderEliminar
  5. @dani,
    A mi también me gusta ver al viejo BASIC rejuvenecido y con total vigencia. Ojalá el C# no se lo coma como ha pasado con Delphi y Pascal o FoxPro y .NET.

    @spectra,
    Estaría muy bien para proyectos que requieran de gran rendimiento o proyectos privativos que se pudiera compilar en código nativo windows o de cualquier otro S.O.

    ResponderEliminar
  6. Tal vez pregunto una estupidez... pero para los poco entendidos como yo, que es una POC?

    En google vienen cosas como Power Of Content y similares, pero no se si se refiere a eso.

    Saludos

    ResponderEliminar
  7. @shakaran, aquí lo tienes

    POC

    Saludos!

    ResponderEliminar
  8. @Maligno

    Gracias! Ahora si me pongo en contexto ;)

    PD: Te envié un email sobre informatica64, espero que no este en tu carpeta spam ;)

    ResponderEliminar