Solución al Forensic CyberSecurity Challenge. Parte 1/2

Como seguro que sabéis, hace ya unos meses que Andrés Caro, profesor de la Universidad de Extremadura y director de la Cátedra de patrocinio ViewNext-UEx sobre «Seguridad y Auditoría de Sistemas Software» y Tote Sancho, Ingeniero en Informática y también investigador de la Cátedra ViewNext-UEx, me propusieron desarrollar un #CiberRETO forense, de dificultad alta, para que todo aquel que quisiera participar en la competición individual y demostrar sus competencias en el ámbito de la ciberseguridad, lo pudiera hacer a través de esta fantástica iniciativa, cuya finalidad es detectar y premiar a las nuevas promesas de la ciberseguridad del ámbito nacional. Además, al ganador de la competición, entre otros premios, se le regalará un ordenador portátil de última generación.

 

Fig. 1 Flyer CyberSecurity Challenge

 

La competición se basa en el sistema CTF (Capture the Flag), por lo que a cada participante, se le entregaran una serie de ficheros o accesos a sistemas informáticos, para que a través de distintas técnicas de: Ingeniería inversa, Exploiting, Análisis Forense, Hacking web, Criptografía y Esteganografía, puedan ir descubriendo cuales son los flags de cada una de las pruebas, y así, ir obteniendo puntos en la clasificación final. El que mas puntos obtenga, ganará la competición.

 

Fig. 2 Alzando la bandera en Iwo Jima

 

En el caso del reto forense, se entregará a cada participante un fichero tipo TAR.GZ, nombrado como: “IMAGEN_DIFU_ForoCIBER_m4nu_GLIDER_Forense_MD5_e1b316594ff7bf55c8f8488f5aff4a7b.tar.gz”, con un peso total de 3,4 MB (3.362.087 bytes para ser mas exactos). A partir de este fichero, cada uno de los competidores tendrá que desarrollar sus capacidades técnicas, lógicas e intuitivas para poder realizar un tratamiento adecuado de esta evidencia digital y lograr localizar el tan preciado flag.

Cuando Andrés y Tote me pidieron este reto, al momento sabía lo que tenía que hacer, y esto no es otra cosa que crear un reto realista. En algunas competiciones CTF en las que he participado como competidor, el apartado de análisis forense se basaba en retos totalmente inverosímiles, es decir, que en la vida real nunca se le van a dar esos casos a ningún analista. Por eso yo buscaba huir de ese tipo de pruebas “teóricas”, así que he diseñado una prueba basada completamente en mis experiencias personales y reales a la hora de realizar análisis forenses de distintas evidencias digitales. Una vez explicado esto, y a falta de poco mas de 24 horas para que termine el plazo de presentar las soluciones a los retos, les dejaré en este artículo una pequeña pista a todos aquellos competidores que están un poco estancados con la prueba forense. Ahí va:

En este caso, y en cualquiera que se nos pueda dar, lo primero que deberemos hacer con el fichero TAR.GZ que nos ha proporcionado la organización es fijarnos en el nombre del mismo, quizás a través del nombre podamos obtener la primera pista del reto, o quizás no, pero la única forma de averiguarlo es comprobándolo. En este caso, podemos ver que el nombre del fichero termina en: “MD5_e1b316594ff7bf55c8f8488f5aff4a7b”.

 

Fig. 3 Fichero para analizar

 

Teniendo en cuenta que se trata de 32 caracteres hexadecimales precedidos de la palabra MD5, podemos suponer que sea un HASH tipo MD5 de algo. – ¿Y de que podrá ser?. – Pues por poder puede ser de muchas cosas, pero lo mas probable es que sea: o el hash de una contraseña “cifrada” o el hash del fichero en si. Para comprobar si se trata de una contraseña cifrada, existen muchas formas, pero la mas sencilla es que Google trabaje por nosotros, tan fácil como buscar la cadena en cuestión en el buscador, si nos arroja algún resultado, será un indicador de que se puede tratar de una contraseña:

 

Fig. 4 crack the hash by Google

 

En este caso es negativo, pero si por ejemplo, si el string fuera: “210cf7aa5e2682c9c9d4511f88fe2789” Podríamos pensar que tiene alguna relación con la palabra “admin”, a la cual le corresponde ese hash. Como no se trata de nada de eso, nos olvidamos de esta teoría y pasamos a la siguiente. – ¿Que otra cosa puede ser?. – Lo mas probable es que sea el hash del mismo fichero, así que vamos a comprobarlo:

 

Fig. 5 Hash del fichero evidencia.

 

