
Artículo · Ingeniería Inversa
Realizando Ingeniería inversa a perfect keylogger
Información de la víctima
Es una herramienta popular que gano varios premios, traducido más de 20 idiomas, como su nombre lo indica nos permitirá capturar las pulsaciones de teclado, el mouse, screenshot, etc.
Al ataque
Primero usaremos RDG Packer Detector, para ver si tiene protección o se encuentra empaquetado, además nos permitirá ver en que lenguaje se desarrolló la aplicación.
NOTA
Se aconseja sacar un backup del .exe principal por medida de seguridad, ya que se realizara cambios que pueden afectar o perjudicar el software. Así que a copiar y pegar en un directorio aparte y tener un bloc de notas para apuntar los datos principales (Como la vieja escuela).
Ahora pasaremos analizar el software y ver qué tipo de protección posee, ejecutemos la aplicación:
- 1) Duración Limitada, el programador pretender que su software se utilice un cierto tiempo para que luego deje de funcionar cumplido sus días.
Ahora vamos a obtener información del “BAD BOY”
Al tener el dato del “BAD BOY” que dice: “Registration code or user name is invalid. Please check all fields and try again!”, buscaremos el texto en Text string referenced, en este caso me estoy saltando otros pasos, debido a que se explicó en otros tutoriales.
En este caso me apareció que la dirección de la memoria 0041ABDB presenta el string que buscamos, hacemos clic derecho en el texto -> Follow import in Disassembler.
En este se analizó anteriormente y vimos que toda la validación se encuentra dentro de un CALL, de lo cual como se observa verás un return en la dirección de memoria 0041AC01, donde nos indica que retornara al CALL, para ello agregue un BP (BreakPoint), para detener el proceso en esa dirección, pero antes de eso debo hallar el inicio de todo ese CALL (Proceso).
Llegamos a la dirección de memoria 0041AA37 donde es el inicio del proceso de lo cual agrego un BP (BreakPoint), recuerde que estamos dentro de un CALL (Proceso), donde analizara las credenciales, en mi caso escribí:
Usuario: L1Or
Clave: AAAA-BBBB-CCCC-DDDD
De ley que no conocemos la clave, pero pronto lo conoceremos ☺, así que presionamos “F9”, o play y agregamos las credenciales y se detendrá en la dirección 0041AA37, donde inicia el proceso de validación.
Procederemos a tracear con “F8”, hasta llegar a la dirección de memoria 0041AB04 (Numero 1 de color amarillo), donde se observa que nuestro primer bloque de clave introducido es “AAAA”, al parecer lo esta alojando en la pila.
Seguimos tracenado y llegamos a la dirección de memoria 0041AB18 donde nos muestra el string “BBBB”, donde también lo pushea en la pila.
En el tercer string “CCCC”, lo pushea hacia la pila y si te percatas en la dirección de memoria 0041AB26, se aloja la clave ingresado.
En el cuarto string nos muestra el string “DDDD”, en donde observamos que es el último bloque y en donde terminara el proceso de unir los cuatro bloque de texto, para mostrarnos AAAABBBBCCCCDDDD, seguiremos tracenado con “F8”.
Como observamos en la dirección de memoria 0041AB51, nos muestra el string2 = “AAAABBBBCCCCDDDD” y líneas más abajo nos muestra el string1, seguimos traceando con “F8”.
En la dirección de memoria 0041AB58 con el string1 = “TREKAYIYWHSJHERM”, es la supuesta clave, pero como llegamos a validar que es la correcta, debido a que vemos líneas más abajo la clase lstrcmpiA, su función es comparar dos string y si no es correcto salta a la “BAD BOY”.
En este caso yo apunte el string1 y lo registre con mi usuario L1oR y Clave: “TREK-AYIY-WHSJ-HERM”, donde nos muestra que la clave ingresa es correcto, en este punto me percate que el uno de las variables que ayuda generar la clave es el usuario ingresado, si ingresamos otro usuario y con la misma clave, nos aparecera el “BAD BOY”. Tengo mi bloc de notas para que vean lo importante que es tomar apuntes.
SEGUNDO METODO
Nuevamente traceamos “F8” y nos detenemos en la dirección de memoria 0041AB61, en esta línea veremos el salto hacia el “BAD BOY”, es decir:
Si JNZ -> Salta debido a que Z=0, por lo tanto, como podremos llegar al “GOOD BOY”?, Para ello hacemos doble clic en la bandera Z para que cambie de valor a “1”, y así evitar que salte.
Como se observa el Flag Z=1, entonces no salta y aparece la carita “GOOD BOY”, por lo tanto estamos en buen camino y podemos decir que ya esta, pero debemos parcharlo, tener en cuenta que si me salto algunos pasos es porque ya leyeron los anteriores tutoriales, si no es así entonces lean jaja.
Si seguimos traceando podemos ver que se ejecuta el MessageBox del “GOOD BOY”.
Y al final de todo sé parcho, en este punto doy un tiempo para poder reflexionar y decir que a pesar de que es un software dedicado a seguridad, no se preocupa por los método de protección de su producto, por otro lado si tienen alguna duda del tutorial, pueden comentar estaré al tanto de sus dudas y poder brindarle mi poca experiencia. Ahí nos vemos.
HAPPY CRACKING.
¿Quieres aprender estas técnicas en profundidad?
Continúa tu ruta con Pentesting .

Escrito por
Rafael PeruCrackersEstudiante de la ingenieria Inversa usando las herramientas de Ollydbg y el actual IDA PRO, actualmente me encuentro investigando sobre Creacion de Exploit, con animo de ayudar a las personas que les interesa el mundo del reversing, :)


