Inyectando codigo en espacios vacios de programas

Iniciado por Hendrix, 6 Mayo 2006, 23:18 PM

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

Hendrix

Weno, una par de dudas que se me vienen a la cabeza....

Hace tiempo lei que hay virus que lo que hacen para inyectarse en otros procesos es okupar sus espacion vacios kon su kodigo.....para hacer eso hay que usar alguna API ene special??? alomejor se tendria que buskar lso espacios vacios y leugo kalkular el tamaño de este espacio e ir copiandose en el espacio...trozo a trozo....Pero ahora tengo otra duda...komo se va a ejekutar si pro ejemplo el PE del virus esta por enmedio del cuerpo del archivo origen??? :-\ :-\ :-\

Mi ultima duda...si eso fuera posible...se podria por ejemplo inyectar kode en .jpg??? puesto que no veo ninguna diferencia infectar a un .exe....y que este mismo "te ejekute" a ti mismo....que un .jpg....puesto que el PE del worm no influye en la ejekucin del archcivo origen...o si????

Weno, respondenme si no se an perdido por la explikacion de mi pregunta...xD xD xD

Salu2

Hendrix

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Eternal Idol

Me parece que estas mezclando dos cosas, una la inyeccion de codigo sobre un PROCESO y otra la "incrustacion" de codigo en un PROGRAMA.
En la primera se escribe en el espacio de direcciones de un proceso en ejecucion mientras que en la segunda se escribe en el archivo en disco.

¿Como se ejecuta el codigo incrustado en un archivo ejecutable en disco? Asi rapidamente se me ocurren un par de formas, la mas simple es cambiar el entry point. En el PE hay un campo que indica la direccion de comienzo del ejecutable (entry point), haciendo que la misma apunte al codigo nuevo y que este codigo termina saltando a la direccion original del entry point se consigue ejecutar antes el nuevo codigo y despues el programa de siempre.
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

Hendrix

es decir...que esto de modificar el PE solo funcionaria en .exe's....no???? y komo se haria para modificar el PE??? :-\ :-\

Salu2 y gracias por contestar.....

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Eternal Idol

Cita de: _Hendrix_ en  6 Mayo 2006, 23:38 PM
es decir...que esto de modificar el PE solo funcionaria en .exe's....no???? y komo se haria para modificar el PE??? :-\ :-\

PE es Portable Executable y se usa para varios tipos de archivos. En NT para codigo objeto (.OBJ), ejecutables (.EXE), librerias (.DLL, .OCX) y drivers (.SYS) entr otros, tanto de 32 como de 64 bits.
Para modificar un PE se necesita lo mismo que para con cualquier otro formato, saber sus especificaciones y modificarlo en modo binario (no texto).
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

Hendrix

Weno...pos me puedo conviene que deje este modo de inyeccion...ya que refirigir entry points no es mi fuerte...xD xD xD

Salu2 y gracias... ;) ;)

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Kizar

Eternal Idol a mi me gustaria k expusieras como encontrar el entry point y como cambiar la direcion a la k apunta.
Se algo de asm y de hex supongo k vendra bien.

PD: No ay ganas de buscar nada...

Salu2

byebye

#6
mov edx,dword [eax+3Ch]
add edx,eax       
mov edx,dword [edx+28h] 


suponiendo que eax=MZ. ahi tienes el entrypoint. desplazamiento 28h respecto a la cabecera PE.

PD: por si no queda claro, cuando digo MZ quiero decir la direccion base donde se mapea el archivo.

Eternal Idol

Lo vas a poder ver mejor con las estructuras:

IMAGE_DOS_HEADER
IMAGE_NT_HEADERS

0x3C es el offset al campo e_lfanew de la primera estructura, es el que apunta a la nueva cabecera (del PE real). Todo PE tiene un ejecutable de MS-DOS incrustado al inicio, generalmente y por defecto es el que nos dice "This program cannot be run under DOS" o algo asi.

0x28 es el offset al campo AddressOfEntryPoint de la segunda estructura.
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