Sistema de login muy seguro

Iniciado por TomaSs, 24 Septiembre 2013, 21:49 PM

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

Shout

Cita de: ||MadAntrax|| en 17 Octubre 2013, 14:31 PM
No me he explicado bien.

Tu sistema es bueno, pero también se puede "crackear" a parte que su implantación tiene un coste de gestión elevadísimo si lo extrapolamos a gran escala (Necesitas tener la capacidad de generar una copia única cifrada para cada cliente, así como su HWID y su contraseña. Cada actualización que realices supone modificar el 100% de las licencias distribuidas a clientes, etc...). Por no hablar que limitas el uso de la aplicación a clientes con Internet permanente.

En cuanto un cliente legítimo realice la validación, el server envía la contraseña y se des-cifra el ejecutable, no? En ese momento el cliente puede dumpear el ejecutable des-cifrado y almacenar una copia del software sin "protección", pudiendo distribuirla por la red libremente.
Claro que se puede crackear, pero sólo por usuarios que tengan acceso legítimo al programa.
Está claro que no hay nada incrackeable. Pero si necesitas darle un programa a alguien (que no sepa mucho) y quieres evitar que se lo pase a los demás, este sistema es perfecto.
I'll bring you death and pestilence, I'll bring you down on my own

TomaSs

Cita de: Shout en 16 Octubre 2013, 13:59 PM
Pues yo tengo una solución verdaderamente segura, con la que es 99.9% imposible crackear tu aplicación.

Primero: encriptas el .exe compilado de tu programa con algún cifrado con contraseña (tipo AES, así, el archivo varía según la contraseña, por lo tanto, es imposible recuperar el archivo original sin esa contraseña)

Luego, creas un "loader" que se encargará de enviar el Hardware ID (HWID) al servidor.
En el servidor, compruebas que el HWID esté en la base de datos. Si lo está, envías la contraseña al cliente para que desencripte el programa original y se pueda ejecutar. Si no es un HWID que esté en tu base de datos de HWIDs válidos, envías una contraseña aleatoria y el archivo no podrá ser descifrado.

Esto es imposible de crackear (eso sí, si la contraseña es 12345, no esperes que dure mucho). Si pones una contraseña larga y jodida, nadie podrá jamás ejecutar ese código, ya que, para bruteforcear eso, necesitas muchísimos años de crackeo.

No tiene mala pinta lo que planteas, bueno, en general lo que planteáis todos está bien.
Pero, en cuanto a tu método, que me dices si lo que se crackea es el loader, de tal mantera que el HWID que es enviado al servidor sea un HWID perteneciente al de otro usuario, bien crackeando la obtención de este HWID o bien crackeando el HWID que se le envía al servidor.
Que opinas de eso?
Gracias por las respuestas a todos ;)

Spiritdead5

Cita de: Shout en 16 Octubre 2013, 13:59 PM
Pues yo tengo una solución verdaderamente segura, con la que es 99.9% imposible crackear tu aplicación.

Primero: encriptas el .exe compilado de tu programa con algún cifrado con contraseña (tipo AES, así, el archivo varía según la contraseña, por lo tanto, es imposible recuperar el archivo original sin esa contraseña)

Luego, creas un "loader" que se encargará de enviar el Hardware ID (HWID) al servidor.
En el servidor, compruebas que el HWID esté en la base de datos. Si lo está, envías la contraseña al cliente para que desencripte el programa original y se pueda ejecutar. Si no es un HWID que esté en tu base de datos de HWIDs válidos, envías una contraseña aleatoria y el archivo no podrá ser descifrado.

Esto es imposible de crackear (eso sí, si la contraseña es 12345, no esperes que dure mucho). Si pones una contraseña larga y jodida, nadie podrá jamás ejecutar ese código, ya que, para bruteforcear eso, necesitas muchísimos años de crackeo.
y planteo 1 pequeño sniffer q intercete esa informacion :P y obtengo esa password

z3nth10n


Interesados hablad por Discord.

Maurice_Lupin

Me recuerda al caso de las zonas hotspot que utilizan el cifrado md5.
La ventana de login cifra el pass antes de enviarlo al servidor, solución snifear a un usuario y guardar el hash y luego modificar la ventana de login para que sólo envie el hash.

Saludos.
Un error se comete al equivocarse.

Mad Antrax

Buenas propuestas, pero siempre hay que partir desde la idea clara que no existe nada in-crackeable en teoría.

Cualquier protección que se pueda programar se podrá crackear. Solo podemos decidir lo fácil o dificil que resultará para el cracker.

Saludos
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

TomaSs

Cito de una respuesta que me dieron en otro hilo de este foro, y que es bastante interesante, eso si, parece que tiene su complejidad, sobre todo en cuanto a la carga dinámica de la dll.

