Javascript

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

 

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.

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

BlackHole leading to Feodo: Bank of America account frozen

I've received a Christmas gift some hours ago. In fact there were two gifts but only one has survived the trip. They are from Russia...with love. Of course I'm talking about two e-mails I've received with two suspicious links. Even the e-mail bodies were suspicious, I think they have packed very quickly my gifts or they are not very attentive to me...:( The From field included "bankofamerica" and the Subject "Accountfrozen" so I suppose this means that my Bank of America account is frozen, right?

After some redirections we can find the typical obfuscated Javascript code made in BlackHole:
 

After decoding the Javascript code we obtain the next step, also related to BlackHole. This time I can only see a unique Flash exploit trying to download and execute a binary from the same domain where the exploit kit is located (shellcode is XORed with 0x28).

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

peepdf - PDF Analysis Tool


 

 


What is this?


peepdf is a Python tool to explore PDF files in order to find out if the file can be harmful or not. The aim of this tool is to provide all the necessary components that a security researcher could need in a PDF analysis without using 3 or 4 tools to make all the tasks. With peepdf it's possible to see all the objects in the document showing the suspicious elements, supports the most used filters and encodings, it can parse different versions of a file, object streams and encrypted files. With the installation of PyV8 and Pylibemu it provides Javascript and shellcode analysis wrappers too. Apart of this it is able to create new PDF files, modify existent ones and obfuscate them.

 

shellcode2js


 

Language: Python

Publication date: 2009-04-29

Description: Little script to obtain an escaped Javascript shellcode from a  C style shellcode or a binary file containing the shellcode.

Download it!

 


Usage


 

Usage: shellcode2js shellcode|file
Arguments:
shellcode: C style shellcode.
file: binary file containing the shellcode.

 

js2shellcode


 

Language: Python

Publication date: 2009-06-02

Description: Little script to obtain a printable (C style) shellcode from the escaped Javascript code. It also writes to shellcode.out the resulted bytes.

Download it!

 


Usage


 

Usage: js2shellcode js_shellcode
Arguments:
js_shellcode: escaped Javascript shellcode.

 

Distribuir contenido