Herramientas para el análisis de documentos PDF maliciosos

El formato PDF siempre ha sido un vector interesante para la propagación de malware, ya sea por ser un tipo de archivo abierto y multiplataforma, como por las posibilidades de explotar el software que lo interpreta.

Como ejemplo nos referiremos al popular Adobe Reader, ampliamente extendido entre la comunidad… algo que lo hace estar en el punto de mira de muchos atacantes. La elevada posibilidad de ejecución de este tipo de ficheros – por ejemplo mediante una simple campaña de phising – y la escasa percepción entre los usuarios de que puedan contener algún tipo de código nocivo lo hace más que atractivo.

El caso es que el formato PDF ofrece posibilidades de contenidos extensos, entre los que se encuentra la capacidad de ejecución de código JavaScript, una importante funcionalidad que abre un abanico de posibilidades para embeber código e incluso pasar desapercibido mediante técnicas de ofuscación.

Así pues, en el día de hoy vamos a crear un fichero PDF “dañino” como los que podríamos encontrar en cualquier web comprometida o un adjunto de correo… para posteriormente ver cómo podríamos analizar su contenido.

Partimos generando el documento malicioso mediante la utilización del módulo “adobe_pdf_embedded_exe” con las opciones oportunas:

Una vez lo tengamos, vamos a tratar con diferentes herramientas para ver su estructura interna sin ejecutar el contenido dinámico, incluso podríamos comenzar utilizando el comando strings para mostrar la secuencia de cadenas de caracteres imprimibles, etc.

Como podemos observar, existen partes que evidencian que existe código más que sospechoso encargado de lanzar procesos secundarios para su ejecución.

Por nombrar algunas herramientas específicas comenzaremos por pdfid, una aplicación sencilla para explorar “de un vistazo” la estructura del documento (cabecera, objetos, streams…) antes de analizarlo en profundidad. En este caso, confirmaremos que existen el par de objetos (/JS, /JavaScript) sospechosos detectados anteriormente.

Del mismo desarrollador (Didier Stevens) contamos con pdf-parser para analizar el documento e identificar sus elementos fundamentales (opciones como búsqueda de cadenas en objetos indirectos, filtros, salida raw…). Mencionar que existe la alternativa gráfica (wxPthon) conocida como PDFScope que combina las funcionalidades de las dos anteriores.

Otra utilidad común es Origami, un framework escrito en Ruby para el parseo, análisis, modificación y creación de documentos PDF maliciosos. Soporta características avanzadas para cifrado, firmas digitales, formularios, Flash, archivos adjuntos… También dispone de una versión gráfica (pdfwalker).

No podíamos terminar de repasar la lista sin nombrar una las principales herramientas para la exploración y creación/modificación de archivos PDF, peepdf. Esta herramienta nos permitirá realizar todas las funciones necesarias sin tener que recurrir a otras utilidades: visualización de todos los objetos del documento, metadatos, elementos sospechosos, análisis de shellcode y JavaScript (requiere de PyV8 y Pylibemu), modificaciones entre versiones, filtros y codificaciones, vinculación con VirusTotal…

Finalmente, también pueden sernos de ayuda ciertos recursos en línea que nos facilitarán la tarea de extracción de información de un documento dado e incluso la correlación con las vulnerabilidades encontradas [Malware Tracker | Wepawet].

Como hemos visto, la generación de un documento PDF malicioso no tiene mayor complejidad y su simple ejecución podría suponer un grave riesgo para nuestro “sistema”.

Es importante tener conciencia sobre las posibilidades de este tipo de ficheros y no caer en la ciega confianza prestada a nuestra aplicación antimalware, llevando a cabo buenas prácticas como es el análisis específico como los detallados en este artículo.

Para terminar, recalcar la importancia de mantener actualizado nuestro software a sus últimas versiones, o incluso huir de las herramientas comúnmente utilizadas y que contarán con el mayor número de vulnerabilidades.

Error al actualizar Metasploit Framework (Gemfile)

La semana pasada tuve que actualizar Metasploit Framework, ya que llevaba unas semanas sin utilizar el entorno en mi maquina virtual con Backtrack 5 R3.  Así que me puse con ello, ejecute “apt-get update“, para actualizar los repositorios, luego “apt-get update“, para buscar posibles actualizaciones recientes e instalar-las, y finalmente ejecute “msfupdate“, para actualizar el entorno de Metasploit.

*En teoría  con la orden “msfupdate” bastaría, pero nunca esta de más actualizar el sistema antes de actualizar Metasploit Framework.

