Reemplazo de dll con firma digital

Iniciado por patilanz, 24 Mayo 2015, 00:35 AM

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

patilanz

Hola quiero crear un programa que se oculte en un dll de un programa.
Lo quiero hacer reemplazando el dll por uno mio pero el programa se entera del cambio.
Probé escribiendo caracteres nulos al final de mi dll para conseguir el mismo tamaño aunque no me esperaba buenos resultados. Supongo que comprueba el hash o la firma digital con sha1 que tiene el dll original.
Alguna idea para suplantar el dll  ;D
Y aunque consiga ejecutar mi dll no estoy seguro de si el programa seguirá funcionando porque las funciones del dll original ya no están. Hay alguna manera de editar el dll ya creado?

Un saludo

scott_

Pues no creo que en el dll se pueda ejecutar un exe, puedes camuflarlo con un sfx, pero correr no.

Solo un exe puedes ejecutar o camuflar y poner un temporizador.

Son diferentes extensiones, no es posible correrlo.

Si cambias las extensiones por alguna de las 2 (exe o dll), lo que consigues es que una deje de funcionar.

Puedes crear un programa que envíe a la ruta el dll que tu deseas o se abra. Pero es lo mismo que sfx.

Saludos.


Saludos.
Si no intentas salvar una vida, jamás salvarás la de nadie más

HCK.

#2
Cita de: patilanz en 24 Mayo 2015, 00:35 AM
Hola quiero crear un programa que se oculte en un dll de un programa.
Lo quiero hacer reemplazando el dll por uno mio pero el programa se entera del cambio.
Probé escribiendo caracteres nulos al final de mi dll para conseguir el mismo tamaño aunque no me esperaba buenos resultados. Supongo que comprueba el hash o la firma digital con sha1 que tiene el dll original.
Alguna idea para suplantar el dll  ;D
Y aunque consiga ejecutar mi dll no estoy seguro de si el programa seguirá funcionando porque las funciones del dll original ya no están. Hay alguna manera de editar el dll ya creado?

Un saludo

Depende del lenguaje que estés programando y las limitaciones del programa. Editar la DLL original si es en un lenguaje como C o C++, tendrías que usar un debbuger como Olly y por supuesto saber lo que tocas.
Si es en .Net, la decompilas, extraes sus funciones y modificas una a la que el .exe siempre llame, a poder ser sin editar nada de la original para no corromper las funciones normales del programa, y en esa función llamas a otra en la que hayas programado tu programa... (Esa misma lógica es la que seguirias con Olly en C y C++, pero es mucho mas complicado).

En el caso que el programa tuviese algún reconocimiento de sus DLL o archivos por firma digital, deberías modificar la parte del programa que lo hace.

Lo mas adecuado para lo que quieres hacer, creo que es la inyección de código (algo muy común en los chetos de juegos, si te suena mas).
Creas una librería modificada con tu código y con una función similar a la de la original... La cargas en memoria del programa y al llamar a esa función entra tu código en vez de la original (resumen rápido), pero para eso deberías especializarte un poco en inyección de código en el lenguaje que programes.

Un saludo.

patilanz

Cita de: scott_ en 24 Mayo 2015, 06:18 AM
Pues no creo que en el dll se pueda ejecutar un exe, puedes camuflarlo con un sfx, pero correr no.

Solo un exe puedes ejecutar o camuflar y poner un temporizador.

Son diferentes extensiones, no es posible correrlo.

Si cambias las extensiones por alguna de las 2 (exe o dll), lo que consigues es que una deje de funcionar.

Puedes crear un programa que envíe a la ruta el dll que tu deseas o se abra. Pero es lo mismo que sfx.

Saludos.


Saludos.

Creo que no me he explicado bien :P
Me refiero a la precarga de dll
http://paracelulares.net/ocultar-malware-usando-ataques-de-precarga-de-dll-2-2/

No quiero ejecutar el dll directamente aunque se me ocurre con un cpl http://www.trendmicro.com/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf

Quiero una vez ejecutado el malware que se mantenga en el sistema reemplazando un dll de un programa que se ejecuta al iniciar windows para ocultar lo.

Cita de: HCK. en 24 Mayo 2015, 10:06 AM
Depende del lenguaje que estés programando y las limitaciones del programa. Editar la DLL original si es en un lenguaje como C o C++, tendrías que usar un debbuger como Olly y por supuesto saber lo que tocas.
Si es en .Net, la decompilas, extraes sus funciones y modificas una a la que el .exe siempre llame, a poder ser sin editar nada de la original para no corromper las funciones normales del programa, y en esa función llamas a otra en la que hayas programado tu programa... (Esa misma lógica es la que seguirias con Olly en C y C++, pero es mucho mas complicado).

En el caso que el programa tuviese algún reconocimiento de sus DLL o archivos por firma digital, deberías modificar la parte del programa que lo hace.

Lo mas adecuado para lo que quieres hacer, creo que es la inyección de código (algo muy común en los chetos de juegos, si te suena mas).
Creas una librería modificada con tu código y con una función similar a la de la original... La cargas en memoria del programa y al llamar a esa función entra tu código en vez de la original (resumen rápido), pero para eso deberías especializarte un poco en inyección de código en el lenguaje que programes.

Un saludo.

Creo que tendré que modificar el programa porque seguramente comprueba con un  hash del dll original y si lo cambio un poquito me pilla y se actualiza.
El problema es que el programa (steam) tiene otras partes independientes que comprueban si todo esta bien, por lo tanto tengo que cambiar y ellos  :rolleyes:
Y no hay manera de suplantar el certificado?

Saludos

HCK.

Cita de: patilanz en 24 Mayo 2015, 12:36 PM
Creo que no me he explicado bien :P
Me refiero a la precarga de dll
http://paracelulares.net/ocultar-malware-usando-ataques-de-precarga-de-dll-2-2/

No quiero ejecutar el dll directamente aunque se me ocurre con un cpl http://www.trendmicro.com/cloud-content/us/pdfs/security-intelligence/white-papers/wp-cpl-malware.pdf

Quiero una vez ejecutado el malware que se mantenga en el sistema reemplazando un dll de un programa que se ejecuta al iniciar windows para ocultar lo.

Creo que tendré que modificar el programa porque seguramente comprueba con un  hash del dll original y si lo cambio un poquito me pilla y se actualiza.
El problema es que el programa (steam) tiene otras partes independientes que comprueban si todo esta bien, por lo tanto tengo que cambiar y ellos  :rolleyes:
Y no hay manera de suplantar el certificado?

Saludos

Lo de suplantar el certificado... Es mejor que lo dejes. Usa creo que SHA256, y bueno, es impensable...
Puedes buscar algún cliente modificado reciente y aprovechar si alguien ya lo ha tocado y puedes meterle la librería... Si no, poco puedes hacer.

Desde hace unos años el cliente de Valve esta bastante trabajado... Para frenar la piratería masiva de sus juegos.

Un saludo