Esta es una técnica de inyección de DLL del Explorador de Windows que utiliza el cuadro de diálogo de cambio de icono en Windows.
En primer lugar, se crea una carpeta en el directorio temporal y las propiedades de la carpeta se abren usando SHObjectProperties. Para recuperar el identificador de la ventana independientemente del idioma del sistema, EnumWindows se utiliza con una función de devolución de llamada que comprueba el nombre de la carpeta distinta en cada ventana abierta.
A través de la página de propiedades, se invoca el cuadro de diálogo de cambio de icono, cuyo identificador también se recupera con EnumWindows. Por último, la ruta del icono se cambia a una DLL (que tiene una extensión .ico en este caso), lo que hace que el explorador cargue la DLL después de presionar el botón Aceptar.
El "ícono" es en realidad un archivo DLL simple con una extensión .ico que abre la aplicación de la calculadora con un recurso de ícono que se agregó mediante Resource Hacker.
Existen algunas anomalías en cuanto a la apariencia del ícono en la vista de carpetas. Probé esto en dos versiones diferentes de Windows 10 (la más nueva y la anterior) y en Windows 11.
En ambas versiones de Widnows 10, el ícono almacenado dentro de la DLL no se mostró cuando se cambió la extensión a .ico
Sin embargo, en la versión más reciente de Windows 10, funcionó hasta que intenté abrir el "ícono" dentro de la aplicación de fotos. Desde entonces no he podido recrearlo.
En Windows 11, el ícono se mostraba como un ícono normal en la vista del Explorador. Sin embargo, cuando se abre en la aplicación de fotos, se muestra un error.
Este comportamiento es ciertamente interesante, ya que un usuario que simplemente quiera cambiar el ícono de una carpeta puede inyectar una DLL maliciosa en su explorador. Esto podría verse así:
Esta es una forma muy sigilosa de inyectar una DLL en el proceso del Explorador porque no utiliza la API de inyección de DLL habitual. Produce dos ventanas emergentes breves, que sin embargo no son demasiado molestas. Por lo tanto, un actor de amenazas puede utilizarlo como técnica de evasión antivirus para ejecutar código a través del proceso de exploración legítimo o para cargar un rootkit UMD.
Además, difundir archivos DLL enmascarados como archivos .ico puede ser un vector de ataque interesante.
Para obtener los identificadores de ventana correctos, utilicé Spy++, que es una herramienta que se instala con Visual Studio.
¡Muchas gracias a Bill G. de Microsoft por el hermoso ícono de carpeta!
¡Gracias, chico cualquiera en Internet, por el hermoso ícono de inyección!