Cuando ejecute la orden “msfupdate” en una terminal, me lleve esta gran sorpresa:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /opt/metasploit/ruby/bin/ruby extconf.rb 
checking for pg_config… yes
Using config values from /opt/metasploit/postgresql/bin/pg_config
checking for libpq-fe.h… *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
   –with-opt-dir
   –without-opt-dir
   –with-opt-include
   –without-opt-include=${opt-dir}/include
   –with-opt-lib
   –without-opt-lib=${opt-dir}/lib
   –with-make-prog
   –without-make-prog
   –srcdir=.
   –curdir
   –ruby=/opt/metasploit/ruby/bin/ruby
   –with-pg
   –without-pg
   –with-pg-dir
   –without-pg-dir
   –with-pg-include
   –without-pg-include=${pg-dir}/include
   –with-pg-lib
   –without-pg-lib=${pg-dir}/lib
   –with-pg-config
   –without-pg-config
   –with-pg_config
   –without-pg_config
/opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:381:in `try_do’: The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:970:in `block in find_header’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:254:in `open’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:254:in `open’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:280:in `postpone’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for’
   from /opt/metasploit/ruby/lib/ruby/1.9.1/mkmf.rb:969:in `find_header’
   from extconf.rb:43:in `<main>’

Gem files will remain installed in /opt/metasploit/ruby/lib/ruby/gems/1.9.1/gems/pg-0.15.0 for inspection.
Results logged to /opt/metasploit/ruby/lib/ruby/gems/1.9.1/gems/pg-0.15.0/ext/gem_make.out

Estuve unos minutos buscando por Google y encontré una solución al problema.

-Lo primero que debemos hacer es dirigir-nos a la ruta /opt/metasploit/ruby/lib/ruby/1.9.1/i686-linux/ y abrir el archivo rbconfig.rb con el editor de textos que se suela utilizar. (vi, nano).

-Dentro del fichero debemos localizar la línea:

CONFIG[“LIBRUBYARG_STATIC”] = “-Wl,-R -Wl,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)-static”

-Una vez localizada, la editamos de manera que quede así:

CONFIG[“LIBRUBYARG_STATIC”] = “-Wl,-R -Wl,$(libdir) -L$(libdir) “

-Finalmente nos dirigimos a la ruta “/opt/metasploit/msf3” desde la terminal, y ejecutamos “/opt/metasploit/ruby/bin/bundle install” . Es muy importante situar-nos en la ruta  “/opt/metasploit/msf3” antes de ejecutar “/opt/metasploit/ruby/bin/bundle install“, ya que este ultimo comando depende del archivo “Gemfile” ubicado en la carpeta de Metasploit.

Después de estos pasos ya se podrá volver a ejecutar el  “msfupdate” con normalidad! Espero que os sirva!

Prueba de Penetración (PenTest)

La Prueba de Penetración (Penetration Test o PenTest en Inglés) consiste en una evaluación activa de las medidas de seguridad de la información. El propósito es detectar los puntos débiles que puedan ser capitalizados para violar cualquiera de las tres condiciones necesarias de la información: confidencialidad, integridad y disponibilidad.

Generalmente, las vulnerabilidades potenciales resultan de: fallas en el software, de configuraciones inapropiadas de los sistemas,  de la operación deficiente en los procesos o protecciones técnicas y del factor humano.

La Prueba de Penetración se realiza desde la posición de un atacante potencial de manera remota y local, buscando explotar activamente las vulnerabilidades de seguridad para obtener información relevante. Tal como lo intentaría un intruso con propósitos adversos para la organización, pero sin dañar la información, sistemas e infraestructura informática.

En código verde nos distinguimos por realizar las Pruebas de Penetración evaluando la gente, procesos, tecnología, controles técnicos y administrativos. Nuestro método es exhaustivo y por lo tanto más certero.

¿Qué beneficios aporta una Prueba de Penetración?

  • Se determina la factibilidad real de un ataque y su impacto en el negocio.
  • Provee la información necesaria para enfocar la implementación de controles de seguridad y mitigar los riesgos descubiertos.
  • Eleva la conciencia de la alta gerencia acerca de la seguridad de la información.

Entregables

  1. Clasificación y priorización de las vulnerabilidades encontradas
  2. Crónica del ataque
  3. Evidencias obtenidas durante la penetración
  4. Plan de remediación
  5. Recomendaciones para elevar el nivel de Seguridad Informática
  6. Presentación para la Alta Dirección
  7. Presentación Técnica

Principales razones para realizar una Prueba de Penetración:

  1. Es el método más efectivo para determinar el nivel real de seguridad de la información. Sólo con un ataque simulado es posible identificar las vulnerabilidades que plantean riesgos significativos para la organización, tales como:
    • Pérdidas financieras por fraude (hackers, extorsión o empleados molestos) o debido a sistemas de información y procesos poco confiables.
    • Pérdida de confianza de los clientes o cualquier otra parte interesada.
    • Crisis de relaciones públicas si el caso trasciende a los medios masivos.
  2. Ofrece un punto de vista independiente y analítico por un tercero, enriqueciendo la labor del equipo interno responsable de la seguridad de la información.