Backup Oficial de SeguridadBlanca.Org

martes, 23 de junio de 2009

Análisis de PDF Malicioso

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!

Fuente: s21sec

Saludos
Dr.White

2 comentarios: