Wannacry chronicles: Messi, coreano, bitcoins y las últimas horas del ransomware

Wannacry (el ransomware de nuevo, no el ataque) es un malware muy sencillo para realizar ingeniería inversa. No está ofuscado, no dispone de métodos anti-debug, no cuenta con métodos para hacer la vida más difícil a los analistas. Por tanto, el código ha sido ya puesto "del revés". Adicionalmente al código algunas empresas están intentando realizar análisis lingüísticos (muy usados recientemente) para conocer la procedencia del autor (aunque, "muy a menudo", resulta ser de China). Como resultado se suele obtener que "quizás sea de habla inglesa nativa, o quizás no, quizás el autor es nativo de China y está intentando despistar..." quién sabe. Pero una cosa es segura: le gusta el fútbol, no es ambicioso y escribe en Word habitualmente en coreano.
Metadatos al rescate
Durante estos últimos años se ha demostrado la utilidad de los análisis y extracción de información oculta de todo tipo de archivos ajenos, en busca de datos que de alguna manera pudiesen revelar importantes detalles que a simple vista pueden pasar desapercibidos. El dato se ha convertido en la nueva fiebre del oro. Información sensible del usuario u organización, software, correos electrónicos, rutas de almacenamiento, pero también otros detalles no menos interesantes, fechas, títulos, g eo posicionamiento, etc. Hemos oído hablar de espías, escándalos políticos por manipulación de documentos, reutilización de contenidos, fraude a las compañías de seguros, situaciones en las que los metadatos han resultado protagonistas.

Wannacry 2.0 utiliza algunos archivos de texto con las instrucciones para mostrar en un cuadro de texto. A primera vista, la extensión WRNY no significa nada, pero en realidad son archivos RTF. Lo que da margen para trabajar con metadatos. Para este análisis hemos usado nuestra recién estrenada herramienta Metashield Clean-up Online. Como resulado podemos encontrar a "Messi" como usuario en el sistema, los idiomas configurados en el editor de texto y las fechas y tiempos de edición. Sobre la cadena "Messi", descubrimos que algunos usuarios ya lo habían mencionado días atrás. Pero vamos a ir más allá.

Es muy interesante conocer al menos que el atacante creó (en su disco duro o los copió de algún otro lugar) todos los documentos entre las 13:52 y las 13:57, justo un día antes del ataque (últimas horas UTC de 11/05/2017). Una vez más, este es el tiempo local del atacante en cualquier parte del mundo donde se encuentre. Abrió primero el fichero en inglés a las 14:42.
Tras este, muchos otros ficheros se fueron creando secuencialmente (o de nuevo, los volcó desde algún fichero zip o de un disco) hasta las 15:00. Los ficheros chinos (tradicional) y chino (simplificado) fueron los últimos, abiertos casi 4 horas más tarde, a las 18:55. Tardó 11 minutos en editar el fichero de versión "simplificado", pero le llevó justo un minuto editar el de versión "tradicional". Antes de esto, estuvo 4 minutos editando el fichero inglés. Los ficheros de idiomas japonés y vietnamita le llevaron también 4 minutos de edición. El fichero vietnamita fue el último en abrir en la primera ronda de edición, quizás porque los ficheros estaban ordenados alfabéticamente. Otros ficheros como el sueco, letón, checo o griego no los editó.
El campo de autor para archivos RTF es la palabra "Messi", como en la versión 1.0 de WannaCry. Esto significa que el nombre de usuario está configurado en su versión de Office Word y probablemente también en su usuario de Windows. Puede que le guste el fútbol. El número de versión interno para esta versión 2.0 fue nuevamente 32775, lo que implica que reutilizó la plantilla de alguna forma.