Como se puede ver en la imagen superior, efectivamente se trata del hash MD5 del propio fichero. Si estas pensando como es posible insertar en el nombre de un fichero el hash de propio fichero y si esto no es un poco como la película de “Inception”, la realidad es que no, como ya expliqué en el artículo: “Prueba Nula, el hash no coincide”  al calcular el hash de un fichero no influye el nombre del propio fichero, así que tranquilamente podremos calcular el hash de cualquier fichero, luego renombrar el fichero por un nombre que incluya la suma MD5 calculada sin miedo a modificar el hash calculado previamente, y no, no es brujería, es simplemente comprender como opera una funciona hash. Todo muy bonito. – ¿Pero para que ha valido todo esto?. – Realmente para nada. Que el nombre del fichero incluya un hash, en este caso solo sirve para comprobar la integridad del fichero que hemos descargado y que no está corrupto o que no nos ha fallado la descarga. Lo siento, el forense es así, no vas a obtener un resultado de interés con cada comando que ejecutes.

Visto lo visto, vamos a descomprimir el fichero para ver lo que tiene dentro, y tratar de continuar con el reto:

 

Fig. 6 Descompresión de la imagen.  

 

Si al tiempo que estás leyendo este artículo vas ejecutando los pasos que te voy contando por aquí, no te asustes por lo que te acaba de ocurrir al tratar de descomprimir el fichero, no estás viendo Matrix en tu consola, esto como ya os dije: es la vida real, no es un reto que alguien se ha inventado en su casa, y si, acabáis de descomprimir ni mas ni menos que: 157.288 ficheros de un TAR.GZ de menos de 4MB!!!.

 

Fig. 7 un maravilloso ls | wc -l

 

– ¿Pero que son todos esos ficheros que parecen secuenciales y tienen nombres como: “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense0000aa”, “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense0000ab”, “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense0000ac”?. – Vamos a tratar de averiguarlo. Si abrimos el primero de los ficheros (teniendo en cuenta el orden del abecedario) con un editor hexadecimal podemos comprobar que el fichero comienza con los valores hexadecimales:4E 54 46 53, o lo que es lo mismo: el valor con el comienzan todas las particiones de discos duro en formato NTFS.

 

Fig. 8 cabecera NTFS en hexadecimal

 

Lo que significa que muy probablemente, teniendo en cuenta el propio nombre del fichero, se trate de una imagen forense de algún tipo de dispositivo de almacenamiento, y si, como seguro que os estáis imaginando, la imagen está troceada en mas de 150 mil partes. – ¿Por qué?. – Eso mismo me pregunté yo el día que me entregaron una imagen forense de un disco duro de 1Tb troceado en partes de 1024 bytes. Aprovecho la ocasión para agradecer a la persona que tuvo a bien trocear en mas de un millón de partes una imagen forense y luego renombrar esos trozos de forma aleatoria para facilitarme la tarea de tratarla. En serio: gracias, gracias a ti hoy tenemos este reto 😉

Ahora comienza lo divertido, si estás pensando en ir a tu Windows, abrir tu herramienta forense favorita y tratar de cargar la imagen “a pelo”, quizás te encuentres con que no vas a poder abrir una imagen troceada en tantas partes. – ¿Y ahora que hacemos?. – Pues si está troceada, vamos a unirla. – ¿Como?. – Con “cat”. Si sois usuarios de sistemas Linux, habréis utilizado alguna vez el comando “cat” para “abrir” un fichero de texto y poder leer su contenido, pero igual lo que no sabéis (o quizás si) es que “cat” realmente no es un visor de texto (aunque se utilice para ello), “cat” lo que hace realmente es concatenar el fichero que le pases con el siguiente, lógicamente si solamente le pasas un fichero y no diriges la salida a ningún sitio, nos mostrará por consola el contenido del fichero. Pero como “cat” realmente lo que hace es concatenar el contenido de los ficheros que le pases, es decir, “unir los ficheros”, podremos concatenar (unir) todos y cada uno de los ficheros en los que se ha partido la imagen y lograremos tener una imagen válida para trabajar, pero… ¡Oh, wait!

 

Fig. 9 cat fake

 

Al igual que el resto de software forense, la lista de argumentos es demasiado larga para concatenarla de una sola atacada, así que tendremos que ir por partes, o mejor dicho, por trozos. Os voy a contar la forma mas extravagante que se me ha ocurrido para unir todas estas partes en una sola, no digo que no existan mas métodos, pero seguro que ninguno es tan chulo como el que os voy a enseñar:

Lo primero será mediante cat, ir concatenando un número limitado de partes, al estar nombrada cada parte en un orden alfabético, podemos ir ejecutando el comando: “cat NOMBRE_DEL_FICHERO_a* > salida1” para en vez de concatenar todos los trozos de una sola vez, ir haciéndolo por tramos y que de ese modo, cat no se sature. Es decir, primero con la A, luego la B, la C, la D… Y así todo el abecedario. ¡OJO! No nos olvidaremos de cambiar el nombre del fichero de salida para que no se sobre escriba con el siguiente, y a poder ser estableceremos nombres que nos permitan conocer el orden de creación: salida1, salida2, salida3

 