Cita de: MCKSys Argentina en 26 Septiembre 2013, 17:11 PM
Si te logeas contra un server, podrias hacer que el proggie use una DLL que este solo en el server y que se envie al user al loguearse. La DLL no deberia escribirse en disco, sino cargarse dinamicamente. Con ya te sacas de encima a varios...  :P

Para el login podrias usar un hashing tipo sha256, haciendo que el sistema sea mas seguro.

Puedes usar la MAC address, serial del disco, CPUID, etc, etc.

Por supuesto, en .NET deberas usar algo mas que ofuscacion y ademas, para hacer la proteccion "bien jodida" deberías implementar checkeos aleatorios y aislados dentro del codigo, para verificar la autenticidad de user.

El nivel de protección aumentará proporcionalmente al tiempo que le dediques a la misma.

Saludos!

Shout

Cita de: TomaSs en 19 Octubre 2013, 23:38 PM
No tiene mala pinta lo que planteas, bueno, en general lo que planteáis todos está bien.
Pero, en cuanto a tu método, que me dices si lo que se crackea es el loader, de tal mantera que el HWID que es enviado al servidor sea un HWID perteneciente al de otro usuario, bien crackeando la obtención de este HWID o bien crackeando el HWID que se le envía al servidor.
Que opinas de eso?
Gracias por las respuestas a todos ;)
Es como si el administrador de una web se pone la contraseña más difícil del mundo, pero viene un listo y se la saca del auto-guardado de su navegador.

Y claro, si tienes el HWID de un usuario legítimo, está claro que podrás descifrar el programa.
Cita de: Spiritdead5 en 19 Octubre 2013, 23:43 PM
y planteo 1 pequeño sniffer q intercete esa informacion :P y obtengo esa password
Claro, pero es que si tienes que robarme mi HWID, no puedes, a menos que me metas un virus (que tampoco es fácil) y me robes el HWID.
De otra manera, no sabes dónde vivo, no sabes la contraseña de mi red (y no la vas a encontrar, uso WPA2 con una contraseña jodida), no sabes qué ordenador (y cuándo) usará el programa...
Cita de: ||MadAntrax|| en 21 Octubre 2013, 14:32 PM
Buenas propuestas, pero siempre hay que partir desde la idea clara que no existe nada in-crackeable en teoría.

Cualquier protección que se pueda programar se podrá crackear. Solo podemos decidir lo fácil o dificil que resultará para el cracker.

Saludos
Claro que no hay nada que no se pueda crackear.
Pero si se cifra el software y sólo yo (por ejemplo, claro) puedo usarlo, a menos que te conectes a mi red (y me snifees mientras uso el programa) o me metas un troyano, no podrás descifrar el archivo en menos de 1.000.000 años con un PC de los más potentes que existen. :P

Y para el colmo, si queréis que sea más seguro, podéis implementar un sistema PGP para que la clave no se pueda sniffear.
Así, sólo se podría obtener el archivo descifrado con un troyano / acceso directo a un PC con un HWID válido.
I'll bring you death and pestilence, I'll bring you down on my own

Maurice_Lupin

Eso de cargarse una dll, me suena a que muchos antivirus saltarán.

Intenté hacer un Crypter Runtime para una aplicación, el cifrado no tenia codigo malicioso y todos los antivirus saltaban.
Parece que le han dado mala fama a ciertas funciones de inyección de memoria y los antivirus saltan paranoicos.

Me recomendaron una vez, que mi aplicación sea Open Source para ya no hacer higado, que opinan?

Saludos.
Un error se comete al equivocarse.

TomaSs

Cita de: Shout en 22 Octubre 2013, 14:23 PM
Es como si el administrador de una web se pone la contraseña más difícil del mundo, pero viene un listo y se la saca del auto-guardado de su navegador.

Y claro, si tienes el HWID de un usuario legítimo, está claro que podrás descifrar el programa.Claro, pero es que si tienes que robarme mi HWID, no puedes, a menos que me metas un virus (que tampoco es fácil) y me robes el HWID.
De otra manera, no sabes dónde vivo, no sabes la contraseña de mi red (y no la vas a encontrar, uso WPA2 con una contraseña jodida), no sabes qué ordenador (y cuándo) usará el programa...Claro que no hay nada que no se pueda crackear.
Pero si se cifra el software y sólo yo (por ejemplo, claro) puedo usarlo, a menos que te conectes a mi red (y me snifees mientras uso el programa) o me metas un troyano, no podrás descifrar el archivo en menos de 1.000.000 años con un PC de los más potentes que existen. :P

Y para el colmo, si queréis que sea más seguro, podéis implementar un sistema PGP para que la clave no se pueda sniffear.
Así, sólo se podría obtener el archivo descifrado con un troyano / acceso directo a un PC con un HWID válido.

Claro, pero es que otros usuarios a los cuales les de permiso (o les venda) mi programa podrán pasar su HWID a otros para que lo crackeen, o crackearlo ellos mismos, así es que eso no sirve de mucho...