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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Pasar 2 parámetros en inyección de código
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar 2 parámetros en inyección de código  (Leído 4,923 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Pasar 2 parámetros en inyección de código
« en: 16 Julio 2014, 02:27 am »

Hi!

Alguien sabe como podría pasar dos parámetros por CreateRemoteThread? La inyección no es mediante dll, inyecto una función..

En MSDN dice:

Citar
HANDLE WINAPI CreateRemoteThread(
  _In_   HANDLE hProcess,
  _In_   LPSECURITY_ATTRIBUTES lpThreadAttributes,
  _In_   SIZE_T dwStackSize,
  _In_   LPTHREAD_START_ROUTINE lpStartAddress,
  _In_   LPVOID lpParameter,
  _In_   DWORD dwCreationFlags,
  _Out_  LPDWORD lpThreadId
);


lpParameter [in]
A pointer to a variable to be passed to the thread function.

Y por ahi dicen que se podria pasar una estructura,, algo asi:

Código
  1. struct PARAMETER{
  2. char* str1;
  3. char* str2;
  4. int num;
  5. };

Yo debería pasar algo parecido en asm:

Código
  1. invoke CreateRemoteThread, Process, 0, 0, lpProcAddress, lpParameter, 0, 0

Funcion a inyectar:

Código
  1. INJECTED PROC lpParameter:DWORD
  2. ; Como separar esos dos datos?
  3. ret
  4. INJECTED endp


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Pasar 2 parámetros en inyección de código
« Respuesta #1 en: 16 Julio 2014, 09:50 am »

Podes usar VirtualAllocEx dos veces, una para el codigo y otra para datos (la estructura, mejor no uses punteros en la misma), WriteProcessMemory y finalmente CreateRemoteThread.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pasar 2 parámetros en inyección de código
« Respuesta #2 en: 16 Julio 2014, 23:04 pm »

No logro dar con el dato.. creo que me reservo el tamaño correcto, luego inyecto el primer dato, luego inyecto la función, pero no encuentro con olly el primer dato.. puede que al escribir dos veces los datos queden separados? Yo me estoy basando en esto de VirtualAllocEx:

Citar
Return value

If the function succeeds, the return value is the base address of the allocated region of pages.

O sea que al inyectar el primer dato, debería moverme dentro de ese espacio de memoria para escribir el segundo.. pero no..  :huh:
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Pasar 2 parámetros en inyección de código
« Respuesta #3 en: 16 Julio 2014, 23:29 pm »

Es muy dificil saber que estas haciendo exactamente ... pero si tenes problemas hacela sencilla y llama DOS veces a VirtualAllocEx, una para los datos y otra para el codigo.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pasar 2 parámetros en inyección de código
« Respuesta #4 en: 17 Julio 2014, 06:18 am »

Bueno, después de remar un dia rato con esto.. conseguí pasar esos dos parámetros,, me base en este code:

Citar

En el ejemplo de C++ se pasa una estructura,, lo desensamble y me aclaro un poco..

En fin,, ahora solo tengo un problema importante.. (aparte del mental  :xD), mi intención en un principio era inyectar una función que resuelve la dirección de kernel32 buscándola en el peb para llamar a CopyFileA, luego se me ocurrió pasarle como parámetro la dirección de kernel32,, pero ahora que tengo todo resuelto me doy cuenta que no tiene sentido.. porque en ese proceso (el proceso inyectado, el proceso paciente digamos) puede estar en otra ubicación esa dirección,,, no??? O sea, tendría que resolver la dirección de Krn32 dentro de ese proceso si o si y no enviársela resuelta, no?

Saludos!

PD: Si esto fuera posible, podría pasarle la dirección de CopyFileA de una, y no buscar nada en ese proceso...
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Pasar 2 parámetros en inyección de código
« Respuesta #5 en: 17 Julio 2014, 10:47 am »

La direccion base de Kernel32.dll deberia ser siempre la misma en todos los procesos, puede cambiar entre diferentes booteos aunque eso es irrelevante para tu caso.

Address Space Layout Randomization (ASLR)
ASLR moves executable images into random locations when a system boots, making it harder for exploit code to operate predictably. For a component to support ASLR, all components that it loads must also support ASLR. For example, if A.exe consumes B.dll and C.dll, all three must support ASLR. By default, Windows Vista and later will randomize system DLLs and EXEs, but DLLs and EXEs created by ISVs must opt in to support ASLR using the /DYNAMICBASE linker option.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pasar 2 parámetros en inyección de código
« Respuesta #6 en: 17 Julio 2014, 16:58 pm »

Claro.. ahora que decis,, en el ejemplo ese tambien se envia una direccion.. debo estar usando un mov o un lea y por eso me cambia la direccion.. lo raro es que inyecto 2 datos, uno llega igual y el otro parecido  :xD igual hoy lo soluciono..

Citar
La direccion base de Kernel32.dll deberia ser siempre la misma en todos los procesos, puede cambiar entre diferentes booteos aunque eso es irrelevante para tu caso.
Lo mismo rige para las funciones exportadas? Ponele, si encuentro CopyFile (o la funcion que sea) en un proceso y le meto esa direccion a otro, se puede usar perfectamente, no?

Gracias EI!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Pasar 2 parámetros en inyección de código
« Respuesta #7 en: 17 Julio 2014, 18:15 pm »

Si, todas las direcciones de funciones son offsets que parten de la base de un modulo, CopyFileA/W estan dentro de una sección de codigo de un determinado modulo.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pasar 2 parámetros en inyección de código
« Respuesta #8 en: 17 Julio 2014, 19:37 pm »

Lujo!! Quedo resuelto! No pongo code, porque no quiero masticar para otros, si alguien llega aca con la misma duda, ya sabe por donde buscar una posible solucion..

Saludos! Gracias!  ;D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Pasar 2 parámetros en inyección de código
« Respuesta #9 en: 17 Julio 2014, 21:43 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar parametros por ejecutable
Programación Visual Basic
Lambda 2 1,834 Último mensaje 18 Octubre 2006, 17:56 pm
por Lambda
Pasar parametros a un array
Scripting
El_Java 1 3,521 Último mensaje 17 Mayo 2011, 23:09 pm
por leogtz
Inyección de Parametros Sqlmap
Bugs y Exploits
Owl-City 9 7,271 Último mensaje 6 Febrero 2014, 08:15 am
por BlackM4ster
Inyeccion de DLL para obtener acceder a parametros de una funcion
Ingeniería Inversa
GonzaFz 5 2,885 Último mensaje 24 Noviembre 2015, 16:19 pm
por Miseryk
MOVIDO: Inyeccion de DLL para obtener acceder a parametros de una funcion
Hacking
.:UND3R:. 0 1,957 Último mensaje 25 Octubre 2015, 18:12 pm
por .:UND3R:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines