Analysis

Diseccionando SmokeLoader (o Yulia y sus proposiciones indecentes)

A mediados de agosto empecé a recibir correos de Yulia. Se le veía ansiosa por que echara un vistazo a su sweet ass:
 

 
No estaba muy seguro, pero después de recibir algunos correos más (el último el 10 de septiembre) me animé a abrirlo. Fue entonces cuando me di cuenta de que no era más que el comienzo de una nueva campaña de distribución de SmokeLoader. Me llevé una gran decepción, así que decidí analizar los binarios por despecho :p

Éstas son algunas de las cabeceras y el contenido del cuerpo de uno de los mensajes:
 

Date:   Wed, 13 Aug 2014 12:55:56 -0400
From:   "Yulia" <negligentjsd185@dialectologic.in>
Subject: My new  photo

Hi it is Yulia fuck me ass at night. Look at my sweet ass on a photo I wait for you

 

No tengo intenciones de duplicar la información ya publicada sobre este loader, así que se puede consultar como referencia el post publicado en julio en StopMalvertising y el que escribió mi compañero Michael Sandee hace un par de años. Desde entonces, SmokeLoader, también conocido como Dofoil, ha modificado el cifrado que usa en las comunicaciones con el panel de control, ha añadido nuevos plugins, etc.

Liberada peepdf v0.3

Después de mucho tiempo sin liberar una nueva release, ya está aquí la versión 0.3 de peepdf. No es que no se haya trabajado en el proyecto, sino que después de añadir la opción de actualizar la herramienta desde línea de comandos, la liberación de nuevas versiones ha quedado relegada a un segundo plano. Además, a partir de enero de 2014 Google eliminó la opción de añadir nuevas descargas de los proyectos alojados en Google Code, así que tenía que pensar en una alternativa. Desde ahora los nuevos archivos se alojarán en eternal-todo.com, en la sección de releases.

 

Las diferencias con la versión 0.2 son notables: se han añadido nuevos comandos y funcionalidades, se han actualizado librerías, se cambió el motor de ejecución de Javascript, se añadió detección para varias vulnerabilidades, y, por supuesto, se han corregidos muchos bugs. Esta es la lista de los cambios más importantes (changelog completo aquí):

 

Red de publicidad instala Android FakeAV (Mobile Defender)

Hace un mes más o menos quería ver un partido de fútbol de la liga española (desde Holanda) y recurrí a la primera página de streaming que encontré, futbolenvivoaldia.com. Al final, esta página no era más que una redirección a la conocida página Tarjeta Roja. Bueno, la historia es que visitando la página con el teléfono móvil, aparecía el típico escaner antivirus y se intentaba descargar una aplicación con nombre “androidav_free.APK” (24f0a666a714e26c6c07ab407e37b112). 
 

 

 
El origen de esta pantalla era una de las redes de anuncios de tarjetaroja.eu, Mobicow, que después de varias redirecciones y URLs de tracking acababa devolviendo la siguiente URL:
 

hxxp://cleanupnowonline10.biz/?u=Y0vbAf0fW9lIhVAxPi2nZQo

 
Esta URL a su vez cargaba código Javascript desde:
 

hxxp://cleanupnowonline10.biz/js/wapc.js

 
El código estaba ofuscado, siendo éste el contenido final del archivo:  
 
 

Styx Exploit Kit instalando Simda

Ya echaba de menos esos correos de SPAM con regalo que me llegaban hace un tiempillo y que, de repente, ya no llegaban. Me estaba empezando a preocupar... ;)
 

Styx Spam email

 

