Hace poco, encontramos un grupo de exploits SWF similares y no pudimos determinar qué vulnerabilidad explotaban.
Hablamos con Adobe al respecto y resulta que funcionaban aprovechando una vulnerabilidad de día cero. Hoy, Adobe lanzó una actualización para parcharla.
Esta entrada contiene un análisis técnico de los exploits que descubrimos y de sus cargas explosivas.
En total, encontramos 11 exploits que trabajaban con las siguientes versiones de Adobe Flash Player:
11.3.372.94
11.3.375.10
11.3.376.12
11.3.377.15
11.3.378.5
11.3.379.14
11.6.602.167
11.6.602.180
11.7.700.169
11.7.700.202
11.7.700.224
Todos explotan la misma vulnerabilidad y son archivos SWF desempaquetados. También tienen códigos actionscript idénticos que revisan la versión del sistema operativo. Los exploits sólo funcionan en las siguientes versiones de Windows: XP, Vista, 2003 R2, 2003, 7, 7×64, 2008 R2, 2008, 8, 8×64. Algunos de los ejemplares también revisan si se está utilizando Windows 8.1 o 8.1 x64 y, si descubren que sí, dejan de ejecutarse de inmediato.
Algoritmo de revisión del sistema operativo
Si la revisión del OS resulta como los cibercriminales esperan, se pasa el control a funciones que arman cadenas ROP en base a la versión de Flash Player del equipo. Es curioso que existen dos de estas funciones: una para Windows 8 / 8×64 y otra para todas las demás versiones de Windows.
Algoritmo que revisa la versión de Flash Player y ensambla la cadena ROP
A continuación, se genera un shellcode específico para la versión de Windows del equipo y se lo explota.
Fragmento del código que genera el shellcode
Descubrimos tres tipos de shellcode. El primero es uno primitivo que lee un ejecutable llamado a.exe de un archivo SWF y lo deja en el disco duro. Sólo uno de los 11 exploits que conseguimos (que los productos Kaspersky Lab detectan como HEUR:Exploit.SWF.Agent.gen) tienen una carga explosiva pero esto lo explicaremos más adelante.
Shellcode que lee un archivo incorporado de un exploit y lo deja en el disco duro
El segundo tipo de shellcode descarga y ejecuta un archivo de una URL que se ha pasado a los parámetros SWF del archivo. Por desgracia, como no tenemos los tipos de contenedores que pueden pasar parámetros (html/docx), no pudimos ver qué se descarga ni desde dónde.
Código que inserta la URL que se pasa en parámetros al shellcode (+ revisa el tipo de reproductor Flash y si hay un programa de depuración)
El tercer tipo de shellcode, que sólo se encuentra en algunos archivos, es el más interesante. Su principal función es usar MessageBox para desplegar una ventana de diálogos con las siguientes cadenas de caracteres:
«Oops – what happened ?X “
«You have been owned by CorelanX »
No sería descabellado pensar que estos mensajes tengan alguna relación con el equipo Corelan.
En cuanto a los archivos SWF, descubrimos con la ayuda de la Kaspersky Security Network que estaban integrados en documentos .docx con los siguientes nombres en coreano:
Una rápida traducción electrónica nos da a entender que dice lo siguiente: “Lista de los últimos antivirus japoneses y cómo usar torrents.docx”.
Descubrimos que se han detectado estos exploits en tres equipos de usuarios diferentes, uno de los cuales operaba con Mac OS 10.6.8 y los otros dos con Windows 7. En el ordenador Mac, los exploits se detectaron en un archivo adjunto a un correo electrónico. En los ordenadores con Windows 7, se encontraban en un caché del navegador, pero esto no significa que los archivos no se habían cargado desde un archivo adjunto de correo electrónico, ya que Outlook puede solicitar componentes de Internet Explorer para abrir archivos. A juzgar por la dirección IP, todos los usuarios estaban en China. El navegador que se usó es SogouExplorer, de origen chino, y la cuenta de correos era de 163.com. Todo esto indica que el documento .docx con el exploit de día cero se distribuyó por correos dirigidos.
En cuanto a la carga explosiva, sólo uno de los exploits incluía un archivo ejecutable. El archivo es un descargador primitivo que descarga varios archivos codificados con Microsoft CryptoAPI de un dominio de nivel 3 (thirdbase.bugs3.com) del servicio de alojamiento gratuito bugs3.com. El descargador (que los productos Kaspersky Lab detectan como Trojan-Downloader.Win32.Agent.hdzh) es, como hemos dicho, primitivo; incluye una cadena que establece una conexión con un archivo pdb local en el ordenador de su escritor –
“d:.Work.Coding.WorkspacedownLoaderReleasedLoad.pdb” –
y utiliza un algoritmo de decodificación simple:
Algoritmo de decodificación de caracteres en un descargador que dejó un exploit SWF
Pudimos conseguir dos ejecutables de tres (según lo que creemos) del servidor que mencionamos arriba. El primer archivo (detectado como Trojan-Spy.Win32.Agent.cjuj), roba las contraseñas de las cuentas de correo de varios programas (Foxmail, OperaMail, Opera, Mozilla Firefox, Safari, IncrediMail, Pidgin, Thunderbird, etc.) y roba los datos de formularios de las siguientes páginas:
http://twitter.com
http://facebook.com
http://passport.yandex.ru/passport
http://www.yandex.ru
http://qip.ru
http://mail.qip.ru
https://login.nifty.com/service/login
http://e.mail.ru/cgi-bin/login
http://mail.ru
http://mail.126.com
http://secure.zapak.com/mail/zapakmail.php
https://lavabit.com/apps/webmail/src/login.php
http://www.bigstring.com
http://www.gmx.com
http://passport.sohu.com/indexaction.action
http://www.sohu.com
https://www.zoho.com/login.html
http://mail.sina.com.cn
http://members.sina.com/index.php
http://www.care2.com/passport/login.html
http://www.mail.com/int
https://fastmail.fm/mail
https://www.inbox.com/login.aspx
http://www.gawab.com
http://mail.163.com
http://registration.lycos.com/login.php
http://www.mail.lycos.com
https://my.screenname.aol.com/_cqr/login/login.psp
https://edit.bjs.yahoo.com/config/login
https://login.yahoo.co.jp/config/login
https://login.yahoo.com/config/login_verify2
https://login.live.com/login.srf
https://www.google.com/accounts/servicelogin
El segundo archivo, una puerta trasera que detectamos como Backdoor.Win32.Agent.dfdq, funciona en conjunción con el primero. Descubrimos que utiliza servidores C&C que se encuentran en las siguientes direcciones:
sales.eu5.orgwww.mobilitysvc.comjavaupdate.flashserv.net
En el proceso de análisis del bot, logramos recibir un archivo JPEG con un .dll integrado desde varios servidores. Si el archivo se abre en un visor estándar, verás la imagen de un corazón:
Pero, en realidad, una biblioteca dinámica llamada kboc.dll (que detectamos como Backdoor.Win32.Agent.dfdr) se extrae del JPEG y se inyecta al proceso svchost.exe. La biblioteca establece una comunicación con el C&C, pero no hemos podido conseguir ningún archivo adicional. Seguiremos de cerca las actividades del bot.
PD. Felicitaciones a mis colegas Alexander Polyakov y Anton Ivanov por haber descubierto la vulnerabilidad de día cero.
CVE-2014-0497 – una vulnerabilidad del día cero