jueves, enero 31, 2008

Control Parental

Cuando de pequeño he cometido alguna trastada mis papis me han castigado. Sniff. No ha sucedido muchas veces porque yo de joven he sido muy bueno, bueno, bueno. Lo de Maligno vino ya más tardíamente.

Uno de los peores castigos que podía tener era que me dejaran sin Internet. En esa edad en la que los hombres descubrimos, como dice House, a nuestro amigo el señor zanahoria y aún no tenemos edad para comprar porno, ni existía el plus y en casa no se coge más que la 1 y la cadena esa de los animales, Internet era una fuente inagotable de … conocimiento.

Hoy en día, ya no se usa eso de cortar Internet, ya que en mi época bastaba con no dejarme poner le modem enchufado a la línea de teléfono. Hoy se usan cosas más modernas como por ejemplo… el control parental.

El control parental es un gran invento pues agudiza el ingenio de futuros hackers, que buscan la forma de conseguir acceso total al…conocimiento, para poder jugar con el señor Zanahoria.

Para muestra un botón, nuestro amigo concretamente es un joven adolescente en busca de novia que para poder ver porno tiene que enviar un mail a un demonio que lanza wget se baja la web, quita el texto y las metas del html y manda las fotos por mail. Es un buen sistema pues ayuda a filtrar y proporciona…conocimiento, que mientras que no tenga novia le vendrá bien al señor Zanahoria.

Ayudemos todos a nuestro joven amigo, que pueda por fin acceder libremente al…conocimiento!!!

Saludos Malignos!

Riesgos de Seguridad y Medidas de
Protección en Windows Live Messenger (III/IV)

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

