Unos días atrás, nos encontramos con un nuevo reto en el que a partir de un archivo comprimido que se había capturado, debíamos descubrir que técnicas o consejos se decía que se estaban utilizando últimamente para instalar malware en los sistemas.
Al abrir el fichero attachment.rar vemos que contiene tres imágenes de ruinas romanas: “0.jpeg”, “1.png” y “3.jpg”.
Fijándonos un poco, lo único que destaca de las fotografías son los pequeños números romanos que aparecen en la esquina inferior derecha de dos de las fotos (“II” y “IV”) y que parece ser que falte la imagen “2”, ya que pasa de la “1” a la “3”.
Sabiendo que posiblemente nos falte un archivo, analizamos cómo se crea un archivo rar, y vemos que está formado por la cabecera principal del rar (main header), y luego una cabecera para cada uno de los archivos comprimidos (file header) donde el valor “0x74” indica que se trata de la cabecera de un fichero, seguido por el nombre del archivo y el propio archivo comprimido. En cambio, si analizamos nuestro archivo, vemos que esta regla no se cumple, y que en vez de un “0x74” nos encontramos un “0x00”, cosa que provoca que se salte a la siguiente cabecera de archivo y se omita el actual.
Así que para poder visualizar el archivo que falta, bastaría con substituir el valor “0x00” por “0x74” en la cabecera del archivo.
Si no se hubiera caído en la posibilidad de que faltaba un fichero, conociendo como está formado un archivo rar, se podía leer el nombre del archivo oculto “9_2.rar” de una manera relativamente fácil. De esta manera uno podía darse cuenta de que había un fichero extra que no aparecía.
Al hacerlo, vemos como aparece un nuevo archivo llamado “9_2.rar”, el cual es otro archivo rar con una nueva imagen y un archivo txt que contiene el token que necesitábamos para abrir el archivo comprimido validator1.rar y solucionar la primera parte del reto.
Una vez poseemos todas las imágenes, vemos que todas hacen referencia a Roma y que en una de ellas aparece Cesar, por lo que todo parece apuntar a que puede haber algo cifrado con “Cesar”.
Si analizamos los datos EXIF de las imágenes, parece ser que estos datos han sido modificados, ya que vemos que la resolución real de la imagen no concuerda con la que aparece en los datos EXIF, que las fechas indican que las fotos han sido tomadas en junio (mes que aún no ha llegado) y que todas las fotos están tomadas a la misma hora (aunque se ve claramente que son de diferentes lugares y momentos).
Como nota, quería destacar que las imágenes PNG no soportan los metadatos EXIF propiamente, pero permiten añadir información como “key=valor” que puede hacer la misma función. En este reto, al utilizar una imagen PNG, si se intentaba obtener sus datos EXIF según la especificación era posible que se obtuviera un error como el siguiente:
En cambio, si lo hacíamos con una herramienta como exiv2 no había ningún problema:
Se decidió utilizar una imagen PNG para demostrar que también se podía utilizar metadata en ella ;)
Fijándonos en los datos de la marca de la cámara, vemos algo que parece ser hexadecimal, pero que al pasarlo a caracteres ASCII no tiene ningún sentido. Así que podría ser que estuviera cifrado con el cifrado de Cesar (utilizando únicamente caracteres hexadecimales).
Personalmente, no conozco ningún cifrador de Cesar para hexadecimal, así que se ha creado uno para que nos facilite la faena.
Suponiendo que está cifrado con Cesar, únicamente nos faltaría encontrar el desplazamiento que se ha usado en cada uno de los mensajes, y en este momento es donde tienen sentido los números romanos de las fotografías. Ya que éstos indican el desplazamiento de cada uno de ellos (“2”, “3” y “4” para las imágenes “1.png”, “2” y “3.jpg” respectivamente). Así que descifrando cada uno de los mensajes hexadecimales y convirtiendo el resultado en ASCII, podemos obtener lo siguiente:
Una vez descifrados, vemos que parecen instrucciones php con alguna parte codificada en base64, por lo que ejecutando las líneas directamente en php obtendremos los mensajes de cada una de las fotografías.
Donde ordenándolos según el número de fotografía obtenemos el token que abre el segundo validador (validator2.rar): “usEMetAdatA:iTs_v3rY_usEfuL”.
Como información extra, comentar que el uso de metadatos EXIF se estaba utilizando recientemente para instalar malware y por eso decidí utilizar algo similar en este reto ^^
Y hasta aquí llega la solución del reto. Enhorabuena a aquellos que hayáis logrado superarlo, y los que no, espero que al menos hayáis disfrutado y aprendido nuevas técnicas de como ocultar información ;)
(Enhorabuena a Kachakil, que como en otras ocasiones ha resuelto el reto sin dificultad)
que bueno muy bueno a practicar a la noche
Excelente, me encantan este tipo de iniciativas que ponéis en marcha para animar al personal. Además es un tema de actualidad. Saludos.