Suplantación de DLL (secuestro de DLL)

Hola a todos. En este momento, OTUS ha abierto un set para el lanzamiento en abril del curso actualizado de ingeniería inversa . En previsión del comienzo del curso, tradicionalmente preparamos una traducción de material interesante.




En el sistema operativo Windows, las aplicaciones y servicios al inicio buscan las DLL necesarias para su correcto funcionamiento. Si no se encuentran estas DLL o su carga se implementa de manera insegura (las DLL se invocan sin utilizar la ruta completa), puede aumentar los privilegios al forzar a la aplicación a descargar y ejecutar un archivo DLL malicioso.

Cabe señalar que cuando la aplicación necesita descargar la DLL, su búsqueda se lleva a cabo en el siguiente orden:

  • El directorio desde el que se descarga la aplicación.
  • C: \ Windows \ System32
  • C: \ Windows \ Sistema
  • C: \ Windows
  • Directorio de trabajo actual
  • Directorios en la variable de entorno PATH del usuario
  • Directorios en la variable de entorno del sistema PATH

Paso 1 - Procesos con archivos DLL faltantes


El primer paso es encontrar procesos que se ejecutan en SYSTEM e intentar cargar la DLL que falta. Esto se puede hacer usando Sysinternals Process Monitor aplicando el filtro que se


detalla a continuación: Filtros Procmon para buscar procesos que descarguen DLL faltantes

Process Monitor identificará los DLL faltantes que la aplicación está tratando de cargar y mostrará la ruta real que se está buscando esta DLL.


Un proceso con una DLL que falta

En este ejemplo, un proceso Bginfo.exeno tiene varios archivos .dll que puedan usarse para elevar los privilegios.

Paso 2 - Permisos de carpeta


Si el software se instala en el directorio C:\en su lugar C:\Program Files, a continuación, los usuarios predeterminados autenticado tendrá acceso de escritura a este directorio. Además, generalmente se agrega software como Perl, Python, Ruby, etc. a la variable PATH. Esto permite aumentar los privilegios, ya que el usuario puede escribir una DLL maliciosa en este directorio, que se cargará la próxima vez que se inicie el proceso y obtenga los derechos para este proceso.


Permisos de carpeta débiles

Paso 3 - Sustituir DLL


Con Metasploit, puede generar una DLL de carga útil como una sesión con privilegios de servicio.


Generación de DLL maliciosa

El proceso se Bginfo.exeinicia bajo SYSTEM, por lo tanto, después de reiniciar la DLL maliciosa tendrá los mismos privilegios, ya que la DLL se carga y ejecuta mediante este proceso.


El proceso se inicia en SISTEMA.

Como se indicó anteriormente, no se puede encontrar el proceso Riched32.dll, por lo pentestlab.dllque debe cambiarle el nombre Riched32.dll. Esto confundirá la aplicación e intentará cargar la DLL porque cree que es una DLL legítima. La DLL maliciosa debe colocarse en una de las carpetas en las que Windows está buscando archivos DLL.


DLL maliciosa renombrada y alojada

Como puede ver a continuación, cuando reinicia el servicio utilizando la DLL de suplantación de identidad, se abre una sesión de Meterpreter con privilegios de SYSTEM.


Metasploit - Escalada de privilegios a través de la suplantación de DLL

Powersploit


El proceso de reemplazar archivos DLL se puede hacer a través de PowerSploit, en el que hay tres módulos que ayudarán a encontrar servicios con archivos DLL faltantes, a encontrar carpetas con derechos de modificación y a generar archivos DLL.

El módulo Find-ProcessDLLHijackencontrará todos los procesos en el sistema que intentan cargar la DLL que falta.


PowerSploit: detección de procesos con archivos DLL faltantes

El siguiente paso es identificar las carpetas donde el usuario puede modificar el contenido. Se encontrarán carpetas donde se arrojarán archivos DLL maliciosos.


Detección de carpetas con derechos para modificar

El último paso es crear una DLL maliciosa en una de las carpetas con permisos de modificación (M).


Crear una DLL en una carpeta con permisos débiles

Conclusión


Para poder elevar los privilegios a través de una DLL de suplantación de identidad, se deben cumplir las siguientes condiciones:

  • Permisos para escribir en la carpeta del sistema
  • Instalar software en un directorio que no sea el directorio predeterminado
  • Un servicio que se ejecuta en SYSTEM e intenta cargar una DLL faltante
  • Reinicio del servicio

Encontrar aplicaciones que no están instaladas no Program Fileses difícil, porque aparte de las aplicaciones de terceros que no están obligadas a instalar a lo largo de esta ruta, hay varios programas de software personalizados ubicados fuera de estas carpetas protegidas. Además, hay una serie de servicios de Windows, como IKEEXT (IKE y AuthIP IPsec Keying Modules) con DLL faltantes ( wlbsctrl.dll), que se pueden usar de forma manual o automática. Hay un módulo especial de Metasploit para IKEEXT:

exploit/windows/local/ikeext_service



.



All Articles