Aplicacion > Pagina web (Formulario POST) > DLL > EXE (Comprobador de Key)

Iniciado por eclips, 7 Julio 2012, 14:14 PM

0 Miembros y 1 Visitante están viendo este tema.

eclips

Hola!

Versión resumida:

Existe algún programa que intercepte las llamadas de (por ejemplo) un DLL, ejecutado a través de un formulario de una web, a un proceso EXE que se esta ejecutando como proceso y que te diga QUE es lo que se ha enviado??? =)

(En el siguiente post esta la explicación larga)


eclips

Hola!

He estado documentándome estas semanas en diversas webs y adentrándome en el mundo de la ingeniería inversa, obviamente estoy MUY verde en el asunto, jeje,..  después de acabar con algunos CrackMe's me he atrevido con el ultimo expuesto en una LanParty a la que asistí..  pero me esta costando lo suyo xD

Aclaración: El reto es encontrar el algoritmo de creación de claves validas, no saltar la seguridad.

En realidad llevo algo avanzado...   estamos hablando de un programa que se ha de ejecutar en una VM ya que se arranca junto con windows y a su vez arranca un comprobador.EXE que queda como proceso abierto (No, obviamente no con ese nombre de archivo xD)

Desde lo que he podido ver, la aplicación inicial (El CrackMe aparente) para autenticarse te manda a una web, muy bien disimulada, con un formulario que envía por POST varios valores incluida la clave que debo generar.

Este formulario envía los datos a una DLL que a su vez envía "ALGO" al proceso comprobador.exe que esta en ejecución, y allí se comprueba.

Bien, hasta ahí he llegado.. 

--------------------------------------------------------------------------------------------
Cuestiones:

Esta claro que comprendiendo tooooodo el funcionamiento de la DLL y después del del EXE se podría solucionar, pero me imagino que debe existir algo que intercepte cuando esta DLL manda "algo" al EXE y QUE es lo que manda. ¿Estoy diciendo una locura? Espero que no.. jeje 

También puedo modificar el EXE para que en vez de hacer su trabajo, me guarde un log con lo recibido...  pero ahí entramos en camisas de 11 varas...

¿Un breakpoint es una opción? (No puedo iniciar el exe desde Ollydbg ya que lo arranca la aplicación inicial)


Muchas gracias por vuestra ayuda y..  gracias aun mayores por todo el trabajo y esfuerzos que mantienen este foro (todas sus secciones) siendo como es, un saludo!

apuromafo CLS

una vez existio algo llamado anubis como un proyecto web que analiza un programa (normalmente malware ) y confirmaba si enviaba paquetes de conexión, otras herramientas hablan de wireshark o interceptacion de lo que envia el programa, mas el tema de formularios y respuestas mas comprobación aveces no es del todo claro

digamos que tu logras el algoritmo correcto, luego envias el serial y plash, ahora estas baneado con esa serie (muchos malwares realmente rouge se hacen pasar por antivirus que al pagar te roban igual)... por otro lado implementaciones de web, es mas pensado para exploits, en este caso te sugeriria que si analizas los tutoriales de ricardo (que te dan los tips para depurar un programa), (obvio que supongo que leiste el faq del foro), tenemos que existen apis que pueden ser las formas de confirmar que se envia y que se recibe,
en un pasado, cuando analizaba una aplicacion que enviaba el post, aveces habia que cambiar al hosting de uno para que diera una respuesta correcta


te doy un ejemplo en ingles cualquiera:es un vc++ o similar para emular una respuesta php
http://tpodt.net16.net/tutorials/other2.htm

http://ifile.it/1ytjgb5/server-tutorial.zip

otra en español de un concurso es un .net emular una respuesta (get, post)..
http://www.ricardonarvaja.info/WEB/CONCURSOS%202011/CONCURSO%201/SOLU_CONCU%2301_WebCM1_NET_By_InDuLgEo.rar

otra en español: es un crackme..(emm )
http://www.ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/801-900/817-Webservercrackme.rar

eclips

Gracias por tu respuesta Apuromafo, pero creo que no va por ahi la cosa..

Realmente este programa funcionaria sin conexión a internet, es decir, tiene un servidor en localhost que hace correr la web (html y javascript sin mas) y la DLL. Lo de cambiar el host no me serviria de mucho, pues SE lo que envío y no quiero falsificar la respuesta, quiero llegar a la pauta de verificación de la clave.

