Resolviendo CrackMe en Java

Iniciado por Pr0ph3t, Agosto 22, 2012, 11:54:54 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

En el foro RTHacker, un usuario posteó un CrackMe hecho en Java, realmente muy sencillo, pero interesante. Mirándolo un poco, me animé a crear un pequeño tutorial de cómo resolverlo. Es ideal para que los que recién empiezan en la Ingenieria Inversa practiquen.



Éste es el CrackMe, ahora vamos a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Recuerden que éste es un archivo .JAR, por lo cual necesitaran la máquina virtual de Java para poder ejecutar la aplicación correctamente (Puedes descargarla de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta).

Hechos los pasos anteriores, ejecutaremos por primera vez la aplicación y analizaremos su estructura. Por lógica e instinto, lo primero que haremos es probar una contraseña al azar para ver qué reacción nos devuelve.



Perfecto!, el CrackMe devuelve un mensaje de error con el texto «Incorrecto!». Ahora, lo que debemos de hacer es encontrar en el archivo esa palabra, para ello lo abriremos con un editor Hexadecimal (En mi caso usaré el Bless Hex Editor).

Mirando un poco las entrañas de éste fichero, puedo encontrar que contiene tres archivos clase llamados:
Código: java
probarActionPerformed.class
Pruebas.class
Pruebas$1.class


Tal vez se estén preguntando, ¿cómo accedemos a ellos?...Pues la respuesta es sencilla, los ficheros .JAR también son formatos de compresión de datos, como .ZIP, .RAR, entre otros. Así que tecleando éste comando en terminal podremos obtenerlos fácilmente:
Código: java
windhack@windhack-desktop:~/Escritorio$ jar -xvf CrackMe.jar
inflado: META-INF/MANIFEST.MF
inflado: manifest
inflado: .project
inflado: ejemplo
inflado: .classpath
inflado: probarActionPerformed.class
inflado: Pruebas$1.class
inflado: Pruebas.class


Ahora, con todo el contenido del .JAR en nuestro escritorio, vamos a mirar de nuevo, cada uno de los archivos .class en el editor Hexadecimal.

¡Ok!, en el archivo Pruebas$1.class se encuentra definido el mensaje de error que nos dá cuando la contraseña está errada, analizando un poco más encontramos algo un poco extraño...



Vualá!, encontramos el paradero de la contraseña correcta, la cual es «4lg0f4c1lam1g0», vamos a probarla y miremos si esa es la solución al reto



FUENTE: DaW Labs
Twitter: @The_Pr0ph3t
[email protected]