DriverJack es una herramienta diseñada para cargar un controlador vulnerable abusando de técnicas NTFS menos conocidas. Estos métodos evitan el registro de un servicio de controlador en el sistema secuestrando un servicio existente y también falsifican la ruta de la imagen presentada en el evento de carga del controlador. Para enmascarar aún más la presencia de un controlador vulnerable, el ataque también abusa de una omisión de solo lectura del sistema de archivos emulado para intercambiar el contenido de un archivo de controlador en una ISO montada 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. Esta derivación de RO se implementa en IoCdfsLib .
Una vez montada la ISO, el ataque continúa seleccionando un controlador de servicio que pueda iniciarse o detenerse, o uno que pueda activarse y que requiera privilegios administrativos a menos que esté mal configurado.
Montaje ISO y selección de controladores
Secuestro del camino del conductor
Esta técnica aprovecha la capacidad de un instalador para acceder directamente al directorio C:WindowsSystem32drivers
, lo que permite colocar allí un enlace simbólico malicioso. El sistema operativo procesa el enlace simbólico con prioridad, lo que hace que el controlador 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 de hackers Secret Club, este método implica redirigir el enlace simbólico DeviceBootDevice
NT, parte de la ruta desde la cual se carga un controlador binario. 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 desactivar el servicio y el controlador de Windows Defender. El evento Cargar controlador seguirá mostrando la ruta real del controlador que se está cargando, apuntando al punto de montaje ISO.
Aunque es ampliamente conocida, esta técnica rara vez se utiliza debido al potencial de inestabilidad del sistema. Implica cambiar temporalmente la letra de unidad asignada a BootPartition
, engañando al proceso de carga del controlador para acceder a una unidad diferente. Cuando se combina con NT Symlink Abuse, explicado anteriormente, esta técnica puede enmascarar completamente la ruta del controlador que se está cargando, evitando la detección de SysMon y otras herramientas de monitoreo.
DriverJack demuestra otra forma no convencional de cargar controladores vulnerables que aprovecha los sistemas de archivos emulados CDFS y las propiedades de enlaces simbólicos NTFS menos conocidas.
Este proyecto tiene la licencia MIT; consulte el archivo de LICENCIA para obtener más detalles.