Decompilar Applets Java de una Aplicación Web
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