martes, agosto 12, 2008

Solucionario Reto Hacking VIII (II de II)
por Dani Kachakil

***************************************************************************************
Solucionario Reto Hacking VIII (I de II)
Solucionario Reto Hacking VIII (II de II)
***************************************************************************************

Fase 2: Análisis forense de un disco duro

Tras introducir la clave de la fase anterior, accedemos a la segunda y última fase del reto, en la que se nos piden cuatro datos para superarlo (sujeto, sitio, día y hora) y también se nos indica los pasos a seguir para descargarnos un fichero RAR (de más de 400 MB, por cierto). Dicho fichero comprimido contiene un único fichero llamado XPForensics Hard Disk.vhd y por la extensión del mismo podemos deducir que se trata de una imagen o disco duro virtual en formato Virtual Hard Disk.

Se trata de un formato patentado por Microsoft, usado principalmente por las herramientas Virtual PC y Virtual Server, aunque la especificación del formato VHD es pública y parece bastante simple, por lo que hay varias herramientas que la soportan. Si disponemos de cualquiera de estas herramientas, podemos intentar arrancar la máquina virtual instalada, pero en principio no lograremos acceso al sistema operativo, ya que los usuarios del mismo están protegidos por contraseña.

De todas formas, tampoco es necesario arrancar el sistema operativo, ya que para tener acceso a su estructura de ficheros bastará con incluir la imagen como disco duro secundario de cualquier otro sistema operativo. Para ello podremos utilizar por ejemplo el propio Virtual PC sobre otra máquina virtual que tengamos instalada, o bien podemos montar la unidad en nuestro propio sistema operativo si nos instalamos el Virtual Server 2005 R2 SP1 (no nos valdrían versiones anteriores) y seguimos las indicaciones que aparecen en este post de David Cervigón.

Como aún no sabemos lo que buscamos, podemos empezar explorando un poco todos los directorios típicos en busca de algún fichero que nos dé alguna pista. Por ejemplo, el escritorio, la carpeta Mis documentos, directorios temporales, ficheros típicos como los DBX de Outlook Express, etc. Pero no solo es que no encontremos ningún fichero útil, sino que comprobamos que todas esas carpetas están vacías y eso resulta un tanto sospechoso en un disco principal de un sistema operativo que no está recién instalado.

Por tanto, nunca está de más intentar recuperar en la medida de lo posible los ficheros borrados con una utilidad como Restoration (vale, no es que sea la mejor del mercado, pero es gratuita y no está mal para lo poco que necesitamos en este momento). Vemos que consigue recuperar bastantes ficheros, entre los que destacan bastantes que son relativamente recientes y cuya ubicación original era precisamente la carpeta de archivos temporales de Internet del usuario administrador.

Fig. 5 – Restaurando archivos eliminados con Restoration

De momento localizamos al menos uno de ellos que parece contener alguna pista interesante. Se trata del fichero InboxLight[1].htm, que contiene una vista de la bandeja de entrada del correo electrónico del usuario, en la que podemos ver que hay un mensaje de correo enviado por Juan Garrido con el asunto "Mensaje importante". Sin embargo, en el resto de ficheros recuperados no encontramos el contenido de dicho mensaje, pero sí que hay un ejecutable eliminado que llama la atención. Se trata de la utilidad NotMyFault.exe de Sysinternals, utilizada para forzar volcados de memoria al provocar fallos intencionados y controlados a través de su driver.

Llegados a este punto, conviene recordar la existencia de los vídeos y de las presentaciones del evento Asegur@IT II, para los que no pudimos asistir. El vídeo de la sesión de Juan Garrido está cortado, pero entre el vídeo parcial y la presentación completa tenemos más que suficiente como para saber por dónde debemos continuar.

Encontramos en el disco virtual varios volcados de memoria dentro del directorio de Windows, pero destaca el MEMORY.DMP, que es un volcado completo (en el directorio Minidump hay otros dos que no nos servirán). Opcionalmente, podemos pasarle la utilidad strings de Sysinternals, que dejaría únicamente las cadenas de texto imprimible (ASCII y UNICODE), aunque su uso tampoco era necesario.

Si buscamos el contenido del texto "Mensaje importante" (por ejemplo, con un editor hexadecimal o con la utilidad de Windows findstr), localizaremos fácilmente un fragmento con el mensaje de correo electrónico, en el que se puede leer siguiente texto:

Ten mucho cuidado con este mensaje cifrado. No se lo dejes ver a nadie. Una vez lo hayas memorizado destruye todo archivo que relacione a este mail y al mensaje cifrado. Borra archivos temporales, cookies, ficheros del navegador y todo lo que se te ocurra para que no nos delate el equipo. La operación está en sus manos.
Saludos Sr. X