Al visitar el enlace (hxxp://goozix.com/its.html) nos encontramos con una redirección a una página para comprar viagra y demás “medicinas”, pero que, además, contiene código Javascript malicioso:

 
 

Tras desofuscar el código vemos que se crea una cookie (“visited_uq=55”) y también un iframe que carga la URL hxxp://gylaqim.com/exit.php. Este dominio, creado el 21 de septiembre, resuelve a diferentes direcciones IPs, con un histórico de más de 400 IPs distintas. Así mismo, los seis servidores DNS autorizados registrados, ns*.gylaqim.com, también resuelven a diferentes direcciones IP cada vez que se intentan resolver.

Dependiendo del servidor que responda al visitar la URL  hxxp://gylaqim.com/exit.php nos puede redirigir a otra página como la inicial, con código Javascript malicioso y redirección a una página de viagra, o al exploit kit.

Las URLs inciales vistas hasta el momento son las siguientes:

 

hxxp://178.170.104.124/destruction.html
hxxp://178.170.104.124/seed.html
hxxp://actes-lyon.org/true.html
hxxp://aybabtu.ru/express.html
hxxp://brave.net.nz/ocean.html

Análisis del troyano Andromeda / Gamarue

Hace unos días, tras leer este post sobre el fail de Joe Security con Andromeda, y encontrarme otra vez con varias muestras de la misma familia decidí que tenía que escribir algo sobre esto. Al menos para que me sirva de referencia y no tenga que empezar de cero la siguiente vez...Soy un poco Dory ;)

Cuando estuve trasteando con este malware hace unos meses me pareció bastante interesante por lo perrete que es a la hora de “debuguear” y analizar. Buscando un poco sobre el tema se pueden encontrar referencias con otro nombre, Gamarue, en este caso por parte de TrendMicro. Parece que está de moda renombrar el malware, y al final te encuentras con familias que tienen hasta tres nombres, como es el caso de Feodo / Cridex / Bugat. En fin, el caso es que entre la información que encontré están estos dos enlaces, con detalles técnicos muy útiles a la hora de meterse en faena:

 

 

PDF Attack: A Journey from the Exploit Kit to the Shellcode (Slides)

Como ya adelanté en un post anterior, estuve hace unos días en Las Vegas dando un workshop sobre análisis de exploit kits y documentos PDF en BlackHat. La parte relacionada con exploit kits consistía en explicar de forma práctica cómo se podía analizar manualmente el código Javascript ofuscado para conseguir las URLs de los exploits. Para esta tarea sólo se necesitaba un editor de texto y un motor Javascript como Spidermonkey, Rhino o PyV8, además de alguna herramienta (como peepdf :p) para poner más bonito el código Javascript (beautify). De forma simplificada, los pasos serían los siguientes:

  • Eliminar tags HTML innecesarios
  • Convertir posibles elementos HTML llamados desde el código Javascript en variables en Javascript
  • Buscar posibles funciones eval y sustituirlas por print o hookear la propia función si es posible (PyV8)
  • Ejecutar el código Javascript
  • Poner bonito el código (beautify)
  • Buscar shellcodes o URLs de exploits
  • Repetir los pasos si es necesario

 

 

PDF Attack: A Journey from the Exploit Kit to the Shellcode

 
BlackHat USA 2013 ya está aquí y mañana estaré explicando cómo analizar exploit kits y documentos PDF en mi workshop “PDF Attack: From the Exploit Kit to the Shellcode” de 14:15 a 16:30 en la sala Florentine. Será una sesión práctica, así que traed vuestros portátiles y esperad algunos ejercicios para jugar ;) Sólo necesitáis una distribución Linux con pylibemu y PyV8 instalado para apuntarte a la fiesta. También se pueden seguir los ejercicios e instalar todo en Windows si se prefiere...

Ahora Spidermonkey ya no es necesario porque hace unos días decidí cambiar el motor Javascript a PyV8, ya que realmente funciona mucho mejor. Podéis echar un vistazo a la diferencia del análisis automático del código Javascript usando Spidermonkey (izquierda) y PyV8 (derecha).
 

 

Nuevo peepdf v0.2 (versión Black Hat Vegas)

Hace unos días tuve la oportunidad de presentar en las Vegas una nueva versión de peepdf, la 0.2. Ya habían pasado unos cuantos meses desde mi última release en Black Hat Amsterdam, así que ya tocaba volver a empaquetar. Podéis bajar la nueva versión desde aquí o ejecutar "peepdf -u" para actualizarla directamente desde el repositorio.

