Una rubia, un archivo oculto y unos autos robados.

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.

Coches-Analisis-1

Agregamos el archivo de la imagen como fuente de la evidencia.

Coches-Analisis-2

Seleccionamos el archivo.

Coches-Analisis-4

Importamos el archivo.

Coches-Analisis-5

Imagen de evidencia agregada.

Coches-Analisis-7

Es la imagen de una memoria USB, los archivos de interés son la imagen de una rubia y tres capturas de red.

Coches-Analisis-8

Vamos a validar la imagen de la chica rubia.

Coches-Analisis-9

Visualizamos la imagen en formato hexadecimal.

Coches-Analisis-10

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.

Ark-1

Y al querer extraer el archivo vemos que tiene contraseña.

Ark-2

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.

Wireshark-1-Coches

Vamos a exportarlas.

Wireshark-2-Coches

Efectivamente son imágenes de un sitio web de coches de lujo.

Wireshark-3-Coches

Ahora vamos con la segunda captura.

Aquí no hay imágenes más bien en una captura de tráfico de correo web.

Wireshark-4-Coches

Vamos a ver un poco más de cerca el flujo de la conversación.

Wireshark-5-Coches

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.

Wireshark-6-Coches

De igual manera son imágenes de un sitio web de noticias varias.

Wireshark-7-Coches

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:<YURI@gmail.com> SIZE=411
250 2.1.0 OK fc9si125401wib.43 - gsmtp
RCPT TO:<carlo@gmail.com>
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 <carlo@gmail.com>; Tue, 13 Aug 2013 02:08:52 +0200 (CEST)
subject: COCHES
Message-Id: <20130813000911.A6D7C1860221@thosi>
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  |..Oi\e.#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.

Imagen-Coches-Autopsy-1

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.

Imagen-Coches-Autopsy-2

Conclusiones

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

2 Comments

  1. Reply
    ue May 21, 2017

    Disculpa tendras el link que puedas proporcionarme para ponerle el reto a mis alumnos?

    Gracias

Leave a Reply

Your email address will not be published. Required fields are marked *