Otro metadato más que interesante es el idioma.
Todos los ficheros RTF del ransomware, independientemente del idioma en el que están escritos, tienen establecido como idiomas inglés, coreano y árabe. Estos se supone que son los idiomas de edición, con los que Word intenta corregir y en los que cree que vas a escribir de forma predeterminada. Se filtran en los RTF. Vamos explicar por qué aparece cada uno de esos idiomas, puesto que es imposible tener tres idiomas predeterminados:
- Árabe: Nada tiene que ver con que el usuario escriba en este idioma. Aparece siempre que se usa una versión específica de Word, muy común en EMEA (incluida España). deflangfe es el campo en RTF para "Default language ID for Asian versions of Word". No significa que sea el idioma configurado sino que se usa esa versión de Word. Se percibe por la etiqueta adeflang1025 en muchos RTF.
- Coreano: Este idioma aparece en la etiqueta deflang que define el idioma por defecto usado en el documento con la palabra de control plain. Significa que coreano es el idioma por defecto de la persona que escribió este documento.
- Inglés: Curiosamente, si estableces coreano como tu idioma por defecto, siempre irá acompañado del inglés en los documentos Word. Parece una funcionalidad de Word.
Estos son los datos en bruto sacados del RTF:
rtf1adeflang1025ansiansicpg1252uc2adeff31507deff0stshfdbch31505stshfloch31506stshfhich31506stshfbi0deflang1033deflangfe1042
Un punto interesante es que el gusano usa un fichero zip que contiene el ransomware Wannacry. Esto es (en la versión 2.0 y algunas versiones 1.0) un archivo protegido con contraseña (en la versión 1.0 era wcry@2016, y en la 2.0 es WNcry@2ol7). Como sabemos, a partir de nuestra investigación anterior con Gmtcheck para Android, los ficheros zip almacenan el último acceso y la fecha de creación en el (supuesto) sistema de ficheros NTFS del atacante, con su propia zona horaria. Por tanto, las fechas del fichero zip, son las de la zona horaria de atacante. Significa que, analizando el zip, podríamos deducir lo siguiente:
- 2017-04-27 17:25 (hora local del atacante): El atacante crea b.wnry, un fichero BMP en segundo plano y el r.wnry, que contiene el fichero "readme".
- 2017-05-09 16:57: El atacante crea otro zip con herramientas para conectarse a la red Tor (y negociar el rescate). Se descargaron en el sistema de archivos del atacante a las 16:57, 09/05/2017, hora local del atacante, y son empaquetados e introducidos en un nuevo zip, s.wnry.
- 2017-05-10 01:16: El atacante crea en su sistema c.wnry, que contiene dominios onion de la red Tor y una cartera para bitcoins.
- 2017-05-11 15:59: Crea r.wnry que contiene instrucciones de borrado.
- 2017-05-11 16:47: Edita b.wnry.
- 2017-05-11 20:11: Edita c.wnry de nuevo.
- 2017-05-11 20:13: Introduce b.wnry en el zip y lo comprime con contraseña.
- 2017-05-12 02:22: Añade los ficheros EXE: u.wnry y t.wnry. El atacante empaqueta y establece una contraseña. El payload de gusano está listo.

Como no tenemos ninguna referencia UTC, se puede crear esta tabla. Cada línea representa una hipótesis: Supongamos que la hora local en la que se crea el zip (12/05/2017 2:22), ocurre en todos los posibles y diferentes usos horarios GMT y los vamos descartando. Hemos añadido algunos "hechos" que sabemos que sucedieron con seguridad en una hora UTC determinada. Por ejemplo:
Por tanto, vamos a imaginar. Si el atacante se encontraba en UTC+9 (Corea) y fuese coreano, deberían ser las 17:22 UTC del 11/05. Crea el payload, se va a dormir (eran las 2:22 de la mañana para el atacante, y pasó todo el día "trabajando"… ) y 7 horas después (sobre las 00:00 UTC del 12/05), la primera muestra fue avistada en algún lugar del mundo. ¿Tiene sentido esto? O quizás, las pasó inyectando Wannacry en el gusano que aprovecha EternalBlue. O quizás es español (UTC+2) y, cuando todo estuvo listo, lanzó el fichero y Palo Alto lo detectó de inmediato... Cabe recordar que la palabra "Hola" está embebida en el interior desde su versión 1.0.
Con respecto a las cadenas curiosas, otra de la versión 1.0, es "test esttesttest strator" que aparece en el fichero c.wry donde también se encuentran algunos .onion y algunas URLs de dropbox ... saca tus propias conclusiones.
Por último pero no menos importante. Todos sabemos que el atacante aún no ha recogido el dinero de las carteras en la versión 2.0. Tal vez demasiado arriesgado. Hemos comprobado las carteras en la versión 1.0 y podemos decir que no tomó el dinero de las víctimas en la versión 1.0, que pagaron días antes del "ataque mundial". Estas son sólo dos de las carteras de la versión 1.0, con operaciones desde principios de mayo... y el dinero intacto.

Jugar a la atribución siempre es arriesgado. Los tiempos, horas y cadenas expuestos anteriormente pueden ser legítimos, o directamente falsos. Puede que le guste Messi o que lo odie. El problema es que todos los tiempos anteriores y zonas horarias son locales, por tanto, no hemos encontrado una referencia UTC que nos permita conocer la zona horaria exacta del atacante. Por otros indicios, podemos sospechar que es UTC+9 (hora de Corea) . Sin embargo, con todo esto, sólo podemos hacer suposiciones
- El atacante comienza el ataque el día 9.
- Los días 10 y 12 se dedica casi por completo a crear Wannacry.
- Por alguna razón, tarda más tiempo en editar el fichero de lengua china.
- Su idioma por defecto en Word es Coreano.
- Por las horas de ataque, su huso horario podría ser de UTC+2 a UTC+12.