Además de los diferentes bugs corregidos, éstas son las principales novedades:

  • Soporte para AES en el proceso de descifrado: Hasta ahora peepdf soportaba RC4 como algoritmo de descifrado, pero AES estaba en el TODO debido a las diferentes muestras que usaban este algoritmo para ocultar contenido malicioso. Según me comentaron en Las Vegas parece que habrá próximas modificaciones en la especificación PDF en este aspecto, por lo que es posible que haya más cambios en un futuro cercano.

New version of peepdf (v0.1 r92 - Black Hat Europe Arsenal 2012)

Last week I presented the last version of peepdf in the Black Hat Europe Arsenal. It was a really good experience that I hope I can continue doing in the future ;) Since the very first version, almost one year ago, I had not released any new version but I have been frequently updating the project SVN. Now you can download the new version with some interesting additions (and bugfixes), and take a look at the overview of the tool in the slides. I think it's important to mention that the version included in the Black Hat CD and the one in the Black Hat Arsenal webpage IS NOT the last version, this IS the last version. I've asked the Black Hat stuff to change the version on the site so I hope this can be fixed soon.
 

How to extract streams and shellcodes from a PDF, the easy way

Maybe it was not evident enough or not well documented, but until the moment there was a way of extracting streams, Javascript code, shellcodes and any type of information shown in the console output. What it's true is that it was not very straightforward. To extract something it was needed to set the especial variable "output" to a file or variable in order to store the console output in that new destination. For this to be accomplished we used the set command and after this the reset command to restore the original value of "output".

 

PPDF> set output file myFile
PPDF> rawstream 2

78 da dd 53 cb 6e c2 30 10 bc f7 2b 22 df c9 36 |x..S.n.0...+"..6|
39 54 15 72 c2 ad 3f 40 39 57 c6 5e 07 43 fc 50 |9T.r..?@9W.^.C.P|
6c 1e fd fb 6e 4a 02 04 54 a9 67 2c 59 9e 9d f5 |l...nJ..T.g,Y...|
8e 77 56 32 5f 9c 6c 9b 1d b0 8b c6 bb 8a 15 f9 |.wV2_.l.........|
2b cb d0 49 af 8c 6b 2a b6 fa fc 98 bd b3 45 fd |+..I..k*......E.|
92 d1 e2 27 15 e6 b4 33 aa 70 b1 47 15 db a4 14 |...'...3.p.G....|
e6 00 2e e6 42 f9 35 e6 d2 5b a0 04 b0 73 09 15 |....B.5..[...s..|
a1 aa 77 22 08 0e 04 46 4e 7a a7 4d 43 3a 92 84 |..w"...FNz.MC:..|
2e 22 c7 e3 31 b7 46 76 3e 7a 9d 72 df 35 10 e5 |."..1.Fv>z.r.5..|
06 ad 80 93 34 50 e6 6f 57 51 92 08 1d 46 74 e9 |....4P.oWQ...Ft.|
ca f4 9c d2 b7 31 31 83 af ba e0 30 c2 e9 05 bd |.....11....0....|
55 bb 36 8a ad f6 2a fc 1e 61 ab e8 5a ad 39 fc |U.6...*..a..Z.9.|
95 9a 0a 18 97 b0 13 32 99 03 f6 af dc 86 b7 ad |.......2........|

Dynamic analysis of a CVE-2011-2462 PDF exploit

After the exploit static analysis some things like the function of the shellcode were unclear, so a dynamic analysis could throw some light on it. When we open the exploit without the Javascript code used for heap spraying we obtain an access violation error in rt3d.dll. If we put a breakpoint in the same point when we launch the original exploit we can see this (better explanation of the vulnerability):

 

Instead of showing an access violation the CALL function is pointing to a valid address in icucnv36.dll, 0x4A8453C3. This address is not random and it's used in the Javascript code to perform part of the heap spraying:

 

 

 

Static analysis of a CVE-2011-2462 PDF exploit

CVE-2011-2462 was published more than one month ago. It's a memory corruption vulnerability related to U3D objects in Adobe Reader and it affected all the latest versions from Adobe (<=9.4.6 and <= 10.1.1). It was discovered while it was being actively exploited in the wild, as some analysis say. Adobe released a patch for it 10 days after its publication. I'm going to analyse a PDF file exploiting this vulnerability with peepdf to show some of the new commands and functions in action.

As usual, a first look at the information of the file:

info

I've highlighted the interesting information of the info command: one error while parsing the document, one object (15) containing Javascript code, one object (4) containing two ways of executing elements (/AcroForm, /OpenAction) and one U3D object (10), suspicious for its known vulnerabilities, apart of the latest one.

So we have several objects to explore, let's start from the /AcroForm element (object 4):

Análisis del reto PDF de Honeynet Project con peepdf (II)

Después de analizar los objetos que nunca se ejecutarían, ahora podemos centrarnos en los que sí que serán procesados por los lectores PDF:

/Catalog (27)
dictionary (28)
   dictionary (22)
       dictionary (23)
           dictionary (22)
           /Annot (24)
               dictionary (23)
               /Page (25)
                   /Pages (26)
                       /Page (25)
   stream (21)
/Pages (26)

Si echamos un vistazo al objeto Catalog:

PPDF> object 27

<< /AcroForm 28 0 R
/MarkInfo << /Marked true >>
/Pages 26 0 R
/Type /Catalog
/Lang en-us
/PageMode /UseAttachments >>

No se ve ningún trigger en este objeto (/OpenAction) ni en el resto de objetos (/AA), así que dirigimos nuestras sospechas hacia el elemento /AcroForm, otra forma de ejecutar código al abrir un documento PDF. Además, el objeto 21, que aparecía como sospechoso (/EmbeddedFile), también está relacionado con el formulario interactivo encontrado (/AcroForm):

Análisis del reto PDF de Honeynet Project con peepdf (I)

El pasado mes de noviembre, The Honeynet Project publicó un nuevo reto, esta vez sobre el análisis de un archivo PDF malicioso. Aunque es un poco antiguo ya, voy a analizarlo con peepdf porque creo que tiene algunas cosas interesantes y peepdf hace el análisis un poco más fácil. El archivo PDF se puede descargar desde aquí.

Lanzando peepdf sin ninguna opción obtenemos el siguiente error:

$ ./peepdf.py -i fcexploit.pdf
Error: parsing indirect object!!
Se trata de un error durante el proceso de "parseo". Cuando analizamos archivos maliciosos es muy recomendable usar la opción -f para ignorar este tipo de errores y continuar con el análisis:

$ ./peepdf.py -fi fcexploit.pdf

File: fcexploit.pdf
MD5: 659cf4c6baa87b082227540047538c2a
Size: 25169 bytes
Version: 1.3
Binary: True
Linearized: False
Encrypted: False
Updates: 0
Objects: 18
Streams: 5
Comments: 0
Errors: 2

Version 0:
Catalog: 27
Info: 11

peepdf v0.1: nueva herramienta de análisis y modificación de archivos PDF

Como ya comenté en mi post anterior, hace unos días se publicó la primera versión de peepdf. Se trata de una herramienta escrita en Python y enfocada al análisis de archivos PDF, por lo que su objetivo principal es el discernir si un documento PDF es malicioso o no. Se presenta inicialmente con una interfaz de consola interactiva donde se pueden ejecutar diferentes comandos para recabar información acerca del archivo. La idea es no tener que usar múltiples herramientas para decodificar objetos, analizar código Javascript o la shellcode, sino usar únicamente una herramienta (con sus wrappers) para el análisis de PDFs. También podéis encontrar la herramienta en la última versión de la distribución BackTrack (¡gracias al equipo de BackTrack!).


Las principales funcionalidades de peepdf son las siguientes:

Análisis

  • Decodificación: hexadecimal, octal, objetos name
  • Implementación de los filtros más usados
  • Referencias en objetos
  • Listado de objetos donde se referencia a otro objeto
Distribuir contenido