Ayuda crypter en C

Iniciado por Hacklinx, 13 Enero 2014, 00:04 AM

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

Hacklinx

Saludos,

Llevo tiempo queriendo programar un crypter en C, creo saber lo suficiente como para programarlo.

Según tengo entendido tengo que trabajar con el binario del programa a cifrar vamos a llamarlo server.exe, luego cambiar ese binario, cifrarlo de alguna manera, por ejemplo que cada 2 bits tenga un double que en mi caso ocuparía 8 bits, etc. Lo más retorcido posible.

Luego ser capaces de descifrarlo y obtener el código original a partir del que hemos cifrado, pero este paso es el último que debemos dar, es decir. En el ejemplo sería que cada 2 byts nos lea el double y lo ignore, y tendremos el archivo original.

Luego hay que conseguir meter el desencriptador junto con el server.exe ya cifrado en un archivo, ¿o como va?

No sé la verdad tengo muchas dudas al respecto.

Saludos y gracias.

cpu2

Si ya se que estoy en el subforo de C, aqui te dejo un ejemplo de un encoder basico en ASM, se limita a hacer xor.

Es una shellcode polimorfica, pero es basicamente igual que un crypter de un malware como un troyano. Pero lo mas importante es el algoritmo de cifrado, con los de los manuales que te puedas encontrar no vas a ninguna parte.

http://foro.elhacker.net/bugs_y_exploits/encode_xor_binsh_x8664-t396372.0.html

Cita de: Hacklinx en 13 Enero 2014, 00:04 AM
Luego hay que conseguir meter el desencriptador junto con el server.exe ya cifrado en un archivo, ¿o como va?

Lo mas normal es cifrar lo que quieras primero, y luego tomar el offset para descifrar el codigo, pero hay algunas secciones que no pueden escribirse, como la text. Bueno es una explicacion muy basta, hay muchos papers sobre esto, si tienes alguna pregunta mas, no dudes en preguntar.

Un saludo.

engel lex

no soy conocido en esto... pero una pregunta... y que tal si en vez de buscar métodos locos como leer 1 de cada 2 bits, o simples como hacerle un xor, por que no le tiran un AES y la clave la guardan por ahí con esos métodos raros?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

cpu2

Creo que AES no es apto para este trabajo, es muchisimo mas pesado en computacion y en peso en si mismo, ya solo la sbox pesa unos 256 bytes.

Si tambien puedes llamar a las funciones de Windows o lo que sea, pero depende de como este cifrado el binario no podras, bueno eso ya no te lo puedo asegurar ya que no programo bajo Windows.

Es mejor un algoritmo de cifrado ligero y poco pesado, hay gente que hace crypters con RC4, RC5. Piensa que solo tienes que burlar las firmas, AES esta pensado para asegurar conexiones, documetos. Ese era mi punto de vista puede que alguien te diga lo contrario.

Un saludo.

engel lex

comprendo el punto, ya que aes aunque el algorimo es simple y es igual de pesada la salida cifrada que el archivo original, el en si mismo es pesado en tiempo de calculo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

cpu2

Si la salida es la misma, pero yo me refiero a implementar el algoritmo en el binario, tendrias que reservar mucho espacio.

Y sobre lo de que el algoritmo es simple, pues la verdad todo depende de como quieras que sea de bueno el algoritmo, te sera mas complicado o menos, y sobretodo el tiempo de computo.

Yo estoy haciendo mi propia implementacion, lleva un tiempo parada pero ya me pondre.

http://foro.elhacker.net/asm/rotar_en_registros_xmm-t396980.0.html

No es lo mismo que la de C. Lo que quiero decirte es que puede que el algoritmo te resulte facil en papel o en una implementacion basica, pero mejorarlo al maximo no es nada facil.

Un saludo.

x64core

@cpu2: Yo realmente quisiera saber tu concepto de "shellcode polimorfica". Ya que si estamos hablando de malware eso no tiene nada de polimorfico pero me gustaria saber a que le llamas así.



@Hacklinx: Basicamente lo que el stub de el crypter hace es cargar el ejecutable/Malware de manera que los Antivirus no puedan tracear la carga de este. Resumiendo lo que un crypter haria:
* El generador toma el Ejecutable/Malware el cual sera cargado por el stub.
* cifra la entera imagen con algun algoritmo y guardando su clave; por ejemplo AES,RC4 serian buenos ejemplos.
* Luego de alguna manera el generador deberia incrustar esa imagen cifrada en el stub con el fin de que este desencipte la imagen y la cargue.

Todo es resumido. Ya luego asuntos importantes como el metodo de carga usado por el stub, compression ( Que puede llegar a ser considerable en ejecutables de tamaño mayores ), Metodos para saltarse la tecnologia usada por Antivirus para la deteccion de malware ( Deteccion de emulacion, deteccion de maquinas virtuales de antivirus, saltarse firma estatica, etc ). Realmente creo que es un tema extenso.

cpu2

Bueno no se ni porque te respondo, como siempre sus mensajes no me aportan nada.

Mi concepto de "shellcode polimorfica" es cifrar, ofuscar etc...

Si corta explicacion no se me da tambien como a ti, el cifrado y la implementacion son una *****, pero es un ejemplo basico lo dije arriba, en shell storm hay shellcode con cifrados de incremento y decremento.

https://github.com/rapid7/metasploit-framework/blob/master/modules/encoders/x64/xor.rb

Vale que no es como ese, pero con la implementacion que hice no pretendia hacer nada serio.

En la sección de malware hay un paper muy bueno de un usuario del foro.

http://foro.elhacker.net/analisis_y_diseno_de_malware/taller_asi_funcionan_los_crypters_encriptando_malware_a_mano-t262806.0.html

En su explicacion tambien se limita a hacer un xor 0xff, y en muchos ejemplos en la red, solamente son ejemplos.

Pero bueno creo que tus mensajes son para tocarme la moral.

x64core

Cita de: cpu2 en 14 Enero 2014, 21:41 PM
Bueno no se ni porque te respondo, como siempre sus mensajes no me aportan nada.

Mi concepto de "shellcode polimorfica" es cifrar, ofuscar etc...

Si corta explicacion no se me da tambien como a ti, el cifrado y la implementacion son una *****, pero es un ejemplo basico lo dije arriba, en shell storm hay shellcode con cifrados de incremento y decremento.

https://github.com/rapid7/metasploit-framework/blob/master/modules/encoders/x64/xor.rb

Vale que no es como ese, pero con la implementacion que hice no pretendia hacer nada serio.

En la sección de malware hay un paper muy bueno de un usuario del foro.

http://foro.elhacker.net/analisis_y_diseno_de_malware/taller_asi_funcionan_los_crypters_encriptando_malware_a_mano-t262806.0.html

En su explicacion tambien se limita a hacer un xor 0xff, y en muchos ejemplos en la red, solamente son ejemplos.

Pero bueno creo que tus mensajes son para tocarme la moral.
Simplemente aclarando lo que polimorfismo significa:
http://en.wikipedia.org/wiki/Polymorphic_code

cpu2