Algunas veces los servicios intentarán cargar funcionalidades desde una librería (DLL, dynamic-link library). Cualquier funcionalidad del DLL será ejecutado con los mismos privilegios del servicio.
Si el DLL es cargado en una ruta absoluta, podría ser posible que podamos escalar privilegios si el DLL puede ser sobrescrito por nuestro usuario.
El problema de configuración más común que se puede usar para escalar privilegios es si el DLL no se encuentra en el sistema, y nuestro usuario puede escribir en el directorio del PATH donde Windows busca el DLL.
Desafortunadamente, la detección inicial de esta vulnerabilidad es difícil, y el proceso de detección es completamente manual.
Mediante winPEAS podemos ver los servicios:
Servicio con DLL Hijacking Directorio que podemos usar para DLL Hijacking Luego de detectar un servicio vulnerable, validamos los permisos que tenemos:
Permisos del usuario sobre el servicio Chequeamos la información del servicio:
Aquí, podemos obtener la ruta del binario y los permisos con los que se ejecuta.
Copiamos el binario en una máquina con Windows, y lo analizamos con Procmon64, el cual, debe ser ejecutado como administrador.
Detenemos y limpiamos los procesos, para así, poder agregar un nuevo filtro (CTRL+L) de Process Name que será igual al nombre del binario copiado (le damos Add):
Borrado del listado de los procesos Deseleccionamos la opción Show registry y Show network activity e iniciamos la captura nuevamente:
Iniciamos la captura de los procesos del servicio Volvemos a iniciar el servicio:
Identificamos los DLL que indican NAME NOT FOUND para luego buscarlos en el sistema de la máquina víctima:
Detección de DLLs faltantes Con esta información, más lo obtenido con winPEAS, creamos un DLL falso en una ruta donde podamos escribir.
Generamos el DLL con el siguiente comando:
Generación del DLL malicioso Iniciamos nuestro listener:
Copiamos el DLL en la máquina víctima:
Reiniciamos el servicio:
Copia del DLL e inicio del servicio