PDF exploit (CVE-2013-2729) instala ZeuS-P2P/Gameover

Normalmente recibo SPAM con ejecutables y zips maliciosos. También los conocidos “documentos PDF” con doble extensión (.pdf.exe), pero hace unos días recibí un correo electrónico que tenía un PDF adjunto, sin extensión .exe oculta y no se trataba del típico anuncio de Viagra. Era bastante sospechoso. En ese momento no tenía mucho tiempo para analizarlo, así que lo dejé un poco de lado. Al día siguiente recibí otro con diferente asunto. El del primer correo era “Invoice 454889 April”, enviado por Sue Mockridge (motherlandjjw949 at gmail.com) y adjuntando “April invoice 819953.pdf” (eae0827f3801faa2a58b57850f8da9f5). El segundo tenía como asunto “Image has been sent jesparza”, enviado por Evernote Service (message at evernote.com, pero en las cabeceras se veía protectoratesl9 at gmail.com) y adjuntando “Agreemnet-81220097.pdf” (2a03ac24042fc35caa92c847638ca7c2).

 

cve-2013-2729_invoice_email

 

cve-2013-2729_evernote_email

 

Como tenían una pinta un poco rara, decidí echar un vistazo con peepdf.

 

cve-2013-2729_peepdf_error

 

En ese momento sólo podía ver un elemento /AcroForm sospechoso, pero nada más. Este elemento hacía referencia al objeto 1, que no se estaba mostrando debido a un error de peepdf.

 

cve-2013-2729_xfa_form

 

Después de arreglar este fallo ya se podía ver perfectamente el contenido de este stream (objecto 1), comprimido doblemente con /FlateDecode, pero en su forma abreviada ([/Fl /Fl]). Se trataba de un formulario XFA que contenía código Javascript y una imagen codificada con Base64. Después de extraer el stream a un archivo se podía ver que tenía un tamaño de 85MB. ¿Pequeñito, no? ;) A pesar de contener cuatro scripts diferentes, la culpable de este tamaño era la imagen codificada: una imagen BMP que contenía un patrón repetido, “\x00\x02\xff\x00”.

 

cve-2013-2729_bmp_exploit

 

Con esta información y gracias a otras cadenas de caracteres encontradas en el objeto (“0aa46f9b-2c50-42d4-ab0b-1a1015321da7”, “// Index of the overlapped string”, “// Base of the AcroRd32_dll”, etc) fue fácil descubrir qué vulnerabilidad se estaba intentando explotar. Resultó ser una vulnerabilidad de corrupción del heap de Adobe Reader (CVE-2013-2729) y los malos habían copiado parte del código de la prueba de concepto escrita por Felipe Manzano (en el caso del exploit de la vulnerabilidad CVE-2011-2462 también copiaron a Felipe). Hay que ser justos y dar algo de mérito a los atacantes, ya que añadieron más offsets ROP para poder atacar 23 versiones diferentes de Adobe Reader, desde la 9.3.0.3 a la 11.0.0.1 ;) La vulnerabilidad en sí es un integer overflow parcheado hace un año y explicado perfectamente por Felipe en este post y paper, así que nada que añadir al respecto.


Sabiendo todos los detalles sobre el exploit fue fácil modificar
peepdf para que lo detectara (actualizad usando el flag -u!):

 

cve-2013-2729_peepdf_detection

 

La shellcode no estaba oculta ni codificada, así que usando el comando js_unescape se podían obtener los bytes originales:

 

cve-2013-2729_shellcode

 

En ambos exploits la shellcode intentaba descargar y ejecutar un binario desde un sitio web comprometido: 

hxxp://dr-gottlob-institut.de/11.exe (91aa1168489a732ef7a70ceedc0c3bc9)
hxxp://filling-machine-india.com/images/1.exe (5ce7451cce4593698688bd526bfcec78)

 

Después de ejecutarse el primer binario se intentaba descargar más malware: 
 

hxxp://pgalvaoteles.pt/111 (91d33fc439c64bd517f4f10a0a4574f1)
hxxp://files.karamellasa.gr/tvcs_russia/2.exe (e070ff758c2af2eee89f4a0f50077e30)

 

El binario con MD5 91d33fc439c64bd517f4f10a0a4574f1 instalaba ZeuS-P2P/Gameover con el rootkit Necurs, aunque el tamaño era un poco más grande de lo que había visto hasta el momento (496.128 bytes). Dentro del rootkit se podía encontrar una ruta de un archivo PDB relacionado con GMER (“e:\projects\cpp\gmer\driver\objfre_wxp_x86\i386\gmer.pdb”), probablemente usado para deshabilitar la detección del rootkit.

Pero esto no terminaba aquí, un poco más tarde el sistema descargaba y ejecutaba otro binario:

 

hxxp://www.shu-versicherungsvergleich.de/loader.exe

 

A partir de este momento, y después de conectar con el dominio pimplelotion.com (95.163.104.88) para recibir instrucciones, se ejecutaban un gran número de binarios (welcome to the zoo!). Este es un ejemplo de la configuración descargada desde este servidor:

 

<?xml version="1.0"?>
<config>
<interval>10</interval>
<timeout>5</timeout>
<urls>hxxp://95.163.104.88</urls>
<country>Netherlands</country>
<tasks>
<install id="1" filetype="1" name="soks" autorun="1" limits="0:16632" filter="" hash="2368a8c8b50900d57c0366049f755c05">hxxp://segurgestion.es/1.bin</install>
</tasks>
</config>

 

Y ésta es la lista de URLs que vi hasta que paré de monitorizar:

 

hxxp://adventiaingenieria.es/222
hxxp://segurgestion.es/1.bin
hxxp://golestangallery.com/333%283%29.exe
hxxp://intropitch.com/1.bin
hxxp://regleg.eu/images/777.exe

 

En resumen, fue bastante curioso recibir directamente un exploit de PDF enviado por e-mail, en vez de los típicos Andromeda/Upatre para instalar ZeuS-P2P/Gameover (entre otros). Además, era la primera vez que veía este exploit in the wild, ya que me parece que no se ha usado en ningún Exploit Kit tampoco. Si lo habíais visto antes, escribir un comentario, please! ;)