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

martes, 13 de junio de 2017


Es difícil decir algo nuevo sobre el Wannacry (el ransomware, no el ataque). Pero merece la pena investigar cómo trabajó el atacante las horas previas al ataque. No es que nos vaya a permitir descubrir el creador, pero seguro que lo hace un poco "más humano", lanzando preguntas sobre su idioma habitual, localización y cómo empleó las últimas horas creando el ataque.

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, geo 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.


https://metashieldclean-up.elevenpaths.com

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á.

Esta es la version 1.0, menos conocida que su evolución
Ya existía una versión Wannacry 1.0, descubierta en marzo. Sólo contenía un archivo RTF de idioma, m.wry, disponible en inglés. Este archivo fue creado el 04/03/2017 a las 13:33:00, y modificado durante 2,6 horas hasta las 17:37:00. Estas son zonas horarias locales, donde quiera que esté el atacante. El número de versión interno es 32775. Este es el número que Word (o cualquier otro creador de RTF, aunque Word específicamente utiliza valores de 5 dígitos) introduce cuando un fichero RTF se crea, pero no está oficialmente muy documentado por parte de Microsoft y parece que es único. Pero esta versión de Wannacry pasó desapercibida en el mundo del ransomware. Despúes llegó Wannacry 2.0 y trajo consigo un ataque de tipo gusano. Esta fue una versión ligeramente mejorada, con idiomas adicionales diferentes, aparte del inglés. ¿Qué ocurre con sus metadatos?

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.

Metashield Clean-up Online

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:

\rtf1\adeflang1025\ansi\ansicpg1252\uc2\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1042\

Así que podemos decir que usa una versión tipo "EMEA" de Word (bastante común) y que su idioma por defecto es el coreano para escribir documentos.

¿Y el resto de metadatos?




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. 
Esta última es la hora "mágica" establecida como la originaria de la infección en cada sistema infectado. Incluso en los servidores, porque es la hora almacenada en el fichero zip, por tanto, cuando el malware extrae los ficheros, el valor se copia también. Este es el "tiempo de último acceso" en todos los sistemas afectados, debido al "deszipeo" y escritura en disco que realiza el gusano.
Un servidor de Windows cualquiera afectado. La misma hora y fecha.

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.



Dos de las carteras de la versión de la versión 1.0, con las transacciones desde principios de mayo ... y el dinero aún sin tocar.
¿Conclusiones?

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.


Innovación y laboratorio
www.elevenpaths.com

1 comentario:

  1. Buen análisis, claro y conciso. Importante la mención que haces a que los datos puedan estar manipulados, personalmente creo que ha sido un ataque raro (¿ una prueba ?).
    No consigo entender que delincuente, mafia o estado consigue acceso a una larga lista de objetivos estratégicos (comunicaciones, transporte, salud...) y lo primero que hace, que yo sepa, es ponerte un mensaje pidiendo unos cientos de $$ cuando tiene a su alcance información por valor de decenas de miles.
    PD: ¿Donde se pueden conseguir muestras de malware para analizar y tutoriales para los que queremos aprender?

    ResponderEliminar