Bueno en este pequeño tutorial, les mostrare como normalmente analiso un reto para poder resolverlo. Aqui hace un dia resolvi un reto de “Hackthisite” y decidi que explicaria como lo hice. El reto en cuestión es el reto 8. Y nos proveen con esta imagen:

.-Lo primero que hago es descargarla a mi computadora.
.-Ahora lo siguiente que hago es ver su extension; BMP….FUCK!!! una de las extensiones que menos me gusta, por que la estructura de este formato no la conozco bien y por que en caso de que se necesite programar algo para LSB o algo, yo no se manejar ficheros BMP con PHP con ayuda de la liberia GD. Asi que empezamos mal
.-Sea como sea, no me sirve de nada ver una extensión, debo comprobar que si sea el tipo de fichero que dice la extensión. Para eso abrire la imagen con mi editor hexadecimal.
.-Con el editor hexadecimal, hare principalmente dos cosas importantes
1) Ver la cabecera del archivo para saber de que tipo de fichero se trata.
2) Ver si hay algo oculto por EoF y con suerte, asi resolver facilmente el reto.

.-Al abrirlo veo la cabecera y los primeros dos bytes son: “424D” (BM), bien vamos bien, si se trata de un BMP(por desgracia
)
Siguiendo analizandolo, vemos que despues de 53 bytes que definen la estructura basica de un BMP, nos encontramos con muchos bytes (FF), en ciertos lados hay bytes (00), que por lo que me sospecho, esto nos dice que la imagen esta constituida por una imagen con un color predominante, con algunos pixeles distintos (muy pocos). Si seguimos viendo la estructura, encontraremos que una parte del fichero, hay mas bytes (00) y algunos (C7, 7C, D9, 8C, BD, E9, F0, 9A, A7 y D0) como sea son muy pocos y nada relevante.

Llegamos al final del fichero y no encontramos ningun otro fichero oculto. Tampoco es muy grande el fichero.

.-Bueno ahora si, descartamos esteganografia por EoF.
.-Asi que tendremos que pensar en ir por otro lado. Me digo a mi mismo: “Mi mismo ¿Recuerdas Todos esos bytes parecidos en el BMP y que algunos pocos eran diferentes, NO SE TE HACE UN POCO RARO??? SI….Para mi que la mejor alternativa es ver por los COLORES. Seguro hay algo ahi.
.-Entonces abro la imagen con mi visor “INFRAVIEW” que si hay algo en los colores me sera de utilidad.

.-Al abrirla veo un texto que dice “HELLO” y veo una linea debajo. ¿Que hace esa linea ahi, tan solita??? Bueno sigamos.
.-Con el infraview, me pongo encima de el color blanco y doy click, y miro en la parte de arriba, para que me de el color RGB, me da (255,255,255) osea un BLANCO PURO, hago lo mismo en diferentes lados y es el mismo resultado.

Ok, todo bien, pero ahora hagamos un ZOOM y veamos esas letras.
.-Al ver las letras con el zoom, claramente se ve la consistencia del color negro (0,0,0), SIN EMBARGO hay algunos pixeles en la “E”,”L”,”L” y “O”…puede ser que ahi este la clave…
para descartar que ahí este la clave se me ocurre algo. Veo que las “eles” (LL) son iguales y tiene los mismos pixeles de diferente color. Lo que hago es ver los valores RGB de los pixeles que no son negros (0,0,0) de una “L” y despues los comparo con los de la otra “L”. Veo que SON EXACTAMENTE LOS MISMOS, asi que los dejo en paz, ya que con eso vi, que no son hechos aproposito, si no que con el programa de diseño que usaron para crear la imagen, puso esos pixeles.

Puedo hacer otras dos pruebas que confirman esto; 1)con la “O” si la parto verticalmente a la mitad, de tal modo que quede simetrica, veo que los valores RGB de la derecha, se REPITEN EXACTAMENTE IGUAL en la izquierda.

2) Algunos de esos pixeles que no son “negros puros” en las letras, tienen de valor RGB “240″ “124″ o “199″ y eso si lo interpretamos en ASCII (- | Ã) no nos dice nada coherente. Por lo que DESCARTAMOS que en esos pixeles haya algo escondido.

