468x60 Ads


lunes, 21 de octubre de 2013

JavaSnoop – Debugging aplicaciones Java


JavaSnoop – Debugging aplicaciones Java

JavaSnoop, desarrollada para la BlackHat USA de 2010 por Arshan Dabirsiaghi. A grandes rasgos, la herramienta nos permite adherirnos (attach) a un proceso Java o arrancarlo e interceptar las llamadas que se realizan. Además de interceptar estas llamadas y ver su contenido, nos permitirá modificar los argumentos de los métodos que estamos interceptando y modificar el valor de retorno de la función.

A continuación, veamos cómo interceptar un método de un applet Java:

1. Descargamos la última versión de la aplicación JavaSnoop

Nota: Se recomienda dejar la aplicación en un directorio que no contenga espacios en sistemas Windows (ej. C:\JavaSnoop).

2. Descargamos la última versión de Java SDK (se requiere reinicio tras la instalación).

3. Fijar la ubicación del binario JAD en “Settings > Manage JAD > Set jad path”. Descargarlo del sitio web del autor. Esto nos permitirá decompilar las clases.

4. Nos aseguramos que esté creada la variable de entorno JAVA_HOME para nuestro usuario.


5. Para que no tengamos problemas con los permisos, JavaSnoop a la hora de realizar la inyección (hooks) nos ofrece en la carpeta Resources el fichero unsafe.policy. Copiaremos este fichero a %USERPROFILE%\.java.policy. En este directorio deberá encontrarse un fichero .java.policy. Tras nuestro análisis es recomendable restablecer la configuración inicial siempre.

6. Es aconsejable activar el Debug en la consola de Java y que esté siempre activa para ver los mensajes.


7. Es muy importante el orden en el que se arranca JavaSnoop y la aplicación java. Con algunos applets es estrictamente necesario que JavaSnoop esté arrancado antes de lanzar el navegador.

8. Una vez arrancado JavaSnoop utilizaremos la funcionalidad “An exisiting process”. En este caso vemos el PID 184 que es un applet que hemos arrancado en Internet Explorer. Pulsamos en el botón de Attach para adherirnos al proceso 184:


9. Una vez nos hemos adherido al proceso, vamos a configurar un “New hook” para ello pulsaremos (o haremos clic) en el botón “Add new hook”. Si no sabemos aún con que clase y qué método queremos hacerle el hook, nos dirigimos a browse (hacemos clic en Browse) y nos abrirá una nueva ventana en la podremos seleccionar la clase que queramos.


A continuación seleccionamos el método que nos interesa:
Una vez seleccionados, la clase y el método, volveremos la pantalla principal:
En esta pantalla de la aplicación, si hemos seleccionamos el método (punto 1) podremos parametrizar las acciones que va a realizar JavaSnoop. Así pues le podemos decir que en tiempo de ejecución nos imprima los parámetros cuando se vaya a invocar el método, que nos imprima el contenido de la pila, que podamos modificar los parámetros que se le pasan a la función y los valores de retorno. (puntos 2 y 3).

10. También podemos ver características del proceso al que nos hemos adherido (attach) en el menu Actions.


StuxnetPosted By César Calderón

Amante de todo lo relacionado con la informática, GNU/Linux, Programador, Geek. Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores.

0 comentarios:

Publicar un comentario