Auditar sistemas Windows para evitar DLL Hijacking.
A). (directorio donde se encuentra el ejecutable)
B) Windows»
C) Windowssystem32
D) Windowssyswow64 (prioridad mas baja, menos controles)
Por ejemplo: un ejecutable «Foo.exe» solicita la DLL «bar.dll», que casualmente reside en el subdirectorio “syswow64” (D). Esto da la oportunidad de colocar una versión maliciosa en A), B) o C) y se cargará en el ejecutable. Como indicó anteriormente, incluso una ruta completa absoluta no puede proteger contra este ataque, si se puede reemplazar la DLL con otra versión maliciosa.
Microsoft Windows protege el sistema utilizando el mecanismo de Protección de archivos de Windows para la carpeta “System32”, pero la mejor manera de proteger el ejecutable del secuestro de DLL es:
- Usar rutas absolutas en lugar de ruta relativa.
- En el caso de tener certificado digital, se deben firmar los archivos DLL y verificar el inicio de sesión de la aplicación antes de cargar el archivo DLL en la memoria, también se puede verificar el hash del archivo DLL con el hash DLL original.
Por supuesto, esto tampoco está limitado a Windows. Cualquier sistema operativo que permita la vinculación dinámica de bibliotecas externas es teóricamente vulnerable a esto.
Con la herramienta Robber se puede auditar que DLL de un sistema Windows son sensibles a DLL Hijacking. Esta aplicación usa un mecanismo simple para descubrir las DLL que son propensas al secuestro:
- Escanea la tabla de importación de archivos ejecutables y descubre los archivos DLL que se vinculan a ejecutables.
- Buscar archivos DLL ubicados dentro del ejecutable que coincidan con la DLL vinculada (como he dicho antes, el directorio de trabajo actual del ejecutable tiene la prioridad más alta).
- Si encuentra alguna DLL, escanea la tabla de exportación.
- Compara la tabla de importación del ejecutable con la tabla de exportación de la DLL y si se encontró alguna coincidencia, el ejecutable y las funciones comunes coincidentes la marcara como candidato a DLL Hijacking.
Entre la características principales de Robber destaca:
- Posibilidad de seleccionar el tipo de escaneo (aplicaciones firmadas/no firmadas).
- Determinar firmante ejecutable.
- Determinar qué DLL de referencia es candidato para DLL Hijacking.
- Permite determine los nombres de los métodos exportados de las DLL candidatas.
- Permite configurar las reglas para determinar qué DLL es mas sensible a Hijacking y las muestra en diferentes colores.
Más información y descarga de Robber:
https://github.com/MojtabaTajik/Robber
Un ejemplo del ataque de DLL Hijacking es PuttyRider, lo que hace esta herramienta es montar la sesión Putty pudiendo esnifar el tráfico (incluido contraseñas) e inyectar comandos con los privilegios de usuario. También utiliza DLL Hijacking y function hooking para secuestrar el proceso de Putty y funciona con todas las ultimas versiones (Windows 8, Windows 7, etc) y no requiere privilegios de administración.
Fuente: El Gurú de la informática : Auditar sistemas Windows para evitar DLL Hijacking.