
Перехват легитимных служб драйверов для загрузки произвольных (подписанных) драйверов путем злоупотребления нативными символическими ссылками и NT-путями.
DriverJack — это инструмент, предназначенный для загрузки уязвимого драйвера с использованием малоизвестных техник NTFS. Эти методы обходят регистрацию службы драйвера в системе за счёт перехвата существующей службы, а также подделывают путь к образу, отображаемый в событии загрузки драйвера. Чтобы дополнительно замаскировать присутствие уязвимого драйвера, атака также использует обход read-only ограничений эмулируемой файловой системы для подмены содержимого файла драйвера на смонтированном ISO перед его загрузкой.
DriverJack использует возможность пере映射 файлов, смонтированных на эмулируемых файловых системах, в RW-страницы для перезаписи их содержимого. Этот обход RO реализован в IoCdfsLib.
После монтирования ISO атака продолжается выбором служебного драйвера, который можно запустить или остановить, либо такого, который можно активировать, что требует прав администратора, если только он не настроен неправильно.
Монтирование ISO и выбор драйвера
Перехват пути драйвера
Эта техника использует возможность установщика напрямую обращаться к каталогу C:\Windows\System32\drivers, что позволяет разместить там вредоносную символическую ссылку. Символическая ссылка обрабатывается ОС с приоритетом, что приводит к загрузке вредоносного драйвера при перезапуске службы.
Ключевые шаги:
NtLoadDriver нормализует NT-путь символической ссылки.Разработанный совместно с jonasLyk из хакерского коллектива Secret Club, этот метод включает перенаправление NT-символической ссылки \Device\BootDevice, являющейся частью пути, из которого загружается бинарный файл драйвера. Это позволяет скрыть руткит в системе.
Шаги:
BootDevice.BootDevice, чтобы она указывала на смонтированный ISO.BootDevice.Этот метод был вдохновлён техниками, использованными в проекте unDefender для отключения службы и драйвера Windows Defender. Событие Load Driver по-прежнему будет показывать реальный путь загружаемого драйвера, указывающий на точку монтирования ISO.
Хотя эта техника широко известна, она редко используется из-за потенциальной нестабильности системы. Она включает временное изменение буквы диска, назначенной BootPartition, обманом заставляя процесс загрузки драйвера обращаться к другому диску.
В сочетании с описанным выше злоупотреблением NT-символической ссылкой эта техника может полностью замаскировать путь загружаемого драйвера, обходя обнаружение SysMon и другими инструментами мониторинга.
DriverJack демонстрирует ещё один нетрадиционный способ загрузки уязвимых драйверов, использующий эмулируемые файловые системы CDFS и малоизвестные свойства символических ссылок NTFS.
Этот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.