DriverJack — это инструмент, предназначенный для загрузки уязвимого драйвера с использованием менее известных методов NTFS. Эти методы обходят регистрацию службы драйвера в системе путем перехвата существующей службы, а также подделывают путь к изображению, представленный в событии загрузки драйвера. Чтобы еще больше замаскировать наличие уязвимого драйвера, атака также использует обход эмулируемой файловой системы только для чтения, чтобы заменить содержимое файла драйвера на смонтированном ISO перед его загрузкой.
DriverJack злоупотребляет возможностью переназначения файлов, смонтированных в эмулируемых файловых системах, на страницы RW, чтобы перезаписать их содержимое. Этот обход RO реализован в IoCdfsLib .
После того как ISO смонтирован, атака продолжается путем выбора драйвера службы, который можно запустить или остановить или запустить, требуя привилегии администратора, если он не настроен неправильно.
Монтаж ISO и выбор драйвера
Перехват пути драйвера
Этот метод использует возможность установщика напрямую обращаться к каталогу C:WindowsSystem32drivers
, позволяя разместить там вредоносную символическую ссылку. Символическая ссылка обрабатывается ОС с приоритетом, что приводит к загрузке вредоносного драйвера при перезапуске службы.
Ключевые шаги:
NtLoadDriver
нормализует NT-путь символической ссылки. Этот метод, разработанный в сотрудничестве с jonasLyk из хакерского коллектива Secret Club, включает в себя перенаправление символической ссылки DeviceBootDevice
NT, части пути, по которому загружается двоичный файл драйвера. Это позволяет скрыть руткит внутри системы.
Шаги:
BootDevice
.BootDevice
, чтобы она указывала на смонтированный ISO.BootDevice
.Этот метод был основан на методах, использованных в проекте unDefender для отключения службы и драйвера Защитника Windows. Событие загрузки драйвера по-прежнему будет показывать реальный путь к загружаемому драйверу, указывая на точку монтирования ISO.
Несмотря на широкую известность, этот метод используется редко из-за потенциальной нестабильности системы. Он предполагает временное изменение буквы диска, назначенной BootPartition
, обманывая процесс загрузки драйвера для доступа к другому диску. В сочетании с NT Symlink Abuse, описанным выше, этот метод может полностью замаскировать путь загружаемого драйвера, минуя обнаружение SysMon и других инструментов мониторинга.
DriverJack демонстрирует другой, нетрадиционный способ загрузки уязвимых драйверов, который использует эмулируемые файловые системы CDFS и менее известные свойства символических ссылок NTFS.
Этот проект лицензируется по лицензии MIT — подробности см. в файле LICENSE.