Artículo · Ingeniería Inversa

Realizando ingeniería inversa a keylogger ardamax.

Rafael PeruCrackersRafael PeruCrackers 5 min de lectura

Ardamax es una herramienta que captura las actividades del usuario y guarda en  un archivo de registro. El archivo de registro se puede ver en modo texto o vía web, también puede utilizar dicha herramienta para ver qué sucede con su computadora mientas estas ausente.

Al ataque...

EL software tiene un tipo de seguridad que muchos conocen es la versión de prueba o TRIAL, de lo cual como siempre en casi todos mis futuros tutoriales, encontrar el “CHICO BUENO” es mi especialidad, comenzaremos a sacar un BACKUP al .exe, para futuras metidas de patas, bueno lo primero que se realizar es ver si Ardamax presenta protección o un unpack y el tipo de lenguaje que se compilo, en este caso vemos que no presenta protección y que está en lenguaje Visual C ++ 9.0. 

 

Nota: Tener en cuenta la ruta en donde se instala el software. 

 

 

Para poder hallar el “BAD BOY”, tuve que ejecutar la aplicación “F9”, luego intente registrarme y bum me apareció el “BAD BOY”, en donde pause. Y luego hice clic en la opción “K”, como muestra en la imagen:

 

 

Como muestra la Opción “K” o “VIEW-CALL STACL”, nos muestra el call que entramos al momento de poner PAUSA. En este caso vemos que MessageBoxW, tiene el proceso de vacilación.

 

 

Reiniciamos la aplicación y nos vamos a Search for -> Name (label) in current module.

 

 

Encontramos la clase MessageBoxW donde nos muestra el mensaje de el “BAD BOY”, de lo cual iremos al area de Disassembler de la clase.

 

En nuestro caso pondremos un BP en la dirección de memoria 7604EA5F (Inicio) y 7604EAA5 (FIN), de la clase MessageBoxW

 

 

En este caso ejecute Ardamax con “F9”,  intente registrarme, donde se detuvo en el MessageBoxW, luego aprieto una vez mas “F9”.

 

 

Otra manera de ir al final de la clase MessageBoxW, ir a Debug -> Execute till return.

 

 

Donde nos mostrara el MessageBox con el “BAD BOY”.

 

 

Cuando lleguemos a la dirección de memoria 7604EAA5, y finalmente apretamos “F8”, para retornar y ver que CALL realizo la invocación de MessageBoxW en este caso se realizo en el 00424273.

 

 

En el punto anterior se presiono  “F8”, y llegamos a la dirección de memoria 00424279, en donde para no tardar tiempo en explicar, se analizo cada MessageBoxW, el de circulo azul con carita feliz, es el “GOOD BOY”, con la dirección de memoria 00424217 y el que esta sombreado con color amarillo con dirección de memoria 00424273, es el “BAD BOY”.

 

 

Este es otro MessageBoxW con dirección de memoria 00424103 y sombreado de amarillo es otro “BAD BOY”.

 

Nota: Antes de seguir con el análisis, debemos quitar el BreakPoint de la clase MessageBoxW, sino estaríamos deteniéndonos en cada momento.

 

 

Sigamos con el análisis, hagamos clic en el boton “B”, para poder ver los BreakPoints que se asigno a cada dirección de memoria y poder realizar nuestro análisis.

 

 

En este caso presionamos “F9”, intentamos registrarnos y nos detenemos en el primer BreakPoint, si traceamos con “F8”, para poder analizar.

 

 

Llegamos al primer análisis, en la dirección de memoria 0042401F, que es una comparación donde: EAX=0 y EBX=0, si Z=1 entonces salta pero si Z=0 -> No salta y sigue con su proceso de validación, recordar los dos registros EAX y EBX y sus valores. 

 

 

Hagamos doble clic en el flag Z y cambia a 0 (cero), y asi no salte al “BAD BOY”.

 

 

Sigamos traceando con “F8”, llegamos a la direccion de memoria 004240CB donde se encuentra un CMP (comparación), donde:

EDI=1 y EBX=0, Z=0 -> No salta y nos muestra “BAD BOY”

Pero si :

EDI=1 y EBX=1 -> Z=1 -> Salta y nos muestra “GOOD BOY”

como les comente recodar el registro EBX=0 en la anterior comparación.

 

 

Sigamos con el análisis luego le explicare el cambio que se debe realizar, si :

Activamos el Flag Z=1 -> saltaremos al “GOOD BOY”, como muestra la carita feliz, realizara un salto a la dirección de memoria 004241E7.

 

 

Si observamos la flecha azul donde sigue el salto con la dirección de memoria 004241E7, y seguimos traceando con “F8”, llegaremos al “GOOD BOY”.

 

 

Al final observamos con tracear con “F8”, para poder ver el MessageBoxW de “GOOD BOY”.

 

 

PARCHEAR ARDAMAX

 

Lo que debemos hacer es analizar la zona del primer salto, en la dirección de memoria 00424018, modificaremos el código por MOV EBX,01, quiere decir:

EAX=0 - EBX=1 -> Z=0 -> NO SALTA y sigue analizando.

 

 

Vamos a guardar la modificación realizado en la dirección de memoria 00424018.

 

 

Luego la observación que se realiza en este caso es que debe cumplir estas reglas para poder registrarlo, tener una cuenta de Usuario (Lo que desee) y la clave, cualquiera que se le ocurra pero debe tener en cuenta estas reglas : ZZZZ-XXXX-YYYY-WWWW, para poder registrar como versión profesional, cada vez que ingreses una clave aleatorio debes tener en cuenta que debe ser alfanumerico y con sus guiones en grupo de 4 dígitos. 

Por ejemplo agrege: 

Usuario : lior

Clave : das2-dad3-ffr4-gtw2

 

Eso seria todo comunidad, gracias por su paciencia, espero que le guste, el manual, y si tiene critica, los espero.

 

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Pentesting .

Rafael PeruCrackers

Escrito por

Rafael PeruCrackers

Estudiante 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, :)