No conozco a Zeus en particular, pero en general, es fácil hacerlo utilizando API de depuración como VirtualProtectEx
y WriteProcessMemory
. Abra una MANIJA al proceso de destino, agregue algo de memoria ejecutable (con VirtualAllocEx
), coloque un código malicioso allí, vuelva a asignar la dirección virtual del código ejecutable de la biblioteca que contiene su API de destino como RWX, sobrescriba los primeros bytes de la función que desea enlazar con una instrucción de salto que va a su código malicioso inyectado y usted controla todo lo que hace esa función.
Hay muchas otras formas de lograr resultados similares; El uso de las API de depuración y la sobrescritura de los puntos de entrada de funciones reales es solo un ejemplo que he visto en el mundo real. El programa malicioso puede hacer esto cada vez que el depurador (víctima) carga una nueva biblioteca, incluidas todas las que se cargaron en la inicialización del proceso, antes de que se ejecute el main()
de la víctima.
inyección de DLL (que puede hacer el enganche desde dentro del proceso, sin necesidad de hacer nada entre procesos) y correcciones de compatibilidad (como se usan para ejecutar programas en "modo de compatibilidad" para versiones anteriores de SO, y reemplazar el sistema API con código diferente) son otras dos opciones útiles.