[Mensaje]Hjd+fAoAMTM2P2tUKi0qPC+Y+n47NBE3IDQ+LRs7O344M3s3P343FD...[/Mensaje]

Es evidente que la última parte del mensaje contiene un fragmento codificado en Base-64, pero no conseguimos leerlo decodificándolo, por lo que parece que además de estar codificado, también está cifrado. Si recordamos que la cadena que obtuvimos al terminar la fase 1 estaba etiquetada como "clave de cifrado", bastará con aplicar un algoritmo XOR con aquella cadena [[^^*********^^]] a los bytes resultantes de la decodificación del texto. El descifrado se aplica exactamente igual que el de cifrado y consiste en aplicar el siguiente algoritmo:

PARA i = 1 HASTA longitud_texto
cifrado(i) = texto(i) XOR clave(i MOD longitud_clave)


Aplicando este sencillo algoritmo al resultado de la decodificación del Base-64, obtendremos el siguiente texto en claro:

El "Macaco" estará esperandote en la puerta del "Pub ** *****" el día de la "Luna de ******" a la hora del "Te********".

Indistintamente, para nuestro objetivo también podíamos haber usado el fichero Pagefile.sys del directorio raíz, que curiosamente contenía un texto diferente en el cuerpo del correo electrónico, con otro mensaje en Base-64 también diferente:

Ten mucho cuidado con este mensaje cifrado. No se lo dejes ver a nadie. Una vez lo hayas memorizado destruye todo archivo que relacione a este mail. Y cuidado con los archivos temporales, no vaya a ser que nos hagan un forense!
Saludos Sr. X


Ag1SUDgRChUMKENSFwYECAas5kEXAQUVGxUBIw4GF1UVB1QDJkECBxACHR...

El texto resultó estar cifrado con una clave diferente (muy parecida, pero más corta y más simple). El texto descifrado resultó ser prácticamente el mismo (además del mostrado antes, tenía un salto de línea y el texto "Saludos Malignos!" al final). No obstante, a pesar de no haber tenido la contraseña o clave, este tipo de cifrado XOR se podría romper con mucha facilidad al estar aplicado sobre un texto plano de longitud considerable, aunque creo que eso lo dejaremos para otra ocasión si surge la oportunidad en un nuevo reto… ;-)

Por cierto, como es evidente, el reto termina al introducir literalmente los cuatro valores solicitados, que son los que aparecen entre comillas en nuestro texto descifrado.

Agradecimientos y comentarios

Como siempre, quiero terminar agradeciendo el trabajo de todos los que han hecho posible este reto, esta vez con mención especial a Juan Garrido (Silverhack), no solo por haber participado en el desarrollo del mismo, sino también porque gracias al vídeo y a las diapositivas de su charla, la segunda fase se me hizo mucho más sencilla.

No he incluido las diferentes contraseñas y claves que han ido apareciendo en las diferentes fases del reto, al igual que tampoco están los mensajes completos, porque considero que la única forma de asimilar este tipo de conocimientos es ponerse manos a la obra y practicar un poco, así que aprovecha que el reto está en línea (al menos de vez en cuando) y anímate a intentarlo.

Saludos, Daniel Kachakil.

***************************************************************************************
Solucionario Reto Hacking VIII (I de II)
Solucionario Reto Hacking VIII (II de II)
***************************************************************************************

8 comentarios:

  1. Como siempre, os dejo también la versión PDF del documento aquí:

    http://www.kachakil.com/Retos

    Saludos

    ResponderEliminar
  2. Gracias por ese solucionario tan completo y enhorabuena a tod@s los que han completado el reto.

    ResponderEliminar
  3. Genial, felicidades, me parece impresionante tu velocidad y capacidad de análisis...

    Saludos!

    ResponderEliminar
  4. (el de antes era yo)

    ResponderEliminar
  5. Dani, dices que Retoration no es lo mejor, pregunto: cúál es el mejor para ti?

    Saludos

    ResponderEliminar
  6. Está tan bien explicado, que incluso parece fácil. jejejeje

    ResponderEliminar
  7. @anónimo: El Restoration está bien como utilidad para llevar en el pendrive porque no necesita instalación, es gratuito, ocupa poco, es muy simple y rápido...

    Para cosas más "serias" se queda muy corto (por ejemplo, intenta recuperar varios ficheros a la vez y verás lo que pasa). No sé, hay muchos programas mejores (por citar alguno conocido, te diré el Ontrack EasyRecovery).

    Saludos

    ResponderEliminar
  8. Siempre es un placer leer cosas con calidad.

    Eres un grande.

    ResponderEliminar