elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Rutina de desencriptación con TLS Callback
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Rutina de desencriptación con TLS Callback  (Leído 3,217 veces)
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Rutina de desencriptación con TLS Callback
« en: 27 Agosto 2013, 20:28 pm »

Con el objetivo de hacer un crypter, se puede añadir una sección (o extender la última) en el PE para hacer espacio para una función TLS Callback que desencripte el ejecutable.

El problema claro, el loader de windows, que te carga las API importadas en la IAT, y la función de desencriptación se la carga. Pero si la función para cifrar y para descifrar coinciden, he pensado que localizando la IAT y pasándola por la rutina de nuevo volvería a quedar limpia y correría bien.

En fin, lo que me gustaría saber es si pensáis que es factible hacer esto, ya que estaba pensando programarlo en serio y me gustaría oir opiniones.

Gracias  :P
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Rutina de desencriptación con TLS Callback
« Respuesta #1 en: 28 Agosto 2013, 04:26 am »

Claro que es factible, de hecho si no me equivoco Yoda's crypter usaba TLS callbacks para descifrar. No acabo de comprender el problema del que hablas.

Apunte pedante: "Desencriptación" no existe, es "descifrado". De hecho cualquier derivado de [des]cifrar no es correcto en castellano.
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Rutina de desencriptación con TLS Callback
« Respuesta #2 en: 28 Agosto 2013, 18:05 pm »

El problema que decía es que cuando el crypter cifra todo el ejecutable (menos el PE Header, claro) y añade la rutina para descifrarlo (gracias por el apunte, ya había oído que es incorrecto pero es la costumbre  :xD) también estará cifrando la Import Table. Entonces cuando el loader de Windows vaya a cargar la IAT con las direcciones de las API's importadas (que lo hace antes de que se ejecuten las TLS Callback) e intente acceder a todas las RVA's y demás, se lo encontrará todo cifrado.

Supongo que habría que hacer algún apaño, como no cifrar la IT (pero entonces no sería un buen crypter...), o hacer que el loader cargara una IT falsa, y luego descifrar la verdadera y rellenar la IAT con las direcciones de las API...
O aun mejor, poner a 0 en la cabecera Import Table Address, Import Table size, Import Address Table address, Import Addres Table size. Así Windows pensará que no hay nada que importar, y después bastará con cargar manualmente todo y listo.

La RVA de la IT y la IAT se guarda en algún sitio de la nueva sección creada, donde también meto la rutina de descifrado y la estructura TLS_DIRECTORY. Aunque es cierto que habría que consultar previamente si el ejecutable original ya tiene una sección .tls, que sería muy raro, pero por si las moscas...  :-\
« Última modificación: 28 Agosto 2013, 19:05 pm por Binary_Death » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Rutina de desencriptación con TLS Callback
« Respuesta #3 en: 28 Agosto 2013, 20:32 pm »

Sí, la solución es encargarse de la IAT manualmente. Almacena las cadenas de las librerías y los hashes de las funciones por ejemplo y luego creas tu la IAT a mano.
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Rutina de desencriptación con TLS Callback
« Respuesta #4 en: 28 Agosto 2013, 21:10 pm »

Sí, la solución es encargarse de la IAT manualmente. Almacena las cadenas de las librerías y los hashes de las funciones por ejemplo y luego creas tu la IAT a mano.

Está bien, muchas gracias  ;D

Empezaré a codear, cuando tenga algo decente lo postearé en este subforo.
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Rutina de desencriptación con TLS Callback
« Respuesta #5 en: 1 Septiembre 2013, 06:13 am »

¿Alguien podría resolverme la siguiente duda?

¿Qué diablos hace Windows con el directorio de recursos de un ejecutable antes de pasarle el control a nuestro entry point? Porque por lo que vi si cifro la sección de recursos y no quito la RVA a ella en el DataDirectory, windows no puede cargar el ejecutable...
« Última modificación: 1 Septiembre 2013, 20:18 pm por Binary_Death » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Desencriptacion en Memoria « 1 2 3 4 »
Programación Visual Basic
Hendrix 31 10,404 Último mensaje 27 Agosto 2007, 07:56 am
por cobein
Process32next Callback
Programación Visual Basic
ntaryl 4 2,201 Último mensaje 24 Septiembre 2008, 05:58 am
por ssccaann43 ©
[Duda] CallBack « 1 2 »
Programación C/C++
BlackZeroX 11 4,701 Último mensaje 17 Enero 2011, 21:05 pm
por ThunderCls
TLS Callback
Programación C/C++
ThunderCls 0 1,907 Último mensaje 9 Mayo 2011, 22:18 pm
por ThunderCls
Funciones callback?
Programación C/C++
roilivethelife 1 2,949 Último mensaje 20 Agosto 2012, 17:41 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines