Thursday, January 15
Broken Authentication attack
A pesar de su criticidad los ataques por aprovechamiento de Broken Authentication son elevados, así lo afirma OWASP al incluirlos en el puesto número 7 de su TOP10.
¿Qué podemos hacer al respecto? Primero, entender en que consiste.
Un ataque por broken authentication se basa en el error de los métodos de protección de una determinada página, en la cual, por definición de vulnerable, se emplean malos hábitos para la gestión del acceso a un área en particular, dichos errores pueden ser la utilizacion de métodos GET en lugar de POST, la no-utilizacion de SSL, el no cifrado de los session-id, el permitir _e_interpretar_como_correctos_ parámetros malformados por un atacante, etc, etc, etc...
Aquí les dejo un video con el ejemplo de como realizar una vulnerabilidad por Broken Authentication (No es casualidad que tenga este archivo aquí y ahora, el verlo inspiro este post).
¿Como prevenirlo? Leamos lo que nos recomiendan los que saben. Link a Recomendaciones de OWASP.
Saludos, Leer más...
Wednesday, January 14
Header Drawings
Ver Headers Drawings
Saludos, Leer más...
Análisis de Malware.-
Análisis de Malware
Enjoy it!
Saludos, Leer más...
Seguridad en las sesiones de las aplicaciones Web - IV
Seguridad en las sesiones de las aplicaciones Web - IV
Saludos, Leer más...
Tuesday, January 13
Videos y Presentaciones: DISI 2008
Saludos, Leer más...
Monday, January 12
MD5 Collision Demo
Collisions in the MD5 cryptographic hash function
It is now well-known that the crytographic hash function MD5 has been broken. In March 2005, Xiaoyun Wang and Hongbo Yu of Shandong University in China published an article in which they describe an algorithm that can find two different sequences of 128 bytes with the same MD5 hash. One famous such pair is the following: d131dd02c5e6eec4693d9a0698aff95c 2fcab58712467eab4004583eb8fb7f89and d131dd02c5e6eec4693d9a0698aff95c 2fcab50712467eab4004583eb8fb7f89Each of these blocks has MD5 hash 79054025255fb1a26e4bc422aef54eb4. Ben Laurie has a nice website that visualizes this MD5 collision. For a non-technical, though slightly outdated, introduction to hash functions, see Steve Friedle's Illustrated Guide. |
As we will explain below, the algorithm of Wang and Yu can be used to create files of arbitrary length that have identical MD5 hashes, and that differ only in 128 bytes somewhere in the middle of the file. Several people have used this technique to create pairs of interesting files with identical MD5 hashes:
|
The following is an improvement of Diaz's example, which does not need a special extractor. Here are two pairs of executable programs (one pair runs on Windows, one pair on Linux). These programs must be run from the console. |
How it works
The above files were generated by exploiting two facts: the block structure of the MD5 function, and the fact that Wang and Yu's technique works for an arbitrary initialization vector. To understand what this means, it is useful to have a general idea of how the MD5 function processes its input. This is done by an iteration method known as the Merkle-Damgard method. A given input file is first padded so that its length will be a multiple of 64 bytes. It is then divided into individual 64-byte blocks M0, M1, ..., Mn-1. The MD5 hash is computed by computing a sequence of 16-byte states s0, ..., sn, according to the rule: The method of Wang and Yu makes it possible, for a given initialization vector s, to find two pairs of blocks M,M' and N,N', such that f(f(s, M), M') = f(f(s, N), N'). It is important that this works for any initialization vector s, and not just for the standard initialization vector s0. Combining these observations, it is possible to find pairs of files of arbitrary length, which are identical except for 128 bytes somewhere in the middle of the file, and which have identical MD5 hash. Indeed, let us write the two files as sequences of 64-byte blocks: The blocks at the beginning of the files, M0, ..., Mi-1, can be chosen arbitrarily. Suppose that the internal state of the MD5 hash function after processing these blocks is si. Now we can apply Wang and Yu's method to the initialization vector si, to find two pairs of blocks Mi, Mi+1 and Ni, Ni+1, such that si+2 = f(f(si, Mi), Mi+1) = f(f(si, Ni), Ni+1). This guarantees that the internal state si+2 after the i+2st block will be the same for the two files. Finally, the remaining blocks Mi+2, ..., Mn can again be chosen arbitrarily. So how can we use this technique to produce a pair of programs (or postscript files) that have identical MD5 hash, yet behave in arbitrary different ways? This is simple. All we have to do is write the two programs like this:
Program 1: if (data1 == data1) then { good_program } else { evil_program } and arrange things so that "data1" = Mi, Mi+1 and "data2" = Ni, Ni+1 in the above scheme. This can even be done in a compiled program, by first compiling it with dummy values for data1 and data2, and later replacing them with the properly computed values. |
Here, you can download the software that I used to create MD5-colliding executable files.
Quick usage instructions:Note for Windows users: the below instructions are for Unix/Linux. On Windows, you may have to append ".exe" to the names of executable files. Also, to use "make", you must have the GNU tools installed and working.
|
Fuente: Peter Selinger's WebPage. Leer más...
Sunday, January 11
Mini-Tutorial de Esteganografía/Estegoanálisis. Técnica Sustitutiva LSB by Alfonso Muñoz
Fuente: Un informático del lado del mal
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 difícil 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/
Leer más...