
Инжектор DLL для Windows 10, работающий через драйвер, использующий VAD и скрывающий загруженный драйвер
Driver DLL Injector Описание
Driver DLL Injector — это мощный инструмент, который позволяет пользователям загружать выбранные ими драйверы с помощью предпочтительного маппера. Используя возможности загрузчика неподписанных драйверов, такого как KDmapper, этот инжектор был создан и протестирован на процессах Windows 10 2004 x64
Драйвер перехватывает безопасную для PatchGuard функцию xKdEnumerateDebuggingDevices для связи с нашим процессом пользовательского режима. Этот метод хорошо детектируется популярными античитами, поэтому мы идём дальше и захватываем поток пользовательского режима в ядре для связи, восстанавливая адрес исходной функции и тем самым обходя проверки целостности функций.
Для сокрытия оставляемых следов драйвер делает следующее:
Манипуляция VAD: драйвер стратегически выделяет память за «стеком потока», используя недокументированные функции дескриптора виртуального адреса (VAD), такие как MiInsertChange и MiAllocVad, которые не являются широко известными. После выделения VAD и успешной загрузки DLL драйвер удаляет VAD из дерева VAD.
Манипуляция PTE: чтобы обойти проверки NtQueryVirtualMemory, драйвер манипулирует записями таблицы страниц (PTE), делая страницы, выделенные через VAD, исполняемыми. Изменяя PTE, драйвер гарантирует, что VAD не обновляется с включённым исполняемым (X) битом, обходя потенциальные ограничения.
Очистка PiDDBCacheTable, MmUnloadedDrivers (список хеш-корзин).
В зависимости от того, какой ручной маппер вы используете для драйвера, вам также придётся учитывать большие пулы.
Процесс пользовательского режима использует оверлей Discord для вызова функции main нашей DLL.
Процесс пользовательского режима делает следующее:
Чтобы использовать Driver DLL Injector, выполните следующие шаги:
1. Выберите и установите совместимый маппер, например KDmapper.
2. Скомпилируйте или соберите проект Driver DLL Injector.
3. Загрузите драйвер с помощью выбранного маппера
4. Запустите тестовое приложение (с включённым оверлеем Discord)
5. Запустите приложение пользовательского режима и дождитесь окна сообщения Hello World.
При создании этого проекта на пути возникло несколько препятствий. Некоторые из них:
/sdl-, /GS- и библиотеки времени выполнения в /MT исправила мои проблемы с падениями.KMODE_EXCEPTION; это было исправлено установкой свойства драйвера /GS-.ModMap — за демонстрацию манипуляции VAD
SkCrypt — за шифрование
Stealthy Kernel Mode Injector — за основу драйвера
Poseidon — за захват потока пользовательского режима в ядре
FACE INJECTOR — за шеллкод