.-Ahora si pasemos a lo unico que nos falta. LA LINEA…Desde el principio sospeche de ella
.-Hare mas zoom en esa linea, y vere que es un tipo de color ROJO, pero no es puro (255,0,0) ni consistente en toda la linea. Cambia casi en todos los pixeles de la linea.

.-Ahora hare lo mismo, vere los valores RGB de cada pixel, y empiezo: (112,0,0),(97,0,0),(115,0,0),(115,0,0)…etc…


.-Esperen un minuto!!!! Si sera por aca??? o ¿estoy perdiendo el tiempo? Si vemos los primero valores RGB, vemos que todos tienen un numero en el “Red”, y en el “Green” y “Blue” tienen ceros “0″. Aparte de eso si vemos los valores numericos de los “Red” estan comprendidos entre los 97 y cientos y tantos…Eso en ASCII tiene mucha lógica. Yo creo que si es por aca ^^
.-Si traducimos a ASCII los primeros valores que tenemos “112.97.115.115″ nos da: “pass” GENIAL!!!! vamos bien. Sigamos…
.-Sacamos todos los valores “RED” de los valores “RGB” que son los que nos interesan. y nos da: 112.97.115.115.119.111.114.100.61.89.114.82.111.116.55
.-Despues tenemos varias opciones, buscamos el numero a su equivalencia ASCII en la tabla, o Vamos apretando ALT+# o la que yo use, fue programar un script en PHP que me retorne el ASCII de los valores que saque. Mi script es este:
<?php
$num="112.97.115.115.119.111.114.100.61.89.114.82.111.116.55"; $exp=explode(".",$num); >for($i=0;$i<count($exp);$i++) {
$chr=chr($exp[$i]); echo $chr; }
?>
Y me basta con ejecutarlo y Sale:

Como vemos sale: password=****** (CENSURO EL PASS, PARA NO DAR RESPUESTA AL RETO, y QUE LO HAGAN)LISTO YA LO RESOLVIMOS!!!!Sin embargo hay una solución mas facil, Si volvemos a revisar CAUTELOSAMENTE el archivo con nuestro editor hexa. Vemos una parte que dice: p..a..s..s..w..o..r..d..=..*..*..*..*..*..*..

¿Por qué?
Por que El formato bmp tiene esa característica. Los bytes que vemos, esta intimamente relacionados, con los PIXELES que tiene la imagen. Asi si vemos en el editor hexadecimal, donde esta la “p” tiene un valor de byte de “70″ luego siguen dos puntos que son “00 y 00″ despues esta la “a” con otros dos puntos que tiene valores “61 00 00″ Si esos primeros 6 valores (70 00 00 61 00 00) los convertimos a decimal nos da: (112 0 0 97 0 0) ¿Los reconoces? Claro!!! Son los valores RGB ^^ Nada mas que aqui estan en hexadecimal, pero al imprimirlos en ASCII sale la respuesta por eso…


Aqui el autor del reto, no tuvo cuidado de eso. Hubiera sido mejor elegir otro tipo de formato(como PNG. JPG, o GIF), donde no estaria este BUG.
Bueno eso es todo. Creo que me extendi un poco. jeje Esque aqui explique mucho, pero en si no hago todo eso parte por parte, sino que ya lo hago automaticamente, por mi experiencia en esto, de hecho el reto lo resolvi en “5 minutos”. De hecho me tarde mas en hacer el script que en encontrar el metodo esteganografico.
Espero esto masomenos les de una idea de como se resuelve…oh mas bien…como resuelvo YO (hecky) los retos…
Resumen para buscar en una IMAGEN:1.Ver formato y cabecera
2.Al ver el formato, enfocarse en las tecnicas mas usuales a ese formato
3.Analisis con editor hexadecimal
4.Ver colores
Y Que con esto LOGRE IMPULSAR que resuelvan RETOS DE ESTEGANOGRAFIA, en los diferentes WARGAMES que hay o los que publico aqui como vieron no son dificiles. Solo hay que dedicarnos un poco.
Saludos
Att. hecky para Neobits.org