Oye, ¿Donde está el password?

Vamos a cambiar la dinámica de las últimas entradas que han habido por aquí y vamos ha pegarle hoy ha algo mas técnico pero para el alcance de todo el mundo.

Vamos a entrar en la ingeniería inversa para ver que se pueden hacer cosas muy chulas, pero sin entender todo el proceso, para que la entrada en el mundillo sea mas apetecible….

Tenemos el siguiente programa que nos pregunta por un serial:

1

Este es el aspecto que tiene la aplicación, como veis algo muy sencillo, nos pide un password, si le metemos uno cualquiera…

2

Evidentemente nos dará que la contraseña es incorrecta, así que toca paso de abrir el debugguer para ver como podemos solventar este problema.

Abrimos OllyDebugguer y la aplicación que nos pide el password.

3

Si nunca has abierto Olly, tranquilo, no has de entenderlo todo, por no decir que muy poco, es un artículo de introducción.

Si os acordáis cuando metíamos el password nos daba un error y nos decía que era incorrecto…

Este mensaje es un string, así que lo que haremos será buscar todos los strings del binario.

4

Usamos la opción All references text strings.

Lo que nos saldrá será lo siguiente:

5

Ya tenemos todas las referencias a los strings dentro del binario. Ahora lo que haremos será ir a la dirección de memoria donde dice el mensaje de que se ha introducido un serial incorrecto.

Primera manera de aceptar el password

Una de las cosas que podemos hacer para que nos acepte el serial es modificar en memoria el binario para que nos acepte cualquier serial. Una vez modificado el binario podemos guardar el resultado para tener un binario parcheado, pero primero vamos a ver que instrucciones nos encontramos.

6

En la imagen podemos ver instrucciones como:

CALL: Llama/Salta a la dirección/función indicada

PUSH: Guarda el valor en la pila.

JMP: Salta a la dirección indicada.

Lo que vamos ha hacer nosotros es modificar la dirección de memoria 00401299. Aquí lo que hay es un JE que significa que cuando el programa llegue aquí saltará si es igual o si es cero.

Nosotros los cambiaremos por un JnE, que saltará si NO es igual o si no es cero. Esto lo que hará es que cualquier cosa que introduzcamos salte a que el serial es correcto. Hacemos Assemble con Olly en esa dirección de memoria.

En este caso tenemos dos soluciones posibles, colocar un JMP, que saltará hacia la parte de el serial es correcto, o un JnE que le pongamos lo que le pongamos dará OK también. A cada cual elija el que mas le guste.

9

Hacemos Assemble y corremos el programa con F9, metemos cualquier serial y…

10

Recordar que en ningún momento hemos modificado el binario, si queremos guardarnos una copia de lo que hemos modificado solo tendremos que hacer:

copy

Y seleccionamos Selection.

Segunda manera de sacar el password

Vamos a volver aquí:

6

Ahora lo que vamos ha hacer es meter un breakpoint (apretamos F2) en el CALL. Esto lo que hará es que el programa, parará su ejecución en ese CALL, la dirección de memoria en concreto es: 00401291.

Ejecutamos el programa y parará en el CALL donde hemos puesto el breakpoint, entonces apretamos F7 para entrar dentro del call y F8 para ir yendo instrucción a instrucción para que en la parte de registers de Olly nos acabe mostrando el password.

5

Y aquí hemos acabado.

Antes de que me lo diga algún lector, con un strings sacábamos el password que estaba harcodeado en el binario.

m0tNaF-EmKCARc
Check Status
Wrong Password! Keep trying, you’ll get it!
You got it! Your now a cracker! 🙂

Espero que este artículo os anime a poneros con la ingeniería inversa / cracking, es un mundo fascinante.


Si te ha gustado el post, compartelo y ayudanos a crecer.

Unete a nuestra Fanpage Siguenos en Twitter

Autor: Seifreed

Formado en un equipo de lucha contra el fraude. He trabajado implementando la protección y prevención del fraude en varios clientes dentro del sector bancario nacional e internacioal. Mi trabajo consiste en encontrar soluciones a los problemas actuales y futuros de las entidades financieras respecto al código malicioso y el fraude. Especialidades como el análisis de malware, análisis forense, ingeniería inversa o tareas de hacking ético, forman parte de mis tareas diarias. Soy ponente ien eventos nacionales (No cON Name, Owasp, Navaja Negra) e internacionales (DraonJAR CON - Colombia). Soy profesor asociado en La Salle enseñando el curso MPWAR (Master in High Performance Web Programming) y el máster de ciberseguridad de La Salle (MCS. Master in Cybersecurity) Miembro de asociaciones y grupos de research como la HoneyNet Project, Owasp, SySsec etc.. También soy el organizador de las conferencias Hack&Beers en Barcelona

Compartir este Artículo
  • Pingback: Bitacoras.com()

  • kk

    Menuda chusta de crackme

    • Por algo se empieza, no todo el mundo sabe del tema hombre

  • mister19

    Gracias gran aporte se que ase ve complicado pero es algo mas como de practica… nueva mente muchas gracias

  • Pier Dionisio

    Muchas gracias por el aporte se ve muy interesante ahora mismo lo pongo en práctica.

  • Se ve interante a ponerlo en practica a ver

  • luis

    muy bueno ´pero don de consigo ese programa
    OllyDebugguer?.

    gracias.

  • bylly

    Gracias por algo hay que empezar nuevamente gracias por el aporte

  • Diego Nadares

    Gracias por el aporte! Muy bueno. Una pregunta, tenes el programita de ejemplo (el que pide el serial) a mano como para descargarlo? Abrazo!

  • Muy bueno y pratico el tema… ! Gracias por el Post.

  • crackslatinos

    Seifreed no te cansas de bajar el nivel de dragonjar, por lo menos ten la decencia de referenciar los manuales del curso de cracking de raton, con razon ocultaste el nombre de la ventana del crackme1.
    Cada noticia, manual, articulo que “lees” quieres convertirla en publicacion aquí .
    Respeta a los lectores y escribe tus propios articulos e intenta hacer tu propio contenido, cada cosa que escribes quieres fusilarla en todos los blogs :/

    • 4v4t4r

      jwqbedjwebrwebrpweurbewiu

  • kzxm300

    Buen tutorial de introducción amigo, perfectamente entendible 😀

  • Emiliano

    Muy bueno el tuto, estas cosas son las que incentivan al comienzo del estudio. El cracking fue algo que nunca comencé a investigar. Este post creo que lo comenzará, ya que es una de las áreas que más desconocimiento tengo.
    Podrías publicar el programita de ejemplo como para hacer la practica? (aunque seguramente en inet hay bastantes tutos)
    Gracias.

Siguenos!

O Puedes Subscribete

ANTES DE

SALIRTE ...

NO TE

ARREPENTIRÁS

!Gracias¡

NO OLVIDES NUESTRAS REDES SOCIALES