
Détourner des services de pilotes valides pour charger des pilotes (signés) arbitraires en abusant des liens symboliques natifs et des chemins NT
DriverJack est un outil conçu pour charger un pilote vulnérable en abusant de techniques NTFS méconnues. Ces méthodes contournent l'enregistrement d'un service de pilote sur le système en détournant un service existant, et usurpent également le chemin d'image présenté dans l'événement de chargement du pilote. Pour masquer davantage la présence d'un pilote vulnérable, l'attaque abuse également d'un contournement de lecture seule du système de fichiers émulé pour échanger le contenu d'un fichier pilote sur une ISO montée avant de le charger.
DriverJack abuse de la possibilité de remapper des fichiers montés sur des systèmes de fichiers émulés vers des pages RW pour écraser leur contenu. Ce contournement RO est implémenté dans IoCdfsLib.
Une fois l'ISO montée, l'attaque procède en sélectionnant un service pilote qui peut être démarré ou arrêté, ou un qui peut être déclenché, nécessitant des privilèges administrateur sauf en cas de mauvaise configuration.
Montage ISO et sélection du pilote
Détournement du chemin du pilote
Cette technique exploite la capacité d'un installateur à accéder directement au répertoire C:\Windows\System32\drivers, permettant d'y placer un lien symbolique malveillant. Le lien symbolique est traité par l'OS avec priorité, ce qui conduit au chargement du pilote malveillant lorsque le service est redémarré.
Étapes clés :
NtLoadDriver normalise le chemin NT du lien symbolique.Développée en collaboration avec jonasLyk du collectif de hackers Secret Club, cette méthode consiste à rediriger le lien symbolique NT \Device\BootDevice, faisant partie du chemin à partir duquel un binaire de pilote est chargé. Cela permet de cacher un rootkit dans le système.
Étapes :
BootDevice.BootDevice pour pointer vers l'ISO montée.BootDevice.Cette méthode a été inspirée par les techniques utilisées dans le projet unDefender pour désactiver le service et le pilote Windows Defender. L'événement de chargement du pilote affichera toujours le chemin réel du pilote en cours de chargement, pointant vers le point de montage ISO.
Bien que largement connue, cette technique est rarement utilisée en raison du risque d'instabilité du système. Elle consiste à modifier temporairement la lettre de lecteur attribuée à BootPartition, trompant le processus de chargement du pilote pour accéder à un autre lecteur. Combinée avec l'abus de lien symbolique NT expliqué précédemment, cette technique peut complètement masquer le chemin du pilote en cours de chargement, contournant la détection par SysMon et autres outils de surveillance.
DriverJack démontre une autre manière non conventionnelle de charger des pilotes vulnérables qui exploite les systèmes de fichiers émulés CDFS et les propriétés méconnues des liens symboliques NTFS.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.