Aprendiendo a crackear

La Ingeniería Inversa tiene como objetivo obtener información de un producto, con el fin de saber cómo se ha hecho. El hacer ingeniería inversa de un código se conoce como Cracking, acto conocido como eliminar protecciones en el código. El cracking no tiene porqué ser siempre malo, se puede usar también para detectar bugs en los programas o en la lucha contra el malware. En el Máster de Ciberseguridad se ha empezado el módulo de Ingeniería Inversa y en las primeras clases se han dado las bases del cracking. A partir de un código que pedía un PIN, los alumnos han sido capaces de cambiar el ejecutable para hacer que acepte cualquier PIN como correcto. Para empezar la tarea, se debe desensamblar el código principal, del cual se puede intentar deducir que hace el programa y a partir de ahí ver que se hace. En la siguiente imagen se ve el código ensamblador del programa, con el que se llega a la conclusión que se compara el PIN introducido con el guardado y redirige a una parte diferente del código según el resultado de la comparación. El objetivo del ejercicio era cambiar la comparación y hacer que siempre sea correcta, para así ir siempre a la parte del código que te permite el acceso. Cada operación tiene asignado un código de operación, por tanto cambiando este código por el de la operación deseada y guardando de nuevo el ejecutable, se consigue acceder siempre, sin importar el PIN introducido. Con el ejercicio propuesto, los alumnos aprenden las bases de la ingeniería inversa, donde a partir del código ensamblador, entendiendo que hace el programa y cambiando instrucciones se puede obtener acceso. A partir de aquí, seguirán ampliando los conocimientos, pudiéndolos aplicar en programas de mayor magnitud.