27 junio, 2013

Iniciación en la Ingeniería Inversa

Hola a tod@s

¿Qué es la Ingeniería Inversa?



La Ingeniería Inversa es la acción de analizar un producto en su fase final y adquirir los elementos a partir de los cuales se creó. Hablando de un programa en particular es examinar el código binario o código maquina y obtener el código en lenguaje ensamblador a partir del cual se creó.

Para llevar a cabo esta PoC de Ingeniería Inversa he creado un sencillísimo programa en leguaje C, con tan sólo 14 líneas de código.








Como podéis observar el programa imita el comportamiento de muchos programas en el que te pide que introduzcas una licencia para validar el programa y poder disfrutar de el.


Imagen 1: Invocación del Programa



Comprobado que la aplicación funciona correctamente procedemos a la invocación del programa.
Si introducimos bien su serial salta el mensaje “Serial correcto” y sino “Serial incorrecto”.


Imagen 2: Abrir OllyDbg



A continuación abrir el programa con la aplicación OllyDbg, yo utilizare esta, pero existen otras como por ejemplo W32dasm. Ahora tenemos que intentar saltarnos la autenticación, es muy sencillo tenemos que buscar la cadena de fallo, en mi caso “Serial incorrecto”.


Tenemos que recordar la dirección de memoria que corresponde a esa instrucción, en mi caso 004012F0.


Imagen 3: Identificación Dirección de Memoria


Una vez recordada la dirección de memoria, toca buscar la instrucción que salta a esa dirección de memoria que se encuentra en lenguaje ensamblador. La he identificado en la tercera columna de la aplicación por su dirección de memoria 004012F0.



Imagen 4: Modificación en la Dirección de Memoria



Ahora para saltar la autenticación de nuestro programa lo que debemos hacer es eliminar esta instrucción, para ello doble clic sobre la instrucción y colocar la palabra nop que significa no operación.


Imagen 5: Aplicación Vulnerada



A continuación hacer clic sobre el botón ejecutar y vamos al CMD que abrirá OllyDbg, vamos a probar si se ha realizado correctamente la prueba, vemos que si, ahora el programa nos dará como correcto cualquier serial que introduzcamos.

 

Obviamente este programa que he creado es muy pero que muy sencillo, afortunadamente los programas y aplicaciones que muchos de nosotros utilizamos habitualmente tienen un nivel de seguridad mayor y no se encuentra los seriales de una forma tan accesible como en este caso. 


No seáis malos.