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

 

 
En una segunda parte se trataba el análisis de archivos PDF con la ayuda de peepdf, enseñando las nuevas funcionalidades, como la posibilidad de comprobar si los hashes del archivo, objetos, shellcodes, etc. se encuentran analizados en VirusTotal (vtcheck). Como ya he comentado, todo se hizo desde un punto de vista práctico, analizando diferentes documentos maliciosos reales para mostrar y resolver el mayor número de problemas que pueden surgir cuando se analizan este tipo de archivos.

Por último, también se mostraron las capacidades para ofuscar documentos PDF que ofrece peepdf, cifrando, comprimiendo y embebiendo en otros documentos PDF para dificultar el análisis.

Estas son las slides de la charla que podéis descargar desde este enlace:
 

 

Esta vez no he liberado una nueva versión o package de peepdf, porque la idea es incluir algunas correcciones y alguna novedad más antes de sacar un nuevo paquete, pero podéis actualizar la herramienta usando el parámetro -u. Recordad además que se ha sustituido Spidermonkey por PyV8 para la ejecución de Javascript; espero que ahora funcione mejor y sea más fácil la instalación ;)