Fig. 10 concatenar, concatenar y concatenar…

 

De momento todo va bien, el problema es al hacer: “cat NOMBRE_DEL_FICHERO_z* > salida27”, resulta que en la Z, comienza la siguiente serie de números, por lo que de nuevo nos hemos pasado con el número de argumentos que cat es capaz de procesar.

 

Fig. 11 Quien mucho abarca, poco aprieta.

 

Así que a volver a realizar otro segundo nivel de tramo, en este caso sería algo tal que así: “cat NOMBRE_DEL_FICHERO_za* > salida27”…

 

Fig. 12 cat…

 

Si a estas alturas ya estáis pensando que esto es un rollo, siento deciros que ni tan siquiera habéis comenzando, aún os quedan otros cuatro niveles mas de “abecedario” para poder pasarle un argumento completo a cat sin que se sature. ¿Quien dijo que fuera fácil?… Venga, a seguir: AZA, AZB, AZC, AZD,…, ZZHA, ZZHB, ZZHB,… ZZHYSA, ZZHYSB, ZZHYSC… No seré yo quien diga que no existen métodos mas sencillos para unir estas ciento cincuenta mil partes de una imagen, pero nadie me podrá decir que este no es un método válido, aunque si un poco estrafalario. Aquí es dónde cada cual deberá sacar su ingenio a trabajar para encontrar un método mas “elegante” y sobre todo, eficiente para realizar esta tarea lo mas rápido posible, ya que solo os quedan 24 horas para terminar el reto.

Una vez hayáis acabado de “arrejuntar” todos esos ficheritos, solo os quedará concatenar lo ficheros ya concatenados, valga la redundancia:

 

Fig. 13 concatenando lo concatenado

 

Ahora si, ya sea con este método, programando un script que os automatice la tarea, a hachazos 😉 o con lo que quiera que se os haya ocurrido, habréis logrado obtener un fichero de unos 15728640 bytes, o lo que es lo mismo 15,7MB (si os falta un solo byte, es que algo habéis hecho mal). Si os habéis fijado, entre los tropecientos mil trozos de imagen seccionada, había un fichero llamado: “IMAGEN_ForoCIBER_m4nu_GLIDER_Forense.info”, si lo abrimos con cat (jeje) veremos que reza lo siguiente:

 

Fig. 14 Hash SHA1 de la imagen.

 

En efecto, es el log de creación de la imagen forense, y entre sus lineas nos encontramos con una que nos dice cual es la firma digital, ahora si, en SHA1, de la imagen forense, en este caso, el HASH: 0e991fc1b321fabce495099a783c4146fe074e9f. Si todo ha ido bien, y no nos hemos confundido en el orden a la hora de unir todos los trozos de la imagen y sobre todo, si no nos hemos dejado ningún trozo atrás, al comprobar el HASH SHA1 de nuestro imagen, nos debería dar este mismo resultado, veamoslo:

 

Fig. 15 comprobación del hash

 

En efecto, el hash coincide y ya podremos comenzar el análisis de la evidencia., ¡Por fin!, pero esto ya lo dejamos para otro día, que el reto todavía continua abierto.

 

Continúa leyendo la Segunda parte de  Solución al Forensic CyberSecurity Challenge 2.  PULSANDO AQUÍ.

 

¿Te ha gustado este artículo? Si quieres, puedes ayudarme a escribir el siguiente artículo de GLIDER invitándonme a un rico café.

 

Pulsa Aquí para invitarme a un café con hielo.

  Salu2.

Manuel Guerra

Mi nombre es Manuel Guerra. Investigador especializado en: [eCrime] | [Forensic] && [Hacking]. Editor de GLIDER.es

Navegación de la entrada


Comentarios

  • Aprendiz

    !!!!!!!!Queremos el archivo¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
    !!!!!!!!Queremos el archivo¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
    !!!!!!!!Queremos el archivo¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
    Me encantan estos retos pero sin el archivo no tienen mucha utilidad.
    !!!!!!!!Queremos el archivo¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
    !!!!!!!!Queremos el archivo¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
    !!!!!!!!Queremos el archivo¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

    • Manuel Guerra

      Hola, en breve subiré el fichero junto con las instrucciones!! un saludo

  • Andres Galvez Cordova

    puedes compartir el achivo o de donde lo descargamos por favor para practicar los pasos que mensionas

    • Manuel Guerra

      Si, en breve lo subiré junto con las instrucciones.

      Un saludo!!

Responder a Aprendiz ×

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>