Dado que desde el programa aparente me lanza a la pagina web (en localhost) y esta envía el formulario con la passwd a la DLL por POST y ya la DLL se encargara de comprobarlo mediante el comprobador.exe, entiendo que lo que debo interceptar es el trafico entre:

a) El servidor web (repito que este esta dentro del propio sistema, no es remoto) y el comprobador.exe??

b) El proceso dllhost.exe y comprobador.exe?  (He visto que el proceso dllhost.exe esta abierto pero no se si realmente se usa para esto, lo tengo como sospechoso por el nombre únicamente)

c) Alguna Api que sea usada por el servidor web para llamar a comprobador.exe?? (Esto tiene sentido o me lo estoy inventando? jeje)

d) Algo que se me escapa? =P

<<Se que es un follon, pero SE CON SEGURIDAD que el proceso de comprobado de clave esta en comprobador.exe y este solo se puede llamar mediante la DLL que ejecuta el servidor web>>

Desde CrackSLatinoS me han recomendado http://www.rohitab.com/apimonitor, que aparentemente no figura entre la lista de herramientas de este foro, aprovecho para compartir el enlace por si algun administrador cree conveniente incluirlo.

Esta herramienta monitoriza procesos y su uso de las Apis y DLLs, creo, y creo que aun no se usarla plenamente xD he incluido la DLL externa para monitorizar y el comprobador.exe (que esta iniciado como proceso) pero no me aparece ninguna llamada, supongo que es porque la DLL usa apis de windows para comunicarse con este EXE y no las he debido marcar para su seguimiento.

(Esta entrada es mas bien para ir marcando mis pasos por si alguien en el futuro se encuentra en mi situación)





apuromafo CLS

las apis estaban expuestas en los tutoriales que te comente, por otro lado lo que comenta shaddy es de lo mejor

es buena idea usar ese monitor, pero a lo mas obtendrás threads, si quieres aprender a conocer mas apis:
te sugiero este monitor:
http://www.kakeeware.com/i_kam.php

el tema de mensaje que hablas es dificil adivinar.pues hay muchas cosas detras
a) El servidor web (repito que este esta dentro del propio sistema, no es remoto) y el comprobador.exe??
->que comando recibe comprobador.exe?? y que resultado da cuando es correcto?
b)b) El proceso dllhost.exe y comprobador.exe?  (He visto que el proceso dllhost.exe esta abierto pero no se si realmente se usa para esto, lo tengo como sospechoso por el nombre únicamente)
siempre puedes atachar (ojala con ollydbg 2) y confirmar con bp en memory

c) c) Alguna Api que sea usada por el servidor web para llamar a comprobador.exe?? (Esto tiene sentido o me lo estoy inventando? jeje)
pues existen ideas geniales de programadores, un programa escribe la licencia y el otro solo ve si ta escrito el valor
(vease armadillo, asprotect, themida que suelen dejar todo en archivos, y pasar variables y variables)


d) Algo que se me escapa? =P

sip, no estas depurando a modo de encontrar lo util, solo tas viendo que datos envia..
no se que dentido estas dandole si aveces la respuesta no se da al sistema

te comento mejor con aplicaciones en vivo:
esto es el codigo de fuente de algu que creo una aplicacion autoplay media builder
http://www.mediafire.com/download.php?rv8eiyesx10yg3d

si lo ves con detalle envia la informacion web a una pagina (post) para luego confirmar las variables en un archivo

tristemente no se puede cambiar el codigo de fuente y que corra, si no podria crackearse..pero en si, lo interesante es lo detras de ello, que por ejemplo
1) esa web sea redirigida a la respuesta correcta?
2) que se cambie la variable en runtime?
3) que se vuelva a programar todo y crear una nueva aplicacion?
4) intentar otras formas


yo creo que como son 2 aplicaciones no le ves sentido, yo diria por mi lado abro comprobador.exe le meto muchos bp, luego abro el programa original y comienzo a depurar..cuando abra los modulos (loadlibraryA, readprocess , o bien open process, aprovechare de ver en el thread(modulo) suspender, atachar y confirmar en caso x, realmente no es facil intentar ver comunicacion entre 2 aplicaciones

te sugiero ver este tutorial de guan de dio (esto es un packer)
http://www.ricardonarvaja.info/WEB/CONCURSOS%202010/CONCURSO%204/FishPE%201.17%20by%20GUAN.rar
este igual
http://www.ricardonarvaja.info/WEB/CONCURSOS%202010/CONCURSO%2012/Concurso%2012%202010%20VCam%20by%20GUAN.pdf