Artículo Publicado en la revista PCWorld Ene'08
- Riesgos y Medidas de Protección en Windows Live Messenger (I/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (II/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (III/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (IV/IV)
***************************************************************************************
¿Cómo Cifrar los mensajes y la transmisión de ficheros?

Las versiones empresariales de Windows Messenger permiten el uso de transmisiones cifradas, pero por defecto, en nuestras comunicaciones con Windows Live Messenger debemos tomar medidas adicionales para proteger la privacidad de nuestras comunicaciones cuando nos encontremos en redes no seguras.

La opción más extendida es la utilización de sistemas de cifrado externos. Este tipo de aplicaciones funcionan utilizando sistemas criptográficos para las comunicaciones. Una de las soluciones más extendidas es Simp (Secway Instant Messenger Privacy). Dispone de dos versiones, la primera la versión Simp-Lite es gratuita y permite la autenticación de la persona y el cifrado de mensajes de texto. La versión profesional Simp-Pro permite además el cifrado de ficheros transmitidos. Nada más instalar el software en nuestro ordenador el sistema nos va a pedir que generemos nuestras claves con un sencillo Asistente de Configuración. El proceso completo es el siguiente:

Paso 1: Explicación del Proceso

Paso 2: Generamos tantas claves como sistemas queramos utilizar con ellas. Elegimos la longitud y el algoritmo de generación de claves y para que servicios queremos utilizarlo [MSN, Yahoo, etc… o todos]

Paso 3: Elegimos una contraseña para proteger nuestra clave.

Paso 4: Proceso de generación aleatoria de clave. Se realiza mediante el movimiento del ratón.

Paso 5: Generación de la clave

Paso 6: Claves listas para ser utilizadas

Una vez creada nuestra claves podemos comunicarnos de forma segura con todos los que tengan implantada una solución similar. Una vez creadas las claves el sistema permite tres tipos de comunicaciones:

- Comunicación No Cifrada: El sistema detecta y alerta de que se está produciendo una conversación No Cifrada. Lógicamente esto permite que se siga pudiendo comunicar con personas que no tienen instalado ningún software de cifrado tranquilamente, pero además nos advierte del riesgo.

- Comunicación Cifrada: Se negocia una clave aleatoria para el cifrado AES-128 pero no se ha podido comprobar que el destinatario es quien dice que es. En este caso nos encontramos con una conversación en la que ambos soportan el sistema criptográfico pero no se ha realizado el intercambio de claves. En la negociación de la clave, al no haber podido comprobar al participante de la comunicación es posible perpetrar un ataque de Man In The Middle en este sistema dónde el hombre en medio negocia claves de sesión distintas con los participantes de la comunicación y puede acceder a los datos de la conversación.

- Comunicación Cifrada y Autenticada: En este tipo de comunicaciones se utiliza el sistema Diffie-Hellman para trabajar. Es decir, utilizando las claves públicas se negocia una clave aleatoria para cifrar la conversación con AES-128 (Advanced Encryption System). Para ello es necesario haber intercambiando la clave pública con los participantes de la comunicación. De esta manera, cuando se genera la clave que va a ser utilizar para esta conversación en el protocolo AES-128 se va a enviar cifrada con la clave pública del destinatario para garantizar que sólo el poseedor de la clave privada puede acceder a ella.

En la imagen 6 podemos ver como en la herramienta contamos con dos claves públicas de dos usuarios que nos permitirán autenticarlos, y como estamos teniendo dos conversaciones en este momento, una cifrada pero no autenticada, en color azul, y otra sin cifrar ni autenticar en color rojo.

Imagen 6: Estatus de cifrado y autenticado de conversaciones

El usuario de la conversación cifrada y no autenticada podemos autenticarlo si realizamos el intercambio de claves públicas. En este caso vemos como el mismo programa dispone de un sistema de intercambio de claves públicas. Como se puede ver la clave es comprobable con lo que bastaría con realizar otra comprobación con el dueño de la clave para garantizar que es la clave auténtica y aceptarla.

Imagen 7: Intercambio de claves públicas

Una vez autenticado el usuario la conversación pasaría a un nivel de seguridad superior de cifrado y autenticado como se puede ver en la Imagen 8:

Imagen 8: Conversación cifrada y autenticada.


***************************************************************************************
Artículo Publicado en la revista PCWorld Ene'08
- Riesgos y Medidas de Protección en Windows Live Messenger (I/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (II/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (III/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (IV/IV)
***************************************************************************************

miércoles, enero 30, 2008

Estoy perdiendo mi Mojo!

Con esto de las alertas de Google te enteras de muchas cosas que dicen sobre tí. Una de las últimas que me ha llegado dice que estoy perdiendo Mojo... o algo así.


Mojo Luser

El caso es que me he hecho cuenta y he ido a catalogar el dominio y... no he sabido catalogarlo, ¿me ayudáis a ver si subo mi mojo?

¿De que va la movida?

Saludos malignos!

Spectra: The Band!. Confesiones


La otra cara del éxito ya sabéis que no es tan bonita. Uno llega del barrio, se sube a un escenario a cantar y tocar música de rock y se convierte en una superestrella. A partir de ese momento todo es una espiral de LSD. Fiestas, drogas, mujeres, alcohol, somniferos, más mujeres, más fiestas, más mujeres, más mujeres.... Es dificil abstraerse de todo lo que te envuleve y no dejarte arrastrar.

En mi caso, tras llenar Wembley y tener a los Metallica de teloneros no supe bajar de ese estado de embriaguez continua que da el estar bebiendo Dyc con hielo todo el día y no supe gestionar mi fortuna. Después de haber ganado más de 10 garrupitos de millones de dolares, parte de ellos vendiendo mi cuerpo, parte de ellos con la lotería y parte de ellos con el éxito de los temas de nuestro famoso grupo de Rock Garage "Spectra: The Band!" decidimos retirarnos.

Actuación en Wembley

Yo, que ya sabéis todos que utilizaba el nombre artístico de "Nasty", hace tiempo que había decidido continuar mi carrera en solitario e incluso realicé alguna actuación compartiendo escenario con "Caramelito". Muchos de mis fans me acusaron de dejar el duro metal e irme con "Caramelito" que, cómo todos sabéis, es un cantante de Glam.

Nasty & Caramelito

El abuelo, al que todos conoceréis por como "Asesino" optó por cortarse el pelo, ponerse los nauticos, dejar las drogas y dedicarse a una vida de contemplanción junto al mar disfrutando de los deportes naúticos. Fue un cambio radical para alguien cómo él, que se había criado en las más duras condiciones de los barrios suburbiales de la gran ciudad.

"Hammer" Cervigón se quitó los piercings y se borró los tatuajes y despareció en una vida tranquila en la que su única preoucpación fue convertise en el "Home Support Engineer" para tranquilidad y sosiego de su familia y cuya única preocupación fue la de seguir con su dieta vegetariana.

"Hammer" y su dieta vegetariana

Pero algo se rompió en mi, mis colegas de la India me llevarón con aquél Gurú de las montañas, no se que fue exactamente lo que cambió en mi, pero tras "juguetear" con unas hierbas "medicinales" decidí apostar toda mi pasta a un proyecto de software. ¿Toda? Sí, toda la pasta, hasta el último garrupito de dinero me jugué... y perdí. La imagen de mi caida fue la foto que todos habéis visto en los medios de comunicación y que me llevó a todos los programas de televisión del corazón y arruinó mi carrera en la política.

Foto paparazzi en la India

Una malevola compañía, de cuyo nombre no quiero acordarme, con viles artes monopolísticas me hundió. Utilizó un maléfico programa que no se podía desinstalar de los ordenadores para conseguir arruinarme. Vendí mi coche, me quedé sin el malignomovil azul y tuve que ir a suplicar a "Hammer" ayuda. Sabía que si iba directamente a por "Asesino" éste me iba a rechazar. Públicas son las disputas que siempre hemos tenido por el liderazgo de la banda.

Al final "Hammer" decidió ayudarme y concertó una reunión con "Asesino" para debatir los pormenores de lo que iba a ser la gira de nuestro retorno. Este es el vídeo de la reunión:


Como se puede apreciar, el cariño que siempre me profesó "Asesino" hizo que nuestra reunión fuera cómoda para todos. Por lo que fue facil retomar el grupo justo dónde lo habíamos dejado. Así que, de ahí, fuimos directamente al estudio, a preparar los temas de nuestra repertorio y hacer vibrar una vez más a todos nuestros fans:


Todo iba bien, pero en Bilbao... sucedió algo. Es una historia delicada, que deberá ser contada en otro momento, y que me llevó a abandonar el grupo. Como sabéis en el último evento de la gira, en Sevilla, fui sustituido por "un guitarrista de segunda", un esquirol, alguien que no lleva el rock en el cuerpo... "un vendido!!!".

No obstante, tras el "fracaso" del último concierto en Sevilla, "Asesino" ha venido a pedirme perdón y estamos arreglando nuestras diferencias para poder hacer dos galas especiales, como cabeza de cartel, en dos festivales, uno de ellos "indy". Los mismos tendrán lugar, uno en Madrid y otro en Amsterdam...¿Será nuestra última vez?

No Lusers - Nº 3: Preparación al Reto VI



martes, enero 29, 2008

Reto Hacking VI - Apuestas

Bueno, bueno, bueno... la que se nos viene encima!! El reto ya está aquí y RoMaNSoFt está poniendo excusas, Pedro Laguna tiene examen la semana que viene de la universidad, Kachakil está perdido bajo una montaña de curro y yo estoy en casa de Palako en Londres mientras Mandingo está en "herido". "Bambú" (si prefieres que te sigamos llamando así) estará por aquí según parece, kabracity y TheSur no piensan dejar pasar la oportunidad de ganar y SealTeam seguro que da guerra, pero... ¿Quién ganará?

Las apuestas están como siguen N a 1. Por cada comic de segunda mano que apostéis (recordad que en este reto se apuestan comics de segunda mano) yo entrego N si acertáis.

Yo, viendo como está el patio, casi creo que sería capaz de ganaros yo con la mano izquierda, enganchado a un ratón de mac con un solo botón y desde un Windows 3.11 :P Pero en fin, esto de no poder participar porque conozco la solución me lo impide, así que... ahí van las apuestas de la casa. Los "No Lusers" están 2 a 1, los "wanabis" están 3 a 1 y 4 a 1, los "Peleones" están 8 a 1 y los "Total Lusers" están 10 a 1. Si alguien quiere añadir a otro player al game, puede hacerlo y apostar por él, lo cubriré 15 a 1.

Players Board

Ale, señorit@s...¡abran sus apuestas!

Riesgos de Seguridad y Medidas de
Protección en Windows Live Messenger (II/IV)

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

Artículo Publicado en la revista PCWorld Ene'08
- Riesgos y Medidas de Protección en Windows Live Messenger (I/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (II/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (III/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (IV/IV)
***************************************************************************************
Captura de archivos transmitidos

La transmisión de ficheros entre clientes es algo muy común. Algunas se realizan de forma automática, como las imágenes de pre-visualización de contactos, si se ha configurado de esta forma el cliente, y otras, de forma explícita, como la transmisión de documentos, fotos o mensajes de voz. El protocolo que se utiliza para chatear con mensajes de texto está totalmente documentado por la comunidad de Internet, por lo que hay herramientas como Pidgin, antes conocido como GAIM [http://sourceforge.net/projects/pidgin/] que permiten conversar perfectamente con clientes Live.

La transmisión de ficheros con Windows Live Messenger entre dos clientes tiene un funcionamiento adaptativo, es decir, los ficheros se pueden transmitir utilizando el protocolo TCP o UDP y esta transmisión puede ser realizada mediante una conexión directa o a través de los servidores Windows Live de Microsoft en función de la carga de la red. No es público cual es el algoritmo actual de decisión utilizado a la hora de configurar las opciones que se usarán para transferir un determinado fichero, pero sí hay cierto trabajo realizado ya en ingeniería inversa en la web de hypothetic [http://www.hypothetic.org/docs/msn/general/overview.php] que muestra como se comunican los clientes para la transmisión de ficheros y permite hacer un análisis de los datos que se puedan capturar.

En cualquiera de los medios de transmisión que se utilice el nombre del fichero codificado en base64 es lo primero que se envía y, en el caso de que sea un archivo gráfico, un thumbnail de pre-visualización. Una vez es aceptada la transmisión por parte del destinatario se parte el fichero en segmentos y se va enviando en paquetes de red hasta que este es completamente transmitido.

Un atacante podría acceder a los paquetes de red que componen la transmisión de un fichero si esta transmisión se realiza, tanto en el envío o en la recepción, por una red insegura en la que, por ejemplo, alguien pueda hacer un envenenamiento entre los dos clientes o entre un cliente y su puerta de enlace, o en la que pueda capturar el tráfico generado por el emisor o el receptor ya sea porque la red está cableada con concentradores en la que se puede sniffar el tráfico o bien porque sea una red wireless no securizada.

Con los paquetes capturados con el sniffer se puede recrear el fichero manualmente utilizando un editor hexadecimal y copiando las tramas. Esto es bastante sencillo si la transmisión se ha realizado usando el protocolo TCP pues es muy fácil seguir el flujo de la conversación con los números de secuencia TCP aunque funciona perfectamente igual con el protocolo UDP. Realizadas unas capturas en bruto se puede apreciar como los datos del fichero son reconocibles en la red. En la imagen siguiente se ve un trozo de la captura enviada de un fichero de audio.

Imagen 3: Captura de trama por UDP de parte de un fichero enviado

Al final, como prueba de concepto, tras comprobar que manualmente se podía recomponer el fichero, decidimos hacer, a finales del año pasado, una pequeña herramienta que, como prueba de concepto capturara todos los ficheros que eran transmitidos vía Windows Messenger. Esta herramienta ordena todo el tráfico que se captura en conversaciones, después busca los mensajes de Windows Live Messenger y por último construye el fichero.

Imagen 4: Captura de una trama con datos de un fichero de texto transmitido

Windows Live Messenger implementa un protocolo P2P para la transmisión de los ficheros y este se utiliza no sólo para aquellas transmisiones explicitas de ficheros, sino también, por ejemplo, para la transmisión de los emoticones extras o para la transmisión de mensajes de voz enviados utilizando la tecla F2 o para la transmisión de las fotos de perfil que cada participante se configura. Al ponerse alguien a capturar ficheros transmitidos puede obtener todos esos mensajes si no van cifrados. En la Imagen 5 se puede ver que la se ha podido construir un par de archivos en formato “wav”, pertenecientes a un mensaje de voz enviado con el F2, tras haber sido capturados con un sniffer.

Imagen 5: Captura y reconstrucción de mensajes de Voz

Webmessenger

En la versión web de Windows Live Messenger el funcionamiento es similar. La fase de autenticación en el servicio va cifrada mediante conexiones http-s, con lo que la vulneración de estos servicios es equivalente a la que se podría realizar en un ataque Man In The Middle con certificados digitales falsos. Sin embargo, una vez iniciada la sesión, el resto de transmisiones van en texto claro utilizando el protocolo http. Es suficiente con realizar un pequeño análisis de las tramas para poder acceder a las conversaciones que se están produciendo.

***************************************************************************************
Artículo Publicado en la revista PCWorld Ene'08
- Riesgos y Medidas de Protección en Windows Live Messenger (I/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (II/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (III/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (IV/IV)
***************************************************************************************

No Lusers - Nº 2: Chess Injection



lunes, enero 28, 2008

Riesgos de Seguridad y Medidas de
Protección en Windows Live Messenger (I/IV)

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

Artículo Publicado en la revista PCWorld Ene'08
- Riesgos y Medidas de Protección en Windows Live Messenger (I/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (II/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (III/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (IV/IV)
***************************************************************************************
Hay ideas que triunfan a la primera, y otras no, solo hay que echar la mirada hacia atrás para recordar la moda del walkman, dónde “los jóvenes” de mi generación llevábamos siempre las orejas tapadas con los cascos de esponjilla naranja (al menos hasta que aparecieron los de cabeza de oro) e incluso una cinta pinchada en un bolígrafo BIC para poder rebobinar la cinta sin tener que consumir pila de esas que, cuando aparecieron las recargables, cuidábamos más que los “tamagotchis” la generación siguiente y a la familia SIMS la posterior. Por el contrario, están las que no triunfan nada, como el monedero electrónico o la motocicleta con cenicero.

Una de las ideas que nos ha revolucionado ha sido la mensajería instantánea, eso de poder charlar con los compañeros, los familiares, los amigos que no ves mucho, los novietas y novietas y cómo no, los compañeros de trabajo. Al final, los programas tipo Windows Live Messenger se han convertido en parte fundamental de la forma de trabajar de muchas compañías.

Sin embargo, el uso de los sistemas de mensajería instantánea, tienen sus riesgos de seguridad y hay que intentar protegerlos, o al menos, realizar un uso responsable de los mismos. Este artículo se centra en la protección de los sistemas que utilizan Windows Live Messenger y por tanto se van a mostrar los principales riesgos de seguridad que tiene la plataforma.

Versiones de Messenger

Los clientes de mensajería instantánea de Microsoft hoy en día son dos: Windows Messenger y Windows Live Messenger. La diferencia entre ambos es mucha.

El primero, la versión Windows Messenger es el cliente de mensajería empresarial, es decir, para aquellas empresas que utilizan los sistemas de mensajería como forma habitual de trabajo y necesitan opciones avanzadas de seguridad. Este cliente va asociado a los servidores de Microsoft Office System y permite opciones de cifrado en la transferencia de mensajes y ficheros así como en las comunicaciones de voz, permite configurar las opciones de los clientes para fortificar las configuraciones, filtrar el lenguaje utilizado, los tipos de documentos que se pueden enviar e incluso, añadir filtrado de antimalware para evitar que los sistemas de mensajería instantánea sean un coladero de virus, troyanos y malware general en tu empresa.

El segundo cliente, Windows Live Messenger es la versión de consumo y de uso general, totalmente gratuito y descargable por cualquiera desde Internet. Lógicamente las opciones que permite este cliente son menores en cuanto a seguridad, a saber: No realiza cifrado de conversaciones, no realiza cifrado de la transmisión de ficheros, tampoco utiliza ninguna solución de cifrado en las conversaciones de voz, no filtra los ficheros con ningún antimalware los ficheros enviados y recibidos y por supuesto, la configuración de las opciones para fortificar el cliente deben ser configuradas por parte del usuario. Como os podéis imaginar, caldo de cultivo para que existan problemas de seguridad….

Redes Inseguras

Antes de comenzar a ver nada sobre el producto me gustaría hacer una pequeña disertación sobre lo que se consideran redes inseguras. Esta recomendación debe ser tenida en cuenta no sólo para este servicio sino para todos los servicios de que supongan un riesgo.

- Redes Wifi: Las redes inalámbricas tienen la peculiaridad de estar al alcance cualquiera que esté cerca. Si la red inalámbrica no tiene autenticación o cifrado, o si el cifrado y autenticación que usa es WEP o si se está usando WPA-PSK y la contraseña es fácil, es decir, de longitud corta, poca complejidad y no es cambiada cada cierto tiempo, entonces … esa red Wireless es potencialmente insegura.

- Redes Cableadas: Si la red utiliza un concentrador de conexiones (hub) o usa switches sin IPSec y sin detectores de Sniffers y sin detectores de envenenamiento (ARP-Poisoning) entonces esa red es potencialmente insegura

Riesgos de las redes Inseguras

¿Y qué me puede pasar en una red de “esas”? Pues puede suceder que un atacante acceda a la lista de contactos que tienes, ver lo que hablas con ellos y que te dicen, ver la foto que tienes puesta y la que tienen tus contactos, acceder a los ficheros que envías y recibes, grabar los mensajes de voz enviados y las conversaciones en tiempo real de voz sobre IP y… ¿Te parece poco?

Captura de conversaciones

En este caso el objetivo del atacante es conseguir que el tráfico pase por su máquina. En cualquiera de los entornos descritos como Redes Inseguras esto se puede conseguir. Una vez que se ha conseguido que el tráfico pase por el equipo solo hay que activar un sniffer para realizar una captura del tráfico. Cualquier Sniffer valdría, Iris, Wireshark, SnifferPro, etc… y podemos buscar los mensajes transmitidos. En el caso del Messenger nos encontramos con un protocolo que a priori no es pública la última versión y que además ha tenido variaciones a lo largo de las diferentes versiones del producto, pero que en el caso de los mensajes de texto está bastante documentado y la mayoría de los sniffers detectan los paquetes y se pueden leer.

Imagen 1: Captura de mensaje enviado por Windows Live Messenger con Wireshark

Como se puede ver, encontrar el mensaje no es muy difícil, pero además existen herramientas especializadas en la mensajería instantánea para buscar los mensajes que circulan por la red y permitir a un atacante el poder disponer de un interfaz más cómodo. Una de esas herramientas es Shadow Instant Message Sniffer de la empresa Safety-lab.com. Como se puede ver en la captura esta herramienta no está solo pensada para Windows Live Messenger sino que detecta también otros protocolos de mensajería instantánea. No tiene soporte para capturar ficheros transmitidos.

Esta utilidad funciona con las librerías y el driver Winpcap, esto le permite a un atacante el poder realizar una ataque de Man In The Middle utilizando la herramienta CAIN entre el equipo al que se quiere espiar la conversación y su puerta de enlace y después arrancar SIMS para ir simplemente leyendo los mensajes.

Imagen 2: Captura de mensaje enviado por Windows Live Messenger con Shadow Instant Message Sniffer

***************************************************************************************
Artículo Publicado en la revista PCWorld Ene'08
- Riesgos y Medidas de Protección en Windows Live Messenger (I/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (II/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (III/IV)
- Riesgos y Medidas de Protección en Windows Live Messenger (IV/IV)
***************************************************************************************

domingo, enero 27, 2008

No Lusers - Nº 1: Competencia





sábado, enero 26, 2008

Agenda de Blackhat

Ya salió la agenda de Blackhat. Habla un tal José Parada Gimeno, un tal David Litchfield y algún otro... que bonito.... Ya me he guardado la web y estoy limpiando las lagrimas de portátil.


Agenda BH Europe 2008

Perdón por el ataque de "amor propio" (que no masturbación pero casi...).

Saludos Malignos!

Ready? Los Premios del Reto VI sí.

El día se acerca, y las excusas se disparan. “Yo no voy a ganar porque ese día me pilla muy mal”, “tengo mucho trabajo”, “no sé si ese día tengo una reunión”. Excusas, excusas, excusitas, todo son excusitas. A la hora de la verdad, todos, de forma oculta, estarán allí. Tanto “lusers” como no “lusers” se sentarán delante del cabezón, con la siesta echada, merendados, irán al baño unos minutos antes para dejar la vejiga vacía y dispuesta a llenarse de café y/o otras cosas y se pondrán allí con los ojos abiertos como búhos.

Algunos estarán pensando “tengo que verlo, tengo que verlo, no te dejes engañar, vas a verlo claro desde el primer vistazo”. Otros buscarán la tranquilidad para estar libres de otros pensamientos. Se pondrán cómodos en la silla y buscarán ponerse buena música para mantener el cerebro al ralentí. Alguno que yo me sé repasará mentalmente las últimas conversaciones que ha tenido conmigo, releerá los últimos artículos que he publicado o las últimas cosas que he hecho para poder bosquejar una pista. Algún indicio que le de unas decimas de segundo por vuelta más que el resto de los competidores…

Y todo, para intentar ganar este año los mejores premios. Este año el Reto VI comienza con unos premios espectaculares ya que vamos a tener comics para los ganadores.

El primer premio, amén de llevarse 10 puntazos, el reconocimiento de sus compañeros y la posibilidad de reírse de todos los demás se va a llevar la obra de arte de Watchmen de Alan Moore. “Who Watch the Watchmen?”. Si no has leído este comic sobre el mundo de los superhéroes entonces… no has leído nada….

Watchmen

El segundo premio va a ser algo sólo para adictos. Es el último número de la Colección Prestigio de Forum Volumen I, el número 75, dedicado al Iron Man 2020. Este comic es bastante curioso pues el personaje del Iron Man del 2020, Arno Stark, se creó como villano para la miniserie del hombre máquina que salió en la colección Extra Superhéroes y en este One-Shot se le intenta redimir. No cuenta con muchas apariciones en el mundo del comic. Además, el segundo premio se va a llevar 8 puntos.

Iron Man 2020

El tercer y último premio va a ser un tomo recopilatorio de Forum con los 5 primeros números de la Serie “Caballero Luna: Fist of Khonsu”. Estos cinco números en España recogen los 6 números que fueron la serie Americana. Este SuperHeroe, el Batman del Marvel, es uno de los que peor suerte ha contado con los equipos de trabajo y solamente Jeph Loeb y Bill Sienkiewicz han demostrado las autenticas posibilidades de este héroe (que es uno de mis preferidos en secreto). Además de 6 puntos.


Caballero Luna en España

El resto de los clasificados se llevará sólo puntos. Y estos serán: 5 puntos para el cuarto, 4º puntos para el 5º, 3 puntos para 6º, 2 puntos para el 7º y un 1 punto para el 8º. A partir de ahí tendrán 0.5 puntos cada uno de los que consigan superarlo antes de que acabe este mes de Febrero.

Además, hay 1 punto extra para todos aquellos que lo saquen antes de las 23:59 horas del día 1 de Febrero, es decir, para los que lo saquen en 4 horas. ¿Sólo 4 horas? Sí, sólo 4 horas porque se puede sacar en sólo 4 horas…No hay que hacer ningún programa hipercomplejo y ninguna ejecución debe tardar tanto como la ejecución de la segunda fase del Reto V. Así que nada, a ponersus las pilas.

Saludos Malignos!

viernes, enero 25, 2008

Te borro tu buzón por 50 $

En el último evento del Live Technology Tour que dimos en Bilbao aproveché para pedirle a un compañero del metal y de profesión en esto del enseñar, el amigo de Torrelavega Javi Terán, que me recogiera una "jartá" de papel viejo con dibujitos. Eso que los amantes de la tinta y el papel llamamos Comics o Tebeos.

Cuando los recibí, momento romantico que ocurrió en mitad de las charlas, me puse más contento que unas castañuelas, por lo que me fui feliz de la charla hacia el aerpouerto cargando una nada desdeñable cantidad de unos 80 nuevos comics para mi colección.

Cuando llegó el momento de entrar en el aeropuerto y pasar por el control de seguridad tocó desnudarse. Ya sabéis, gorro, cazadora, cartera, pendrives, teléfono móvil, cinturón, abrigo, maleta, drogas, puñales, portátil fuera de la mochila, dinero (toda la pasta que había ganado con mi último trabajito para Spectra) y bolsas de comics (3). Pasé por el arco de seguridad, y nada... luz verde. Después a vestirse y recoger todo, y sobre todo ... no olvidarse los comics.

Cansado y esperando para embarcar vi que tenía 10 minutos libres, así que pensé: "¿Anoto los comics en la base de datos?" Porque, para mantener la colección de comics que tengo, no pensaréis que la puedo gestionar de otra forma que no sea con una base de datos. "Naaaaa... si quedan 10 minutos". Pero.... el vício me pudo y me repliqué: "Venga va, aunque sean sólo unos pocos". Así que abrí la mochila buscando mi portátil y... no estaba allí.

HORROR, PÁNICO, MUERTE, DESTRUCCIÓN

Mi vida pasó por delante de mis ojos en unos pocos segundos y fui capaz de recordar cada una de las veces que había tocado ese portátil, que a partir de ese momento se me antojó más cool que un i-jam y más potente que un servidor de 64 procesadores, en los últimos 3 días...¿Dónde estaba mi vida? Mis datos, mis mails, mis presentaciones, ¡¡¡MI BASE DE DATOS DE COMICS!!!! ¡Dios!... ¡EN EL CONTROL DE POLÍCIA DEL AEROPUERTO!.

Como os podéis imaginar, presa del terror, atenazado por el PÁNICO, perdiendo años de vida cada segundo que ese portátil no estaba en mis manos me cargué todos mis "archiperres" en menos que pía Pitíkli y salí corriendo.

El aeropuerto pudo disfrutar en aquel momento de lo que es ver a un hombre sin afeitar y con melenas demostrando que el record mundial de los 100 metros lisos será para aquel que tenga más motivación de correr, y que, en caso de haber estado allí un juez de esos de los de la cerveza, quiero decir, de los Guiness, hoy por hoy tendría plaza para los juegos olímpicos de Londres.

Para más complejidad había tráfico, pero las personas que me vieron venir, con los ojos inyectados en sangre, los dientes apretados y la piel del color de un enfermo terminal de difteria supieron valorar la situación y saltaron a la cuneta apartandose de mi camino.

El suelo estaba resbalazido, pero en aquellos momentos mis pies se movian a tal velocidad que si me hubieran puesto un mar por medio habría pasado por encima de él cuál profeta que flota en el agua.

Al llegar al pasillo que da acceso al puesto de control tuve que tomar la curva de contrameta. Reduje a quinta y ataqué bien los pianos para traccionar con fuerza a la salida de la misma. Debido a regulaciones de última hora me había sido suprimdio el control de tracción automático, así que, levantando el peso equivalente a 30 comics en una de las bolsas conseguí equilibrar la dirección para meter sexta y llevar en 0.7 segundos en frente del control y decir, con toda la tranquilidad del mundo:

"mehedejadounportitilenelcontrolhacemenosdequinceminutosporfavordiganmedondeesta"

El polícia, mirando el cuadro que se había plantado en frente de él, sudando, gritando, blanco y con cara de asesino, se recostó en la silla y me hizo una pregunta doble con intención de pillarme:

"¿De qué marca y de que Color es?"

A lo que yo respondí como si hubiera un pulsador cual concurso de la tele y otro pudiera meterse de por medio en mi turno de respuesta:

"esundellplateadoylefaltadospatadegomapordebajoysimedicequelotieneledoydosnuevossiustedmedaesemio"

El tipo me miró, miró a su compañero, sonrió y metió la mano debajo de la mesa. De allí salió, por arte de magia, el Paraiso, el sol, las mieles del triunfo, el Valhala, el Monte Olimpo y el plató de una película porno grabando la más maravillosa de las orgías donde mujeres desnudas te traían dispositivos usb para disfrutar al máximo con los gadgets.

Le besé, le abracé, le acaricié, le limpié la pantalla con amor, prometí no teclear fuerte sobre sus teclas y arreglar tecla que un día le rompí y la llevo pegada con celo. Supe lo que es tener una segunda oportunidad en la vida que no voy a desperdiciar.

Al llegar a casa le mimé, le puse el bitlocker, cifré los datos importantes con EFS y me hice 2 backups que guardé en ubicaciones distintas.

No se si alguna habéis sentido lo que es la pasión y el amor por tus datos, pero yo sí lo sentí en esa carrera por la supervivencia.

Y ¿por qué os cuento esto? La verdad es que había desestimado narrar este drama en mi vida, pero hoy he visto una noticia en la que un proveedor de servicios de Internete le ha borrado, sin posibilidad de recuperación ninguna, a 14.000 personas, por un errorcillo de cálculo, el buzón de correo con todo su contenido y para compensarles les da 50 $ a sus clientes.

Cable Co. empties 14,000 e-mail accounts

Tal vez sean buzones de usuarios de casa, tal vez hubiera hosting de empresas o tal vez no, pero si a mi borras mi buzón y me das 50 $... ¡Mueres!

Saludos malignos!

jueves, enero 24, 2008

Yahoo contrataca

Hace ya un tiempo el Chico Maravillas cambió de aires y entró a trabajar a Yahoo. Ahora, el próximo día 4 de Febrero comienza también en Yahoo el gran Palako, flamante cuarto clasificado en los Retos Hacking del 2007 (o como diría nuestro peleon RoMaNSoFt, el primer "luser"). La noticia me ha pillado estando con él aquí en Londres, pues me está haciendo de anfitrión para que mi aterrizaje en esta tierra fuera lo menos problematica posible (Mil gracias Palako, no se como agradecertelo).

Da gusto ver a la gente que vale siendo reconocida. Supongo que muchos no sabréis lo dificil que es conseguir pasar los duros procesos de recruitment en estas compañías, pero para que os hagáis una ligera idea Palako ha tenido que pasar la nada desdeñable cantidad de 11 entrevistas. Sí, once, ha pasado por un equipo (de futbol) completo de entrevistadores que han evaluado todas sus capacidades. Os juro que verle explicando por teléfono como se intersectan dos arrays no ordenados y cual es la complejidad del algoritmo elegido a una guiri en California mientras te tomas un café a su costa es algo que no tiene desperdicio como documento.

Para celebrarlo cenamos un buen filetaco a la salsa de roquefort con una botellita de un Rioja Gran Reserva y después, como buenos enfermos que somos, nos juntamos con Raúl (otro de la tierra del sol, las playas y la siesta) que está currando para Google aquí en Londres, para hablar de IPSec, SSH y la madre que parió al portknocking.

En fin, que ya es hora de que nos pongamos todos las pilas, y sigamos generando buena matería prima en el área de la informática. Así que a estudiar duro, a competir fuerte y a ser referentes en el tema de la ese de darle a la teclita.

Enhorabuena Palako, mil gracias por todo... y con tu primer sueldo pagas las gambas.

Saludos Malignos!

La Justificación del Técnicoless

Es de noche, ayer te acostarte tarde, no has dormido muchas horas, tienes más legañas que un perro pulgoso, enciendes el portátil, abres el RSS y sale esta maravilla que me recuerda a cierta situación con cierto asesor:

Dilbert 24 de Enero 2008

Viñeta 1:

- El nuevo Software es un desastre.
- Entonces ¿Por qué lo recomendaste?


Viñeta 2:

- Este software es idea tuya. Mi recomendación fue en contra de él.

Viñeta 3:

- ¿De quien es el fallo?
- De la persona con recomendaciones menos persuasivas.


Vamos a por un café que hay que pelear el día.

Saludos Malignos!

miércoles, enero 23, 2008

Time-Based Blind SQL Injection using Heavy Queries (Parte II de II)

***************************************************************************************
Artículo Publicado en la revista Hackin9 en Ene'08

- Time-Based Blind SQL Injection using Heavy Queries (I de II)
- Time-Based Blind SQL Injection using Heavy Queries (II de II)

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

Time-Based Blind SQL Injection using heavy Queries

Sea como fuere, si en un ataque a ciegas se quiere saber si el valor ASCII de una determinada letra de un campo es mayor que un número estamos hablando de una condición no excesivamente pesada y se va a poder generar siempre una consulta más pesada que ella con facilidad. El objetivo del ataque es generar una consulta pesada que provoque un retardo de tiempos en la respuesta del motor de la base de datos que solo se ejecute sí y solo sí la condición que nos interesa vale TRUE. Esto implicaría que un retardo de tiempo es equivalente a un valor TRUE en la consulta ligera.

¿Cómo generar consultas pesadas?

La forma más sencilla de generar consultas pesadas es usar lo que más hace trabajar a las bases de datos, los productos cartesianos de tablas, es decir, unir una tabla con otra y con otra hasta generar una cantidad de registros tan grande que obliguen al servidor a consumir un tiempo medible en procesarlo. Para ello basta con conocer o averiguar o adivinar una tabla del sistema de bases de datos, que tenga algún registro, y unirla consigo misma hasta generar un tiempo medible. Vamos a ver algunos ejemplos.

Oracle

La siguente consulta, lanzada contra un servidor de pruebas, muestra en color azul la consulta pesada y en color roja la consulta de la que deseamos averiguar la respuesta. Lógicamente, en este caso, la respuesta ha de ser TRUE pues hemos utilizado el valor 300 que es mayor que cualquier valor ASCII:

http://blind.elladodelmal.com/oracle/pista.aspx?id_pista=1 and (select count(*) from all_users t1, all_users t2, all_users t3, all_users t4, all_users t5)>0 and 300>ascii(SUBSTR((select username from all_users where rownum = 1),1,1))

Lanzando esta consulta con la utilidad wget podemos ver una medición de tiempos:

Imagen: La consulta dura 22 segundos, luego la respuesta es VERDADERO.

Si forzamos que la segunda condición, la ligera, valga FALSO, en este caso preguntando si 0 es mayor que el valor ASCII de la primera letra, podremos comprobar cómo la consulta pesada no se ejecuta y el tiempo de respuesta es menor.

Imagen: La consulta dura 1 segundo, luego la respuesta es FALSO.

Como se puede ver en la consulta generada se ha utilizado 5 veces la vista all_users, pero esto no quiere decir que sea el número de tablas que deban utilizarse para todas las bases de datos Oracle, ya que el retardo de tiempo dependerá de la configuración del servidor y el número de registros que tenga la tabla. Lo que es absolutamente cierto es que se puede medir un retardo de tiempo y puede automatizarse este sistema.

Microsoft Access

Los motores Microsoft Access no tienen funciones de retardo de tiempo, pero las bases de datos Access tienen un pequeño diccionario de datos compuesto por una serie de tablas. En las versiones de Microsoft Access 97 y 2000 es posible acceder a la tabla MSysAccessObjects y las versiones 2003 y 2007 a la tabla MSysAccessStorage y generar, mediante uniones de estas tablas consultas pesadas que generen retardos de tiempos medibles. Por ejmplo, para una base de datos con Access 2003, podríamos ejecutar la siguiente consulta:

http://blind.access2007.foo/Blind3/pista.aspx?id_pista=1 and (SELECT count(*) from MSysAccessStorage t1, MSysAccessStorage t2, MSysAccessStorage t3, MSysAccessStorage t4, MSysAccessStorage t5, MSysAccessStorage t6) > 0 and exists (select * from contrasena)

En azul la consulta pesada y en rojo la consulta de la que queremos respuesta, es decir, si existe la tabla llamada “contrasena”. Como se puede ver en la captura realizada con la utilidad wget la consulta dura 39 segundos, luego, la consulta pesada, en este caso muy pesada para este entorno, se ha ejecutado por lo que el valor es VERDADERO, la tabla “contrasena” existe y tiene registros.

Imagen: La consulta dura 39 segundos, luego la respuesta es VERDADERO.

Para comprobarlo realizados la negación de la consulta ligera y medimos el tiempo de respuesta:

Imagen: La consulta dura menos de 1 segundo, luego la respuesta es FALSO.

MySQL

En las versiones 5.x de los motores MySQL es posible conocer a priori un montón de tablas de acceso, de la misma forma que sucede en todos los sistemas que tienen diccionarios de datos. En el caso de MySQL se pueden generar consultas pesadas utilizando cualquiera de las tablas de Information_schema, como por ejemplo la tabla columns.

http://blind.mysql5.foo/pista.aspx?id_pista=1 and exists (select * from contrasena) and 300 > (select count(*) from information_schema.columns, information_schema.columns T1, information_schema T2)

En azul la consulta pesada y en rojo la consulta de la que se desea una respuesta VERDADERA o FASLA.

En las versiones 4.x y anteriores la elección de la tabla debe ser conocida o adivinada ya que no comparten un catálogo que por defecto sea accesible desde fuera.

Microsoft SQL Server

Con los motores de bases de datos Microsoft SQL Server se cuenta con un diccionario de datos por cada base de datos y además un diccionario global del servidor mantenido en la base de datos master. Para generar una consulta pesada se puede intentar utilizar cualquier tabla de esas, como por ejemplo las tablas sysusers, sysobjects o syscolumns. El ejemplo siguiente muestra una consulta pesada para un motor Microsoft SQL Server 2000. De nuevo en azul la consulta pesada y en rojo la que buscamos respuesta:

http://blind.sqlserver2k.foo/blind2/pista.aspx?id_pista=1 and (SELECT count(*) FROM sysusers AS sys1, sysusers as sys2, sysusers as sys3, sysusers AS sys4, sysusers AS sys5, sysusers AS sys6, sysusers AS sys7, sysusers AS sys8)>0 and 100>(select top 1 ascii(substring(name,1,1)) from sysusers)

Otros motores de bases de datos

El método funciona de igual forma en otros motores de bases de datos. Al final la idea es sencilla, hacer trabajar el motor de base de datos usando técnicas de anti optimización. Como la explotación depende del entorno es necesario un proceso de ajuste de la consulta pesada para cada entorno y además, al ser basado en tiempos, hay que tener en cuenta las características del medio de transmisión. Siempre es recomendable realizar varias pruebas para comprobar que los resultados son correctos.

Contramedidas

Evitar estas técnicas es lo mismo que evitar las vulnerabilidades de SQL Injection. Para evitar que una aplicación sea vulnerable a ellas se han escrito y es fácil encontrar guías de precauciones a seguir y como hacerlo en cada lenguaje de programación en concreto. Sin embargo no me gustaría terminar sin recomendar el uso de las herramientas de Análisis Estático de Código. Estas herramientas son una ayuda más al ojo del programador a la hora de evitar vulnerabilidades en el código.

Lógicamente no son perfectas y se necesita de un programador experimentado y preparado para el desarrollo seguro de aplicaciones, pero sí son un apoyo más. Herramientas como Fxcop ayudan a detectar las vulnerabilidades mediante el análisis del código. Existen múltiples herramientas de este tipo y especializadas en distintos lenguajes.


Referencias

- OWASP Top 10. The Ten Most Critical Web Applications Security Vulnerabilities
- NT Web Technology Vulnerabilities
- Advanced SQL Injection
- (more) Advanced SQL Injection
- Blind SQL Injection Automation Techniques
- Blind XPath Injection
- Protección contra Blind SQL Injection
- Time-Based Blind SQL Injection using Heavy Queries

Herramientas

- SQLBftools
- SQLNinja
- Absinthee
- SQL PowerInjector

***************************************************************************************
Artículo Publicado en la revista Hackin9 en Ene'08

- Time-Based Blind SQL Injection using Heavy Queries (I de II)
- Time-Based Blind SQL Injection using Heavy Queries (II de II)

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

martes, enero 22, 2008

Conversaciones de Borrachos

Esto de estar en Londres con amigos es un problema, porque al final acabas hablando de frikitonterías. La de hoy ha sido de idiotas integrales. En plena conversación sobre mujeres,... vale para que os voy a engañar, estabamos hablando de ordenadores... hemos lleado al punto de comparación metafórica.

"Mira tronco, el interfaz de Windows es genial, lo que necesitas está ahí, en botón derecho. Te vas a la cama con una tía (en el supuesto de que los informáticos ligaramos) y buscas el preservativo y está... en el bolsillo derecho. Con Linux también está y tú sabes dónde, está ....en la farmacia de la esquina"

"Naa, eso es una mierda tío. Con MacOS X es cómo si antes de intentar ir a buscar el preservativo, es decir, antes de que sepas que vas a "triunfar" porque ya sabes, en España puedes estar en la cama con una mujer en pelotas y aún no tener asegurado que vayas a triunfar, y justo antes ella te saca un preservativo y te dice: Mira lo que tengo!"

"Naaa, mejor con Vista, que cuando estas en la cama te dice : "y tú pa que quieres un preservativo? tú dale pa dentro que ya veremos..."

Y a los nueve meses.. WOW!!!

En fin.. .conversaciones de borrachos...

Saludos de Palako, Ivan Castro y Maligno!

How to be a Security Machine for Free!
by Palako

Bueno, como somos unos enfermos, vamos a jugarnos el tipo y vamos a enseñaros como aprender de esto de Seguridad gratis:

Paso 1: Cómprate un libro de Seguridad de la Editorial Syngress en una librería. En caso de que no te lo compres vete a Paso 5. Por Ejemplo:"Penetration Tester's Open Source Toolkit: 2"

Penetration Tester's Open Source Toolkit: 2

Paso 2: Ábrete una cuenta en la web de Syngress y registra el libro con los códigos que aparecen en la primera página del libro (página del copyright) para poder bajarte el PDF con el libro:


(por si se lo dejas a tu primo y no te lo devuelve)

Paso 3: Léete el libro y haz los ejercicios.

Paso 4: Si no eres aún una máquina de matar en seguridad ir a paso 1 else Go to Paso FIN.

Paso 5: Vete a la librería, escoge un libro y anota el código 004 que aparece en la página del copyright del libro. Una vez hecho ir a Paso 2. Si eres muy vago vete a Paso 6.

Paso 6: Como anotar es un coñazo, tírale una foto con el móvil a los números que aparecen en la página del copyright y vete a Paso 2. Si eres muy vago y hace frio en la calle vete a Paso 7.

Foto de mierda tirada con pulso de borracho

Paso 7: Busca el libro que quieres en Amazon, dale al link de “Search Inside”, que te muestre las primeras páginas del libro y vete a ver la página del “copyright”. Anota los números y vete al Paso 2.

¡Qué bonito Copyright!

Paso FIN: Si no eres una máquina de seguridad ya, déjalo, lo tuyo es … otra cosa.

Extra Step for Dummies: Si no tienes claro tu "plan de formación" revisa todos libros de Syngress en Amazon.

No te agobies, sólo son 218 libros

Saludos Malignos!

Time-Based Blind SQL Injection using Heavy Queries (Parte I de II)

***************************************************************************************
Artículo Publicado en la revista Hackin9 en Ene'08

- Time-Based Blind SQL Injection using Heavy Queries (I de II)
- Time-Based Blind SQL Injection using Heavy Queries (II de II)

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

SQL Injection

OWASP (The Open Web Application Security Project) ha publicado recientemente un documento en el que recoge las 10 vulnerabilidades se seguridad más críticas en Aplicaciones Web. En él, se recogen las vulnerabilidades que más siguen afectando y que siguen siendo “viejas conocidas” para el gran público. En primer lugar se encuentran los ataques Cross-Site Scripting, con todas sus variantes de ataques persistentes y no persistentes mientras que en segundo lugar quedan las inyecciones de código malicioso y especialmente las vulnerabilidades de SQL Injection. Sí, parece que fue ayer cuando se publicó en el año 1998 el primer documento que hablaba de la posibilidad de inyectar código SQL en consultas firmado, por el ya famoso, rain.forest.pupy y titulado “NT Web Technology Vulnerabilities”, pues bien, ya casi 8años se cumplen desde que se habló de esa posibilidad y a día de hoy sigue siendo una de las vulnerabilidades más peligrosas.

Blind SQL Injection

Es cierto que las formas de explotarlas han ido cambiando, en parte, por la fortificación de sistemas, que, aunque no evita la vulnerabilidad si dificulta su explotación. En el año 2002 Chrish Anley hace referencia en su documento “(more) Advanced SQL Injection” a la posibilidad de realizar ataques de inyección de código a ciegas y utilizando métodos tan curiosos, en aquel entonces, como forzar una parada de tiempos en las bases de datos SQL Server si se cumple una condición llamando a un procedimiento almacenado para ejecutar un Ping a localhost o llamando a la función waitfor de Microsoft SQL Server. Fue en ese momento cuando se puede decir que ven la luz las técnicas de explotación de vulnerabilidades de inyección de comandos SQL a ciegas. Es decir, Blind SQL Injection.

En el año 2004, Cameron Hotchkies, en las Blackhat Conferences, presentando la herramienta SQueal, que más tarde se convertiría en Absinthe, hablaba de los métodos de automatizar la extracción de información mediante ataques Blind SQL Injection. El documento publicado “Blind SQL Injeciton Automation Techniques” mostraba las diferentes posibilidades a la hora de conocer cuando una respuesta significa un valor positivo o negativo. Se echa de menos en el documento y también en la herramienta la posibilidad mostrada por Chrish Anley de usar retardos de tiempo en la automatización.

Imagen: Extracción de datos con Absinthe

Time-Based Blind SQL Injection

A las técnicas que automatizan la extracción de información a ciegas usando retardos de tiempo se las conoce como Time-Based Blind SQL Injection y han ido especializándose en diferentes tecnologías de bases de datos para generar retardos de tiempo. Así, por ejemplo, la herramienta SQL Ninja, utiliza el sistema de tiempos descrito por Chrish Anley en aplicaciones web que utilizan motores de base de datos Microsoft SQL Server. Otras herramientas como SQL Power Injector utilizan el sistema de inyectar funciones Benchmark que generan retardos en motores de bases de datos MySQL o inyectar la llamada a la función PL/SQL DBMS_LOCK.SLEEP(time) en sistemas con motores Oracle. Para otros sistemas de bases de datos como Access o DB2 no existe forma similar de generar retardos de tiempo. Los métodos de generar estos retardos de tiempo quedan por tanto restringidos bastante. En primer lugar para Access, DB2 y otros motores de bases de datos no se conoce ninguna forma; en segundo lugar, para hacerlo en motores Oracle se necesita acceso a una inyección PL/SQL que no es común encontrarse con un entorno que lo permita y, por último los sistemas de fortificación suelen tener en cuenta la restricción del uso de funciones Benchmark en entornos MySQL y waitfor en entornos Microsoft SQL Server.

En el presente artículo vamos a ver como poder realizar un ataque a ciegas usando inyecciones de código que generan retardos de tiempo utilizando consultas pesadas, es decir, Time-Based Blind SQL Injection with Heavy Queries.

“Booleanización”

El término “Booleanización” no es mío, la primera vez que lo leí fue en el documento “Blind XPath Injection” de Amit Klein y que desconozco si existía previamente o no, pero en el caso de que no existiera hay que crearlo. La idea consiste en como extraer un dato mediante una secuencia de condiciones booleanas que devuelve True o False. Por ejemplo, supongamos queremos extraer el valor del campo username de la vista all_users en un motor Oracle y este valor es “sys”. El proceso de “booleanización” sería el siguiente:

255>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> True [255 > ASCII(‘s’)=115]

122>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> True [122 > ASCII(‘s’)=115]

61>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> False [61 < ASCII(‘s’)=115]

92>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> False [92 < ASCII(‘s’)=115]

107>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> False [107 < ASCII(‘s’)=115]

115>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> False [115 = ASCII(‘s’)=115]

119>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> True [119 < ASCII(‘s’)=115]

117>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> True [117 < ASCII(‘s’)=115]

116>(Select ASCII(Substr(username,1,1)) from all_users where rownum<=1
-> True [116 < ASCII(‘s’)=115]

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. Como se puede ver el proceso va a exigir una serie de repetición de peticiones para cada valor, pero al final se obtiene el resultado. El problema, como se explica al principio de este artículo, es determinar cuando la respuesta es True y cuando es False.

Time-Based Blind SQL Injection

Hasta el momento, lo sistemas que se conocían para extraer información estaban basados en las funciones que ofrecía cada motor de bases de datos, así, por ejemplo, en una aplicación web que utilice Microsoft SQL Server podría realizarse una inyección como la siguiente:

http://servidor/prog.cod?id=1; if (exists(select * from contrasena)) waitfor delay ‘0:0:5’--

Esta consulta, en el caso de existir la tabla “contrasena” y tener algún registro va a pausar la respuesta de la página web un tiempo de 5 segundos. Si la respuesta se obtiene en un periodo inferior podemos inferir que la tabla “contrasena” existe y tiene algún registro. La misma idea puede ser utilizada para una aplicación con Oracle:

http://servidor/prog.cod?id=1; begin if (condicion) then dbms_lock.sleep(5); end if; end;

Y con MySQL, usando por ejemplo la función Benchmark del ejemplo, que suele tardar unos 6 segundos en procesarse o la función Sleep(), que ya viene en las versiones 5 de MySQL.

http://servidor/prog.cod?id=1 and exists(select * from contrasena) and benchmark(5000000,md5(rand()))=0

http://servidor/prog.cod?id=1 and exists(select * from contrasena) and sleep(5)

Heavy Queries

Las consultas pesadas han sido y siguen siendo un quebradero de cabeza en la optimización de sistemas de bases de datos. Un motor puede almacenar cantidades de información tan grandes y con tal cantidad de usuarios que si no se optimizaran las bases de datos dejarían de ser útiles. Los ajustes de rendimiento son constantes en los grandes sistemas de bases de datos para conseguir mejorar los tiempos de respuesta. Con los años los motores de bases de datos se han ido evolucionando para que sean ellos los que optimicen las consultas que generan los programadores y no al revés como se hacía antaño, aunque hay algunos motores que siguen requiriendo del programador para optimizar una consulta. Es decir, supongamos una consulta Select como la siguiente:

Select campos from tablas where condición_1 and condición_2;

¿Con que orden evaluar las condiciones para que se ejecute esta consulta y el sistema lo más rápido posible? En este ejemplo, al utilizar una condición AND, si la primera condición que evaluamos da como resultado un valor FALSO el motor ya no tiene que evaluar la otra. Si hubiera sido un operador OR el funcionamiento hubiera sido al revés, es decir, si la primera da VERDADERO ya no hay que evaluar la segunda condición. La conclusión varía en cada motor de bases de datos. En algunos se establece una precedencia y se hace recaer la optimización sobre el programador. Es decir, se evalúan las condiciones de izquierda a derecha o de derecha a izquierda y es responsabilidad del programador elegir el orden de evaluación en función de la probabilidad de obtener el resultado en menos tiempo. Si por ejemplo se estima que en evaluar la condición_1 el motor tarda 6 segundos y en evaluar la condición_2 unos 2 segundos y el motor utiliza precedencia por la izquierda entonces habrá que situar a la izquierda la condición de menos tiempo. Para entenderlo vamos a ver la tabla de tiempos posibles:

Tabla con la condición_1 (la pesada) a la izquierda
Tabla con la condición_2 (la ligera) a la izquierda

Como se puede ver, en una probabilidad similarmente distribuida de que cada condición pueda tomar valores TRUE o FALSE, es más optimo evaluar siempre primero la consulta ligera. Esto puede cambiar en función de las densidades. Es decir, en una clausula Where con operador AND en la que la condición ligera tenga una probabilidad del 99 % de ser TRUE y la pesada una probabilidad del 5 % de ser TRUE puede ser más eficiente utilizar una precedencia distinta.

Motores como Microsoft SQL Server u Oracle implementan optimización de consultas en tiempo de ejecución. Es decir, analizar las condiciones que pone el programador y eligen el orden de ejecución “correcto” según su estimación. Para ello utilizar reglas básicas, avanzadas e incluso datos estadísticos de las tablas de la base de datos en concreto.

***************************************************************************************
Artículo Publicado en la revista Hackin9 en Ene'08

- Time-Based Blind SQL Injection using Heavy Queries (I de II)
- Time-Based Blind SQL Injection using Heavy Queries (II de II)

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

lunes, enero 21, 2008

it's raining. it´s Cold. it´s London

Well, I am right now at London, I am posting from Palako’s Wi-Fi. I have a room for sleep this week, but I am not in the best place I would like to be, but friends here makes me feel happy!

Well , you don’t have to be afraid, I am not going to write this blog in English because my skills are not good enough for that. This one is just for fun.

Spectra se refuerza en el mercado de Invierno...aún un poco más

A mediados de Ocubre Novell se cepilló, se quitó de en medio, no llego a un acuerdo, no quería, no se llevaba bien o como queráis contarlo, que estas historias son siempre de dificil interpretación a un tipo que en el mundo de la seguridad de código tenía mucho que decir. El amigo Crispin Cowan se vio en la "pitua" calle.

Crispin es famoso en el mundo de la seguridad informática por sus trabajos con la primera implementación de la teoría de los canarios para proteger la memoria frente a ataques de sobrescritura (Stack Smashing Protection). Por su trabajo con Sardonix y sus comentarios sobre por qué falló Sardonix, por Inmunix y por último por AppArmor, proyecto que lideraba cuando estaba en Novell. Después de su despido montó MercenaryLinux para hacer sus cositas de trabajo.

Pues bien, un mercenario libre tan jugoso en el mercado de invierno y sin claúsula de rescisión que pagar de por medio ha debido ser una perita en dulce y, tras años jugando en el lado del bien, ha sido cautivado por el lado del mal y desde ahora, juega para Spectra.

Crispin va a trabajar, como anuncia Michael Howard, en el Core Windows Security Team en el área de la gente que curra con el MIC y UAC, así que va a sentirse como rana en charca.

¿otro que oye los cantos de sirena?

Saludos Malignos!

domingo, enero 20, 2008

Mi pequeña Black List

Hola a tod@s,

ya estoy cerrando las cosas en el trabajo, haciendo las maletas para ir a pasar frio y hambre. Salgo de una y me meto en otra sin tiempo de interludio...¡cómo me gusta no aburrirme!

Intentaré, si todo va bien, y consigo los medios necesarios, seguir basureando por esta zona del blog y conseguir acabar el otro proyecto que tengo en marcha: Llegar a vender 300 Calendarios Torridos. Las cosas van muy bien y estamos ya en los 200, pero... aún tengo una pequeña Black List creada con algunos de vosotros de los que espero/aba vuestra compra. Sé que habréis estado ocupados pero os sigo animando a que colaboréis con el Calendario Tórrido Solidario. ¡Ánimo compañeros!

Ahora voy a "evangelizar" en la tierra de los Beatles y van a ver lo que es un informático patrio!

Saludos... y sed buenos!

29.500

***************************************************************************************
Artículo publicado en Windows TI Magazine Ene'08: 29.500
***************************************************************************************

No salió el 29.500, o espero que no saliera porque si no me voy a tirar de los pelos por no haber comprado este número en la lotería de Navidad. Supongo que quedaría muy repartido el premio, que la Bruja de Oro vendería muchos premios, algo normal cuando se es la administración que más lotería vende (que me lo sé yo que me lo ha dicho mi profesora de estadística, que para más datos se llama doña Angustias), tampoco habrá sacado de pobres a la gran mayoría, y, supongo, que todos os quedasteis cerca, a un número del segundo, o del tercero, o de la pedrea, o…. Mejor no pensarlo, al fin y al cabo, sólo es dinero… ¿quién lo quiere pudiendo pedir salud, amor y ..? Bueno, al lio.

Ese numerito, es el que ISO puso, como muchos ya sabréis, a ECMA-376, el famoso OOXML y, también estaréis al tanto, de que en la votación de septiembre de 2007, no se aprobó el estándar,… por una serie de comentarios. Curiosamente, algo que no había pasado nunca en los procesos de estandarización, y eso lo dicen los que saben de esto, todos los que votaron en contra aportaron exactamente los mismos comentarios. ¿Los mismos comentarios? Sí, los mismos. Vaya, la verdad debe ser tan evidente ¿cierto? que todos han encontrado los mismos comentarios….mmm…aquí algo huele raro… o cómo dirían los fantásticos Martes y 13 que rebautizaron a mi pueblo como “La ciudad de la empanadilla”… aquí huele a muerto… y no va a ser OOXML. Anda, que curioso, y escritos con las mismas frases y expresiones. ¡Magia!

A pesar del ruido que se ha hecho aportando tantos comentarios, los responsables de los procesos de estandarización han clasificado los comentarios y han aplicado el comando DISTINCT, es decir, que cada uno de esos comentarios sea único. Curiosamente, el número medio de comentarios ha sido el mismo que la media de los que se vienen teniendo. Sí, en el proceso de PDF también ha existido la misma media de comentarios. 1 por cada 6 páginas del estándar.

Esto es porque ISO está para estandarizar y hacer cosas pensando en el avance de la tecnología. A pesar de que muchos deseen que, al más puro estilo NBA se cuelgue la camiseta de los formatos de documentos ofimáticos porque ISO 26300 le parezca único e insuperable como base, pivot o alero, los comités de estandarización están para ofertar alternativas accesibles para todos. Así, cuando se dice NO, no vale, hay que decir NO, por este problema técnico y este otro problema técnico, de tal forma, que si el comité que lo presenta, en este caso el TC45 de ECMA (recordemos que OOXML es ya un estándar abierto –ECMA376- por mucho que algunos quieran negarlo) y no Microsoft, al igual que en el caso de ODF fue OASIS y no IBM ni SUN, da una correcta respuesta técnica a los comentarios recibidos, hay que decir SÍ.

Sí, tendrán que decir Sí. Si en la reunión técnica se da respuesta a todos los comentarios no “se vale” el decir “Joooo, noooo”. No, en ese caso hay que decir Sí. Esa reunión es la BRM (Ballot Resolution Meeting). Y para esa reunión tooooodos, sí, absolutamente toooodos los comentarios NO técnicos han sido ignorados.

ECMA-376 está trabajando y duro en dar las respuestas que demandaron los comités de estandarización de los países que votaron y votarán en la BRM y, anunciaron a principios de diciembre que ya habían dado respuesta a más del 50% de los comentarios sugeridos. Así, entre otras cosas… ECMA-376 ha decidido aceptar el uso de fechas según el estándar ISO-8601. Bien, eso quiere decir que un comentario desaparece en la BRM.

Como este ejemplo tendremos los demás comentarios, como el “lio con las semanas”. ¿Mira que considerar ECMA-376 que las semanas comienzan en domingo o en lunes? Nada, nada, como deseaban los comentaristas ECMA-376 propone opciones que definirán cual es el primer día de la semana, y cuando es fin de semana.

O con la definición del leguaje del documento, en el que ECMA-376 usaba un conjunto de valores enteros para identificar el lenguaje aplicado a las diferentes regiones en un documento. Nada, nada, a partir de ahora, como se pedía, ECMA-376 propondrá que los “language tags” especificados deberán considerar una práctica internacional reconocida para representar lenguajes, la IETF BCP 47. IETF BCP 47 es una Best Current Practic de documentos que incorpora el uso de ISO 639 para lenguajes, ISO 15924 para scripts, e ISO 3166 para regiones. Todos contentos, pues con esta propuesta se responde directamente a recomendaciones de cuerpos de normalización de muchos países. Así que…¿borramos otro comentario?

Al final, gracias a todos los comentarios, OOXML será mucho mejor estándar. Todos estarán contentos pues habrán resuelto sus críticas. Además como será tan bueno gracias a las aportaciones de los comentaristas… ¿Quién no querría usarlo? Al final, el 29.500 va a ser un número con mucha fortuna… ¿para quién?

***************************************************************************************
Referencias:
3.520, 3.521 ..... y 3.522: El Mejor OpenXML
OpenXML: ECMA responde ya a 2/3 de los comentarios remitidos
***************************************************************************************

sábado, enero 19, 2008

Cuestionario de Autoevaluación

Ayer tuve la suerte de que penyaskito, que vino a visitarme a la cena akelarre, me aompañase a una de las clases de las prácticas del CAP. Allí pudo constatar que es cierto que yo me lo paso genial con un grupo de gente encantador. Hoy me examino de la parte teórica y me ha tocado leer (en diagonal) tres libros.

El nivel de extrañeza con cada algunos cosas que he ido leyendo y ya, cuando he llegado a este cuestionario, no he podido más y lo he tenido que copiar aquí. No he puesto una coma ni un paréntesis, viene así en uno de los libros. Habla sobre el proceso de evaluación continúa. Sé que muchos de los que leéis este blog tenéis sacado el CAP...¿me daís la respuesta correcta? Los demás, podéis jugar a ver si sacáis nota.

Saludos Malignos!

Cuestionario de Autoevaluación

1.- ¿Por qué es la evaluación un lugar clave para la indicación/definición de racionalidad y honradez en la tarea docente?

a) Porque es el lugar en el que coinciden los intereses de todos los afectados por los resultados de los procesos de enseñanza/aprendizaje.

b) Porque la legislación cuida muy especialmente este momento del ciclo didáctico, muy por encima de lo que hace con la programación y la metodología, momentos en los que deja muchos más espacio al sano (o enfermo) albedrío porfesional de los docentes.

c) Porque sería poco inteligente y una inmoralidad inaceptable, no tratar de averiguar el nivel de calidad/eficacia de una actividad profesional tan decisiva para el futuro de los individuos y de la sociedad, aparte de tan costosa para el erario público.

d) Porque la inteligencia y la honradez van siempre justas en la vida personal y en el desempeño profesional de los individuos.

2.- La evaluación de los procesos del aprendizaje es fundamental,

a) Porque la evaluación de los productos carece de toda utilidad social, científica o pedagógica.

b) Porque la evaluación de los productos sería especialmente costosa, en tiempo y en presupuesto, en comparación con el coste de la evaluación de los procesos del aprendizaje.

c) Porque la evaluación de los procesos permite intervenir en apoyo del aprendizaje, antes de la calificación final de los alumnos.

d) Porque los profesores carecen de la formación necesaria para llevar a cabo evaluaciones atendiendo a los productos del aprendizaje.

viernes, enero 18, 2008

Agenda de Estudios!
Anótalo todo en tu Calendario Tórrido

Enero

23/01 - Sevilla : Live Technology Tour

David Cervigón, José Parada y Pedro Laguna hablarán de Window Server 2008 viendo Terminal Services, Core Server, Virtualizacion, WSS, Forefront, System Center y temas de Seguridad. Todo el día, cafe y catering por la face.

25/01 - Pamplona : Navarradotnet Primer Aniversario

Unai Zorrilla (MVP de Compact Framework), Rodrigo Corral (MVP de Team Systems y administrador de Geeks.ms), David Marzo, Rubén Bernández, Babu y David Gil estarán hablando sobre temas de desarrollo por la tarde. Biko2 se invita a merendar.

28/01 a 01/02 - Madrid: Campaña de Hands On Lab

- Office SharePoint Server 2007 y PerformancePoint 2007 impartidos por Rubén (MVP SharePoint Server).
Su blog: http://www.puntocompartido.com.

Febrero

04/02 a 08/02 - Madrid : LegalízaIT

Juan Luís Rambla (MVP Windows Security) impartirá una formación sobre como hacer cumplir la LOPD, la LSSI, etc... a tus sistemas informáticos. Se elaborarán diferentes escenarios donde se tendrá como objetivo resolver los planteamientos legales implícitos y evaluar que Tecnologías podrían aplicarse para la correcta adecuación.

05/02 - Online : Normas y reglamentaciones aplicables a Tecnologías Informáticas.

El amigo Juan Luís Rambla (MVP Windows Security) se curra un par de Webcast en el programa Technet para hablar de legislación e informática. Como aplicar normas en nuestros sistemas informáticos. Juan Luís Rambla, además se ha abierto un blog sobre Legalidad Informática para hablar de estos temas: http://legalidadinformatica.blogspot.com

07/02 - Online : Introducción a LOPD (Ley Orgánica de Protección de Datos)

Segundo de la serie, esta vez dedicado a la LOPD.

11/02 a 22/02 - Madrid : Campaña Hands On Lab

Dedicadas a Windows Vista (MDOP, Softgrid, Administración, Deployment y Seguridad) y Servidores Forefront (ISA Server 2006, Server Security & Client Security)

26/02 y 27/02 - Madrid : Lanzamiento de Windows Server 2008, Visual Studio 2008 y SQL Server 2008

Es el evento del año y allí estarán todos, David Cervigón, José Parada,(un largo etcetera) y tal vez hasta yo esté el último día con una sesión de seguridad en Windows Server 2008 y NAP con el abuelo.

Marzo

03/03 a 07/03 - Sevilla : Campaña Hands On Lab

Joshua Saenz (MVP Exchange Server) pasará una semana en Sevilla impartiendo Hands On Lab dedicados a Exchange Server 2007 y Windows Vista. Joshua Saenz escribe sobre estos asuntos en su blog: http://www.joshuasaenz.com

06/03 - Salamanca : Asegura tus dominios

Alejandro Martin (el zamorano!) y David Cervigón darán una sesión para profesionales sobre como se rompe una web y como hacer cosas frikis con el Windows Server 2008.

Saludos Malignos!

Comienza el día

Es tarde, son las 10 de la noche, es hora de acostarse. Sé que suena de locos, pero como todos sabéis, todo es relativo. Es una hota muy tardía si te has levantado a las 6 de la mañana y llevas un día intenso. Soy una gallina, me acuesto pronto, me levanto pronto. Mi cerebro nunca funcionó por la noche, la noche me confunde. Mi cerebro rinde por la mañana. Es una bomba que se activa de inmediato. Sucede tal que así.

Se activa la chispa, se abre un ojo, aún no son las seis de la mañana, apaga el despertador que aún no ha sonado, arriba. Enciendes el móvil para recibir los SMS. En ellos suelen estar las llamadas perdidas de los despistados que no saben que lo suelo apagar muy pronto y los mensajes de consultas o comentarios varios. Al mismo tiempo enciendo el ordenador, que vaya cogiendo Wifi. El movil ha recibido los SMS y se ha conectado con el GPRS a Exchange (a ver si consigo el nuevo con 3G). El Vista ya ha arrancado y habemos wifi, conectate al SIMP para arranca después el messenger para ver el correo de hotmail, sincroniza los RSS, descarga el correo con RPC sobre HTTPs (4Gbs de buzón ocupado!, tendré que borrar mails....algún día). El messenger está activo, a ver, a ver, uy, que de gente desconectada,... mmm 1 mail de Viagra, 2 de alargamiento de pen1s, dos de colegas, una cadena con un ppt..., el Exchange ha conectado y tengo 23 mails que ya tengo descargados también en el movil con el Active Sync. Coño! Rajoy se carga a Gallardón! joder, la hostia! El Real Madrid fuera de la copa por un gol de un señor bajito!, la repanocha! Sun compra a MySQL y... me cago en to!! Oracle ha comprado a Bea! ¿Es que uno no puede descansar tranquilo sin que el mundo se desmorone? Así no hay quién descanse. A ver, comentarios en el blog...7.... "eres guay", ..."hola que tal"...siguiente.. "me cago en tus muelas maligno y en la madre que parió a M$"... (anotar responder con banderita negra en el exchange y todo mi amor... "chema soy una chica rubia buenorra que quiero ligar contigo"... (ese es penyasquito vacilandome, seguro... ni puto caso). Vale, abrimos el word... ¿Cuanto quiero currar hoy? if poco then "post sobre Oracle e integración UNIX, fallo de seguridad en tablespaces transportables" a tomar por culo, si pongo eso tengo entre 1 y 3 comentarios y día de relax... elsif mucho then "Me cago en Pingüinix y la cueva de Superman dónde se fraguó"... 58 comentarios..., ale cachondeo... "La puta, el puto y el burro de la flauta"...y así nos reimos todos de lo poco sexis que somos los informaticos (ya sean picateclas, fontaneros o disaigners).

Son las 7 de la mañana, el día ha comenzado.

Saludos Malignos!

jueves, enero 17, 2008

Mini-Tutorial de Esteganografía/Estegoanálisis.
Técnica Sustitutiva LSB by Alfonso Muñoz

FASE 3 - Parte Esteganografía

Estimados "malignos", hace aproximadamente un mes. Chema y yo coincidimos en el CIBSI2007, donde presentaba oficialmente (más o menos) mis impresiones sobre mi herramienta estegoanalítica beta StegSecret. Chema me comentó que le resultaría muy interesante publicar algún que otro tutorial sobre esteganografía/estegoanálisis, ya que a "sus chicos..." les gustan las sensaciones nuevas ;)

Aprovechando el Reto Hacking V se introdujo una pequeña imagen con información oculta de forma secuencial en los LSB (Least Significant Bit) de cada pixel de la imagen, para probar un poco al personal y como escusa para introducir este mini-tutorial.

Empezemos con un mini-tutorial introductorio sobre esteganografía/estegoanálisis y técnicas sustitutivas LSB aplicadas a ficheros BMP, sin base matemática, de momento, en un futuro (maligno mediante) más...

El término Esteganografía se define como la ciencia y/o arte de ocultar una información dentro de otra, que haría la función de “tapadera” (estegomedio o cubierta). En la criptografía, en cambio, no se oculta la existencia del mensaje sino que se hace ilegible para quien no esté al tanto de un determinado secreto (la clave). En actualidad, es muy interesante la combinación de ambas.

El término Estegoanálisis se define como la ciencia que estudia la detección (ataques pasivos) y/o anulación (ataques activos) de información oculta en distintas tapaderas, así como la posibilidad de localizar la información útil dentro de la misma (existencia y tamaño).

Dependiendo del proceso empleado para ocultar la información, su recuperación puede ser inviable, correspondiendo su inversión a la ciencia del criptoanálisis. Piensese, por ejemplo, en el cifrado de una información utilizando un algoritmo criptográfico “seguro” (¿?) y la utilización de un PRNG (Pseudo-Random Number Generator) para seleccionar las posiciones donde se ocultara la información dentro de un estegomedio dado al aplicar una técnica sustitutiva, por ejemplo, LSB.

El estegoanálisis en casos muy concretos se convierte en una tarea trivial, pero en general, es un tema complejo y de difícil aplicación, principalmente por el número enorme de medios de información que existen (cantidad) y por la variedad de técnicas esteganográficas en estos medios.

En este mini-tutorial introductorio voy a centrar la atención en el estegomedio más utilizado: las imágenes digitales, y especialmente, los ficheros BMP por su sencillez.

Una de las técnicas más antiguas y difundidas es la técnica de sustitución LSB (Least Significant Bit). Esta técnica se basa en dos principios simples:

a) La modificación de los bits menos significativos de la codificación de los pixeles de una imagen no introduce un "ruido visual", en general, suficiente para levantar sospechas a una persona que vea una imagen que contiene información oculta.

b) La información almacenada "naturalmente" en los LSB es aleatoria, con lo que su modificación para introducir información oculta no proporcionaría pistas adicionales a un analista.

La primera afirmación a), en general, se cumple, pero la segunda es falsa, más adelante veremos porqué.

Existen distintas maneras de aplicar una técnica sustitutiva LSB dependiendo del estegomedio elegido, en un formato BMP, en general, en la codificación de los pixeles de la imagen, en un fichero GIF, por ejemplo, a los indices que apuntan a la paleta de colores, en un formato JPEG a los coeficientes cuantificados DCTs, etc, etc.

En el Reto V escogimos el formato BMP (cuando hablo de BMP me refiero aquí al Windows BMP) por ser, en general, un formato sin compresión con lo cual permitiría a cualquiera que intentará detectar la información oculta acceder directamente a la codificación de los pixeles. Además, la información se ocultó en el 1erLSB de cada octeto de la zona de los pixeles, con lo que más fácil imposible....

Es posible utilizar cualquier bit de la codificación de un pixel para ocultar una información, pero el ruido introducido, por ejemplo, visual, el bastante notorio para los bits de mayor peso.

[Inserción/Extracción de información]

La cabecera de los ficheros BMP: Tipo (2 byte) + Tamaño Archivo (4 bytes) + Reservado (4 bytes) + Distancia a los pixeles (4 bytes), incluye información para posicionarnos en la codificación de los pixeles de la imagen. Dependiendo de la resolución de la imagen, los pixeles pueden estar codificados de diferentes formas: 1,4,8,16,24,32 bits/pixel.

Por ejemplo, en una resolución típica, de 24 bits/pixel, cada pixel de la imagen se representa con 3 octetos, en este caso uno para el nivel de rojo, otro para el nivel de verde y otro para el nivel de azul, escala RGB.

La codificación de los pixeles es importante a la hora de decidir como ocultar un información, porque esto puede ayudar a dificultar la detección a un potencial estegoanalísta. Es más, puede engañar a algoritmos de detección muy precisos.

En general, la técnica sustitutiva LSB se puede aplicar a los pixeles de la forma que se desee y en el orden que se quiera.

De forma secuencial, pseudoaleatoria, mezcladas, etc. Por ejemplo, en una imagen de 24 bits/pixel (3 octetos), podríamos ocultar en ciertos pixeles sólo información en su octeto de Rojo, en otros en el de azul, etc.

[Consideraciones mínimas de seguridad]

Hace unos años se demostró que la aplicación de un técnica sustitutiva LSB sobre los pixeles de una imagen, independientemente de como se seleccione los pixeles, deja rastros traceables, mayores cuanto mayor sea el mensaje oculto.

A lo largo de la joven historia del estegoanálisis, algunos ataques han mostrado su validez, unos mejores otros peores.

Uno muy clásico son los ataques Visuales que mediante filtrados alertan visualmente de la presencia de información oculta, (aunque depende de la imagen) presenta resultados notorios, por ejemplo, cuando una imagen almacena información oculta aplicando LSB de forma secuencial sobre alguna zona de pixeles de la imagen. De hecho, aunque la información almacenada es muy pequeña si haceis un ataque Visual (LSB-0) con StegSecret a la imagen del RetoV, observareis a bajo a la izquierda un "pequeño patrón".

Por cierto, os lanzo una pregunta facil-facil, ¿si modificamos los LSB al principio del fichero BMP porqué al hacer el ataque Visual vemos modificaciones en la parte de abajo de la imagen y no en la de arriba como debería ser?

Aunque necesitaría un post, por cada uno, para explicarlos medianamente, en general, los algoritmos estegoanalíticos más famosos son los algoritmos estadísticos/estimadores, que se centran en la detección de información oculta con una cierta técnica de ocultación más o menos sofisticada. Existen otros tipos de algoritmos nuevos más prometedores.. pero esto en otra ocasión.

Voy a comentar brevemente 2 algortimos estadísticos/estimadores (ver StegSecret).


El ataque ChiSquare, se basa en estudiar las frecuencias de una pareja de valores y aplicarles un test estadístico chiSquare.

Dado unas condiciones de partida, analizando como se parecen los valores de la pareja se puede estimar la probabilidad de modificación de bits de la imagen, y en consecuencia detectar la presencia de información oculta, y estimar el tamaño de la información enmascarada. Es útil, por ejemplo, para una detección de LSB secuencial o LSB pseudoaleatorio cuando hay más de un 97% de ocupación(aprox) de la cubierta. Dependiendo de como se eliga los valores de la pareja y en que zona de la imagen se aplique el ataque ChiSquare puede tener éxito en su detección o no...

El ataque RS (RS viene del nombre de clasificación de grupos de pixels, R=Regular, S=Singular) es un ataque muy preciso para la detección de mensajes ocultados de forma pseudoaleatoria. Precisión, en torno, a modificaciones de 0'003 bits/pixel.

Cualquiera de estos ataques se pueden aplicar a distintos formatos gráficos y con diferentes codificaciones. Tipicamente, se puede ver su utilidad en imágenes RGB. En general, yo no recomiendo utilizar imágenes para ocultar información, en un futuro justificaré más porqué...

De todas formas, si un usuario lo desea existen unas recomendaciones mínimas de seguridad a cumplir:

a) La elección de la cubierta es muy importante, única por cada transmisión. Se recomienda imágenes de alta resolución (imágenes escaneadas o tomadas con cámaras digitales) o imágenes en escala de grises.

Por ejemplo, la imágen utilizada para el Reto V es una mala imagen. Al ser un imagen con amplias zonas de colores uniformes la sustitución LSB es apreciable en la imagen original. ¿Os habiais dado cuenta?.

b) Si aplicamos una técnica sustitutiva (existen otras, todo a su tiempo) a menor información ocultada menor es la probabilidad que las alteraciones producidas permitan a un analista detectar la presencia de información oculta. Basicamente esto se puede hacer de dos maneras:

b1) Ocultando menos información. Esto se puede hacer de multiples formas, y no necesariamente usando compresión. Existen procedimientos muy útiles de matrices de codificación, etc.... (hablaremos en un futuro).

b2) Distribuyendo una información en más de una cubierta. Por ejemplo, StegPage.

Y hasta aquí este breve tutorial.

Me gustaría, aprovechar y comentar unas cuestiones mínimas sobre StegSecret relacionadas con comentarios de gente en Internet que he estado leyendo y, que son erróneas.

En primer lugar, StegSecret es una herramienta de detección (estegoanálisis) con lo cual no se tiene que comparar con herramientas de ocultación (esteganografía)... En segundo lugar, StegSecret implementa, en general, dos tipos de procedimientos. Detección de herramientas esteganográficas concretas que dejan rastros traceables, por ejemplo, EOF y LSB. Y por otro lado, algoritmos visuales y estadísticos que se centran en técnicas de ocultación (no en herramientas concretas que la utilizan), por tanto es genérico. Se centran en LSB secuencial y pseudoaleatorio.

Leyendo por ahí, veo que la gente no ha comprendido muy bien que es una técnica EOF. Asique lo indico rapidamente. Existen multitud de formatos de ficheros que si añades una información al final del mismo, esto no altera su funcionamiento. Pobrad a añadir información a un: .exe, .doc, .ppt, .wav, .mp3, .jpg, .png, .gif, .bmp, etc, etc.

Un técnica muy tontorrona pero que es más o menos dificil de automatizar su detección, en StegSecret, por ejemplo, se analiza la estructura de ciertos formátos gráficos para detectar esta presencia de información, independientemente de la herramienta de ocultación que la haya puesto.

Bueno dicho lo dicho, espero que haya sido útil este minitutorial, no muy básico y nos veremos en un futuro.... o no.

Alfonso Muñoz
http://stegsecret.sourceforge.net/

miércoles, enero 16, 2008

Solucionario Reto Hacking V por Dani Kachakil

Introducción

Este documento describe una solución al Reto Hacking V de Informática 64 que se publicó el 14 de diciembre de 2007 en la siguiente dirección web:
http://retohacking5.elladodelmal.com/

Pistas

Unas horas antes del comienzo del reto se publicaron las pistas en este post. Como comentario personal, si alguien fue capaz de intuir algo útil partiendo de estas pistas, aparte de felicitarle por ello, yo le recomendaría que acudiera a un especialista para que le trate el enredo neuronal que pudiera tener. Otra cosa es que se pueda tratar de justificar el texto de cada pista después de haber dado con la solución, pero no es el caso. Como a mí no me resultaron de ninguna utilidad (más bien al contario, alguna me confundió un poco), mejor vayamos directamente a la resolución del reto.

Parte 1: Las tres preguntas

Tras registrarnos rellenando el formulario de alta y validarnos con los datos de acceso elegidos, accedemos a la primera fase del reto. Lo primero que observamos es que el uso de Adobe Flash es evidente, por lo que en casos como este nunca está de más tener a mano un descompilador (por si acaso, aunque su uso no era imprescindible).La primera fase consistía en responder correctamente a tres preguntas consecutivas. Viendo el número de respuestas posibles, la probabilidad de pasar esa fase mediante prueba y error era demasiado baja y no parecía el método más razonable, por lo que analizamos el tráfico HTTP que está generando el Flash para detectar posibles vulnerabilidades. Esto lo podemos lograr de varias formas: por ingeniería inversa (examinando el código descompilado del Flash), intercalando un proxy (por ejemplo, Odysseus) o capturando paquetes de nuestra propia interfaz de red (localizando las peticiones GET y POST).

Veamos algunas peticiones realizadas (Px) junto con sus respectivas respuestas por parte del servidor (Rx) y la descripción o comentarios al respecto (Cx):

- P1 -> http://retohacking5.elladodelmal.com/Privado/ObtenerDatos.aspx?tipo=numrespuestas&rand=123.45678

- R1 -> contenido=3C1 Número que aparece en la frase "Eres el pringao número X que lo intenta"

- P2 -> http://retohacking5.elladodelmal.com/Privado/ObtenerDatos.aspx?tipo=pregunta&rand=123.4567890

- R2 -> contenido=¿Para que quiere un pastor un compilador?C2 Texto de la pregunta actual

- P3 -> http://retohacking5.elladodelmal.com/Privado/ObtenerDatos.aspx?tipo=respuesta&rand=1234

- R3 ->contenido=276;Creo que he visto un mono de tres cabezas;El rabino de tu hermana!;El caracol verde;Ha sido él!;Joder, no entiendo nada;La vida es bella, no te hagas preguntas existenciales;La culpa es del gobierno;La casa por el tejado;Me humillo ante ti, ¿y me faltas al respeto?;Me estas vacilando, y tengo unas ganas de darte dos host...;No hablo tu idioma;No;No se si he visto un mono de una cabezas;Pa orejas las de mi suegra;Por el culo te la hinco!;Rumenigue;Sí, claro y también me agacho a por el jabón;Sí;Saca de ahí la cabeza;jaja... muy buena... úñaaao!!!;mmmm... estoy pensando... mmmm;¡3 con las que saques!;¿Y a ti que más te da? ¿Nos fumamos algo?;¿Qué?, no consigo entenderte;¿Donde dices?;¿Eso viene en educación para la ciudadanía?;¿Qué quieres que te diga?, el glamour;¿No lo sabes? ... paleto!;Úbuntu;C3 Texto de las respuestas posibles, separadas por punto y coma...

- P4 -> http://retohacking5.elladodelmal.com/Privado/ObtenerDatos.aspx?tipo=crespuesta&datos=276&rand=12

- R4 -> contenido=0C4 El servidor comprueba si la respuesta a la pregunta es correcta. Devuelve 0 en caso de haber fallado.

Las respuestas mostradas son un ejemplo de un caso concreto. Lo primero que observamos es que cada vez que se realiza una nueva petición, aunque tenga exactamente los mismos parámetros, es muy probable que la respuesta del servidor sea completamente diferente y sin relación aparente con la anterior, debido a que el código del servidor utiliza una secuencia aleatoria independiente de los parámetros.

Todas las respuestas parecen ser completamente independientes del parámetro "rand", cuya única utilidad seguramente sea la de evitar los inconvenientes que podrían tener los mecanismos de caché con el Flash ejecutándose en el lado cliente, por lo que podremos prescindir de dicho parámetro en el resto de nuestras pruebas.

Tras realizar un par de pruebas de manipulación de parámetros sin éxito, pensé que si fijaba una de las respuestas posibles y repetía la comprobación de la respuesta realizando peticiones sucesivas, al final terminaría acertando la primera pregunta y el servidor me debería devolver como respuesta "contenido=1" y, efectivamente, así fue. Me extrañó que al volver a repetir dicha petición (P4) una y otra vez, ese valor nunca volvió a valer cero (incluso llegó a valer 2), así que supuse que la vulnerabilidad de esta primera fase tenía que estar basada en haber implementado una funcionalidad importante en el lado cliente, cuando debería haberse implementado en el servidor.

Un programador podría asumir que las llamadas a sus procedimientos se realizarán siempre en el orden en el que las programó, por lo que no sería tan extraño pensar que el fragmento de código que resetea el número de aciertos esté en el método que obtiene las respuestas y que a su vez este método sea invocado siempre que se falle alguna respuesta. En teoría dicho código sería perfectamente funcional y válido, pero tiene un problema potencial bastante grave. Al igual que ocurre con JavaScript o VBScript, por ejemplo, el código que ejecuta Flash es una secuencia de acciones que puede ser usada para implementar parte de la lógica de la aplicación global. El problema aparece porque, a diferencia de la lógica implementada en la parte del servidor, la que se ejecuta en el lado cliente es susceptible de ser manipulada con relativa facilidad.

A los pocos minutos de haber comenzado el reto y de haber realizado estas pruebas tan sencillas, comprobamos que la respuesta final es "contenido=2", pero aún no sabemos cómo pasar a la siguiente fase. Si descompilamos el Flash, observamos que la última acción que realiza el código es la de redirigirnos de nuevo a la misma página "Nivel1.aspx". Como el servidor almacena la fase en la que estamos de forma permanente, también podríamos haber superado la fase sin más que volver a autentificarnos. Superar esta fase era así de sencillo (repetir P4 unas cuantas veces).

Parte 2: Dolor de espalda

En esta fase aparecemos al lado de una enorme cabeza de mono, en la que se observa una inscripción en uno de sus dientes. Pulsando sobre ese diente nos aparece un texto ininteligible, indicándonos que parece estar en cirílico.

Evidentemente no se trataba de cirílico (porque dicho alfabeto sería distinguible a simple vista), sino de uno de los cifrados más simples que nos podemos encontrar: el cifrado César, que se usaba ya desde hace más de 2.000 años, consistente en desplazar el alfabeto completo N posiciones, es decir, sustituir cada letra por la que está N posiciones a la derecha de la misma. En este tipo de cifrado no vale la pena realizar ningún tipo de criptoanálisis, ya que siempre acabaremos antes probando todas las posibilidades (25, excluyendo la "ñ"). El algoritmo es tan sencillo que no nos costará encontrarlo implementado online en alguna web como ésta, en la que descifraremos el mensaje poniendo como clave "D" (es decir, N=3 posiciones).

ho pdsd txh wh oohydud d uhvroyhu ho sxcoh vh hqfxhqwud hq od fdushwd
el mapa que te llevara a resolver el puzle se encuentra en la carpeta

uhfxuvrv gh od xqlgdg sulqflsdo
recursos de la unidad principal


Ahora que tenemos el texto en claro, comprobamos que se trata de una simple pista y que con esto no es suficiente para pasar a la siguiente fase, por lo que tendremos que seguir buscando. De todas formas, la pista nos lleva a pensar que nuestro objetivo es el de conseguir algún fichero con un mapa en la carpeta "c:\recursos".

Semanas antes de comenzar el reto, estaba leyendo la PCWorld de noviembre cuando me encontré con un artículo, que me resultó bastante curioso, sobre la extracción de ficheros usando técnicas de Blind SQL Injection. La técnica que describía el artículo era tan explícita y fácil de implementar que dudé bastante si esa parte podría aparecer en el reto después de haber sido publicada su solución. El coste de implementar una herramienta para SQL Server 2005 era tan bajo que no dudé en hacerla en su día y comprobar que el método funcionaba perfectamente. El autor colgó en su blog un post con dicha parte del artículo pocos días después de haber comenzado el reto (por cierto, casualmente, el autor del artículo es Chema Alonso)

Habiendo implementado ya la herramienta, el único paso que nos falta para extraer un fichero es localizar una vulnerabilidad de Blind SQL Injection. En la escena de la cabeza del mono aparecen varios objetos que podemos ir pulsando, aunque siempre obtendremos la misma respuesta: "No pienso agacharme a coger ese objeto". A nivel interno, comprobamos que este mensaje se obtiene tras realizar una petición por HTTP como la que se muestra en la siguiente URL:

http://retohacking5.elladodelmal.com/privado/obtenerdatospaso2.aspx?idobjeto=2

Para comprobar si ese parámetro es vulnerable, simplemente le inyectaremos una condición que sepamos que siempre es verdadera (and 1=1), verificando que la respuesta no varía. A continuación debemos hacer lo mismo con una condición falsa (and 0=1) y comprobar que la respuesta sí varía. En este caso, observamos un tercer comportamiento que nos puede ser de utilidad: si se produce un error en la ejecución de la consulta, el resultado devuelto es diferente de los casos anteriores.

- P5 -> http://retohacking5.elladodelmal.com/privado/obtenerdatospaso2.aspx?idobjeto=2

- R5 -> contenido=No pienso agacharme a coger ese objeto

- C5 -> Petición normal

- P6 -> http://retohacking5.elladodelmal.com/privado/obtenerdatospaso2.aspx?idobjeto=2 and 1=1

- R6 -> contenido=No pienso agacharme a coger ese objeto

- C6 -> Inyectando una condición verdadera, la respuesta no varía

- P7 -> http://retohacking5.elladodelmal.com/privado/obtenerdatospaso2.aspx?idobjeto=2 and 0=1

- R7 -> contenido=No conozco el objeto

- C7 -> Al inyectar una condición falsa, la respuesta ha variado

- P8 -> http://retohacking5
.elladodelmal.com/privado/obtenerdatospaso2.aspx?idobjeto=2xxx

- R8 -> contenido=

- C8 -> Si se produce un error en la consulta, obtenemos un tercer tipo de respuesta (en blanco)

Una vez localizado el parámetro vulnerable solamente debemos aprovecharlo para aplicar la técnica de extracción, aunque previamente necesitaremos conocer la ruta completa, así como el nombre y la posible extensión del fichero. Para ello podemos inyectar una cadena que verificará que el fichero no esté vacío y que además tengamos acceso al mismo con el usuario actual con el que se esté ejecutando la instancia del motor de base de datos. Teniendo en cuenta la pista que hemos descifrado, iremos probando con diferentes nombres y extensiones de fichero hasta que la siguiente consulta nos devuelva el resultado positivo (R5 o R6):

... and (select datalength(c) from openrowset(bulk 'c:\recursos\mapa.jpg', single_blob) as t(c))>0

Ahora que ya tenemos localizado el fichero que buscamos, el último paso de esta fase consistirá en ir obteniendo su contenido byte a byte. Puesto que se trata de un fichero binario, la forma más eficiente de obtener su contenido a ciegas es la de proceder mediante búsqueda binaria para cada uno de los posibles valores de cada byte (de 0 a 255). Para conocer el tamaño del fichero podemos aplicar la misma técnica sobre el resultado de la consulta con la que determinábamos la existencia del fichero, usando la función datalength.

A la hora de implementar la herramienta, hemos de tener en cuenta que toda la aplicación web utiliza un mecanismo de autentificación y que el identificador de sesión se almacena en la cookie de ASP.NET llamada .ASPXAUTH, la cual deberemos adjuntar al enviar cada petición. Puesto que el proceso será bastante largo (3675 bytes que requerirán más de 30.000 peticiones), hemos de tener en cuenta que la sesión podría caducar en cualquier momento o que el servidor podría dejar de responder de forma temporal por cualquier circunstancia, así que no estará de más el ir volcando los datos a disco cuando esto suceda y hacer que la herramienta permita que la descarga del fichero se reinicie partiendo desde la posición en la que quedó. Utilizaremos una inyección como la que se muestra a continuación (sustituyendo los parámetros que se indican entre llaves por los valores oportunos):

... and (select substring(c,{posicion_byte},1) from openrowset bulk 'c:\recursos\mapa.jpg', single_blob) as t(c)) > {valor}

Por la extensión del fichero y por su cabecera deducimos que se trata de una imagen en formato JPEG, por lo que tampoco es absolutamente imprescindible obtener el contenido completo del fichero si tenemos un poco de suerte o contamos con alguna herramienta de visualización o edición gráfica más o menos decente, ya que con los primeros 2800 bytes ya podemos visualizar lo que se esconde en esa imagen, es decir, la URL que tendremos que teclear para acceder a la tercera fase. Omitiendo los 5 primeros caracteres de la página, esta era la puerta que nos llevará a la última fase:

http://retohacking5.elladodelmal.com/privado/?????fase_3r3tohacking5.aspx

Parte 3: Robando a CaraLimon

En esta ocasión aparecemos al lado de una choza y de una cabeza que esconde otro texto en "cirílico" que descifraremos utilizando el mismo tipo de cifrado y el mismo desplazamiento que la fase anterior.

ho qrpeuh gho ilfkhur hv pdsduhsolfdhqflulolfrbuhgxflgr.eps
el nombre del fichero es mapareplicaencirilicoyreducido.bmp

Parece que de nuevo la cosa va de obtener ficheros, pero esta vez no será necesario pasar por el servidor de base de datos como hicimos con la fase anterior (reconozco que fue lo primero que estuve intentando un buen rato sin éxito). Se trataba de aplicar el principio KISS, es decir, ir directamente a la solución más simple, sin complicarse la vida innecesariamente. Solo teníamos que descargar el fichero directamente desde el servidor web, metiendo ese nombre en la URL del navegador.

http://retohacking5.elladodelmal.com/
/privado/mapareplicaencirilicoyreducido.bmp


La imagen que obtenemos tiene unas dimensiones bastante reducidas (50x32 píxeles), tal y como se indica en su nombre. Al abrirla vemos un dibujo de un supuesto mapa con un interrogante y una serie de puntos grises bastante dispersos. Como ya no tenemos más pistas a las que agarrarnos, todo apunta a que la imagen esconde algo que no vemos por más que la ampliemos. Se trata de un mensaje oculto de alguna forma.

En el mundo de la esteganografía podemos encontrar infinidad de técnicas de ocultación de información, no solo en imágenes sino en casi cualquier tipo de medio que nos podamos encontrar (audio, vídeo, etc). Es más, podemos encontrar muchísimos ejemplos que nada tienen que ver con la informática, debido a que estas técnicas se empezaron a aplicar desde hace unos cuantos milenios.

En el caso que nos ocupa, partiremos de la hipótesis de que existe un mensaje oculto en el fichero BMP. Si analizamos la estructura del fichero observamos que comienza por una cabecera de 54 bytes que define su formato (tamaño, profundidad de color, etc), a continuación le siguen 1020 bytes que definen la paleta de colores (4 bytes por cada uno de los 255 colores que contiene) y por último nos encontramos con la información gráfica, en la que cada píxel se representa con un byte (cuyo valor se usa como índice que apunta al color que se encuentra en esa posición de la paleta).

Aunque en general se podría haber ocultado cualquier tipo de fichero en formato binario, existen dos tipos de información que serían más fácilmente detectables dentro de un fichero BMP: otra imagen y texto plano.

En general, la técnica más común para ocultar información consiste en aprovechar los N bits de menor peso de cada byte del fichero (excluyendo la cabecera), de forma que se podrían utilizar uno o varios bits de cada byte. Evidentemente, cuantos más bits se utilicen para ocultar información, mayor será la diferencia con la imagen original. Tras aplicar un filtro de plano de bits para cada uno de los 8 posibles bits, descartamos la opción de que se trate de una imagen oculta dentro de otra, ya que la información se habría revelado visualmente de forma inmediata. Por tanto, parece que todo apunta a que se trata de un texto oculto (probablemente en formato ASCII).

Por empezar por el caso más simple, asumiremos la hipótesis de que solamente se utiliza uno de los bits y que este bit es el de menor peso. De esta forma, por cada 8 píxeles del fichero se consigue ocultar un byte de información, variando la imagen de una forma prácticamente imperceptible.

Llegados a este punto conviene detenernos un poco y reflexionar sobre nuestras suposiciones, ya que estamos asumiendo como ciertas demasiadas hipótesis al mismo tiempo. Hasta ahora no tenemos ningún indicio real de que la imagen contenga información oculta. En caso de tenerla, no sabemos si es un texto y tampoco podemos garantizar que utiliza un único bit de cada byte. En caso de ser así, tampoco podríamos asegurar que se tratara del bit de menor peso. No sabemos si el mensaje estará en formato ASCII. ¿Y si el algoritmo utiliza solo los bits de los bytes pares, o un bit de cada tres bytes, o cualquier otra implementación perfectamente válida que se nos pudiera ocurrir? A lo mejor la solución no es tan fácil como podríamos pensar.

Parece que lo más razonable en este momento es aplicar un algoritmo de fuerza bruta que vaya probando la mayoría de las combinaciones posibles, ya que en el momento en que falle cualquiera de las hipótesis, no obtendremos ningún tipo de información válida. Para no detallar innecesariamente cada una de las pruebas que implementé, vamos a resumirlo en que fui metiendo un bucle dentro de otro, juntando los bits en grupos de 8 para formar bytes. Por otro lado, le aplicaba una función que sumaba un punto por cada byte que coincidiera con el valor ASCII de cualquier letra minúscula (97-122), mayúscula (65-90), espacio (32) o dígito (48-57). Los casos de prueba que obtenían más puntos, contenían más caracteres del alfabeto y son los que revisaba de forma manual para ver si había algo legible.

Debido a que el nombre del fichero hacía referencia al cirílico, tampoco sería descabellado pensar que además de estar oculto, el mensaje estuviera también cifrado con el mismo algoritmo que aparecía en dos de las tres fases (cifrado César). De cualquier forma, estaríamos buscando valores dentro del mismo alfabeto, por lo que el método descrito funcionaría igualmente.

A pesar de todas las posibilidades que contemplé, al principio no obtuve ningún texto legible en ninguno de los casos, porque no tuve en cuenta un factor que era crucial: para que la cosa funcionara, simplemente teníamos que recorrer el fichero en sentido inverso.

Para obtener el mensaje oculto tendremos que leer los bytes del fichero empezando por el final, tomando el bit de menor peso de cada byte, agrupándolos de 8 en 8 habiendo ignorando previamente los 2 primeros bits de la secuencia. Con esto obtenemos un vector de bytes de salida que forma una cadena de texto legible en la que de nuevo omito los últimos caracteres de la contraseña (y así os animo a intentarlo):

http://retohacking5.elladodelmal.com/privado/?????Fase_3R3toHacking5.aspx
The_Secret_Of_Monkey_Island_Graphic_Aventure.???????????????????
By Alfonso Muñoz. http://stegsecret.sourceforge.net/


El paso final consiste en acceder a la URL de la tercera fase que ya conocíamos e introducir la contraseña en el cuadro de texto que aparece tras pulsar sobre la puerta de la choza. ¡Al fin hemos conseguido colar nuestro nombre en la lista de ganadores!

Volviendo a la parte 1: la idea original

Sí, ya hemos superado el reto, pero parece ser que la primera fase la hemos superado de una manera inesperada. Resulta que el fallo de programación que habíamos aprovechado para pasar esa fase fue algo accidental y no había sido contemplado por los creadores del reto. Evidentemente ya era demasiado tarde como para arreglarlo sin poner a nadie en clara desventaja, así que se dejó tal cual.

Mientras algunos hacían sus apuestas con cervezas para ver quién resultaba ganador del reto, yo hacía mis apuestas particulares sobre las tecnologías y vulnerabilidades que podrían usarse para montar un reto. El primer posible indicio me lo guardé de la charla de RoMaNSoFt (4-10-07, Getafe), en la que nos relataba a los allí presentes un poco de historia sobre la vulnerabilidad de Blind XPath Injection que aparecía en el tercer reto, comentando que Amit Klein publicó un documento sobre ese tema en 2004, pero sin haber liberado la herramienta que aseguraba tener implementada como prueba de concepto (y que tampoco le hizo llegar a Román a pesar de la petición expresa que le hizo por e-mail).

Para los que os perdisteis aquél evento y para refrescar la memoria a los que estuvisteis, aquí tenéis un enlace con el vídeo de la charla de Román (la parte a la que me refiero aparece en el minuto 12:30 y en la diapositiva 14).

Por otro lado, podemos encontrar otro pequeño indicio sobre ese mismo tema en este post, publicado además en la revista PCWorld de julio:

En la versión 4 de la herramienta se añadieron módulos para la detección de vulnerabilidades Blind SQL Injection y Blind XPath Injection (de estas últimas podríamos hablar algún día por esta sección).

El tercer indicio lo encontré en la charla que de Chema Alonso en el Technology Tour de Valencia, simplemente porque volvió a mencionar el tema aunque muy por encima, pero le noté bastante seguridad al afirmar públicamente que se podía extraer un fichero XML aprovechando esa vulnerabilidad.

Así que después de tantos indicios en la misma dirección, me puse a recopilar información sobre Blind XPath Injection y no encontré nada especialmente útil, aparte de la ya mencionada publicación de Amit Klein. No obstante, en dicho documento se explica una técnica de extracción del XML subyacente usando dicha vulnerabilidad, así que solo era cuestión de implementarlo.

Para ello me construí una pequeña aplicación web vulnerable a Blind XPath Injection y otra aplicación cuyo objetivo era el de extraer ese XML a ciegas, siguiendo los pasos que se explicaban en el documento escrito por Amit Klein y completando la información con la documentación del W3C sobre XPath y XML. A pesar de que el proceso no se explica completamente y que el documento contiene varios errores (yo creo que intencionados), finalmente conseguí el objetivo con mi aplicación de prueba. El siguiente paso fue probarlo en la primera parte del Reto Hacking 3, en la que existía una vulnerabilidad de XPath Injection, comprobando que también funcionaba.

El procedimiento genérico completo consiste en obtener el número de nodos que hay de cada tipo (elemento, texto, comentario o instrucciones de procesamiento). Hecho esto, vamos recorriendo los nodos por orden de posición y determinamos el tipo al que pertenece cada uno de ellos. Si resulta ser de tipo elemento, entonces volvemos a aplicar el método de forma recursiva, extrayendo sus posibles atributos y nodos internos. Si es de tipo texto o comentario, simplemente vamos extrayendo su contenido letra a letra. Como se puede observar, no nos hace falta ningún tipo de información previa sobre la estructura del XML, que podría ser todo lo compleja y heterogénea que queramos.

Sin saber si me serviría para el reto, por lo menos ya tenía una herramienta que era capaz de obtener absolutamente todo el XML, desde los elementos y atributos hasta los comentarios e instrucciones de procesamiento que pudiera contener. De momento parece que esa vulnerabilidad no se ha utilizado en este reto… ¿o tal vez sí?

Tras haber superado el reto, Chema me confirmó que la idea de la primera fase era precisamente la de extraer el XML de preguntas y respuestas aprovechando una vulnerabilidad de Blind XPath Injection. Sabiendo que yo tenía desarrollada una herramienta para ello, me pidió que intentara superar el reto de esa forma y así lo hice, aunque no resultó tan fácil detectar el parámetro vulnerable.

Recordemos la petición que se utilizaba para comprobar si una respuesta era correcta o no (la que denominaba como P4):

http://retohacking5.elladodelmal.com/Privado/ObtenerDatos.aspx?tipo=crespuesta&datos=276

Intentamos localizar cual era el parámetro vulnerable, pero parece que ninguno varía su respuesta con el estado inicial, aunque el parámetro "datos" parece el candidato que tiene más papeletas. Para conseguir dos tipos de respuestas diferentes teníamos que acertar la primera de las preguntas a base de repetir la petición fijando una respuesta válida, de forma que el servidor nos devolviera "contenido=1". Solo a partir de ese momento comprobamos que las siguientes peticiones devuelven resultados diferentes de forma permanente (mientras dure la sesión):

- P9 -> http://retohacking5.elladodelmal.com/privado/ObtenerDatos.aspx?tipo=crespuesta&datos=' or (1=1) or 'a'='b

- R9 -> contenido=1

- C9 -> Inyectando una condición verdadera, la respuesta no varía

- P10 -> http://retohacking5.elladodelmal.com/privado/ObtenerDatos.aspx?tipo=crespuesta&datos=' or (1=0) or 'a'='b

- R10 -> contenido=0

- C10 -> Al inyectar una condición falsa comprobamos que la respuesta ha variado.

Ahora que tenemos el mecanismo inicializado, basta con aplicar la técnica de extracción, configurando la herramienta para que envíe la cookie de sesión, etc. Una vez terminado el proceso obtenemos el fichero XML subyacente, cuyo contenido parcial es el que se muestra a continuación:

[?xml version="1.0" encoding="utf-8"?]
     [RetoHacking5]
          [Preguntas]
               [Pregunta id="1"]
                    [cas]¿Deberas depilarte tu gran CEJA?[/cas]
               [/Pregunta]
          [Pregunta id="2"]
               [cas]!Bonitas orejas¡, ¿has intentado planear?[/cas]
          [/Pregunta]
     [!-- En vez de este comentario, aquí va el resto de preguntas --]
          [Pregunta id="26"]
               [cas]¿Quiéres usa el comodín del público?[/cas]
          [/Pregunta]
     [/Preguntas]
     [Respuestas]
          [Respuesta id="1"]
               [cas]Creo que he visto un mono de tres cabezas[/cas]
          [/Respuesta]
          [Respuesta id="2"]
               [cas]No se si he visto un mono de una cabezas[/cas]
          [/Respuesta]
     [!-- En vez de este comentario, aquí va el resto de respuestas --]
          [Respuesta id="30"]
               [cas]mmmm... estoy pensando... mmmm[/cas]
          [/Respuesta]
     [/Respuestas]
[/RetoHacking5]

Curiosamente, hay 26 preguntas y 30 respuestas listadas sin relación aparente. Si las intentamos relacionar directamente por el identificador no conseguimos nada. Parece increíble, pero aún nos queda un pequeño paso más y es aquí cuando entra en juego una variable a la que aún no le habíamos dado utilidad: el número de "pringao" es el que relaciona las preguntas con las respuestas, así que tendremos que recordarlo para toda la tanda de respuestas. Por cierto, debido a otro pequeño fallo (probablemente relacionado con la caché), el número de "pringao" que se muestra tras haber cometido un fallo es erróneo, ya que la segunda vez aparece el mismo valor que en la primera ocasión (cuando ese valor no corresponde con la respuesta que nos devuelve el servidor) y la tercera petición muestra el valor que tuvo que mostrarse en la segunda, etc.

Localizando el identificador de la pregunta que aparece, sumándole el número de "pringao" y obteniendo el resto de la división entre el total de respuestas (módulo 30), obtenemos el identificador de la respuesta correcta a esa pregunta. Ahora sí que superamos la primera fase como estaba previsto. ¿A que no era tan difícil? ;-)

Agradecimientos y comentarios

Esta vez hay que reconocer que el reto estaba muy bien ambientado desde el primer momento en el que se publicó la introducción que anunciaba la fecha y hora de publicación del reto. La música, los gráficos y unas animaciones impecables que recreaban algunos escenarios del Monkey Island estaban muy currados, así que lo primero es felicitar a Rodol y a Álex por su excelente trabajo.

En cuanto a la parte técnica, siempre aprendemos algo nuevo gracias a las ideas de Chema y esta vez no ha sido menos, aunque lástima por el fallo de la primera fase. Como crítica constructiva y por el bien de todos, esperemos que la próxima vez no se aplique la ley de Parkinson ("El trabajo crece hasta llenar el tiempo de que se dispone para su realización") y que el siguiente reto salga a la hora prevista y sin fallos.

Por último, gracias a ti que estás leyendo este texto. Espero no haberte aburrido mucho y sobre todo espero que te haya sido de utilidad. ¡Anímate a intentarlo!

Saludos,
Daniel Kachakil (dani@kachakil.com)

Akelarre!

Hola perr@s,

esta noche la quedada/despedida/cervezada/reunión será dónde la otra vez, por eso de no tener que pensar que aquí en Bilbao se me ha mojado la cabeza y se me ha rebnlandecido el cerebro, es decir, en Casa Mingo, la sidrería asturiana que se encuentra en el Paseo de la Florida 34. A la cena han confirmado su asistencia, los siguientes especímenes: El burro (es decir, yop), Gura, Pedro Laguna, Rodol, Aramosf, Sauron, Penyaskito, Silverhack, RoMaNSoFt e Isabel, Alesuko, Olgita, el Cervi y Filemaster, pero la lista sigue abierta.

La hora de la quedada son las 21:30 y el menú será a la Gran Menier, es decir, "de comer muchas patatas, pollos, sidras, cervezas, chorizos y empanadas".

Después seguirá una breve visita a la cervecerías de al lado para tomar, como postre de la casa, una de cubatas para hablandar las defensas sociales y partirnos la cara.

Y despues.... ¿?

Debéis recordar las condiciones y... si queréis asistir, aún estáis a tiempo, mandadme un mail y listo calisto.

Saludos Malignos!

martes, enero 15, 2008

Sauron deja Mordor

Hola a todos, la noticia me ha pillado tan de sorpresa como mi participación en Blackhat, así que se interrumple la programación de tele-basura de este blog para anunciar los últimos movimientos en el lado del mal.
El gran Dani Matey, aka Sauron, deja sus territorios de Mordor y también su título de MVP de Management. Más de uno se aliviará con la desaparición del amo y señor en sus antiguos territorios. Otros tal vez no. Pero... ¿a dónde va el gran Sauron fuera de Mordor? Pues entra a fomar parte de los ejercitos del mal, entra a formar parte de Spectra directamente.

Desde allí, el influyo de sus malas influencias pueden hacer mucho más daño en los ejercitos del bien que desde su reino de Mordor, dónde, atrincherado mantenía un fuerte reducto infranqueable para las fuerzas del bien. Ahora, sale de la fortaleza para situarse en la primera línea de batalla para conquistar terrenos defendidos por el ejercito del pingüino.

El mal se espande... y llega Windows Server 2008... ¡Temblad!

Algo falla en el estado actual del Open Source

Hola, hoy no voy a poner una opinión mia, sino la de un desarrollador de un producto comercial, que trás plantearselo, llego a la conclusión de que debía hacerlo Open Source. Después de unos meses escribió este otro Post: There is something wrong in the state of Open Source. Yo, lo he traducido para los que quieran leerlo en la lengua de un bronxtolita depurado y lo tenéis aquí:

Algo falla en el estado actual del Open Source

El código fuente de nuestro producto OSS (Open Sound System) se abrió bajo licencia GPLv2 y CDDL hace unos tres meses. Hubieron varias razones por la que nosotros hicimos esto:

1.- Desarrolladores de drivers de terceras partes pueden contribuir con sus cambios a la estructura común de OSS.

2.- Quería dar a nuestros clientes la garantía de que ellos podrían seguir usando OSS incluso si la 4Front Technologies desaparecía.

3.- Porque al tener el código fuente nuestros clientes pueden personalizarlo para sus propios propósitos.

4.- Cuando un montón de desarrolladores pueden ver el código fuente quizás encuentre fallos que en otro caso existirían durante años.

5.- Queríamos hacer OSS una solución para el subsistema de sonido aceptable para todos los UNIX/LINUX/POSIX/o cualquier sistema operativo compatible.

6.- Queríamos promover un concepto de software de código abierto donde todo aquel que use software de código abierto de otras compañías/desarrolladores también contribuyeran con sus propios desarrollos a la comunidad.

7.- Queríamos hacer todo lo dicho arriba de una forma que hiciera posible que nosotros pudiéramos continuar nuestro trabajo como desarrolladores profesionales de software.

8.- Quería continuar vendiendo OSS como un producto comercial a nuestros clientes que quiera usar OSS para su software propietario/personal.

Decidimos liberar el código de OSS bajo dos licencias de código abierto comúnmente utilizadas que fueron GPLv2 y CDDL. Hubiéramos preferido solo un esquema de licencias pero estas proveían la cobertura más amplia del mercado de los productos de código abierto. Esas dos licencias son compatibles con todas las demás licencias de código abierto existentes. No liberamos OSS bajo licencias como BSD porque sentíamos que son licencias “medio de código cerrado”.

¿Funcionó este modelo de licenciamiento? La respuesta es Sí y No. La historia de éxito es que hemos conseguido desarrolladores de talento que contribuyen con su trabajo a OSS. Lo que es decepcionante es que con el estado actual de código abierto nuestras ventas decrecieron significativamente. Nosotros nos encontramos en una situación desafortunada para proveer solo drivers de dispositivos que sólo sean libres.

Así que para nosotros la apertura de código significa rozar (besar) la despedida con la esperanza de algún ingreso. Los clientes que previamente compraban licencias de OSS no lo harán nunca más. Ellos piensan que tener el código fuente significa que ellos tienen los mismos derechos que nosotros teníamos.

Así que, ¿qué podemos hacer? Desarrollar OSS ya no es beneficioso lo que significa que tenemos que buscar otra forma de alimentar a nuestras familias. ¿Quién continuará desarrollando OSS para vosotros?

Quizá pienses que podríamos comenzar a vender camisetas de OSS para financiar el desarrollo. ¿Has comprado alguna vez una camiseta para financiar un proyecto de código abierto? Al menos, yo no lo he hecho nunca.

He intentado añadir algunos anuncios de Google en nuestras páginas Web de código abierto y en la guía del programador de OSS (que tiene unas 2000 páginas vistas/día). En dos semanas hemos obtenido exactamente 0.00 $ por este método.

¿Tiene alguien alguna idea mejor?

lunes, enero 14, 2008

Balas de Plata para Fallos Informáticos

Zapatero a tus zapatos (joder! Vaya frase que he ido a elegir en periodo electoral…) quiero decir, que carpintero a tus carpinters… joder, vale, como dice la canción “si naciste pa martillo del cielo te caen los clavos”. Uff, creo que después de este párrafo nadie tiene ni puta idea de lo que quiero decir. Empecemos otra vez:

Coverity, la empresa encargada de comenzar en enero de 2006 el proyecto bug hunting, ha estado, está y estará analizando el código utilizado en muchos proyectos Open Source. Dicho análisis se realiza desde un punto de vista de seguridad de código (no de seguridad del producto). La herramienta utilizada por Coverity es una Analizador Estático de Código. El funcionamiento de estas herramientas es “sencillo” de entender. La idea principal es tener todos los fallos conocidos que provocan defectos, malfuncionamientos o bugs de seguridad patronizados en una base de datos.
La herramienta se lee el código del producto y busca los patrones dentro del código. Cuando la herramienta no ha encontrado ningún patrón dentro del código analizado, hemos de suponer que el analizador ha terminado su función. ¿Eso quiere decir que la aplicación es segura? Según el titular de la noticia escrita por este escritor, parece que Sí: 11 open-source projects certified as secure


Pero la realizad es que..¡Ni de broma! Por varios motivos:

- El código puede no tener ningún fallo y la aplicación tener cagadas de seguridad en cuando a concepto.

- Los analizadores son aplicaciones que no son perfectas y ninguno reconoce todos los fallos posibles. De hecho, son herramientas magnificas, que aumentan la calidad del software y reducen al mínimo el número de bugs que puede tener un código, pero la perfección está aún lejos. Un programa analizado reducirá más número de bugs cuanto mejor sea el analizador de código utilizado. Spectra utiliza desde al año 2003 un proceso de análisis de código estático (junto con otros de análisis dinámico) dentro del proceso de desarrollo marcado por el SDL y como se ha visto el número de bugs se ha reducido drásticamente, pero… ¿han desaparecido todos los fallos de seguridad? ¿Se puede decir que es seguro todo el código?. Ok, si fuera así, basta con comprar una herramienta y listo.

- Los desarrollos son cambiantes y con cada nueva línea de código metida en un nuevo proyecto se pueden introducir fallos, así que un escaneo solo sirve en un código concreto y deberá ser re-analizado en cada actualización.

- La seguridad cambia. Cada día aparecen nuevas formas de atacar un sistema, nuevas maneras de explotar algo, nuevas formas de saltarse las protecciones. No se pueden conocer los defectos que aún no se han detectado. ¿Cuántos habéis lanzado escanners de vulnerabilidades contra los Retos Hacking y no habéis sacado nada? 11 proyectos con 0 defectos encontrados es algo maravilloso y habla mucho y bien del esfuerzo que se está realizando, pero… tanto como que los proyectos sean seguros…¡Ojala fuera así de fácil el análisis de seguridad!

Si queréis más información de esto, uno que no sabe tampoco mucho de esto, el amigo Michael Howard, escritor de los libros: Writing Secure Code, 19 Deadly Sins of Software Security, The Security Development Lifecycle y Writing Secure Code for Windows Vista lo explica mucho mejor y en menos líneas:

"Open-source projects certified as secure" – huh?

Saludos Malignos!

domingo, enero 13, 2008

Vamos a jugar otra vez: Reto Hacking VI

Al Reto Hacking V le quedan sólo unas horas para cerrarse. Unas horas para que empecemos a pensar en otro juego y hagamos balance. De momento el estado en la liga de los campeones deja un Hall Of Fame como sigue:

Provisional Global Hall of Fame

En la lista se encuentran Kachakil, RoMaNSoFt y Mandingo en los tres primeros puestos y parece que van a seguir ahí largo tiempo pues la distancia con el cuarto: Palako (o Pedro Laguna si consigue puntuar antes de que se cierre el reto) es grande.

Ahora, para que no se enfrien los motores, vamos a tener el Reto Hacking VI en poco tiempo. La fecha definitiva será el Viernes 1 de Febrero a las 20:00. El próximo reto será más rápido y la velocidad contará, pues consistirá en explotar una web con algo conocido pero realizando una variación muy chula que me ha encantado y de la que no he publicado nada por ningún sitio aún. Después habrá una segunda fase...al estilo de la segunda fase del Reto Hacking IV, es decir, de las del tipo de, como dice mandigo, "que los árboles no te oculten el bosque".

Las puntuaciones que se obtendrán con el siguiente Reto Hacking serán al estilo de la F1, es decir: 10 puntos para el primero, 8 puntos para el segundo, 6 puntos para el tercero, 5 puntos para el cuarto, 4 puntos para el quinto, 3 puntos para el sexto, 2 puntos para el séptimo y 1 punto para el octavo. De ahí en adelante, todos los que lo saquen antes de que acabe Febrero obtendrán 0.5 puntos. Además, hay 1 punto extra para todo el que lo saque antes de las 00:00 horas.

El planing de trabajo que vamos a llevar va a ser el siguiente.

15/01 : Se cierra el Reto y ya no puntua.
            Publicaré el solucionario de Dani Kachakil.
16/01 : Publicaré el "Cómo se hizo la fase III" de Alfonso Muñoz.
            Mandingo hace conmigo en Bilbao
            una demo sobre como pasarse el Reto Hacking IV.
            Nos vamos de cena y fiesta en Madrid y entrego algunos premios.
            Se pagan las apuestas del Reto Hacking V.
25/01 : Se hacen públicos los premios.
28/01 : Se abren las apuestas del RH VI, que esta vez serán...
            ¡comics de segunda mano!
31/01 : Se hacen públicas las pistas... Vale, y serán útiles (jajaja)
01/02 : A las 20:00 horas (GMT+1), en tiempo, y sincronizado
            (si no, le pago una cena a RoMaNSoFt) empieza el Reto VI.

Además, esta vez los premios van a ser... ¡espectaculares!, (manteniendo el nivel de siempre), pues serán ....¡Comics!

Mmm,comics... estoy por participar yo con otro alias...

Saludos Malignos!

sábado, enero 12, 2008

Viejos Piratas Informáticos

Las mil apiroladas que me puse este año como metas o retos personales se convirtieron en una miríada de seres a cual más extraño que conforman una Escuadrón Nómada al más puro estilo Alien Legion (si no eres un enfermo de los comics esta metáfora te habrá sonado a chino y necesitarás ayuda de Doug Ramsey o a C3PO – vaya, ya lo hice otra vez-)

En la lista de cosas que me puse estaban, entre otras: Sacarme el carné de moto (cosa que hice solo para descubrir después de tener dos tonto – caídas y raspuñarme el brazo que me acojona), sacar el postgrado (el día 14 leo el proyecto de fin del master de postgrado), conseguir las publicaciones en congresos académicos para obtener la tesis doctoral (lo que me llevó a Argentina, Portugal y a lo mejor me lleva a algún otro sitio…), mejorar mucho mi inglés (por lo que me voy a Londres) y sacarme el CAP.

El CAP (Curso de Adaptación Pedagógica) es para acreditar que eres una persona que puede dar clases en la enseñanza secundaria. Cómo muchos supondréis no tengo a día de hoy ningún objetivo a corto, medio o largo plazo que tenga que ver con meterme de profesor en un instituto de secundaría, pero muchas veces hago estas cosas así. El caso es que he estado yendo a los seminarios y el próximo día 19 (por eso me voy el día 20) tengo el examen del CAP.

Uno de los requisitos que te ponen es realizar prácticas en un centro de secundaria y hacer una memoria, con lo que me fui a mi “insti” y se lo comenté a mis viejos profes. Al final, la cosa quedó en que estoy dando clases (llevo 2) a un grupo muy majete de chavalotes y chavalotas en la asignatura de Tecnología Informática… o algo así.

Al final, lo que les estoy contando allí, en esa asignatura, son historias, movidas y jueguetes que tienen que ver con la seguridad informática. Ayer tocó el turno de ver un troyano, un rootkit y cómo funcionan los antivirus (gracias Hispasec por VirusTotal!) en clase, con el objetivo de que tengan mucho cuidadito en el uso que le dan a sus ordenadores.

El primer día lo utilicé para charlar con ellos sobre …. Palabros. Cosas que van a leer y que deberían saber en este tema. De la charla me llamó la atención cuando les pregunté que era un hacker. Varios de ellos me contestaron con la misma definición “Pirata informático”. Yo intenté explicarles algo con más detalle sobre el origen y lo que representa, y… pero en el fondo llevan razón… Es lo que se ha quedado en la sociedad.. Creo que efectivamente Hacker es la palabra perdida.

Buscando en Wordreference la traducción de la palabra hacker, el resultado que sale es…Pirata informático.

Busqueda de hacker en WordReference

Bien, piratas o no, lo cierto es que la informática cada vez es más grande, se expande cada vez con más fuerza y virulencia, con más siglas, con más tecnologías, que nacen, crecen, mueren y desaparecen haciendo más complejos, si cabe, la comprensión y el aprendizaje de la misma. Estos jovénes tendrán que dedicar muchas horas y mucho esfuerzo por comprender y sacar cosas en claro. Más dificil aun si encima hablan de ella técnicoless al uso.

Estos jóvenes padawans tienen que subir una gran montaña que ya está muy alta y además forma parte de la brecha digital, mientras que los que ya estamos viviendo en el “otro prefijo” hemos ido subiendo casi desde cero con esa montaña. Todos los que estáis en media montaña, o cuarto y mitad de montaña o un puñaito de montaña no os olvidéis de seguir subiéndola y aprovechad la ventaja competitiva que tuvimos al poder verla crecer, pero no os olvidéis de tirar cuerdas para los que tienen que empezar a subirla.

Nada de guardar silencio y pensar “pobre, lo que te queda por aprender…”, compartid lo que sabéis con estos que nos echarán de aquí a patadas.

Saludos malignos!

viernes, enero 11, 2008

Los Reyes Magos llegaron hoy

Cuando te dedicas a lo que me dedico yo (bueno, si se puede llamar "dedicarse a algo" a lo que yo hago) esto es algo muy importante y que siempre tienes en mente como objetivo. Este no es otro que uno de mis sueños, el poder estar entre la lista de las personas que hablan en las BlackHat Conferences.
Este año, ya no he aguantado más y he enviado, junto al abuelo Parada, una presentación sobre LDAP Injection & Blind LDAP Injection para participar en la edición que se va a realizar en Europa en el presente año.

Tras pasar unos días con problemas con el servidor para subir la presentación, hace un par de días recibimos el siguiente mail del proceso de revisión técnica que se sigue:

"The info that you provided in the application interests us and we like the topic. However, we feel that we need more information before we make a decision in either favor or denial of your application. The following comments and/or questions are from the review team:

We are very interested in your submission, however we noticed the body of your work researchable online was not presented in English. We don't doubt that you are obviously knowledgeable and assumingly deliver quality presentations in Spanish, as we see many presentations from you."


Vamos, que les gustaba el tema, pero que querían asegurarse de que podíamos dar la charla en inglés. A lo cual el abuelo, contestó que sí, que sin problemas, que yo me iba a estudiar a londres para ponerme las batteries y que estuvieran tranquilos y esas cosas....

Hoy, hace un par de horas, hemos recibido este otro mail que ha hecho que me ponga más contento que la abeja Maya en la Granja San Francisco:

"We are pleased to inform you your presentation,LDAP Injection & Blind LDAP Injection, has been accepted for Black Hat Europe 2008."

Esto me ha colmado de felicidad en esta profesión y sólo espero que el abuelo y yo no desluzcamos entre tanto ponente...
Sí alguno tiene pensado venir a las conferencias... le invito a peta que creo que allí se puede fumar! Si no puedes venir, siempre puedes verla en Español, que ya la hicimos en el evento de AseguraIT en Getafe.

Por cierto, las charlas son a finales de Marzo, en Amsterdam, y tenéis toda la info en la web de la conferencia: BlackHat Europe 2008

Saludos Malignos!

jueves, enero 10, 2008

Charla en Pamplona

Bueno, hoy había una reunión del grupo .NET en Pamplona y me invitaron a venir. Como hablaba Unai, he venido a asistir a la charla de LinQ y Entity Framework que nos está dando. No obstante, si estás por aquí aun puedes llegar a tomar las copas y cenar....

Saludos!

Eventualmente

El próximo día 16 será la penúltima charla del Live Tecnology Tour y la última en la que participaré. La siguiente, que será el día 23 en Sevilla, tendrá como aparición estelar, si todo va en regla, a Pedro Laguna.

El evento en Bilbao, debido a que se realiza en un auditorio un poco más retirado de lo normal, habrá un servicio extra de transporte, como todos los demás, gratuitos. (Hasta las fotos con los ponentes son gratis!).

En este caso hay Bus desde: Pamplona, Santander, Vitoria, San Sebastián y el propio Bilbao, para que todo el mundo llegue puntual y cómodamente al lugar del evento.

Allí abandono el grupo este de rock para continuar mi carrera en solitario una temporadita...pero si hay suerte estaré dando unas charlitas por ahí sobre Marzo.

En ámbos sitios se va a regalar una XBOX 360 (para que disfrutes con esta maravilla de jugar) y un par de teléfonos HTC con Windows Mobile y todos sus accesorios a aquellos 3 que participen en el Factor IT, así que... cómo es la última oportunidad de ver al grupo... ¿por qué no te acercas?

Para finales de Febrero, en Madrid, se quiere realizar un pedazo de trozo de evento monumental con el lanzamiento de Windows Server 2008, SQL Server 2008 y Visual Studio 2008. El fiestorro tendrá todos los alicientes de siempre: Alchool, mujeres, drogas y buena música. Vale, no exactamente, lo que habrá será: Comida, charlas técnicas, frikis e incluso hands on lab gratis in-situ. No es lo mismo, pero seguro que muchos de vostros estaréis tan enfermos como para ir. Yo aun no sé si habré terminado los deberes para venirme a esta fiesta, pero aunque no esté yo, estarán el abuelo, el cervi, y muchos compañeros de mi grupo.. Si quieres ir.. ya sabes...a registrarse.

Si estás en Argentina, y todo esto te pilla muy lejos, siempre puedes animarte a participar en algo de por allí. Hay abierto un Call for papers por la gente de Segu-info. Yo estoy pensando que Abril es una buena fecha para re-visitar Argentina y tal vez mande algo para ver si me aceptan por allí, pero si a ti te pilla cerca y tienes algo chulo que contar... ¿A que esperas?

Saludos malignos!

miércoles, enero 09, 2008

Me abro ... y no de patas

El próximo día 20 estaré en Londres ya, así que ha llegado el momento de cortar un tiempo. Aun no se si desde Londres podré manterner este blog, si tendré ganas o si será bueno para mis estudios. En fin, que me abro, que me piro, que me largo una temporadita. Así que, 1) como hace mucho que no nos juntamos y... 2)como tengo que entregar los premios de Reto Hacking V y... 3)como el día 15 quiero dar por cerrado el Reto Hacking V para dejaros un Reto montado para finales de Enero y.... 6)porque me apetece... se hace saber:

Que el día 16 de Enero tendrá lugar una Reunión de Enfermos a la vieja usanza madrileña. Será algo tranquilo, tomar unas cervezas (que pagarán los que hayan perdido las apuestas...) y algo de picar (una gallina o un pico).

Se tiene que enviar un mail al menda, es decir, a mi, confirmando que vendrás y enviando tu número de movil por si acaso pasa algo. Ahora bien, SÓLO PODRÁS VENIR SI YA HAS COMPRADO TÚ CALENDARIO TÓRRIDO SOLIDARIO, si no, te echaremos de menos, lloraremos por tí... pero nada más.

No hace falta que hayas venido antes, todos estáis invitados, como siempre, y tampoco importa si eres un raro... cuando veas a los demás se te pasará... Será todo muy elegante, algo similar a lo que se ve en la foto de abajo...

No os perdáis la cara de panoli que llevo...

Eso sí, obligatorio mail de reserva para que yo reserve algún garito y os pueda comunicar dónde va a ser. Como de costumbre pueden venir linuxeros, windoseros, frikis, chicas, gente de rol, de comics, de manga, vegetarianos, carnivoros o lo que queráis... pero con tu Calendario Tórrido comprado.

Saludos malignos!

martes, enero 08, 2008

¿Por qué Linux es Más Seguro que Windows?

