Exploiting, Hacking

Analizando Wannacry. Si te dan limones haz limonada (Part1).

Print Friendly, PDF & Email

Buenas

Andaba yo con ganas de analizar un binario en Windows y saltó todo este jaleo.

Para quién tenga curiosidad hay un análisis del cert sobre el tema.

Así que me picó la curiosidad y voy a jugar un poco con el bicho, mi objetivo no va a ser tanto analizar el bicho como entender y describir los pasos que permiten hacerlo, aparte por supuesto de disfrutar un rato y aprender al máximo.

Llegaré hasta donde pueda en tiempo y conocimiento, con la mayor exactitud que me sea posible.

Descargando la muestra de wannacry.

Lo primero, conseguir nuestra muestra para el análisis, hay varias versiones ya rondado, la primera podemos descargarla de aquí , es la primera versión, por favor, NO EJECUTAR, O HACERLO BAJO VUESTRA RESPONSABILIDAD.

Vale ya está la muestra.

Acotando objetivos

A mi, lo que me interesa es ver el código para entender:

  • Como está hecho
  • Cómo funciona
  • En que lenguaje,
  • De que partes se compone
  • Que vulnerabilidad explota
  • Como la explota
  • A donde conecta, si es que se conecta a algún lado
  • Como se propaga

Pero tenemos un “.exe”, necesitamos ver que hay dentro, extraer el código para poder analizarlo.

Repasando conceptos

Recordemos qué era un .exe, tod@s sabemos que es un archivo ejecutable de Windows.

Recomiendo esta entrada de la wikipedia sobre el tema, pero resumiré una de sus partes que es la que nos interesa:

Existen dos formas de crear un archivo de tipo EXE. Una es usando un compilador que pueda crear este tipo de archivos (lo cual no significa específicamente que tiene que ser para la plataforma donde se ejecutará, véase Compilador cruzado). La otra forma es ensamblando un código fuente del lenguaje Assembler y luego enlazando el código objeto resultante de la tarea anterior.

Fuera del ámbito de la programación también existen programas que generan ejecutables EXE para tareas específicas. Ejemplos de estos son el compresor WinZip, el Microsoft Powerpoint y el Adobe Flash.

Para revisar el funcionamiento de un programa se realiza la tarea llamada depuración (en inglés: debugging).

 

Análisis externo

Cuando nos encontramos con un archivo de este tipo y no tenemos miedo de comprometer la muestra la forma más obvia de sacar un primer vistazo de él es analizar el ejecutable en sitios como virus total.

En este caso como el resultado es muy amplio os recomiendo que subáis vuestra muestra para poder ver en detalle todos los archivos que abre y modifica.

Pero nosotros queremos hacer un do your self, así que veamos por donde podemos meterle mano.

Un primer vistazo

Hay dos “truquillos” que nos van a permitir olisquear un poco sin comprometer demasiado, usaremos nuestra distro de linux favorita:

  • Ya que “.exe” también es un formato de compresión con el Engrampa en  mi caso, o cualquier otro gestor de archivadores de vuestra distro favorita de gnu/linux, podremos ver el contenido del exe sin extraerlo:

Como veis vemos varios ficheros, una carpeta y lo que parecen dos tareas o procesos, pero aún no podemos saber nada.

Un dato curioso son las fechas de modificación, para centrarnos este post se ha empezado a escribir el 15 de mayo.

También nos permite observar el contenido, si vemos la carpeta msg, vemos textos en diferentes idiomas, el Wannacry entre otras cosas cifra el contenido del disco y pide una cantidad para recuperarlo , estos deben ser los idiomas en los que puede emitir el mensaje:

  • Podemos usar un editor hexadecimal, hay muchos, en modo terminal serán hexdump o hexedit pero también podemos usar en modo gráfico GHex, o el comando “strings” para extraer las cadenas del binario, veamos que vemos:

 

 

 

 

 

 

 

 

 

En la imagen de la izquierda vemos las cabeceras de nuestro exe en el editor hexadecimal y en la imagen de la derecha podemos ver la parte final del resultado de strings.

 

Al parecer primero usa o llama los ficheros b.wnry & c.wnry , después carga los idiomas y usa los ficheros r.wnry, s.wncy, t.wnry, después mete taskdl.exe  & taskse.exe , por último nos aparece el manifiesto que es un xml que describe las dependencias de la aplicación, para una explicación detallada ver este enlace.

Como dije antes estamos solamente olisqueando, no sirve sólo con curiosearlo, queremos el código, extraerlo y analizarlo también en ejecución, pero vamos por partes, ¿como lo extraemos?.

Extractores y debugin en la siguiente parte.

 

.

 

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.