Español | English
rss facebook linkedin Twitter

Análisis de archivos PDF maliciosos

Hacía mucho tiempo que no comentaba nada sobre mis queridos PDFs, así que ya tocaba...;)

Como ya mencioné, una de las posibilidades de esconder información en un archivo PDF es mediante la codificación/compresión de streams, gracias al uso de filtros (parámetro /Filter), siendo el más utilizado el /FlateDecode. Los chicos malos llevan ya un tiempo usándolo para esconder código Javascript, tanto ofuscado como sin ofuscar, intentando explotar ciertas vulnerabilidades que se han visto a lo largo de este año y del pasado (Collab.collectEmailInfo, util.printf, getAnnots, getIcon, spell.customDictionaryOpen), o simplemente para llevar a cabo un heap-spraying utilizando alguna otra vulnerabilidad no relacionada directamente con Javascript, como la del filtro /JBIG2Decode.

Para ayudar con el análisis de estos archivos maliciosos he implementado una mini-herramienta en Python que hace uso del módulo de Spidermonkey para intentar ejecutar el código Javascript encontrado y llegar hasta la shellcode que se quiere lanzar. Automatizar la ejecución de código Javascript ofuscado no es algo sencillo, ya que hay mil maneras de esconderlo y cada día nace una diferente, así que lo que he intentado es realizar una aproximación al problema, gracias a las diferentes muestras que pasaban por mis manos. Para el caso en que el script no sea capaz de llegar hasta el final se puede especificar mediante el parámetro -w que escriba en disco el código Javascript encontrado, con el objetivo de permitir un análisis manual posterior.

Para la ejecución del script se necesita instalar previamente la librería Spidermonkey, y para ello, a su vez, Pyrex.

El archivo de descarga es un archivo comprimido que contiene, además del script, un PDF malicioso con una shellcode que intenta descargar código malicioso desde una URL. El dominio no se encuentra activo en este momento por lo que no hay ningún problema. La salida que deberíais ver es la siguiente:


Tiene cinco apartados posibles donde se puede ver si se han encontrado disparadores de eventos (/OpenAction y /AA), acciones sospechosas (/JS, /Launch, /SubmitForm e /ImportData), elementos vulnerables, bytes escapados y posibles URLs, que sirven para hacerse una idea de la peligrosidad del archivo.

Como seguro que tiene unos cuantos bugs os animo a que me los mandéis por correo, así como cualquier consejo/comentario, a alguna de las direcciones que aparecen en el código. ¡Muchas gracias!


pdf-analyzer.zip


Jose Miguel Esparza
S21sec e-crime

3 comentarios:

Boken dijo...

Hola.

Muy buen trabajo!! Me ha gustado mucho tu analizador, lo que no se pueda hacer con Python es que no se puede hacer, jejeje

Muchas gracias por publicarlo.

Saludos.

S21sec e-crime dijo...

Gracias a ti por el comentario, Boken, ¡así da gusto publicar cosas! ;)

Un saludo,
Josemi

Gorku dijo...

Muy bueno. Un saludo Josemi! ;)


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login