Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
EfiGuard — Отключение PatchGuard и принудительной подписи драйверов во время загрузки | Kitploit
Инструменты/GitHubGitHub/mattiwatti/efiguard
Оборонительные ИнструментыЭксплуатацияОбратная инженерияАнализ Бинарных Файлов
GitHubmattiwatti/efiguard

EfiGuard

Отключение PatchGuard и принудительной подписи драйверов во время загрузки

Репозиторий
2.5k409333 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Обзор

EfiGuard — это портативный x64 UEFI буткит, который патчит диспетчер загрузки Windows, загрузчик и ядро во время загрузки для отключения PatchGuard и Driver Signature Enforcement (DSE).

Если вы просто хотите попробовать EfiGuard, перейдите к разделу Использование.

Возможности

  • На данный момент поддерживает все EFI-совместимые версии Windows x64, когда-либо выпущенные, от Vista SP1 до Windows 11.

  • Простота в использовании: можно загрузить с USB-накопителя или EFI-раздела Windows с помощью загрузчика, который автоматически находит и загружает Windows. Драйвер также можно загрузить и настроить вручную с помощью UEFI shell или загрузчика.

  • Активно использует библиотеку дизассемблера Zydis для быстрого декодирования инструкций во время выполнения, что обеспечивает более надежный анализ, чем при сопоставлении сигнатур, которое часто требует изменений с выходом новых обновлений ОС.

  • Работает пассивно: драйвер не загружает и не запускает диспетчер загрузки Windows. Вместо этого он реагирует на загрузку bootmgfw.efi диспетчером загрузки прошивки через меню выбора загрузки или EFI-приложение, например загрузчик. Если загружается ОС, отличная от Windows, драйвер автоматически выгружается.

  • Поддерживает четырехэтапное патчирование для случаев, когда bootmgfw.efi запускает bootmgr.efi вместо winload.efi. Это происходит, когда загружается WIM-файл для загрузки WinPE, установки Windows или режима восстановления Windows.

  • Восстановление без сбоев: в случае неудачного патча драйвер отобразит информацию об ошибке и предложит продолжить загрузку или перезагрузиться, нажав ESC. Это справедливо даже для финального этапа патча ядра, так как последний этап происходит до вызова ExitBootServices. Многие UEFI-буткиты для Windows перехватывают OslArchTransferToKernel, который, хотя и легко находится по сигнатуре, является функцией, выполняющейся в защищенном режиме после ExitBootServices. Это означает, что службы загрузки недоступны для оповещения пользователя о проблеме. bsod

    Имитация сбоя патча с информацией об ошибке

  • Отладка: может выводить сообщения в отладчик ядра и на экран (буферизованно) на этапе патча ядра, а также на последовательный порт или без буферизации на экран на этапах патча диспетчера загрузки и загрузчика. Если драйвер скомпилирован с отладочной информацией PDB, можно загрузить отладочные символы в любой момент после инициализации HAL, указав виртуальную базу DXE-драйвера и отлаживая его как обычный NT-драйвер.

  • Обход DSE: доступен либо как прямое отключение DSE в стиле UPGDSED во время загрузки, либо как перехват EFI-службы времени выполнения SetVariable(). Последний служит произвольным бэкдором чтения/записи в режиме ядра, который можно вызвать из Windows с помощью NtSetSystemEnvironmentValueEx и позволяет установить g_CiEnabled/g_CiOptions в желаемое значение. Предоставляется небольшое приложение в стиле DSEFix с именем EfiDSEFix.exe, которое можно использовать для этого. Также можно оставить DSE включенным и отключить только PatchGuard. Загрузчик по умолчанию будет использовать метод перехвата SetVariable, поскольку некоторые античит и антивирусные программы не понимают разницы между читами или вредоносным ПО и самоподписанными драйверами в целом и нацелены на исправление UPGDSED.

  • Поддерживает модифицированные на диске ядра и загрузчики, патча ImgpValidateImageHash на каждом этапе, а также ImgpFilterValidationFailure, который может молчаливо сообщать о некоторых нарушениях в TPM или журнал SI.

  • Позволяет Secure Boot работать с Windows 7 (это не шутка!). Сама Windows 7 не поддерживает Secure Boot, и (официально) даже не может загружаться без CSM. Это полезно для тех, кто хочет использовать Windows 7 на защищенном устройстве, требующем WHQL Secure Boot. Запись в вики о том, как это настроить, здесь. win7_secureboot

    WinObjEx64 на Windows 7 с включенным Secure Boot

Проблемы и ограничения

  • EfiGuard не может отключить Hypervisor-enforced Code Integrity (HVCI или HyperGuard), поскольку HVCI работает на более высоком уровне привилегий. EfiGuard может сосуществовать с HVCI и даже успешно отключает PatchGuard в обычном ядре, но это бесполезно на практике, так как HVCI перехватывает то, что ранее делал PatchGuard. Оба типа обхода DSE становятся бесполезными из-за HVCI: патч во время загрузки не действует, потому что ядро делегирует проверки целостности безопасному ядру, а перехват SetVariable вызовет ошибку SECURE_KERNEL_ERROR при попытке записи в g_CiOptions.
  • Checked-ядра не поддерживаются из-за различий в коде инициализации PatchGuard и DSE, вызванных отключенной оптимизацией и добавленными утверждениями, а также дополнительных изменений PatchGuard в checked-ядрах. Это не должно быть проблемой, так как checked-ядра обычно бесполезны без подключенного отладчика ядра, который отключает PatchGuard.

Использование

Существует два способа использования EfiGuard: загрузка приложения-загрузчика, которое загрузит драйвер и запустит Windows, или установка драйвера в качестве записи UEFI-драйвера, чтобы он загружался автоматически прошивкой.

Установка драйвера может быть предпочтительнее в некоторых продвинутых конфигурациях, например при мультизагрузке, но загрузчик проще всего использовать, и он должен хорошо работать во всех конфигурациях. См. таблицу ниже для основных различий между двумя методами. Если сомневаетесь, выбирайте приложение-загрузчик.

РасположениеУстановкаМожно пропустить?Какая ОС загружается?
UEFI Driver EntryДолжен быть на ESPЧерез UEFI Shell❌Та же, что и раньше
LoaderГде угодноНе требуется✔️Windows

Сравнение загрузчика и записи UEFI-драйвера

Загрузка через загрузчик

  1. Скачайте EfiGuard и переименуйте EFI/Boot/Loader.efi в bootx64.efi.
  2. Поместите файлы на загрузочный диск, например USB-накопитель, отформатированный в FAT32 (для физических машин), или ISO/виртуальный диск (для ВМ). Предположим, диск X:, пути для двух файлов теперь должны быть X:/EFI/Boot/{bootx64|EfiGuardDxe}.efi
  3. Загрузите машину с диска, который вы использовали на шаге 2. Большинство прошивок предоставляют меню загрузки для этого через F8/F10/F11/F12. Если нет, вам нужно будет настроить BIOS на загрузку с нового диска.
  4. Теперь Windows должна загрузиться, и вы должны увидеть сообщения EfiGuard во время загрузки.
  5. Если вы загрузились с перехватом SetVariable (по умолчанию), запустите EfiDSEFix.exe -d в командной строке от имени администратора после загрузки, чтобы отключить DSE, или запустите EfiDSEFix.exe для просмотра полного списка опций.

Обратите внимание, что вам не нужно использовать отдельный диск для загрузчика. При желании вы можете установить EfiGuard на ESP, на котором уже установлена Windows. Однако это несколько сложнее, так как вам нужно будет добавить запись UEFI-загрузки для загрузчика.

Скачать инструмент