Cómo uno es un poco enfermo con esto de la seguridad, se leen muchas cosas y de vez en cuando encuentras artículos como éste que son enlazados por todo el mundo, traducidos y tomados como dogmas de fe que me dejan un poco helado. En este caso se trata de un post titulado “Why Linux is more secure than Windows” y trae 6 axiomas divertidísimos, que me han llamado la atención y creo que voy a comentarlos:

Axioma 1: “Mejor gestión de actualizaciones de seguridad”. Este es el axioma de “una distro gobierna todo el software”.

Según este axioma las plataformas Windows, con Windows Update, sólo actualizan el software de Windows mientras que con el actualizador de la distro se mantiene actualizado todo el software. Si quieres actualizar el software de otros productos en Windows, como por ejemplo el Acrobat, la máquina java, la máquina flash, etc… entonces debes realizarlo mediante el propio producto. Esto en Linux no es así, pq es l propia distro la que te lo provee.

Sí, que bonito, que lindo. Voy a llorar. En primer lugar, hemos de suponer que estamos hablando de una distro en concreto en un PC concreto y no de una red de equipos “heterogénea” en Linux. Digo esto porque en el último axioma, en el número 6 habla de las ventajas de la heterogeneidad y una de las ventajas es que si tengo una red con 50 RHES y 50 Centos tendré que tener un servidor de actualizaciones distinto para cada uno de ellos, pero lo más gracioso es que, como las distros paquetizan actualizaciones de proyectos vivos es casi imposible garantizar que dos distros distintas tengan la misma versión de un paquete recién actualizado. Es bastante divertido esto.

Por otro lado, desde el punto de vista de Spectra, todo el software de Windows, todo el de office y todo el de los productos servidores, e incluso el antimalware se actualizan con el mismo cliente. No solo Windows, sino todo el software de Spectra.
Sí es cierto que en una plataforma en standalone el software no Spectra debe ser actualizado por cada producto, pero esto sucede igual con todos los productos no instalados directamente desde la propia distribución y los que son actualizados desde la distribución son un riesgo, pues existe una ventana de tiempo grande que va desde que el parche ( y por tanto el fallo de seguridad) es público hasta que la distro lo ha paquetizado.

En el caso de las redes en Spectra se usan los servidores Spectra System Center que permiten distribuir todo tipo de actualizaciones de seguridad de cualquier producto, incluido para Linux. En el caso de que tengas una red de equipos Linux y quieras gestionar las actualizaciones remotamente de todo el software (porque a lo mejor tienes software que no está en la distro del producto o porque deseas realizar actualizaciones Push en lugar de Pull) tienes que tirarte a productos comerciales como System Center, Tivoli, etc… y tener cuidado con la heterogeneidad del entorno pues entonces vas a tener que paquetizar un parche para cada cliente.

Tiens más sobre esto en: De Cañas


Axioma 2: Mucha más seguro por defecto. ¿El de soy mejor por defecto que XP…pero nada de Vista?

