| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | Exploit Submission Wizard 5 | W95 / W98 / NT
Descripción | Programa de registro de paginas web en buscadores.
Tipo | Shareware
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://www.exploit.net
Protección | Limitacion a solo registrar tu pagina web en 17 buscadores.
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v3.24
Objetivo | Conseguir la clave para registrarse.
Cracker | Esiel2
Fecha | 1 de Junio de 1999
INTRODUCCION
En este tutorial se vera como hacer una aproximacion a un programa hecho en visual basic con el depurador soft-ice, sin usar el Smartcheck (esto puede ser un poco lioso) . Lo primero de todo, tenemos que asegurarnos que en el fichero winice.dat tenemos la siguiente linea: exp=c:\windows\system\msvbvm60.dll Sin esta linea, claro esta, no podriamos hacer nada. ;)
AL ATAQUE
Vamos a por el, y lo que hacemos despues de ejecutarlo, ver un menu donde pone REGISTER pulsamos sobre el y nos aparece lo que buscamos, un textbox donde nos pide la clave para poder registrarnos y en su lugar esta la cadena "Free Submission Wizard Only", tendremos que borrarla y poner nuestra clave favorita, en mi caso 'esiel2'. Pulsamos sobre el boton que pone 'Save Wizard Key' y nos sale el tipico mensaje diciendo que la clave no es correcta, tras esto, si nos fijamos detectamos que el programa automaticamente pone en mayusculas las dos primeras letras de mi password, ¡Que Raro!, solo las dos primeras, el resto lo deja en minusculas. Bueno, bueno, bueno, intentemos un aproximamiento un breakpoint ¿cual se os ocurre? ... ¡VENGA!... ¿Ninguno? .... Pues el de casi siempre, rtcmsgbox, asi que escribimos nuestro clave otra vez 'esiel2' y pulsamos sobre el boton ... y zash ... volvemos al soft-ice despues de nuestro breakpoint, asi que como ya nos ha sacado el mensaje de error tendremos que subir hacia arriba para encontrar donde toma la decision de que nuestra clave sea correcta o incorrecta, y nos encontramos con la siguientes intrucciones: 0137:0048E79E add esp,38 0137:0048E7A1 test di,di 0137:0048E7A4 jz 0048E88F <--- Aqui toma la decision 0137:0048E7AA mov edi, [MSVBVM60!__vbastrcat] si sacar el error o no 0137:0048E7B0 push 00442038 dependiendo del flag 'z' creo que sabeis al que me refiero ;) Pero, resulta que si cambiamos el flag, nos sale el mensaje de que estamos registrados pero cuando queremos registrarnos en mas de 17 buscadores nos dice que no puede ser, ¿como es eso?, ¿no estabamos ya registrado?, ... pues no. Pues entonces, tendremos que hacerlo mas fino y buscar una clave que sea realmente valida para ello, asi que si nos acordamos del principio en donde vimos que el programa cogia las dos primeras letras y las convertia en mayusculas, asi que si buscamos un breakpoint o bien coja caracteres a la izquierda de la cadena o bien tranforme caracteres en mayusculas, con lo que si nos miramos el tutorial sobre Crackeando en Visual Basic podemos ver ambos breakpoint, los cuales son los siguientes: rtcLeftCharBstr rtcUpperCaseBstr Probamos con el primer breakpoint, volvemos al programa y pulsamos sobre el boton e inmediatamente regresamos de nuevo al Soft-ice en las siguientes lineas: 0137:0048E512 push edx 0137:0048E513 call [MSVBVM60!rtcLeftCharBstr] <--- Coge caracteres a la izda. 0137:0048E519 mov edx,eax 0137:0048E51B lea ecx, [ebp-1c] 0137:0048E51E call esi En estas lineas se coge los dos primeros caracteres de mi clave introducida, que fue 'esiel2', pues se coge 'es'. Y despues sigue con: 0137:0048E520 push eax 0137:0048E521 call [MSVBVM60!rtcUpperCaseBstr] <--- Aqui convierte 'es' en 'ES' 0137:0048E527 mov edx,eax 0137:0048E529 lea ecx, [ebp-24] 0137:0048E52C call esi 0137:0048E52E push eax 0137:0048E52F mov eax, [005112E8] .... .... 0137:0048E54A push eax 0137:0048E54B push ecx 0137:0048E54C call [MSVBVM60!rtcRightCharBstr] <--- Coge caracteres a la dcha. 0137:0048E552 mov edx, eax 'iel2'. 0137:0048E554 lea ecx, [ebp-20] 0137:0048E557 call esi 0137:0048E559 push eax 0137:0048E55A call [MSVBVM60!rtcLowerCaseBstr] <--- Convierte los anteriores 0137:0048E560 mov edx,eax caracteres en minusculas. 0137:0048E562 lea ecx, [ebp-28] 0137:0048E565 call esi .... .... Y asi pulsando la tecla F10 hasta que nos encontramos algo interesante .... como lo que viene ahora. .... 0137:0048E6C7 push 02 0137:0048E6C9 push edx 0137:0048E6CA call [MSVBVM60!rtcLeftCharBstr] <--- Coge de nuevo 2 caracteres 0137:0048E6D0 mov edx,eax a la izquierda de mi clave. 0137:0048E6D2 lea ecx, [ebp-38] 0137:0048E6D5 call esi 0137:0048E6D7 mov ebx, [MSVBVM60!__vbaStrcmp] <--- ¡Funcion para comparar cadenas!! ¿para que puede servir esta funcion? jeje 0137:0048E6DD push eax <--- Se guarda lo que realmente le interesa al programa de mi clave que son las dos primeras letras en mayusculas 'ES' 0137:0048E6DE push 004420EC <--- Es la direccion donde se guarda la clave correcta. Podemos verla poniendo: D 4420EC Y nos daria como resultado 'PW' * En estos 2 ultimos push se guarda las dos cadenas que ha comparado la funcion api __vbastrcmp. .... Seguimos observando el programa, puesto que como sabemos donde .... toma la decision de decirnos si somos buenos o somos malos pues tendremos que .... tracearlo un pokito y de camino viendo lo que va sucediendo. .... 0137:0048E6EE push 02 0137:0048E6F0 neg edi 0137:0048E6F2 push eax 0137:0048E6F3 neg edi 0137:0048E6F5 call [MSVBVM60!rtcLeftCharBstr] 0137:0048E6FB mov edx,eax 0137:0048E6FD mov ecx, [ebp-30] 0137:0048E600 call esi <--- Hace referencia al api __vbastrcmp 0137:0048E602 push eax <--- ¡¡ Curioso ¡¡ Se vuelve a guardar de nuevo las dos primeras letras de mi clave y en mayusculas ('ES') 0137:0048E603 push 004420E0 <--- Es la direccion donde se guarda otra clave correcta!!!! en este caso es: 'EW' .... .... Avanzamos un pokito y nos encontramos otra vez con esto. 0137:0048E61A call [MSVBVM60!rtcLeftCharBstr] 0137:0048E620 mov edx,eax 0137:0048E622 mov ecx, [ebp-28] 0137:0048E625 call esi <--- Hace referencia al api __vbastrcmp 0137:0048E627 push eax <--- Vuelve a guardar las 2 primeras letras de mi clave en mayusculas('ES'). 0137:0048E628 push 004420D4 <--- Otra clave correcta, en este caso es: 'DN'. .... .... 0137:0048E63F call [MSVBVM60!rtcLeftCharBstr] 0137:0048E645 mov edx,eax 0137:0048E647 mov ecx, [ebp-20] 0137:0048E64A call esi <--- Hace referencia al api __vbastrcmp 0137:0048E64C push eax <--- Vuelve a guardar las 2 primeras letras de mi clave en mayusculas ('ES'). 0137:0048E64D push 004410C8 <--- Otra clave correcta, en este caso es: 'KX' .... .... Seguimos trazando el programa en busca de nuestro " jz 0048E88F " ... Hasta que lo encontramos. Ahora procedemos a probar una de las multiples claves correctas que hemos encontrado, pero tenemos una sorpresa y es que cuando pulsamos sobre el boton para comprobar pues nos sigue dando un error, asi que pensemos un poko .... seguramente algo se nos habra pasado por alto, pero la funcion de comparacion tomaba dos caracteres de mi cadena y devolvia dos caracteres como 'validos', y ademas el programa solo convierte a mayusculas las 2 primeras de mi clave ..... ummm .... uummmm.... y si cogemos y ponemos en el textbox la palabra clave+(4 o 5 espacios en blancos)... pues FUNCIONA, luego hemos crackeado este programa sin necesidad del Smartcheck. Resumiendo las posibles claves validas son: PW_esiel2 EW-esiel2 DN-otra_vez-soy-yo-(esiel2) KX-;o) DNEWPWKX .... Y asi todos las que quieras, esto es todo, hasta la proxima ..... Un Saludo. ;)
[ Entrada | Documentos Genéricos | WkT! Web Site ]
[ Todo el ECD | x Tipo de Protección | x Fecha de Publicación | x Orden Alfabético ]
(c) Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers. Si necesitas contactar con nosotros , lee esto antes e infórmate de cómo puedes ayudarnos