Tools

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í):

 

Análisis de un exploit CVE-2013-3346/CVE-2013-5065 con peepdf

Aunque ya existen buenos análisis sobre estos exploits, me ha parecido un buen ejemplo para enseñar cómo funciona peepdf y lo que se puede aprender en el workshop “Squeezing Exploit Kits and PDF Exploits” que impartiré en Troopers14 y en el workshop "PDF Attack: A Journey from the Exploit Kit to the Shellcode" en Black Hat Asia 2014. El exploit que comento usaba una vulnerabilidad de tipo use-after-free del elemento ToolButton de Adobe Reader para ejecutar código en el sistema de la víctima. Posteriormente, realizaba una escalada de privilegios mediante un 0day del kernel de Windows para quitarse de encima la sandbox de Adobe y ejecutar un nuevo payload sin restricciones.  

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).
 

 

NFC CreditCard Reader


 

Language: C

Publication date: 2012-12-21

Description: Program based on readnfccc (by Renaud Lifchitz) to read some private data from credit cards, like cardholder, Permanent Account Number (PAN), expiry date, etc., using NFC technology. It has been tested with Spanish contactless credit cards, but can also be used with other countries cards. Take a look at this post (Spanish) and this video.

Requirements: libnfc (and an NFC reader, of course!)

Download it!

 


Usage


 
After installing libnfc, just compile the code:

$ gcc nfc_creditcard_reader.c -lnfc -o nfc_creditcard_reader

 
Place an NFC credit card close to the reader and execute it:

Crónica de Black Hat y DEF CON (Las Vegas, 2012)

Hace poco más de una semana se celebraron las dos míticas conferencias de seguridad en Las Vegas, Black Hat y DEF CON. Además, también a la vez tenía lugar la BSidesLV y algunos otros eventos para los que se necesitaba invitación, como el de IOActive. Tuve la suerte de estar por allá y vivir todo eso en primera persona, ya era hora ;) No voy a hacer un post detallado de todo esto, sino más bien un resumen rápido de todo lo que se vio por allá y las sensaciones del post-Vegas. 

La Black Hat comenzó el 21 de julio con una lista bastante larga de trainings que duraron hasta el 24. Posteriormente comenzaron las charlas, workshops y arsenal, donde más gente había, que transcurrieron durante el miércoles 25 y jueves 26. Según me comentaron este año hubo más gente que el anterior, unas 7500 personas.

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.

Comprueba si leer un tag NFC es seguro

Como adelantamos en el anterior post, una de las utilidades de NFC es el uso de NFC Forum tags para guardar e intercambiar información, normalmente de tipo comercial. Estos tags deben ser fieles a una especificación determinada: el formato NDEF (NFC Data Exchange Format). Gracias a este formato es posible intercambiar mensajes NDEF entre las diferentes partes, pudiendo tener cada mensaje diferentes registros donde almacenar información. El tipo de información que se puede introducir en estos registros es variado, y puede ir desde texto simple a diferentes formatos de audio o vídeo (media), pasando por una URI para realizar acciones automáticas en el dispositivo lector, normalmente un teléfono móvil. Podéis echar un vistazo a la especificación de NDEF para profundizar más en el tema.

En este post nos vamos a centrar en las posibilidades que ofrecen los registros de tipo URI y qué acciones se pueden realizar al leerse en un teléfono móvil con tecnología NFC. Los tipos de URI que se aceptan según la especificación son los siguientes:

NFC práctico: monta tu propio laboratorio

NFC es la tecnología del futuro, o mejor dicho, del presente. Ya son muchos los lugares del mundo donde se está apostando por su uso, ya sea para micropagos, transporte, sistemas de acceso y casi todo lo que se nos pueda ocurrir (en países como Japón o Corea hace años que se usa de forma habitual). Incluso se puede realizar la lectura de tags desde un teléfono móvil con esta tecnología para realizar acciones como silenciar el teléfono, sincronizar datos, etc.

peepdf supports CCITTFaxDecode encoded streams

Stream filters, as I said some time ago, are a good way of obfuscating PDF files and hide Javascript code, for instance. Some weeks ago a post related to the use of the /CCITTFaxDecode filter was published by Sophos, although the Malware Tracker guys tracked a similar document created more than one year ago. Bad guys were using the /CCITTFaxDecode filter with some parameters to obfuscate the documents and try to bypass analysis tools and Antivirus. This filter was not supported by peepdf until the moment, so Binjo ported the Origami decoder to Python to include it (Thanks man!). Today I have uploaded the code and now peepdf also supports this filter :)

I've performed a quick analysis of the Sophos' document (6cc2a162e08836f7d50d461a9fc136fe) and it seems to work well:

 

 

We can identify two known vulnerabilities and it seems that object 30 contains Javascript code. If we take a look at the filters used in this stream we see that peepdf has been able to decode the /CCITTFaxDecode filter without problems:

 

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........|

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

ToorCon Seattle 2011

Como comenté en el anterior post, justo después de la Source Seattle de la semana pasada comenzaba la ToorCon también en Seattle, así que algunos ponentes aprovecharon para presentar las mismas u otras ponencias en ambas conferencias. El viernes 17 fue la apertura, con una pequeña fiesta, pero no sería hasta el día siguiente cuando comenzarían las ponencias. Se trataba nada más y nada menos que de treinta charlas, de quince minutos cada una, con un pequeño descanso para comer. En total un día entero de ponencias, de 8:30 a 17:00, que se dice pronto.

Distribuir contenido