Este me encanta. Windows XP salió en Octubre de 2001 y fue construido como una evolución de Windows 2000. Esto hay que tenerlo en cuenta pues este sistema operativo no estuvo diseñado pensando en la máxima fortificación del sistema. En el año 2002, Spectra comenzó la Trustworthy Computing Iniciative, una iniciativa a 10 años en la que el objetivo era desarrollar software seguro. Para ello se contrató a gente especializada en seguridad, se desarrolló el SDL (Secure Development Lifecycle), se generó el ciclo de vida de actualizaciones de seguridad, Windows Update services, los servidores WSUS gratuitos, MBSA gratuito, el ExBPA gratuito, SBPA gratuito y se fortificaron los productos. XP, por tanto, se diseño fuera de esta campaña. Lo primero que se hizo con XP fue sacar una versión más fortificada que tuvo el bonito nombre de SP2, con su DEP, con una recompilación del código después de haber aplicado herramientas de Análisis de Código Estático, con su FXCop, etc… Esto fue un avance en Seguridad pero aún así no había sido diseñado desde cero pensando en Seguridad. Sin embargo eso sí se hizo con Vista, y por tanto su arquitectura está más fortificada desde la base.

Bien, hasta aquí la introducción histórica. El axioma dice que Linux es más seguro que XP pq si hay una ejecución remota de código en un Linux este sólo tendrá impacto localmente. ¿comorl? Perdona waperas, pero si peta un servicio que usa una cuenta con permisos en un Linux podrás hacer todo lo que los permisos de esa cuenta te permitan. ¿Nunca has visto shells remotas en Linux? Pero lo más chulo es lo que dice después con lo de Vista. “Vista corre en un entorno más limitado también y por lo tanto es más seguro que su predecesor” ¿Y qué Linux? Te recuerdo que el título pone “Why Linux is more Secure than Windows” no que Windows XP. Te recuerdo que Windows Vista es de Noviembre de 2006, ha pasado un año y pico, es el SO de Spectra y los planes de abandono de soporte en XP están en marcha… cambia el título si quieres de tu post amigo.

