lunes, 5 de julio de 2010

Análisis de un PDF portador

No hace falta que os diga que los ficheros PDF son hoy en día una de las principales vías a través de la cual los malos de lo ajeno están llevando a cabo sus actividades delictivas. Normalmente se focalizan en vulnerabilidades en el lector de pdf más usado que es Adobe Reader y el caso que vamos a ver no va a ser una excepción. Dicho esto, el otro día a raíz de la entrada publicada por Zynamics (que como comentan en SecurityByDefault, es una entrada muy recomendable), me volvió a recordar que llevamos tiempo desde pentester.es queriendo preparar una entrada de análisis de ficheros pdf. Lo primero es conseguir un fichero pdf malicioso, para esta ocasión lo hemos obtenido de los enlaces suministrados por el proyecto blade-defender de SRI (proyecto que habrá que seguir de cerca) y que tiene como md5:
  • readme.pdf, a491ae05103849d8797d1fda034e0bd5
Para la entrada nos apoyaremos en las herramientas realizadas por Didier Stevens para manejar los ficheros PDF. Os aconsejo el screencast que pone Didier en su propia página para que veáis su uso y lo que es posible hacer con ellas. Ahora vamos al jaleo con nuestro PDF portador.

Lo primero sería preguntarnos, ¿Qué objetos contiene este fichero PDF?





Observamos que exiten objetos de tipo Javascript, OpenAction, Page y Xref. Visto que contiene JavaScript, nos centramos en ver qué código JS contiene:



Si nos fijamos en la imagen se ha encontrado que el Objeto 2, contiene "/OpenAction /JS 10 0 R", con lo que nos indica que va abrir el código javascript alojado en la Referencia "10 0 R". Lo que vamos a hacer ahora es ver qué hay en ese objeto:



Como se ve en la imagen, el código javascript no tiene desperdicio :D. Podemos ver cómo todas las variables están cambiadas a un valor aleatorio (funcionalidad que como bien me comento Jose proporciona la metasploit). Llegados a este punto hemos obtenido el código javascript que se ejecutará cuando se abra el pdf y por la pinta que tiene parece que no va a hacer nada bueno. Lo siguiente que nos preguntamos es, ¿qué está intentando explotar este fichero PDF?, para ello volcamos el código javascript y lo analizamos para ver si encontramos algún indicio que nos oriente sobre qué puede estar intentando explotar el PDF.



Una vez visto el código, vemos funciones como Collab.collectEmailInfo() y Collab.GetIcon() que pertenecen al objeto Collab. Con una rápida búsqueda en Google sobre estas funciones, encontramos que exiten ciertos Advisory como CVE-2007-5659 y CVE-2009-0927 e incluso pruebas de concepto en securityfocus, además de un análisis realizado por la gente Carnal0wnage. Estos datos encontrados en Google lo confirmaremos ahora durante el análisis.

Viendo el código de la prueba de concepto de securityfocus(en el lado izquierdo) y el código javascript obtenido (lado derecho), vemos ciertas similitudes que nos pueden llevar a creer que van por aquí los tiros:

La función repeat en la prueba de concepto



La función heapspray de la prueba de concepto la tenemos en las dos siguiente imagenes





El punto donde se llama a la función Collab.colletEmailInfo




Al final del código JS se observa como explota dos vulnerabilidades en función de la versión del visor de pdf. Si es mayor que la versión 5.0 y menor que la versión 7.1 intenta aprovechar la vulnerabilidad de la función Collab.colletEmailInfo(). Si la versión esta entre 8.0 - 8.1.0.2 y 9.0 - 9.1 intenta aprovechar la vulnerabilidad en Collab.GetIcon().

Ahora para finalizar este análisis ligero, y que nos permita hacernos una idea superficial de qué contiene el pdf y que pretende, completaremos un poquito nuestras impresiones con herramientas de terceros que están online:
  • Servicio Wepawet, donde obtenemos un informe. Vemos como solo nos indica que aprovecha la vulnerabilidad de la función Collab.GetIcon() y su CVE. Lo importante de este informe es el análisis del shellcode que nos muestra como se realiza referencia a un bichito adicional de malware en la url hxxp://nt13.co.in/1. Si ahora cogemos este enlace y lo pasamos por el servicio Anubis y por virustotal, veremos el informe del especímen que se bajará al ejecutarse el shellcode.
  • Servicio VirusTotal, obtenemos un informe del pdf, donde por ejemplo vemos que el motor antivirus karpesky lo cataloga como Exploit.JS.Pdfka.ckj. Buscando por el nombre de este exploit vemos el informe de f-secure sobre Exploit.JS.pdfka.Ti, y donde comenta que explota la vulnerabilidad comentada anteriormente en la función Collab.colletEmailInfo() con su CVE.
Como véis el fichero analizado no tiene desperdicio y para un primer análisis de un fichero pdf sospechoso puede valernos ;). Espero que os sirva!!

8 comentarios :

mgesteiro dijo...

otro gran artículo técnico.

seguid así!

José Miguel Holguín dijo...

@mgesteiro seguiremos intentándolo :), gracias por el comentario!! :D.

hecky dijo...

Muy buen material. Gran lectura, muy tecnica, ejemplificada y amena. Aprendiendo de ustedes :D

Saludos ;)

Anónimo dijo...

Enhorabuena por el artículo, que interesante!, donde puedo descargar el pdf malicioso para practicar lo aprendido?

Saludos!!

José Miguel Holguín dijo...

@Anonimo,

No está ya el pdf, pero lo he subido a offensivecomputing:

http://www.offensivecomputing.net/?q=ocsearch&ocq=a491ae05103849d8797d1fda034e0bd5

Debes estar registrado para descargarlo.

De todos modos si buscas readme.pdf tienes algunos, pero no tienen el mismo hash:

http://www.blade-defender.org/eval-lab/blade.csv

Un saludo y gracias por el comentario.

Pedro Sánchez dijo...

Me ha encantado!!

Muy bueno.

Pablo dijo...

muy interesante..
una pregunta, es indiferente el OS que uses...
es decir,si usas un windows cualquiera con un antivirus en tiempo real tiene que avisarte? pero en linux como te enteras?

Jose Selvi dijo...

@Pablo: Si el antivirus tiene firmas para la vulnerabilidad que está explotando el PDF o si tiene una buena heurística para estos casos, sí que debería avisarte, pero si es un 0-day... quizá no lo haga.

Yo creo que la mejor opción es usar el "antivirus humano" (alias "sentido común"), tanto en Windows como en Linux, es decir, mantener tu software actualizado, no abrir un PDF de cualquier sitio, ante la duda puedes intentar analizarlo en sitios como VirusTotal, y en un caso más "radical" puedes intentar usar otro software que no sea el Acrobat, no quiere decir que ese software no tenga vulnerabilidades, pero al menos te evitas todos esos ataques masivos.