Como parte de otra tarea asignada en la escuela me tope con que nos dejaron un pequeño reto forense, buscando un poco es un reto que había sido publicado el 27 de agosto de 2013 en la pagina: http://www.hackplayers.com/2013/08/reto-18-un-pendrive-y-el-caso-de-los.html y su respectiva solución de igual manera se puede encontrar en el mismo sitio: http://www.hackplayers.com/2013/08/solucion-al-reto-18-un-pendrive-y-el.html.
Esta es la forma en que fue realizado este reto a manera de titulo personal y para conocimiento de los compañeros de la clase. Saludos a los miembros de la pagina Hack Players.
Agregar la evidencia
De manera inicial tenemos el archivo imagen coches.E01, para poder abrirlo utilizaremos un software gratis (no libre) para estos casos de la informática forense llamado FTK Imager que lo podemos obtener desde el siguiente enlace: http://accessdata.com/product-download/digital-forensics.
Ya con el programa instalado lo ejecutamos y abrimos el archivo de evidencia.
Agregamos el archivo de la imagen como fuente de la evidencia.
Seleccionamos el archivo.
Importamos el archivo.
Imagen de evidencia agregada.
Es la imagen de una memoria USB, los archivos de interés son la imagen de una rubia y tres capturas de red.
Vamos a validar la imagen de la chica rubia.
Visualizamos la imagen en formato hexadecimal.
Análisis de la imagen.
La imagen inicia con los siguientes datos hexadecimales: 89504E470D0A1A0A. Esto coincide con que es una imagen PNG si buscamos estos datos en la pagina de: http://www.garykessler.net/library/file_sigs.html.
Hay algo llamado autopsy.jpeg dentro del código hexadecimal y esto es lo raro, un poco arriba de este nombre de autopsy viene el final de la imagen de la rubia que finaliza con estos datos hexadecimales: 49454E44AE426082 que es el final de una imagen PNG.
Por lo tanto ¿que es todo ese código hexadecimal que sigue? el cual inicia con los siguientes datos: 504B0304 (PK..), si buscamos otra vez en los “magic numbers” vemos que es un archivo del tipo ZIP y lo corroboramos con el final del archivo que coincide con los datos de un archivo de este tipo, los datos al final del archivo son: 504B0506 (PK..)
Entonces hay un archivo Zip escondiéndose en la rubia.
Vamos a ver un poco más de cerca, si detectamos con el comando file vemos que nos dice que es una imagen pero ya vimos que no es así.
[gabriel@daneel MISTI-FI]$ file rubiaca.png rubiaca.png: PNG image data, 240 x 400, 8-bit/color RGB, non-interlaced
Si intentamos copiar el archivo y le ponemos la extensión zip.
[gabriel@daneel MISTI-FI]$ cp rubiaca.png rubiaca.zip
Lo copiamos con cp para no borrar el archivo original.
Vamos a ver si detecta el archivo zip tratando de descomprimir la imagen.
[gabriel@daneel MISTI-FI]$ unzip -v rubiaca.zip Archive: rubiaca.zip warning [rubiaca.zip]: 75877 extra bytes at beginning or within zipfile (attempting to process anyway) Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 27537 Unk:099 27330 1% 08-13-2013 02:52 00000000 autopsy.jpeg -------- ------- --- ------- 27537 27330 1% 1 file
No lo hace pero menciona que tiene 75877 bytes extras al inicio del archivo, si, la rubia son esos bytes extras y tiene comprimida una imagen llamada autopsy.jpeg.
Si no fuera un archivo zip nos hubiera mandado algo así de ser una imagen normal.
[gabriel@daneel 041614536]$ unzip -v img_20160523_211144997.jpg Archive: img_20160523_211144997.jpg End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in one of img_20160523_211144997.jpg or img_20160523_211144997.jpg.zip, and cannot find img_20160523_211144997.jpg.ZIP, period.
Bueno entonces vamos a ver como sacar ese archivo comprimido. Si lo queremos extraer ya con una herramienta gráfica lo vemos más claro, hay una imagen ahí dentro.
Y al querer extraer el archivo vemos que tiene contraseña.
Ok, o intentamos adivinar u obtener mediante un ataque de diccionario o fuerza bruta la contraseña o vamos a ver qué más hay en la memoria para detectar esa contraseña.
Los otros archivos relevantes son tres capturas de red.
Capturas de red
Vamos a ver la primera captura.
Es poca información pero lo que se ve más que nada es tráfico web, un poco de google, algo de búsqueda con las palabras coches de lujo y son imágenes principalmente.
Vamos a exportarlas.
Efectivamente son imágenes de un sitio web de coches de lujo.
Ahora vamos con la segunda captura.
Aquí no hay imágenes más bien en una captura de tráfico de correo web.
Vamos a ver un poco más de cerca el flujo de la conversación.
Es la más interesante de las tres capturas al parecer.
Finalmente vamos con la tercera captura.
También es tráfico web, búsqueda de google podría decir que es.
De igual manera son imágenes de un sitio web de noticias varias.
Regresamos con la segunda captura y esos datos del correo electrónico.
220 mx.google.com ESMTP fc9si125401wib.43 - gsmtp EHLO thosi 250-mx.google.com at your service, [79.109.135.8] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250 CHUNKING MAIL FROM: SIZE=411 250 2.1.0 OK fc9si125401wib.43 - gsmtp RCPT TO: 250 2.1.5 OK fc9si125401wib.43 - gsmtp DATA 354 Go ahead fc9si125401wib.43 - gsmtp Received: from localhost (localhost [IPv6:::1]) .by thosi (Postfix) with SMTP id A6D7C1860221 .for ; Tue, 13 Aug 2013 02:08:52 +0200 (CEST) subject: COCHES Message-Id: Date: Tue, 13 Aug 2013 02:08:52 +0200 (CEST) From: YURI@gmail.com Que pasa tio? Te mando nuestro peque..o secreto "KNIFELONG1234" bye ya me pondre en contacto un saludo yuri . 250 2.0.0 OK 1376352663 fc9si125401wib.43 - gsmtp QUIT 221 2.0.0 closing connection fc9si125401wib.43 - gsmtp
Un pequeño secreto, al menos tenemos una palabra, volvemos a colocarla en el archivo zip para ver si es la contraseña y no parece ser la contraseña pero debe ser uno de esos caracteres.
De entrada no funciona de la manera fácil con solo crear una copia y ponerle como archivo Zip, y colocar la contraseña que debe ser esa pero ahorita vemos esa parte, y al no ser un archivo Zip como tal completo porque tiene más datos de los que debería ni siquiera podemos cargar que tipo de cifrado tiene el archivo.
[gabriel@daneel run]$ ./john --incremental /home/gabriel/Documents/MISTI-FI/rubiaca.zip No password hashes loaded (see FAQ)
Necesitamos quitarle esos 75877 bytes al inicio que son la rubia y quedarnos con el puro archivo Zip sin alterar la estructura del archivo binario, y es ahí donde está el truco.
Sabemos la cantidad de bytes por que el comando unzip nos ayudó a averiguarlo.
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR| 00000010 00 00 00 f0 00 00 01 90 08 02 00 00 00 1f b4 7a |...............z| 00000020 2b 00 00 00 09 70 48 59 73 00 00 0b 13 00 00 0b |+....pHYs.......| 00000030 13 01 00 9a 9c 18 00 00 00 07 74 49 4d 45 07 dd |..........tIME..| 00000040 08 0d 01 0e 1f b2 27 7c 01 00 00 00 41 74 45 58 |......'|....AtEX| 00000050 74 43 6f 6d 6d 65 6e 74 00 43 52 45 41 54 4f 52 |tComment.CREATOR| 00000060 3a 20 67 64 2d 6a 70 65 67 20 76 31 2e 30 20 28 |: gd-jpeg v1.0 (| 00000070 75 73 69 6e 67 20 49 4a 47 20 4a 50 45 47 20 76 |using IJG JPEG v| 00000080 36 32 29 2c 20 71 75 61 6c 69 74 79 20 3d 20 39 |62), quality = 9| 00000090 30 0a b0 45 58 93 00 00 20 00 49 44 41 54 78 da |0..EX... .IDATx.|
Esos son los primeros datos del archivo y necesitamos quitar todos esos datos sin alterar la estructura del archivo binario.
Este es el final de esos datos extras de la rubia.
000127d0 30 9a 01 05 20 70 e4 00 e2 fd fb f7 bf fc f2 cb |0... p..........| 000127e0 10 c2 7a 0d 1d 57 9d 37 f6 ae aa 9c 08 09 51 a0 |..z..W.7......Q.| 000127f0 e8 98 e0 6c b7 63 28 04 be 3b 33 19 59 5a 2c 82 |...l.c(..;3.YZ,.| 00012800 13 a4 21 22 da cb a1 d2 2b 31 c6 84 e3 43 54 85 |..!"....+1...CT.| 00012810 4c 81 0d fb d1 92 01 ee ce fe 73 16 27 c1 8e d7 |L.........s.'...| 00012820 e7 0e 4f 69 5c 65 d8 23 31 b4 c4 87 3f de dd ce |..Oie.#1...?...| 00012830 1c cb 3c d2 72 aa 5c 45 20 6c 9f 90 e2 61 a6 7e |..<.r.E l...a.~| 00012840 01 82 8c 39 78 ed 51 9c 88 24 01 d6 b7 1b 52 ff |...9x.Q..$....R.| 00012850 03 6b 51 fd ae 53 9d bf 97 00 00 00 00 49 45 4e |.kQ..S.......IEN| 00012860 44 ae 42 60 82 50 4b 03 04 33 03 01 00 63 00 8a |D.B`.PK..3...c..|
Vamos a ayudarnos con el comando dd para quitar estos bytes del inicio y generar un nuevo archivo Zip sin estos datos extra.
[gabriel@daneel MISTI-FI]$ dd bs=1 skip=75877 if=rubiaca.png of=rubiaca.zip 27486+0 records in 27486+0 records out 27486 bytes (27 kB) copied, 0.0346739 s, 793 kB/s
Volvemos a verificar con unzip y vemos que ya no marca en el archivo nuevo esos bytes extra.
[gabriel@daneel MISTI-FI]$ unzip -v rubiaca.zip Archive: rubiaca.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 27537 Unk:099 27330 1% 08-13-2013 02:52 00000000 autopsy.jpeg -------- ------- --- ------- 27537 27330 1% 1 file
Ahora si volvemos con la parte de la contraseña.
Si intentamos con John The Ripper, ya nos reconoce como válido el archivo y puede saber el cifrado que tiene el archivo.
[gabriel@daneel run]$ ./john --incremental /home/gabriel/Documents/MISTI-FI/rubiaca.john Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 8x SSE2])
Vamos a realizar un pequeño diccionario con las combinaciones que encontramos en la captura de red del correo.
K KN KNI KNIF KNIFE KNIFEL KNIFELO KNIFELON KNIFELONG KNIFELONG1 KNIFELONG12 KNIFELONG123 KNIFELONG1234
La manera fácil, si no es una de estas va a estar un tanto más complicado.
[gabriel@daneel run]$ ./john --wordlist=/home/gabriel/Documents/MISTI-FI/Clave-Rubia /home/gabriel/Documents/MISTI-FI/rubiaca.john Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 8x SSE2]) Will run 4 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status KNIFELONG (rubiaca.zip) 1g 0:00:00:00 DONE (2016-06-03 08:37) 9.090g/s 118.1p/s 118.1c/s 118.1C/s K..KNIFELONG1234 Use the "--show" option to display all of the cracked passwords reliably Session completed
Entonces la contraseña es: KNIFELONG
Ahora sí vamos a abrir ese archivo.
[gabriel@daneel MISTI-FI]$ unzip -P KNIFELONG rubiaca.zip Archive: rubiaca.zip skipping: autopsy.jpeg need PK compat. v5.1 (can do v4.6)
Parece que no lo descomprime porque el archivo fue creado con otra versión de Zip, más concreto con PKZip, tambien lo probe con el formato Zip de Windows y no es posible.
Vamos a intentarlo con 7z mejor.
[gabriel@daneel MISTI-FI]$ 7za e -pKNIFELONG rubiaca.zip 7-Zip (a) [64] 15.09 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-10-16 p7zip Version 15.09 beta (locale=en_US.utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i7-3540M CPU @ 3.00GHz (306A9),ASM,AES-NI) Scanning the drive for archives: 1 file, 27486 bytes (27 KiB) Extracting archive: rubiaca.zip -- Path = rubiaca.zip Type = zip Physical Size = 27486 Everything is Ok Size: 27537 Compressed: 27486
Listo lo hemos logrado descomprimir, es una imagen JPEG llamada autopsy.
Unos coches y varias piezas de coches.
Los metadatos arrojan un poco más acerca de la imagen, como que fue tomada en agosto del 2013, que es de un tamaño de 400 x 274 píxeles e incluso datos que parecen ser de coordenadas geográficas.
Lo más complicado fue en mi caso la forma de quitarle los datos de la imagen al archivo, habíamos tomado en otra clase un poco de conocimiento acerca de editores hexadecimales y fue por eso que me dirigí en esa forma para quitar el extra de datos y la referencia de los números mágicos fue lo más importante para identificar que había algo más que una rubia guapa. El dato fue encontrar una manera rápida en Linux de hacer lo de estos datos y ya que el comando Zip es concreto en mencionar los datos extra se tiene el valor importante, un dato más o menos borrado y se pierde la integridad del archivo.
Referencias
http://birdchan.com/home/2013/12/30/need-pk-compat-v4-5-can-do-v2-1/
http://birdchan.com/home/2013/12/30/need-pk-compat-v4-5-can-do-v2-1/
http://unix.stackexchange.com/questions/6852/best-way-to-remove-bytes-from-the-start-of-a-file
http://vi.stackexchange.com/questions/343/how-to-edit-binary-files-with-vim
http://superuser.com/questions/380717/how-to-output-file-from-the-specified-offset-but-not-dd-bs-1-skip-n
http://www.garykessler.net/library/file_sigs.html
Disculpa tendras el link que puedas proporcionarme para ponerle el reto a mis alumnos?
Gracias
LikeLike
Hola,
Claro los enlaces vienen al inicio del post pero aquí te los pongo de igual forma:
http://www.hackplayers.com/2013/08/solucion-al-reto-18-un-pendrive-y-el.html
http://www.hackplayers.com/2013/08/reto-18-un-pendrive-y-el-caso-de-los.html
Gracias por comentar.
LikeLike