Axioma 3: Diseño Modular o… ¡No puedo quitar Internet Explorer!

No, no puedes quitarlo, pero si no quieres no lo uses, siempre puedes instalarte un firefox. Tampoco puedes quitar la Win32, pero en Windows Server R2 puedes correr todo tu software sobre el UNIX POSIX que trae (Interix) en lugar de sobre la Win32.

No obstante, si quieres hacerte un sistema a tu gusto siempre puedes usar la versión Windows XP Embeded Edition en la que eliges los componentes (para Vista igual, pero cómo parece que sólo hablas de XP…) para el caso de los servidores Windows Server 2003 trae el SCW (Security Configuration Wizard) para que fortifiques el servidor mediante el uso de Roles y puedes habilitar y deshabilitar todos los componentes servidores que desees y en Windows Server 2008 Core Server puedes quitar el interfaz gráfico e Internet Explorer también.

Axioma 4: Mejores herramientas para protegerse contra ataques de Zero-Days. O “No sé qué es eso de SELinux y AppArmor y en el otro lado no hay nada tan cool ¿verdad?”.

Esta es genial, dice que Linux es mejor que Windows porque para evitar los ataques de Zero Days en Linux hay SELinux y Apparmor y que en Windows XP no hay nada y en Vista sólo el modo protegido de IE7. A ver colega, que te veo un poco perdido. SELinux y AppArmor, a pesar de llevar tiempo, no se han incluido en la línea del kernel hasta el año 2003 en caso de SELinux y hasta el año 2005 en el caso de AppArmor. Te recuerdo que XP es del año 2001. Algunas de las cosas que aportan son ACLs (vaya, como lo que traía XP en el año 2001) soporte para DEP (vaya, como lo que trae XP desde el año 2003) y en las últimas versiones ASLR, vaya como lo que trae Vista desde fábrica y activo. Además, permite contextos de seguridad que deben ser configurados y utilizados para objetos del sistema, ficheros, descriptores, etc… “muy cómodo todo de configurar” ¿Alguien lo ha hecho de por aquí?.

En Vista se utilizan algunas tecnologías que vienen de serie funcionando como MIC (Mandatory Integrity Control), el modo protegido para IE7 con también UIPI (User Interface Privilege Isolation ), … pero si quieres echarles un ojo, las tienes resumidas en la Wikipedia:

- http://en.wikipedia.org/wiki/Security_and_safety_features_new_to_Windows_Vista

Axioma 5: Código Abierto. Esta es la de todos los ojos miran tú código para fortificarlo y hacerte más mejor y más seguro.

En fin, que en el año 2008 tengamos que seguir hablando de esto… Si todos los ojos vieran ese código no se usarían las herramientas de análisis de código estático, si esto fuera así… pero …¿de verdad hay que discutir esto aún? Yo ya tuve mi experiencia religiosa este Septiembre con mi aventura de joom_league, pero vamos a hacer dos cosas, una, os dejo las palabras de Crispin Cowan (Creador de AppArmor) y un resumen sobre este parecer, no escrito por mí, pero si de mi parecer : La Receta

"In discussing Sardonix's fall, Crispin Cowan, the project's leader, was harsh in his appraisal of the open-source community: he asserted that security researchers were only interested in finding splashy bugs and posting them to security mailing lists. I think that's oversimplifying the matter."

Why Sardonix Failed

Si los ojos lo vieran, el proyecto de “Bug Hunting” para “acelerar la calidad del open source” no hubiera encontrado los fallos de Seguridad que encontró en los principales proyectos de open source usando herramientas de análisis de código estático.

Lo cual llevó a su CTO, Ben Chelf, a escribir este artículo: “Insegurity in Open Source”

Me encanta la frase de “But when software security and quality really matter—like crossing the Atlantic on a jet airliner—trust me, you want to fly proprietary.”

En fin…

Axioma 6: Heterogeneidad. ¡Qué guay somos todos diferentes!

Bien, es una ventaja. Como hay muchos Linux, es poco probable que no se pueda hacer un troyano, un virus, un malware que funcione en todos. Cierto, pero también, es muy difícil hacer un parche que funcione en todos, hacer un driver que funcione en todos, hacer una agente de políticas de seguridad que funcione en todos, hacer un script que funcione en todos y hacer cualquier herramienta de seguridad que funcione en todos. Justo lo que quiere un administrador de sistemas para tenerlos seguros.

Así, siempre tiene menos herramientas, las pruebas de testeo se pueden hacer peor (no se pueden testear todas las distros), no se pueden gestionar correctametne todos porque no hay agentes desarrollados, etc, etc, etc… ¿Es realmente una ventaja o un inconveniente?)

Además, yo creo que se te han olvidado algunos motivos más. Tenías que decir:

7.- Linux no permite acceder sin usuario al sistema y Windows (98) sí.
8.- Linux arranca sin otro sistema operativo y Windows (3.11) no.


En fin, simplificar a que un producto es más seguro que otro cuando, como tu bien dices al principio la seguridad es un proceso... La seguridad depende de las personas que usan y administran los sistmeas, los procesos que se apliquen y la tecnología utilizada (estándares, productos y software propio) y por desgracia fallan más los dos primeros que el último (aunque parezca mentira).

Saludos Malignos!

lunes, enero 07, 2008

SQL Injection for Dummies

Hola, ¡Buenas noches a todos!

A tí, si vienes de meneame, porque has leido algún comentario que me linka para que yo conteste la noticia sobre el ataque másivo y defienda a SQL Server, sólo puedo decirte... que si no sabes lo que es un ataque de SQL Injection... entonces nada puedo explicarte..., pero si tienes ganas de aprender, en la nube de etiquetas de la derecha hay algunas sobre SQL Injection y si quieres aprender de cero te dejo dos manualitos que he recomendado hasta la saciedad (son del año 2002) aunque el primer documento sobre SQL Injection es de la navidad de 1998, del gran rfp. ¡Qué aprendas y te diviertas Aprendiendo!

- Advanced SQL Injection in SQL Server Aplications
- (more) Advanced SQL Injection.

Saludos Malignos para todos!

Articulando directorios

Una de las tareas que más disfruto es cuando estoy enredando con algo. El juguetear con cosas para ver que se puede o no se puede hacer es uno de las mejores ocupaciones que uno puede realizar.

Después de haber jugado una temporada con algo, a mi, que soy una cotorra, no me gusta callarme las cosas, así que lo cuento. Me gusta escribir sobre las cosas con las que juego y darle mil vuletas para poder sacarle todo el jugo. Eso ha hecho que este mes de Enero haya escrito un artículo para Windows TI Magazine sobre mis apiroladas y el OOXML, otro para Red Seguridad sobre como hacer el capullo dando una charla, otro para PCWorld sobre los riesgos en la mensajería instantanea y otro para la revista Hackin9 sobre Blind SQL Injection basado en tiempos usando consultas pesadas. Todo el día dale que te pego a "escribil y escribil". Además me ha dado tiempo a escribir el Proyecto del Postgrado que leeré el día 10 de Enero y a escribir un artículo para un congreso sobre lo que iba la fase 2 del Reto 5.

Sí, escribir mola, por eso suelo hacerlo aquí a diario, en el blog. El caso es, que como soy una cotorra, me gusta publicar en el blog los artículos que publico en las revistas, por lo que siempre les solicito que una vez que los hayan publicado ellos los publicaré yo.

Como de la revista Hackin9 me dan pocas señales de vida, pues he ido a la web a ver si encontraba mi artículo por allí y así lo publicaba por aquí.... Pero no. No lo he visto allí, aunque sí tego la certeza de que está publicado porque me enviaron la revista en la que sale [Enero del 2008].

El caso es que la revista tiene una sección para descargar artículos, pero obliga a suscribirse a la newsletter y, cuando salga dicha newsletter se supone que recibirás algún artículo enlazado, pero no el que querías en concreto.

Buscando artículos había encontrado uno de XPath Injection que quería leerme, ya que estoy preparando una cosa y cualquier información sobre ese tema me viene bien, así que me he suscrito, pero no lo he podido descargar. Sin embargo "no se como" buscando, buscando por los links he llegado a este directorio... dónde están todos los artículos que han sido publicados en las newsletters.

Vale, el artículo en cuestión que yo quería es éste: "Introducción a las técnicas de Xpath Injection". Si estás empezando con el tema, léelo, está chulo, pero tienes una lista completa de otos artículos en el mismo directorio... en muchos idiomas.

Es de agradecer que Hackin9 publique los pdfs de los artículos, pero podría ser un interfaz más amigable que el simple listado de directorio abierto en Apache, ¿no?

Centro de descarga de artículos Hackin9

Saludos Malignos!

domingo, enero 06, 2008

Guía de Supervivencia para este Blog

Este blog es totalmente personal, subjetivo, torticero y lleno de porquería y… para que sea más difícil de entender tiene algunos términos que debes conocer. Si eres un “veterano” esto ya te lo sabes, si no.. te vendrá bien.

- El Lado del Mal: El mundo de la informática está dividido entre buenos y malos. Los buenos son los que quieren salvar a la humanidad, arreglar los problemas de todos los seres humanos y programar y administrar con ética y moral. En el lado del bien se encuentra el software libre, el open source y las empresas sin ánimo de lucra como IBM, SUN, Oracle, HP o las empresas de millonarios hinchados a ganar pasta con su empresa que luego se pegan una semanita en un viaje programado al espacio para luego ser totalmente altruista. También caen en el lado del bien aquellas empresas que, pese a no ser altruistas, son cool, es decir, empresas como Google, Apple (y ahora la wii).

En el otro lado, en El Lado del Mal, se encuentra la única empresa a la que no le importa la pasta y cuyo único objetivo es gobernar el mundo: Spectra.

- Spectra: Nombre real interno. Sólo es utilizado este nombre entre los grupos de adoradores, seguidores, esbirros y miembros de puro derecho. Su único objetivo es la dominación mundial, acabar con el planeta, destrozar a los enemigos y… para hacer esto… programar mal. Tiene mucho dinero y podría contratar a los mejores programadores, arquitectos, diseñadores y expertos de seguridad… ¿pero lo hace? No, prefiere, como todo los técnicoless saben, hacer software malo y siempre dejan puertas traseras para poder leer tu correo electrónico y pasarle a los gobiernos la información de tus actos. Su nombre público es ... Microsoft.

- Técnicoless: Después de un Request For Comments se llegó a un consenso en la definición del término.

- Maligno: No, no me lo puse yo, en un mail dijeron de mí tras haber ido a dar una charla en un instituto en Pamplona: “..es como si en la parroquia de mi barrio, en pos de esa libertad de expresión invitaran "al maligno" a dar una charla pero tomando la forma de "Carmelita Descalza"”.Y como me hizo gracia… pues me lo quedé.

- ¿De qué va este blog?: Pués de los topics que pone, y de lo que pone debajo del título: Spectra, Técnicoless, Técnico-Less, Blind SQL Injection, LDAP Injection & Blind LDAP Injection, Retos Hacking, Maligno, Seguridad Informática, tocar los webos...y Chema Alonso.

Espero que ahora sepas el tipo de basura que estás leyendo.

Saludos Malignos!

sábado, enero 05, 2008

Buscando_Trinchera

Había una vez una “pinicula” que muchos de vosotros odiaréis pero que a una mente enferma y obsesiva como la mía le gustó. En ella pasaban muchas cosas raras y había personajes, escenas y situaciones a cada cual más impactantes y todas marcadas con las obsesiones. Una de las frases que nunca olvidaré fue “matar es como cortarse las uñas de los pies” (bueno, y el gajo...). El trasfondo de la frase en la película es mucho más amplio que el que se puede extraer en un vistazo rápido, pero define lo que son las necesidades y obsesiones perennes y perentorias. Follar te aplaca en el momento, pero seguro que en un tiempo vas a tener ganas de follar otra vez.

La explicación más técnica de esto la leí en el Criptonomicón, dónde uno de los protagonistas se hace una gráfica en la que pone en el eje de ordenadas el tiempo y en el eje de abscisas las "Ganas_de_Follar". En el nivel de abscisas marca un límite, que podremos llamar "buscando_trinchera", a partir del cual su cabeza no puede trabajar en la criptografía y necesita reducir el nivel "Ganas_de_Follar". Para ello aplica la función reductora “masturbación()” que consigue un decremento en la medida "Ganas_de_Follar". Sin embargo el nivel de decremento va siendo de un valor absoluto menor a medida que se va acumulando el uso de la función reductora "masturbación" por lo que necesita aplicar una función de reset que deje los niveles de la medida "Ganas_de_Follar" en los límites más bajos. Esa función que necesita aplicar se llama “follar(mujer)”.

Gracias al uso de los recursos, es decir, la función reductora “masturbación()” y la función de reset “follar(mujer)” usando como parámetro de entrada el valor "espía_nazi", el protagonista puede realizar una meticulosa planificación, para maximizar el tiempo dedicado a la criptografía, repartiendo uso de las dos funciones a lo largo del tiempo.

A mí me pasa esto constantemente, no, no me refiero a lo del sexo (que también), ni tampoco a lo de matar (joder, a ver si me explico) sino con todas las necesidades por las que nació este blog. A veces necesito desesperadamente escribir sobre temas de seguridad, otras veces necesito desesperadamente descojonarme un rato y otras veces necesito desesperadamente aplacar mi ánimo con la recua de gilipollas y técnicoless que escriben tonterías. En esta última medida necesito aplicar ya la función reset “follar()” con el valor de algún "técnicoless", bueno… o su equivalente porque de lo contrario me va a salir un herpes en el páncreas.

Sin embargo, hoy es sábado, y no creo que sea el día de hacerlo, así que lo voy a escribir, es decir, voy a aplicar la función reductora “masturbación()” y el martes, día mucho más mundano, lo hago público.

Saludos Malignos!

viernes, enero 04, 2008

El año de Linux

Os dejo una de las felicitaciones navideñas que me llegó.



Esta felicitación llegó desde Argentina....

¿Será verdad?

Centenario

Comienza el año, y es ya necesario comenzar a agendar cosas. El día 27 de Marzo es la fecha que hemos pensado para el Asegura IT II, que será en Barcelona (aun es fecha en tentativa a espera de confiramción de sala). Para realizar estas tareas nada mejor que tener un buen calendario a mano ;).

Ayer se empaquetaron para ser enviados por correo los calendarios comprados y yo personalmente entregué en Madrid una gran cantidad de ellos. Hoy le voy a entregar uno a mi mamá... (si mañana no escribo buscadme en mi cuarto que a lo mejor me ha castigado sin ordenador y yo a mi mamá siempre la he hecho caso).

Ayer se llegó al calendario número 100. Cada copia lleva un número y una dedicatoria, si queréis, por lo menos en el mes de Junio. Hoy cuesta 12 €, mañana será una documento único de valor incalculable. Entre las dedicatorias las tuve que hacer de todo tipo, incluso tuve que dedicar uno para SUN Microsystems...

Todos los que estáis colaborando con esta acción tendréis mi respeto y mi cariño y os lo agradeceré siempre. Me gustaría poder decir que entre todos hemos conseguido vender las 500 copias y que cada uno de vosotros ha puesto su granito de arena. Lo podéis comprar por que es un descojono el cuerpo antisexi que tenemos, o por lo buenorro que está alguno, para reiros de alguien que conocéis, por ser solidario con la ONG, porque os caigo bien o porque os caigo mal...pero yo os lo agradeceré de igual forma.

Si eres de los que me odias, te propongo un nuevo regalo, para ese amigo que también me odia. Compra un calendario y montate una diana de Dardos en el CPD. Así me puedes hacer Voodoo o desquitarte agusto con mi foto.


Diana Maligna

En mi oficina, para escarnio y cachondeo, tengo que soportar que siempre sea Junio...

Colabora con el calendario y yo te lo agradeceré. Esto es para los que ya lo habéis comprado: ¡GRACIAS!

Saludos Malignos!

jueves, enero 03, 2008

Correos en la Web (III de IV)

***************************************************************************************
- Correos en la Web (I de IV)
- Correos en la Web (II de IV)
- Correos en la Web (III de IV)
- Correos en la Web (IV de IV)
***************************************************************************************

Tercera parte sobre los correos Web, que hacía tiempo que no los tocábamos. Hoy vamos con otra parte. El mantenimiento de la sesión.

Uno de los ataques que más se intenta realizar en este tipo de entornos es el de Hijacking o robo de la sesión activa. Ejemplos de estos ataques hay muchos, basados en CSRF o XSS, valga por ejemplo como se atacó a Zone-h aprovechándose de un hijacking a Hotmail o como se realizaba el ataque a Gmail o Slashdot.

¿Cuánto dura una sesión?

La variable de sesión es un identificador único compartido entre el cliente y el servidor que se comprueba en cada petición que va desde el cliente hasta el servidor. Este identificador único tiene un tiempo de vida establecido por el servidor. El servidor establece dos tiempos, el de tiempo de uso máximo y el tiempo de inactividad. Cuando se supera el tiempo de uso es necesario cambiarlo y cuando se supera el tiempo de inactividad el servidor lo caduca cerrando la sesión si no se ha negociado otro nuevo identificador. Para ello el cliente tiene que guardar el identificador de alguna forma y entregarlo al servidor de correo.

La Sesión Inmortal de Gmail

En el caso de Gmail sucede un comportamiento muy curioso, las sesiones parecen inmortales. Una de las vaguerías que tengo es usar un XP virtualizado sobre mi Vista para determinadas cosas puntuales. Así, a veces, me conecto a mi cuenta de Gmail como se ve en la imagen 1. Nótese que tengo tooodos los mails sin leer. (Sólo la uso de backup, no me mandéis nada allí)

Como se puede ver, hemos abierto una sesión de Gmail en un XP corriendo sobre un VMWare sobre Windows Vista. En el XP son las 22:24 de… cualquier día. En el Windows vista son las 19:29 de …cualquier otro día. En Gmail es 10 de Diciembre de 2007, como se puede ver por los correos recibidos.

Sesión Gmail en máquina virtual

Suspendemos la máquina y vemos que se preservará todo el entorno.

Suspensión del entorno con VMWare

Días más tarde, volvemos a conectarnos, arrancamos la máquina virtual y hacemos F5 para actualizar la página cargada.

Sesión viva un día después

Como se puede ver ahroa es día 11 de Diciembre (tenemos correos del 10 de Diciembre) pero no se ha caducado la sesión. ¡Es mágica! ¿La sesión es inmortal?

Doctor, se me ha caído una pestaña, ¿es grave?

Otra curiosidad es la “muerte” por pestañas, es el ejemplo en el que alguien le dice a otro: “¿Me dejas ver mi correo un segundo?”, “Sí, como no”, contesta el otro y le abre una pestaña que abra el correo.

Paso 1: Gmail abierto en una pestaña y en la otra pesataña… Nada, o cualquier cosa.

Visitando mi correo

Paso 2: Se cierra la pestaña de Gmail y se vuelve a invocar Gmail.

Pestaña de correo cerrada e invocación de Gmail

Paso 3: et voila… el sistema busca la sesión “apestañada” y…

Reutilizando la sesión

Paso 4: De nuevo el correo electrónico abierto.


Pero no solo eso, como esto es “singelsaingnon” pues se puede pedir, por ejemplo, el blog. ¿Tú no leerás tu correo en cualquier pestaña de por ahí? ¿no?

Uso de la sesión para entrar en Blogger

¿Cómo se cierra una sesión?

La sesión debe ser matada en el servidor ante diversos eventos. Uno de estos eventos es simplemente cerrar el navegador, pero en muchos casos se utiliza un link en la página para realizar un cierre explícito de la sesión. Hay que tener en cuenta que este cierre debe ser real y probado con un código que rule en todos los navegadores.

¿Qué pasaría si el javascript que caduca la sesión no funciona con el navegador que está usando el cliente? ¿O si el cierre no es correcto?

La sesión Malherida, pero no muerta, de Terra

Con mi correo de terra me ha pasado una experiencia muy curiosa.

Paso 1: Entro en mi cuenta de correo de terra a ver si tengo algún mensaje

Bandeja de Entrada

Paso 2: Porque soy muy despistado me copio esa URL tan bonita y me la guardo.

http://correo13.terra.es/cp/ps/Main/layout/MetaFrameset?forceWelcome=welcome&d=terra.es&u=el_malignito&t=12610

Paso 3: Le damos a la X pequeñita que hay arriba al lado del nombre.

Paso 4: Una vez que nos ha echado pegamos la URL que hemos copiado en la barra de direcciones y damos al botoncito de enter.

Bandeja de Entrada..¿con sesión cerrada?

Curioso, de la parte de arriba nos ha echado (Terra), pero la sesión de correo sigue siendo totalmente funcional y se puede acceder a todo el correo.

La Cuenta Listener

Una de las tonterías más tontas que se pueden realizar en estos casos es espiar el correo electrónico mediante una Cuenta Listener. Las Cuentas Listener en correo electrónico son direcciones para almacenar una copia de todo el correo que recive alguien mediante el uso de los servicios de reenvío de mensajes. Mucha gente no sabe ni que existe este servicio y las personas que lo saben, pocas veces se paran a comprobar si ha sido configurada una nueva cuenta. Sólo se suele acceder allí cuando lo necesitas por algo en concreto. ¿Habéis comprobado recientemente que no os hayan configurado ninguna Cuenta Listener?

Cuenta "Listener"

Bueno, basta de cosas tontas por esta tercera entrega, ya habra tiempo para hablar de más cosas tontas en la cuarta … y última.

Saludos Malignos!

***************************************************************************************
- Correos en la Web (I de IV)
- Correos en la Web (II de IV)
- Correos en la Web (III de IV)
- Correos en la Web (IV de IV)
***************************************************************************************

miércoles, enero 02, 2008

¡Qué vengan con los Camellos!

Ya está cerca la noche de los regalos y los Reyes Magos tendrán que traerme muchas cosas. El carbón no me vendrá mal, y si es de dulce mejor que mejor, pero seguro que me cae algún regalo de niño bueno.

No me importa lo que me traigan mientras vengan los Reyes con regalos me da igual lo que sea. No voy a decir, como dice el Robe en su Villancico, eso de "Con que vengan los camellos soy, bastardos, más feliz", porque yo quiero mis regalos.

Eso sí, les voy a dar unos consejos:

1.- No vengais en coche que habrá atascos y el carné por puntos no te dura toda una noche de casa en casa usando las carreteras españolas.

2.- No vengas en avión pues vais a tener que facturar y desde que aterrice el avión hasta que las bolsas de los regalos que habéis facturado lleguen a vuestras manos han pasado dos días. Que tarda menos un avión en hacer un A Coruña-Madrid que una maleta en la T4 en hacer un Avión-Tus manos.

3.- No vengáis en AVE que tiene retrasos por ...¿Errores informáticos?

Así que venid con los camellos que yo les voy a dejar agua para ellos, galletas para los pajes y anis el mono para vosotres, ¡borrachos!.

¿Errores informáticos?, ya estamos como siempre. Imaginaos que los Reyes vienen en AVE y no llegan los regalos. ¿De quien sería la culpa? De los Informáticos. Y es que ahora se va a descubir que en el diluvio universal había un informático que no parcheó el desagüe. Somos unos desgraciaos.

De todas formas, parece que la gente que lleva los sistemas informáticos debía ponerse un poco al día ¿no?

"Sistemas Windows NT y Novel que dan cobertura a nuestras redes locales y a múltiples aplicaciones departamentales y corporativas."

Y sólo le faltaría a los pobres Reyes Magos que cojan la Renfe entre Cinera a Gijón y le toque... no se, un conductor
Ciego (como con el SQL Injection) y.... tengan problemas... no sé... debido... ¿a un error informático?!

En fin... aunque... ahora que lo pienso... ¡¡Aun no he escrito mi carta de los Reyes Magos!! ¡¡Me pongo a ello!

Saludos Malignos!

martes, enero 01, 2008

Gana Google, Pierde Ubuntu

¿Resacos@s? ¿Jodido@s? ¿Hech@s fosfatina? !Haberlo pensado antes! Empieza el año, se acabó el remoloneo, basta de cachondeos y fiestorros y al lío, ¡qué hay que ser productivos!.

Yo, para poder dormir la resaca tranquilo, he dejado escrito este post el día 31 de diciembre del año pasado, antes de salir de fiesta (acabo de comprobar que los datos están bien), así que, incluso resacoso perdido y con las legañas en los ojos, voy a poder publicar el día de año nuevo, para que no falte la dosis diaria de basura....

Ya sabéis que a mí me gusta esto de los numeritos, de ir contando cosas, y que este año estabamos contando como iban los CPDs de algunas empresas que trabajan en esto que llaman "la tecnología". Seleccioné 14 compañías y he ido mirando como iba el uptime de su web para ver cuantos CPS hacían los deberes.

La famosa cuota de cinco nueves, 99,999 % servicio, es decir poco más de 5 minutos de caida al año, no ha sido alcanzada por nadie. El más cercano ha sido Google que ha sacado 4 nueves. Spectra se quedó segundo, después de ser el mejor CPD durante todo el año el 12 de diciembre, con una caida de servicio de 28 minutos perdió el primer puesto que fue a parar a manos de Google. A la postre este ha sido el único (de las empresas de la lista) con una parada inferior a 1 hora (acumluada) durante el año 2006.

En el otro lado de la lista se encuentran los que han tenido una caida de servicio de más de 1 día, es decir, que siguiendo los preceptos de San Ubuntu, se han tomado un día de descanso extra en el CPD. Eso sí, Ubuntu ha mejorado en la segunda mitad del año con respecto a su primera vuelta. Los otros dos que han pasado del día sin servicio han sido Youtube, que parece más normal y al mismo tiempo más peligroso (más normal porque es un servicio puramente online y eso le obliga a soportar más carga y al mismo tiempo más peligroso pues al ser una empresa puramente online se ven obligados a ser mejores) y Sun Microsystems. Llama la atención encontrar a Sun con una caida de servicio de más de 1 día y con caidas mensuales similares, es decir, que parece que "los males" son crónicos. Además, Sun se ve lejo de empresas competidoras directas como Spectra, IBM, HP, Oracle, Dell o RedHat.


Datos según Pingdom. Haz click en la imagen para ver detalles por meses

Como sabéis estos datos no hablan de la calidad del software sino de la gestión del servicio, el diseño, la planificación, el mantenimiento, los planes de contigencia, etc... Todos los datos están sacados de Pingdom y podéis comprobarlos aquí:

[www.ubuntu.com],[www.youtube.com],[www.sun.com],[toshiba.com],[cisco.com],[www.dell.com],[www.redhat.com],[www.oracle.com],[www.ibm.com],[www.hp.com],[www.amd.com],[www.apple.com],[www.microsoft.com],[www.google.com]

Venga, que empezó la "fiesta". Maligno año nuevo!