Decompilar Applets Java de una Aplicación Web

  • Posted on: 30 January 2015
  • By: ReYDeS

Adicionalmente a los formularios HTML, otro método para capturar, validar y enviar datos del usuario es utilizar un componente en el lado del cliente el cual se ejecuta en una extensión del navegador como Java o Flash. Cuando son empleados en las aplicaciones web pueden crear componentes completamente funcionales en el lado del cliente. Incluyendo validaciones complejas y manipulación de los datos capturados antes de su envío hacia el servidor. Erroneamente los desarrolladores asumen la no factibilidad de evadir su validación, lo cual convierte a las extensiones del navegador en un objetivo atractivo para descubrir vulnerabilidades dentro de las aplicaciones web.

Para la siguiente demostración se utiliza un Applet Java. Los Applets Java se ejecutan en una Máquina Virtual Java (JVM) y están sujetos a un sandboxing aplicado por la Política de seguridad de Java. Debido a que Java existió desde hace tiempo en la historia de internet y debido a que sus conceptos claves han permanecido relativamente sin cambio, una gran cantidad de conocimiento y herramientas están disponible para atacar y defender los Applets Java.

Uno de los métodos de ataque implica decompilar el objeto, realizar una revisión de su código fuente, y de ser necesario modificar su código, para luego recompilarlo. Las extensiones del navegador como los Aplets Java están compilados en “bytecode”. Bytecode es una representación binaria de alto nivel independiente de la plataforma, la cual puede ser ejecutada por un interprete, en este caso la Máquina Virtual de Java (JVM). Como resultado de esto, la aplicación puede ejecutarse sobre cualquier plataforma en la cual el interprete puede ejecutarse.

Se procede a obtener el bytecode pertinente para realizar la siguiente demostración.

Para decompilar el archivo se utilizará la herramienta “Jad”. Jad o Java decompiler es una herramienta la cual permite decompilar bytecode Java en código fuente Java.

Se procede a descargar y descomprimir la herramienta.

Ejecutar Jad con la opción “sjava” permite cambiar la extensión del archivo de salida.


$ jad -sjava slideb.class

Es factible ahora abrir con un editor, el archivo creado con extensión “.class”.

En caso se realice alguna modificación en el código fuente decompilado, se requiere compilarlo nuevamente a bytecode, para luego realizar las evaluaciones requeridas con el objeto. Para realizar la compilación se necesita utilizar las herramientas del desarrollador. En el caso de Java se requiere instalar el programa javac de JDK.

Fuentes:

http://varaneckas.com/jad/
http://www.javaworld.com/article/2077233/core-java/bytecode-basics.html
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2...

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense