Título: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Belial & Grimoire en 29 Agosto 2011, 04:40 am hola
como hacen lo malware para ejecutarse haciendo inyeccion sin dll?, porque estaba intenando hacer inyecciones y con DLL no tengo problemas pero sin dll no puedo ejecutar funciones a menos que sean invokadas por estructuras, pero como crear una conexion socket unicamente con apis y estructuras? y e visto troyanos que dicen que se ejecutan sin DLL, pero no encuentro como hacerlo, alguien aqui conoce algo sobre esto?, lo que intentaba hacer era en lenguaje C, hacer una inyeccion sencilla a notepad.exe, e invokar apis es sencillo, pero no puedo inyectar alguna funcion para ejecutar cualquier cosa, a menos de que sea otra api o alguien me puede explicar de que forma serviria hacer una inyeccion sin dll, para hacking... ya sea, troyanos, exploits, gusanos, etc... porque como les menciono la unica forma que se, es usando dll y se me hizo interesante hacer sin eso espero alguien tenga alguna informacion o idea... salu2 Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Karman en 30 Agosto 2011, 17:57 pm hay un post en este foro del user [ZERO] (si mal no recuerdo) que explica como hacerlo, buscalo :P
S2 Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Belial & Grimoire en 30 Agosto 2011, 18:55 pm hola
si se como hacerlo, pero lo que no encuentro es en que puede ayudar si solo logro invocar apis, me dijo Eternal Idol que es imposible hacer algo como esto, y puse de referencia el tuto de E0N Citar DWORD inyectada (datos *data) { MessageBoxA (0, data->mensaje, data->titulo, 0); return 0; } Eso no funcionara nunca, el codigo a inyectar en tu programa usa la tabla de importacion para llamar a la API y esta no coincide (salvo por una casualidad) con la del programa inyectado. se me habia ocurrido llamar a una funcion con CreateThread pero me aparece un error, solo puedo llamar desde esa funcion a una estructura Código: DWORD inyectada (datos *data) tambien intente reservar espacio para esa funcion, escribirla y llamarla con CreateThread, pero igual me sale un error por lo que llego a ver esto lo puedo usar unicamente para abrir alguna aplicacion o DLL, por ejemplo que se autoinicie el programa, que abra espacio para inyeccion y que notepad abra la aplicacion o la DLL pero seria igual a una inyeccion con DLL o que sobreescriba notepad agregando codigo... pero hay antivirus que checan el hash la unica ventaja seria que mi aplicacion no abriria nada seria notepad y seria menos evidente que puede ser un malware mmm, bueno mas que nada queria checar esto porque nunca me a gustado usar muchos archivos, porque supuestamente todo tiene que se sigiloso, asi puedo ver que fallos encuentro en mi computadora sino pues continuare con inyeccion en DLL y vere si el metodo Meepa me puede ayudar en hacerlo menos evidente... aunque no logro hacer ese metodo en Win7 solo pude en WinXP bueno, si algun tiene una opinion o una idea mas, se lo agradezco salu2 Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Karman en 30 Agosto 2011, 19:06 pm no entendí muy bien lo que querés hacer (si es inyectar tu EXE a otro proceso y llamar a API's, etc, fijate el post que te comenté), si por otro lado, querés inyectar código a otro proceso y que use API's y/o que te inyecte/cargue a vos mismo (EXE o DLL) ya es más complejo, pero en resumidas cuentas los pasos serían los del ejemplo de EON (pero con más API's), si no es ninguno de los dos pues trata de explicarte mejor porque no te entiendo :P
acá tenes otro ejemplo de más o menos lo mismo: http://foro.elhacker.net/programacion_cc/inyeccion_dll-t169870.0.html S2 Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Belial & Grimoire en 30 Agosto 2011, 20:00 pm entonces todo lo tengo que hacer asi verdad?
Código: struct iDat y si por ejemplo quisiera iniciar un socket? tendria que llamar la api de socket, darle los parametros a la estructura iDat y ejecutarlo desde la funcion Resident? porque bueno, logro hacer todo esto que coloque... y si lo entiendo, pero tendria que hacer todo lo que necesite con estructuras, por ejemplo pipe, socket, etc...? y funciones extras como Send y Recv o conect, etc?, donde las colocaria?, eso es lo que no entiendo, como o donde colocar todo lo demas que necesite? espero darme a entender, las apis se como usarlas y donde van, pero los demas parametros no se donde colocarlos otro ejemplo aqui podria usar un for( ; ; ) ? y si puedo donde o como lo hago funcionar desde la inyeccion?, porque se que no puedo hacer esto Código: DWORD Resident(iDat *base) espero esto pueda hacer mas facil enteder mi duda, soy malo explicando jaja salu2 y gracias Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Karman en 30 Agosto 2011, 20:19 pm y si por ejemplo quisiera iniciar un socket? tendria que llamar la api de socket, darle los parametros a la estructura iDat y ejecutarlo desde la funcion Resident? porque bueno, logro hacer todo esto que coloque... y si lo entiendo, pero tendria que hacer todo lo que necesite con estructuras, por ejemplo pipe, socket, etc...? y funciones extras como Send y Recv o conect, etc?, donde las colocaria?, eso es lo que no entiendo, como o donde colocar todo lo demas que necesite? espero darme a entender, las apis se como usarlas y donde van, pero los demas parametros no se donde colocarlos y si, ese es el problema de usar ese método (por eso te comenté primero lo de inyección del executable donde solo tenes que preocuparte de "inyectarlo bien"), el tema de los parámetros tendrías que hacer algo así: Código
e incluso podrías tener varias funciones (aunque tendrías que hacer una especie de "relocado") Código
donde baseaddress sería la dirección de la primera función (suponiendo que estén en orden secuncial) e inyectionaddress la dirección que te devuelve virtualalloc (en la víctima)... otro ejemplo aqui podria usar un for( ; ; ) ? y si puedo donde o como lo hago funcionar desde la inyeccion?, porque se que no puedo hacer esto Código: DWORD Resident(iDat *base) espero esto pueda hacer mas facil enteder mi duda, soy malo explicando jaja puedes usar cualquier * instrucción del lenguaje sin problemas, el probema es con las llamadas intermodulares (funciones en otros espacios de memoria [dll's]) S2 El * es porque "en teoría" no deberías tener problemas dado que esas instrucciones son traducidas como saltos relativos (en el caso de C++ new y delete obviamente no van a estar disponibles). Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Belial & Grimoire en 30 Agosto 2011, 21:38 pm Uff. Creo tendre que repasar mis libros y repasar usos de estructuras jeje
Creo esta vez usaren bastantes... bueno no importa mientras aprenda mas es mejor Gracias por la ayuda y la paciencia Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: [Zero] en 30 Agosto 2011, 22:50 pm En el caso que te comentó Eternal Idol, que no te funcionaría porque la IAT no estaría con los datos adecuados, "simplemente" la rellenas a mano y listo. Otro problema sería la dirección base del ejecutable, te dejo el link al post que mencionó Karman:
Código: http://foro.elhacker.net/analisis_y_diseno_de_malware/ejecucion_de_archivos_desde_memoria_base_relocation-t264564.0.html También te dejo otra forma mucho más simple, que escribí hace no mucho: Código: http://h-sec.org/inyectando-ejecutable-memoria-dummysection Con esta última, no podrías inyectar en el proceso que quieras, solo en el "contenedor", así que no sirve para algunas cosas. Saludos Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Belial & Grimoire en 31 Agosto 2011, 00:00 am que bien mas informacion...
ahora entiendo porque me dijo que a menos de que la tabla coincida podria funcionar, bueno... gracias [Zero] ahorita mismo veo los links salu2 Título: Re: como hacen los malware para executarse con inyeccion y sin DLL? Publicado por: Arkangel_0x7C5 en 1 Septiembre 2011, 22:04 pm yo lo que ago es inyectar 2 codigos: shellcode(Es independiente de la address_base)+struc(contiene argumentos para el exe, la direccion de el exe+puntero a GetprocAddress, LoadLibrary, VirtualProtec)+exe_con_seccion_reloc
luego solo hay que conocer las diferentes secciones del PE. http://h-sec.org/formato-pe-windows-espanol Asi tu exe no tiene porque saber nada de las inyecciones PD:hay problemas con la carga dinamica de msvcrt.dll y sus distintas versiones |