
Secuestrando servicios de controladores válidos para cargar controladores arbitrarios (firmados) abusando de enlaces simbólicos nativos y rutas NT.
DriverJack es una herramienta diseñada para cargar un driver vulnerable aprovechando técnicas poco conocidas de NTFS. Estos métodos evitan el registro de un Servicio de Driver en el sistema secuestrando un servicio existente, y también falsifican la ruta de imagen presentada en el evento de Carga del Driver. Para enmascarar aún más la presencia de un driver vulnerable, el ataque también abusa de un bypass de Solo-Lectura del Sistema de Archivos Emulado para intercambiar el contenido de un archivo de driver en un ISO montado antes de cargarlo.
DriverJack abusa de la posibilidad de reasignar archivos montados en sistemas de archivos emulados a páginas RW para sobrescribir su contenido. Este bypass de RO está implementado en IoCdfsLib.
Una vez montado el ISO, el ataque procede seleccionando un driver de servicio que pueda iniciarse o detenerse, o uno que pueda activarse, lo que requiere privilegios administrativos a menos que esté mal configurado.
Montaje del ISO y selección del driver
Secuestro de la ruta del driver
Esta técnica explota la capacidad de un instalador para acceder directamente al directorio C:\Windows\System32\drivers, lo que permite colocar allí un enlace simbólico malicioso. El sistema operativo procesa el enlace simbólico con precedencia, lo que provoca que el driver malicioso se cargue cuando se reinicia el servicio.
Pasos clave:
NtLoadDriver normaliza la ruta NT del enlace simbólico.Desarrollado en colaboración con jonasLyk del colectivo hacker Secret Club, este método consiste en redirigir el enlace simbólico NT \Device\BootDevice, parte de la ruta desde la que se carga un binario de driver. Esto permite ocultar un rootkit dentro del sistema.
Pasos:
BootDevice.BootDevice para que apunte al ISO montado.BootDevice.Este método se inspiró en las técnicas utilizadas en el proyecto unDefender para deshabilitar el servicio y el driver de Windows Defender. El evento de Carga del Driver seguirá mostrando la ruta real del driver que se está cargando, apuntando al punto de montaje del ISO.
Aunque es ampliamente conocida, esta técnica rara vez se utiliza debido al potencial de inestabilidad del sistema. Consiste en cambiar temporalmente la letra de unidad asignada a BootPartition, engañando al proceso de carga del driver para que acceda a una unidad diferente.
Cuando se combina con el abuso del enlace simbólico NT, explicado anteriormente, esta técnica puede enmascarar por completo la ruta del driver que se está cargando, evadiendo la detección por SysMon y otras herramientas de monitoreo.
DriverJack demuestra otra forma no convencional de cargar drivers vulnerables que aprovecha los sistemas de archivos emulados CDFS y las propiedades menos conocidas de los enlaces simbólicos NTFS.
Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.