Injectar codigo en PE (Portable Ejecutable)

Iniciado por 70N1, 7 Octubre 2013, 12:54 PM

0 Miembros y 1 Visitante están viendo este tema.

70N1

Buenas a todos....
Busco un ejemplo de infeccion de ejecutables, que sea facil de entender.
O almenos guiarme.

Gracias por vuestro tiempo.
70N1

Vaagish

Hola amigo, yo hace un par de semanas pase por lo mismo.. y el resultado:


BOOL InjectDLL(DWORD ProcessID, char *Dll_Name)
{
HANDLE Proc;
HANDLE RemoteThread;
LPVOID RemoteString, LoadLibAddres;
int Retorno;

Proc = OpenProcess(CREATE_THREAD_ACCESS, FALSE, ProcessID);
cout << " " << "OpenProcess: " << Proc << endl;

LoadLibAddres = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
cout << " " << "Base Address of LoadLibraryA: " << LoadLibAddres << endl;

RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(Dll_Name)+1, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
cout << " " << "VirtualAllocEx: " << RemoteString << endl;

Retorno = WriteProcessMemory(Proc, (LPVOID)RemoteString, Dll_Name, strlen(Dll_Name)+1, NULL);
cout << " " << "WriteProcessMemory: " << Retorno << endl;

RemoteThread = CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddres, (LPVOID)RemoteString, NULL, NULL);
cout << " " << "CreateRemoteThread: " << RemoteThread << endl;

CloseHandle(Proc);
cout << " " << "Closing Handle" << endl;

return 0;
}


Con esta función, podes cargar una dll dentro del espacio de memoria de un PE, le tendrías que pasar a esta función como primer parámetro el ID del proceso a inyectar (se puede obtener con GetProcessID(NombreDelProceso) ) y como segundo la ruta completa de la dll (a menos que esta misma se encuentre en la misma carpeta que el inyector) en fin.. espero te sirva de algo,, al menos poder deducir que apis se utilizan..  ::)

70N1

Disculpa...

Pero es que no quiero injectar en memoria.
Lo que quiero es introducir codigo dentro del exe para que se ejecute mi codigo y luego siga con el del programa.
70N1

Vaagish

Modificando el binario? Y bueno, ahi es distinto.. jaja calculo que lo tendrás que abrir como escritura con fopen, de forma binaria.. y ahí hacer algunas modificaciones.. pero según tengo entendido, no es cuestion de cambiar el tamaño de un archivo y esperar que siga funcionando.. deberías cambiar algunos valores en la IMAGE OPTIONAL HEADER, y quizás, alguna otra cosa,, pero, por favor, que alguien me corrija si estoy diciendo cualquier cosa.. yo creo que algo asi es la cosa..

No se cuanto conoces del formato PE, pero creo que hay que tener un buen conocimiento del mismo, al menos para entender lo que se esta haciendo ;)

Saludos!!

MCKSys Argentina

#4
Te recomiendo darte una vuelta por este lado: http://vxheaven.org/vl.php

PD: OJO! con lo que haces con esos codigos! Si tienes una AV en la maquina, lo mas probable es que te los borre, asi que toma las medidas necesarias...

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Cromatico

Cita de: 70N1 en  8 Octubre 2013, 13:16 PM
Disculpa...

Pero es que no quiero injectar en memoria.
Lo que quiero es introducir codigo dentro del exe para que se ejecute mi codigo y luego siga con el del programa.

Aca hay un ejemplo en VB6:
http://foro.elhacker.net/analisis_y_diseno_de_malware/infeccion_de_ejecutables_en_visualbasic_6-t131243.0.html

Muy facil para adaptar, suerte!

Mad Antrax

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

Vaagish

Interesante... y por lo que veo, no es necesario andar metiéndose en el PEB ni nada de eso...

MCKSys Argentina

Cita de: Vaagish en  9 Octubre 2013, 05:21 AM
Interesante... y por lo que veo, no es necesario andar metiéndose en el PEB ni nada de eso...

La PEB la usarias si estuvieras inyectandote (en realidad es util para hacer shellcodes), pero para infectar, debes conocer el formato PE.
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Vaagish

Si, después de escribir, me imagine que en realidad el PEB se carga cuando se carga el PE,, asi que no seria necesario modificarlo, porque lo que se modifica en este caso, es el codigo..

Saludos!