Esta es una discusión en el tema Wincaja dentro del foro Cracking, parte de la categoría .:: Sistemas ::.; WINCAJA Cracked By Riatanaz Wincaja es un sistema de punto de venta algo limitado a mi parecer pero bastante estable y con un enfoque administrativo bastantemente bien aplicado, aunque en apariencia no es de lo mejor cumple con sus objetivos y utiliza una plataforma con SQL Server que lo hace ...
WINCAJA
Cracked By Riatanaz
Wincaja es un sistema de punto de venta algo limitado a mi parecer pero bastante estable y con un enfoque administrativo bastantemente bien aplicado, aunque en apariencia no es de lo mejor cumple con sus objetivos y utiliza una plataforma con SQL Server que lo hace bastante confiable para almacenar sus datos.
Vamos a auditar la seguridad de este sistema para ver "como un programa no debe ser protegido" , la base de su proteccion se basa en una centinela bastante mal implementada y en toma de desiciones modulares, esto significa que todas las comprobaciones se realizan en la misma seccion de codigo lo que lo hace extremadamente vulnerable.
Proteccion: Sentinela
Metodos de crackeo:
- Romper en la API
- Trazar hacia atras
- Good Boy Bad Boy
Primer Aproximación
Lo de siempre instalamos y corremos el programa para verificar el tipo de proteccion y la nag que nos envia, cabe mencionar que funciona como demo por 30 dias y brinda la posibilidad de escoger el tipo de proteccion si asi lo deseamos.
Nag:
Configurar Sistema:
Una vez analizado el esquema de proteccion el cual se basa en una serie de configuraciones para varios sentinelas según se puede observar en el cuadro de configuraciones deducimos que esta bastante mal implementado su esquema de proteccion ya que al elegir de entre varios esquemas al menos uno de ellos tiene una vulnerabilidad conocida asi que vamos a escoger el que sea mas difícil en este caso y por experiencia seria en “Sentinel Pro” con el cual ya hemos lideado en tutoriales anteriores y de el cual hay bastante bibliografía en el foro para consultar en caso de atorarnos en algo.
Puesto que ya conocemos un poco este tipo de mochila sabemos que:
• utiliza un centinela elegible a nuestro criterio
• tiene la funcionalidad de demo con algunas restricciones
• no esta empacado y no tiene envoltura
• adolece de las mismas vulnerabilidades que la mayoria del software protegido con sentinel
Asi que el siguiente paso sera abrirlo en olly y utilizaremos la tecnica “Rompiendo en la Api” para saltar con nuestro debugger en la seccion critica de la proteccion asi que utilizaremos la api ya antes documentada de rainbow llamada “SPROFINDFIRSTUNIT”, la cual se encarga de revisar si hay algun sentinel conectado a nuestro equipo.
Lo primero por hacer sera correr el programa sin ningun breakpoint para que este cargue todas las librerias que usa y despues un poco de analisis sobre estas encontramos una llamada Sx32w.dll , es ahi donde residen las llamadas al dongle asi que ponemos un breakpoint en la api llamada a sprofindfirstunit, pulsamos f9 para correr el programa y terminamos aquí:
Breakpoint en Sx32w.dll
Corremos de nuevo sin antes analizar el codigo para que los breakpoint surtan efecto (analizar: click derecho sobre la ventana de cpu luego analysis y Analyse code)
Cuando comienza a ejecutarse de nuevo caemos aqui:
Es un hecho que al saltar holly si utilizamos la tecnica de trazado hacia atrás con CTRL-F9 y F8 regresaremos a la dll en la seccion critica de chequeo de la proteccion asi que una vez ahí analizaremos los saltos para ver si hay uno que evite el chequeo de la mochila .
Despues de trazar hacia atras terminamos en una dll lamada Wcjpgpro que asumimos es la responsable de la seguridad y las llamadas a Sx32.dll
Si observas detenidamente el salto en 110343b9 evita la seccion de chequeo asi que nuestro primer patch sera ese salto, lo haremos JMP para que siempre informe al programa que la mochila esta conectada.
Una vez crackeada esta seccion intentaremos acceder al software nuevamente para verificar que se haya comprometido el sentinel , al parecer todo funciona durante el acceso pero si tratamos de ingresar a una funcion mas nos encontraremos con esta nag:
Muy bien con esto deducimos que el chequeo del sentinel se encarga de cambiar el estado de alguna variable dentro del codigo del programa la cual es utilizada para decidir si se accedio correctamente a la mochila asi que vamos a crackear de nuevo pero ahora lo haremos sobre el exe que es la seccion que comentaba antes.
Para crackear esta parte utilizaremos la tecnica “Rompiendo en la Api” nuevamente , pero ahora pondremos nuestro breakpoint sobre USER32 y MESSAGEBOXINDIRECTA, los cuales son responsables del envio de la nag.
Corremos nuevamente desde olly y caemos aquí:
Breakpoint en MessageboxindirectA
Saltamos en User32 antes de que salga la Nag
Si trazamos hacia atrás unas cuantas veces utilizando la tecnica de trazado hacia atrás llegaremos a esta seccion donde de nuevo aplicaremos la tecnica de “God Boy Bad Boy” .
Trazamos hacia atras hasta regresar al exe y analizamos el codigo
Como puedes observar el salto en 006b7a6d anula la nag si salta asi que lo haremos que siempre salte utilizando la tecnica "Good Boy Bad Boy" de Je lo haremos Jmp.
Patch
Hay algunas otras areas donde debemos crackear tambien según la nag nos lo indique asi que asegusense de probar las funciones del programa para verificar que no se nos pase ninguno y si encontramos nuevamente la nag aplicaremos el mismo procedimiento.
En este momento tenemos una copia funcional del programa, la unica limitante que nos queda es que a la hora de cambiar el nombre de la empresa no se guarda en la base de datos y es por esto que decidi hacer el tutorial aunque hay un nombre alterno de la empresa, no es necesario crackear ahí pero ya que este programa tiene varias cosas que enseñarnos a la hora de enfrentar protecciones reales vamos a afrontarlo.
Si decides no hacer esta parte del tutorial aun asi tendras una copia funcional del software
** Parte opcional del Tutorial **
Problema No 1. Cuando cambiamos el nombre de la empresa no se guarda y no manda ningun mensaje .
Deduccion No. 1 El sistema utiliza sql server por lo que asumimos que hace alguna consulta de actualizacion en la base de datos.
Lo primero que haremos sera cambiar manualmente el valor de la variable que contiene el campo del nombre de la empresa.
Yo utilizo mi propio editor sql uds. Pueden buscar en la web cualquiera ya que hay varios para realizar esta tarea.
Codigo sql:
UPDATE GWINCAJA SET DATO='RIATASTORE S.A' WHERE VARIABLEG='[NOMBRE ]';
Imagen de mi editor:
Si observamos los valores en la base de datos han cambiado y si accedemos a la seccion de configuracion para cambiar el nombre de la empresa no se muestra y al guardar el campo que introdujimos manualmente es borrado asi que es hora de trazar nuevamente pero antes aclaremos el objetivo.
Valores en Access antes del update:
No haremos que guarde el campo con el nombre de la empresa sino que inserte el nombre alterno en vez del original, es decir nuestro objetivo no sera buscar donde resetea el campo con el nombre sino hacer que guarde el alterno en vez del que tecleemos como nombre.
Para esto concluimos que debe haber una seccion en el codigo que lee desde la ventana el texto y lo guarda en la pila para luego almacenarlo en sql server. Asi que ese sera nuestro primer paso.
Mediante la tecnica de búsqueda de referencias de string buscaremos el texto “[NOMBRE ]” el cual se encuentra aquí:
Buscamos esa cadena ya es un hecho que utiliza el nombre de los campos para hacer la consulta a la ventana y luego guardar en sql server.
Un poco mas abajo el flujo del programa obtiene el texto tecleado en el nombre alterno y lo guarda en sql lo cual si hace bien asi que buscaremos la diferencia entre estas dos llamadas.
Pero antes haremos un analisis de los registros y la pila para ver que esta haciendo la call encuestion.
Tambien documentaremos una llamada del motor de vb de la cual no encontre bibliografía pero por deduccion obtuve un registro de funcionalidad la cual sera de utilidad en nuestros proximos crack.
La call al motor de vb en la linea 00a98f0c "vbaHresultCheckobj" es la encargada de obtener el texto de la ventana y guardarlo en una estructura en la pila, recibe como parametros los apuntadores a la pila y el handle del control aunque esto puede ser equivocado es el comportamiento que registro durante el analisis a prueba y error.
Como puedes observar esta llamada tiene el fin de obtener el texto tecleado y guardarlo en un estructura en la pila en 12E740.
Cuando el programa llega en los dos casos “tanto en el caso del nombre de la empresa como en el de el nombre alterno” a ejecutarse si observas cuidadosamente la pila veras que con el nombre no mete nada y con el alterno si carga el texto tecleado asi que lo que ahora debemos hacer para cumplir con nuestro objetivo sera engañar a esta api para que envez de que lea el nombre lea el alterno.
Analisis cuando trata de guardar el nombre :
Analisis cuando trata de guardar el complemento (nombre alterno):
Para hacer esto utilizaremos la quinta tecnica avanzada “un ingerto de codigo” y anularemos un salto el cual es unicamente para chequeo de errores y no es indispensable .
Ingerto
Con esto tendremos solucionado el problema del nombre de la empresa y se utilizara el alterno en vez del original para guardarlo en la base de datos luego podemos teclear cualquiera y verificar en nuestro editor sql que realmente se esta almacenando.
Hay varias formas de crackear un programa, desde buscar exactamente porque a solo hacerlo que salte, es un tema que hemos tratado varias veces Sanatás y yo pero en resumen la respuesta siempre ha sido la misma , “si jala esta bien y entre menos trabajo mejor” pero hay veces en las que considero que ir por el camino difícil deja un poco mas que aprender y es algo en lo que coincidimos asi que si encuentras una solucion mas barata para que funcione el crack evitando el ingerto y documentando apis no documentadas sera ideal siempre y cuando funcione.
Mi mas sincera admiración y todos los creditos a los programadores del wincaja , yo se lo que es estar programando horas codigo en sql y vb6 . mi intencion no es lucrar con su software sino perfeccionarlo y una buena forma de hacerlo es auditando su esquema de seguridad.
Saludos y espero haya sido de su interes ….Riatan@z
Última edición por Riatanaz; 28/10/2008 a las 03:21
Tip para: Mis Tutoriales:
| Publicidad |
De donde descargo la version mas nueva?
Si te han servido los aportes de Sanatas.com,
considera hacer una donación para que esto siga en linea,
preguntame como hacerlo haciendo click aqui
Sigueme en Twitter @Sanatas
De aqui
Ir al sitio directamente
PD.- Excelente tutorial compa, saludos y gracias por compartir sus conocimientos.
Si te han servido los aportes de Sanatas.com,
considera hacer una donación para que esto siga en linea,
preguntame como hacerlo haciendo click aqui
Sigueme en Twitter @Sanatas
Ahi esta el link para actualizar a la version mas reciente, saludos.
http://www.wincaja.com.mx/descargas/...WinCajaV68.exe
Muy bueno el tuto, lo empeze como menciona Riatanaz "aplicando JMP para que siempre informe al programa que la mochila esta conectada", pero igual me siguio aventando el mensaje sobre la proteccion pero al parecer ya no checaba la proteccion, entonces con BP en DestroyWindow encontre donde manda el mensaje y quedo solucionado.
Despues me mando el mensaje que meciona Riatanaz
Segui con el tuto y llegue aqui
pero despues de eso nunca puede llegar al exe de Wincaja con el trazado hacia atras... asi que use de nuevo el BP en destroywindow y con un poco de trazado regrese a la dll Wcjpgpro justo un poco abajo de donde modifique para el otro mensaje, y pues igual modificando quedo listo.
Resumiendo yo no modifique nada en el exe de wincaja, todo lo que hize fue en la dll Wcjpgpro.
Saludos y gracias al Master Riatanaz y Master Sanatas por el tuto y el espacio.
- Res Publica Non Dominetur -
prdona colega y amigo pero el enlace de la actualizacion ya no esta funcionando podrias volver a postearla. G r a c i a s de ante mano
Ahora es esta:
http://www.wincaja.com.mx/descargas/...WinCajaV69.exe
perdon por revivir este tema tan olvidado... me gustaria preguntar lo siguiente:
Me interesa lograr crackear este programita, vaya.. quiero aprender a hacer muchas cosas, me podrian decir para empezar ¿que software necesito para este caso? y dos ¿que tutoriales puedo ver?
Todo enfocado a este programa.. y poco a poco ver otros, serian tan amables de ayudarme? saludos y gracias.
Chavos, me baje el software que creo necesitar.. pero la vdd es que tengo la idea, pero no logro ejecutar lo que se indica en el tuto, talvez si las imagenes aun estuvieran seria diferente.. ni modo.. espero que algun dia se den un tiempito y me ayuden con este soft.. por otro lado.. se podra clonar el dongle?? no solo de este.. de cualquiera.. bueno.. me despido.. buena vibra para todos!!!