En los últimos años, los programas maliciosos (y algunas herramientas de prueba de la pluma, como el paypreter de Metasploit) han comenzado a utilizar inyección reflexiva de DLL (PDF) para cargar una DLL en la memoria de un proceso. El beneficio es que el archivo nunca se escribe en el disco y es difícil de detectar. Muchos ejemplos que he visto se basan en trabajo de Joachim Bauch .
Sin embargo, en DEF CON 20 Andrew King demostró que era capaz de detectar Se inyectaron DLL utilizando una inyección reflexiva de DLL . Su presentación se llamó " Detección de inyección reflexiva ". Desafortunadamente, no ha publicado el código fuente (que ciertamente no tiene obligación de hacer).
ACTUALIZACIÓN : aparentemente lo extrañé, pero Andrew hizo este trabajo de código abierto hace un par de años: enlace
Además, una herramienta llamada " Antimeter " puede detectar el motor del medidor de esfuerzo cuando se carga con inyección de dll reflectante. De nuevo, de código cerrado.
Entiendo que la herramienta de Andrew King y el Antimeter están escritos en Python y usan pydbg / pydasm para enumerar la memoria de ejecutables en ejecución.
¿Alguien tiene algún código fuente general (en Python o de otro tipo) que esté dispuesto a compartir y que demuestre cómo detectar la inyección reflexiva de DLL? Hay herramientas forenses de memoria que pueden analizar un volcado de memoria y encontrar esto, pero estoy buscando ejecutar una aplicación en un sistema en ejecución (como antimeter) y encontrar procesos con DLL inyectados de manera reflectiva.
Si está interesado en comprender cómo funciona la inyección reflexiva de DLL, hay un código de código abierto escrito en Delphi que muestra cómo hacer esto.
ACTUALIZACIÓN : probé y puedo inyectar DLL de forma reflexiva sin derechos de administrador (y como usuario habitual), pero, por supuesto, como USUARIO solo puedo inyectar en procesos que se ejecutan con el mismo nivel de integridad ( y en mi sesión) ... pero eso aún cubre aplicaciones como la suite Office, Internet Explorer, etc.