• [Pregunta] Ejecutable Mapeado en Memoria?

 #410605  por elmasmalo1
 13 Abr 2013, 21:54
Resulta que desde ya hace tiempo me estoy entrando en estos temas de creacion de malwares y me entere sobre los diferentes tipos de obfuscaciones que hay, una de ellas y la mas viable para explotar sistemas (Explotar en sentido de [vulnerabilidades]) es la de Mapear un Archivo en este caso un ejecutable y ponerlo en memoria.

Mi pregunta es que de maravilloso tiene esto... Me he enterado que supuestamente se puede mapear el archivo y correrlo en la memoria sin que el Antivirus que este presente lo detecte ni lo elimine, acaso esto tiene credibilidad? Es cierto?

Otra pregunta era, como entonces puedo lograr algo asi?

Yo estoy trabajando con C++ mediante el SDK de Qt 5.0.2 (el mas reciente) y pues tengo un ejemplo de codigo que me mapea un archivo usando el constructor de QFile::map
Entonces cuando ejecuto el programa pues, ya me tiene el archivo mapeado y solo me muestra en pantalla la localizacion en memoria (un puntero) en donde se encuentra este archivo mapeado...

Teniendo en cuenta esto.. Que puedo hacer con dicho archivo? lo puedo correr desde la misma memoria? O ya esta corriendo? Osea necesito algun mentor o guia, en si algun alma piadoso que me pueda ayudar en estos temas...

Gracias de antemano =D
 #410610  por orlando9427
 14 Abr 2013, 00:27
Así a grandes rasgos un RunPE hace lo mismo que tu buscas con la diferencia de que este crea otro proceso, si lo que tu quieres es "ejecutar" otro archivo tipo PE en tu mismo proceso lo que debes de hacer es expandirlo, para eso es la cabecera PE, te dice el tamaño de cada página, la posición de cada sección, copias las secciones en el archivo a la posicion de memoria correspondiente. Una vez hecho eso tienes que leer la IT (Import Table) o la IAT depende de cuál exista y cambiar los punteros de las funciones por las de tu SO si no el ejecutable no servirá.
Es lo mas comprimido y entendible que pude pero cualquier duda posteala.

Saludos!
 #410612  por elmasmalo1
 14 Abr 2013, 00:42
WOW, Muchas gracias por pasarme esa info, sabia que tenia quie ver con archivos PE32 de Windows y que tenia que ver con ese rollo de secciones y paginas virtuales en memoria... Pero no creia que era tan complicado como tener que hacer todo eso, hasta importar la IA del ejecutable.. Bueno en ese caso es como virtualizarlo no?


Wow es muy complicado el tema.. Hmm Muchas gracias denuevo, ya me intereso mucho es de un RunPE, que es practicamente lo que necesito... Ahora mismo estoy buscando informacion de que son los RunPE ya que los habia visto por ahi rondando en foros y topicos, pero no sabia bien sobre el tema, ahora estoy buscando mas informacion de ellos...


Me podrias ayudar diciendome cual es la estructura basica de un RunPE? Que librerias usa e.g. El Kernel? Que llamadas hay presentes? o en arroz y habichuela? Habran tutos por ahi?

Disculpa si es mucho lo que pido...
 #410633  por orlando9427
 14 Abr 2013, 05:15
Manuales de "Crea tu propio RunPE" no existe eso sabiendo como el Loader de Windows crea un nuevo proceso a partir de un ejecutable, lo de cargar el archivo en tu propia memoria es hacer las veces de Loader de Windows, con el RunPE solo se mapea el archivo con una API y se pone a correr el proceso, lo demás lo hace el Loader de Windows.
Las APIs básicas de un RunPE son:
-Zw/NtUnmapViewOfSection.
-GetThreadContext
-SetThreadContext
-CreateProcess.
-ReadProcessMemory o Zw/NtReadVirtualMemory.
-WriteProcessMemory o Zw/NtWriteVirtualMemory.
-VirtualAllocEx.
-ResumeThread.

Saludos!
 #410636  por elmasmalo1
 14 Abr 2013, 06:54
Muchas gracias por tu aporte hermano, Veo que me falta muchooo por aprender algo al menos para empezar jejeje,

Esto me interesa mucho y quiero adentrarme en lo basico para ir evolucionando poco a poco, me recomiendas quedarme con C++ cierto?
no migrar a otro lenguaje? VB.NET, C# ya se que C++ me da mas control cuando de memoria y kernel se trata

Asi que pienso que me tengo que comer todos los textos que hayan por ahi xD WOOOOOOW una tarea extensa :( Pero aqui voy! que conste mi motivacion vino primero de Indetectables.net!! jiijji si luego luego me crezco y comienzo a trabajar con equipos grandes de coders siempre me recordare de mi hogar dulce hogar!


jjiiiiiiiiijjiij Grax denuevo!!!!

PD. me estare saltando de Foro en foro tratanto de buscar la mayor informacion que pueda asi que no se asusten si me ven en otros foros jiijiij