2012-11-16

Confías en los PDF's??? No deberias

Debido a que estoy estudiando para el CHFI y además que la informática forense me encanta he estado aprendiendo a través de mucha lectura y a través de probar, que es lo único que realmente te enseña. Ahora leyendo sobre muchas cosas encontré un excelente post de de fluproject sobre un análisis de PDF y un post en ingles también sobre un análisis de un PDF; ambas entradas usan la herramienta PeePDF.

El PeePDF es un proyecto realizado en PYTHON que permite hacer un análisis a profundidad de los archivos tipo PDF, su pagina es http://code.google.com/p/peepdf/, en de encontraras toda la documentación y los ejecutables. Como esta hecha en Python es multi-plataforma, aunque viene por defecto en Backtrack5, que es donde lo use.

Entonces usando BT5 lo encontraras en foresics PDF, el cual te lanza la consola en el directorio /pentest/forensics/peepdf y que al usar la opción -h nos muestra las diferentes opciones que son las siguientes:



Entonces lo primero que siempre debes hacer es actualizarlo con la opción -u, si el script esta actualizado este te debe mostrar dos lineas donde se ve  el mensaje No changes!, como se ve en la imagen.

Bueno para entender un poco el ejercicio voy a tomar un PDF llamado IPv6.pdf y usando Metasploit le voy a añadir un script que me permite tener acceso a la consola de la victima, lo cual se hace con los siguientes datos en Metasploit


Como pueden observar el archivo original se llama IPv6.pdf y el resultante se llama IPv6_Metasploit.pdf, que como se ve en la imagen siguiente lo único diferente es el tamaño, ya que el segundo tiene casi 50KB más, pero esto para cualquier usuario no implica nada, por eso le voy a demostrar como se debe revisar si lo PDF que descargan no tengan un malware incluido.

Entonces para revisar cada uno de los archivos se ejecuta el comando indicando el archivo a revisar y colocando la opción -i para que nos habilite una consola interactiva y continuar con el análisis, esto último si quieren ir más a fondo en la revisión sino solo con lo que se ve en la salida del comando pueden deducir si es o no sospechoso el pdf. Primero mostrare la salida del archivo original.


Y ahora el modificado con Metasploit


Como pueden apreciar el sistema inmediatamente le marca en colores llamativos que el archivo tiene elementos sospechos (Suspicious Elements), y esto nunca lo vera un usuario sin este tipo de revisiones. Si eres un usuario no interesado en la parte forense informática, puedes leer hasta acá, pero si eres una persona inquieta y quieres aprender un poco puedes continuar, aclaro no soy experto pero espero aportar algo.

Bueno como no soy experto me toca leer mucho y ver las ayudas, en esta pagina http://code.google.com/p/peepdf/wiki/Commands veras la información de los comandos que se pueden ejecutar, dentro de los que me parece fundamental el changelog, que te muestra cuales son los cambios detectados en cada una de las versiones del PDF. A continuación veremos el changelog del archivo con el malware.


 Como se ve los objetos 1 y 4 fueron modificados y se adicionaron 6 objetos entre el 25 y el 30, por lo que vamos a comparar los objectos modificados de cada archivo.


Como se puede apreciar en el objeto 1 se adicionaron la referencia de la acción en el objeto 29 y de los nombres en el objeto 25. Mientras tanto en el objeto 4 se adiciono la referencia del objeto 30 llamado AA.

Ahora para dar una pequeña muestra de como sería la documentación en el proceso y como esta herramienta nos permite obtener los datos de cada uno de los objetos que deseamos analizar a continuación les muestro una secuencia de análisis del objeto 25 que es uno de los que se adicionaron con el proceso de Metasploit.


En el primer comando vemos el contenido del objeto, en el segundo comando le calculamos el HASH con 3 mecanismos diferentes, lo cual nos permite marcar la evidencia y poder implementar correctamente la cadena de custodia (elementos fundamentales en la informática forense).

En el tercer comando vemos específicamente la infomración de ese objeto, donde podemos apreciar el tamaño en bytes, su ubicación en la pila (Offset), la calificación del objeto, su HASH en MD5 y que referencias contiene.

En el cuarto comando, vemos como esta distribuido el objeto en los bytes del archivo, por esto en el comando se coloca el primer valor igual al determinado como Offset (54610) en la información del objeto y le damos el tamaño que deseamos revisar con el valor de Size (41) entregado en la información del objeto.

Por último voy a mostrar el contenido del objeto 30, el cual es el que contiene los comandos que se cargan en el payload de Meterpeter para poder obtener una consola del dispositivo victima.


Como se puede apreciar como se carga el cmd.exe en el Win y como esta el mensaje que se había cargado en el archivo pdf.

Espero que les sirva y que tomen conciencia que no se debe confiar en los PDF's que descargan o que consigues sin saber exactamente su origen.