Настройка защиты от эксплойтов

Защита от эксплойтов автоматически применяет множество методов защиты от эксплойтов как в процессах операционной системы, так и в отдельных приложениях.

Настройте эти параметры с помощью приложения «Безопасность Windows» на отдельном устройстве. Затем экспортируйте конфигурацию в виде XML-файла, чтобы ее можно было развернуть на других устройствах. Используйте групповую политику для одновременного распространения XML-файла на несколько устройств. Вы также можете настроить меры по снижению рисков с помощью PowerShell.

В этой статье перечислены все меры по снижению риска, доступные в функции «Защита от эксплойтов». В ней указано, можно ли применить меры по устранению рисков в масштабах всей системы или к отдельным приложениям, а также приведено краткое описание того, как они работают.

В этой статье также описывается, как включить или настроить устранение рисков с помощью поставщиков служб конфигурации Безопасность Windows, PowerShell и управления мобильными устройствами (MDM). Настройка параметров защиты от эксплойтов на одном устройстве — это первый шаг при создании конфигурации, которую можно развернуть в сети. Сведения о развертывании этой конфигурации на нескольких устройствах см. в статье "Импорт, экспорт и развертывание конфигураций защиты от эксплойтов".

Предупреждение

Некоторые технологии защиты безопасности могут иметь проблемы совместимости с некоторыми приложениями. Перед развертыванием конфигурации во всей рабочей среде или в остальной части сети следует протестировать защиту от эксплойтов во всех целевых сценариях использования с помощью режима аудита защиты от эксплойтов.

Меры защиты от эксплойтов

Все меры по устранению рисков можно настроить для отдельных приложений. Некоторые меры по устранению рисков также могут быть применены на уровне операционной системы.

Вы можете включить или выключить каждое из мер по устранению рисков или установить его значение по умолчанию. Некоторые способы устранения рисков имеют дополнительные параметры, указанные в описании в таблице.

Значения по умолчанию всегда указываются в скобках в параметре Использовать по умолчанию для каждой меры по устранению рисков. В следующем примере по умолчанию для защиты от выполнения данных используется значение "Включено".

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

Связанные командлеты PowerShell для каждого устранения рисков см. в командлетах PowerShell для устранения рисков защиты от эксплойтов в нижней части этой статьи.

Устранение рисков Описание Можно применить к Доступен режим аудита
Защита потока управления (CFG) Обеспечивает целостность потока управления для непрямых вызовов. При необходимости можно подавить экспорт и использовать строгий режим CFG. Уровень системы и уровень приложения Нет
Предотвращение выполнения данных (DEP) Предотвращает запуск кода со страниц памяти, предназначенных только для данных, таких как куча и стеки. Настраивается только для 32-разрядных версий (x86) приложений. Всегда включено для всех других архитектур. При необходимости можно включить эмуляцию ATL thunk. Уровень системы и уровень приложения Нет
Принудительный случайный выбор изображений (обязательный ASLR) Принудительное перемещение образов, не скомпилированных с /DYNAMICBASE. При необходимости можно сделать так, чтобы загрузка изображений без информации о релокации завершалась ошибкой. Уровень системы и уровень приложения Нет
Случайные выделения памяти (ASLR снизу вверх) Случайным образом выбирает расположение при выделении виртуальной памяти. Это включает кучи системных структур, стеки, TEB и PEB. При желании можно использовать более широкую дисперсию рандомизации для 64-разрядных процессов. Уровень системы и уровень приложения Нет
Проверка цепочек исключений (SEHOP) Обеспечивает целостность цепочки исключений во время отправки исключений. Настраивается только для 32-разрядных версий (x86) приложений. Уровень системы и уровень приложения Нет
Проверить целостность кучи Завершает процесс при обнаружении повреждения кучи. Уровень системы и уровень приложения Нет
Защита от произвольного кода (ACG) Предотвращает внедрение исполняемого кода, не связанного с изображением, и предотвращает изменение страниц кода. При необходимости можно разрешить отключение потока и удаленный откат до более ранней версии (настраивается только через PowerShell). Только на уровне приложения Да
Блокировать изображения низкого уровня целостности Препятствует загрузке изображений, помеченных низкой целостностью. Только на уровне приложения Да
Блокировать удаленные изображения Блокирует загрузку образов из удаленных устройств. Только на уровне приложения Нет
Блокировать ненадежные шрифты Предотвращает загрузку любых шрифтов на основе GDI, не установленных в каталоге системных шрифтов, особенно шрифтов из Интернета. Только на уровне приложения Да
Защита целостности кода Ограничивает загрузку изображений, подписанных корпорацией Майкрософт, WHQL или выше. При желании можно разрешить подписанные изображения Microsoft Store. Только на уровне приложения Да
Отключить точки расширения Отключает различные механизмы расширения, позволяющие внедрять библиотеки DLL во все процессы, такие как библиотеки DLL AppInit, обработчики окон и поставщики служб Winsock. Только на уровне приложения Нет
Отключить системные вызовы Win32k Предотвращает использование приложением таблицы системных вызовов Win32k. Только на уровне приложения Да
Не разрешать дочерние процессы Не позволяет приложению создавать дочерние процессы. Только на уровне приложения Да
Фильтрация адресов экспорта (EAF) Обнаруживает опасные операции, которые разрешаются вредоносным кодом. При необходимости можно проверить доступ модулей, обычно используемых эксплойтами. Только на уровне приложения Да
Фильтрация адресов импорта (IAF) Обнаруживает опасные операции, которые разрешаются вредоносным кодом. Только на уровне приложения Да
Имитация выполнения (SimExec) Гарантирует, что результаты вызовов чувствительных API возвращаются только легитимным вызывающим сторонам. Настраивается только для 32-разрядных версий (x86) приложений. Несовместимо с ACG. Только на уровне приложения Да
Проверка вызова API (CallerCheck) Гарантирует, что легитимные вызывающие стороны вызывают чувствительные API. Настраивается только для 32-разрядных версий (x86) приложений. Несовместимо с ACG Только на уровне приложения Да
Проверить использование дескриптора Приводит к возникновению исключения при любых недопустимых ссылках на дескрипторы. Только на уровне приложения Нет
Проверка целостности зависимостей изображения Требует подписи кода при загрузке зависимостей образа Windows. Только на уровне приложения Нет
Проверка целостности стека (StackPivot) Гарантирует, что стек не был перенаправлен для конфиденциальных API. Несовместимо с ACG. Только на уровне приложения Да

Важно!

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

Включено в Параметрах программы Включено в Параметрах системы Поведение
Да Нет Как определено в Параметрах программы
Да Да Как определено в Параметрах программы
Нет Да Как определено в Параметрах системы
Нет Нет По умолчанию, как определено в параметре Использовать по умолчанию
  • Пример 1. Майкл настраивает для предотвращения выполнения данных (DEP) в разделе Параметры системы значение Выключено по умолчанию. Затем Майкл добавляет приложение test.exe в раздел Параметры программы. В параметрах этого приложения для предотвращения выполнения данных (DEP) он включает параметр Переопределение параметров системы и устанавливает переключатель на Включено. В разделе Параметры программы нет других приложений. В результате DEP будет включено только для test.exe. Для всех остальных приложений параметр DEP применяться не будет.

  • Пример 2 Джози настраивает для предотвращения выполнения данных (DEP) в разделе Параметры системы значение Выключено по умолчанию. Затем Джози добавляет приложение test.exe в раздел Параметры программы. В параметрах этого приложения для предотвращения выполнения данных (DEP) она включает параметр Переопределение параметров системы и устанавливает переключатель на Включено. Джози также добавляет приложение miles.exe в раздел Параметры программы и настраивает для Защиты потока управления (CFG) значение Включено. Она не включает опцию Переопределение параметров системы для DEP или других мер защиты для данного приложения. В результате DEP будет включено для test.exe. Параметр DEP не будет включен для других приложений, включая miles.exe. Параметр CFG будет включен для miles.exe.

Примечание.

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

Настройте системные меры по снижению рисков с помощью приложения “Безопасность Windows”

Чтобы настроить средства защиты от эксплойтов на уровне системы и приложений на отдельном устройстве, используйте приложение Безопасность Windows:

  1. Откройте приложение \"Безопасность Windows\", выбрав значок щита на панели задач или открыв меню "Пуск" и выбрав параметр Безопасность Windows.

  2. Выберите плитку Управление приложениями и браузером (или значок приложения в левой панели меню), а затем выберите Защита от эксплойтов.

  3. В разделе Параметры системы найдите меры, которые необходимо настроить, и выберите один из следующих вариантов. Приложения, которые не настроены индивидуально в разделе Параметры программы, будут использовать параметры, настроенные здесь.

    • Включено по умолчанию: эта мера включена для приложений, для которых она не задана в разделе Параметры программы для конкретного приложения
    • Выключено по умолчанию: эта мера выключена для приложений, для которых она не задана в разделе Параметры программы для конкретного приложения
    • Использовать значение по умолчанию: эта мера включена или отключена в зависимости от конфигурации по умолчанию, настроенной при установке Windows 10 или Windows 11; значение по умолчанию (вкл. или выкл.) всегда указывается рядом с меткой Использовать по умолчанию для каждой меры

    Примечание.

    При изменении некоторых параметров может появиться окно контроля учетных записей пользователя. Введите учетные данные администратора, чтобы применить параметр.

    Изменение некоторых параметров может потребовать перезапуска устройства.

  4. Повторите эти действия конфигурации для всех мер по устранению рисков на уровне системы, которые требуется настроить.

  5. Перейдите в раздел Параметры программы и выберите приложение, к которому вы хотите применить меры.

    1. Если приложение, которое вы хотите настроить, уже указано в списке, выберите его и нажмите Изменить
    2. Если приложение не указано в списке, в верхней части списка найдите Добавить программу для индивидуальной настройки, а затем выберите, как вы хотите добавить приложение.
      • Используйте Добавить по имени программы, чтобы мера по снижению риска применялась ко всем запущенным процессам с таким именем. Необходимо указать файл с расширением. Вы можете ввести полный путь, чтобы ограничить применение меры по снижению риска только для приложения с таким именем, находящегося в этом расположении.
      • Нажмите Выбрать точный путь файла, чтобы использовать стандартное окно выбора файлов проводника Windows Explorer для поиска и выбора нужного файла.
  6. После выбора приложения вы увидите список всех мер, которые можно применить. Чтобы включить меры по устранению рисков, установите флажок, а затем переместите ползунок в положение Вкл.. Выберите дополнительные параметры. При выборе параметра Аудит меры по снижению риска будут применяться только в режиме аудита. Вы будете уведомлены при возникновении необходимости перезапуска процесса или приложения или перезапуска Windows.

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

Теперь вы можете экспортировать конфигурацию защиты эксплойтов в виде XML-файла или продолжить настройку рисков, относящихся к приложению.

Экспорт конфигурации в виде XML-файла позволяет копировать конфигурацию с одного устройства на другие устройства.

Справочные материалы по PowerShell

Для настройки защиты от эксплойтов можно использовать приложение «Безопасность Windows» или использовать командлеты PowerShell.

Параметры конфигурации, которые были изменены последними, будут применяться всегда — независимо от того, используете ли вы PowerShell или приложение «Безопасность Windows». Так как последняя измененная конфигурация всегда применяется, если приложение используется для настройки устранения рисков, используйте PowerShell для настройки того же устранения рисков, приложение будет обновляться, чтобы отобразить изменения, внесенные в PowerShell. Если вы затем снова используете приложение для изменения меры пр устранению рисков, это изменение будет применено.

Важно!

Любые изменения, развернутые на устройстве с помощью групповой политики, переопределяют локальную конфигурацию. При настройке начальной конфигурации используйте устройство, к которому не будет применена конфигурация групповой политики, чтобы ваши изменения не были переопределены.

Вы можете использовать глагол PowerShell Get или Set с командлетом ProcessMitigation. Использование Get выводит список текущих состояний конфигурации всех включённых на устройстве мер защиты — добавьте командлет -Name и EXE-файл приложения, чтобы увидеть меры защиты только для этого приложения:

Get-ProcessMitigation -Name processName.exe

Важно!

Ненастроенные меры защиты на уровне системы будут показывать состояние NOTSET.

Для системных параметров NOTSET обозначает, что для этой меры защиты задано значение по умолчанию.

Для параметров на уровне приложения NOTSET обозначает, что для этой меры защиты будет задано значение на уровне системы.

Параметр по умолчанию для каждой меры защиты на уровне системы можно увидеть в разделе \"Безопасность Windows\".

Используйте Set для настройки каждой меры в следующем формате:

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

Где:

  • <Область:>
    • -Name для указания мер, которые следует применить к определенному приложению. Укажите исполняемый файл приложения после того, как поставите этот флажок.
    • -System для указания того, что меру по снижению риска следует применять на уровне системы
  • <Действие>:
    • -Enable чтобы включить средство устранения проблемы
    • -Disable для отключения меры по снижению риска
  • <Снижение рисков>:

Например, чтобы включить средство предотвращения выполнения данных (DEP) с эмуляцией ATL thunk для исполняемого файла с именем testing.exe в папке C:\Apps\LOB\tests и запретить этому файлу создавать дочерние процессы, следует использовать следующую команду:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation

Важно!

Отделяйте каждый вариант меры по снижению риска запятыми.

Чтобы применить устранение рисков на уровне системы вместо конкретного приложения, используйте -System область. Например, чтобы включить DEP для всех процессов на устройстве, используйте следующую команду:

Set-Processmitigation -System -Enable DEP

Чтобы отключить меры защиты, можно заменить -Enable на -Disable. Однако для мер защиты на уровне приложения это приведет к отключению этой меры только для данного приложения.

Если вам нужно восстановить меру по снижению риска на уровне приложения до системного значения по умолчанию, необходимо также указать командлет -Remove. В следующем примере удаляется переопределение DEP для приложения test.exe, чтобы оно наследовало системные параметры по умолчанию:

Set-Processmitigation -Name test.exe -Remove -Disable DEP

Вы также можете перевести некоторые меры защиты в режим аудита. Вместо использования командлета PowerShell для устранения рисков используйте командлет режима аудита , как указано в приведенной ниже таблице командлетов защиты от эксплойтов .

Например, следующая команда включает мониторинг в режиме только аудита для меры защиты «Защита от произвольного кода» (ACG) для ранее использованного файла testing.exe, при этом нарушения политики регистрируются без блокировки выполнения:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

Режим аудита можно отключить, используя ту же команду, но заменив -Enable на -Disable.

Справочная таблица PowerShell

В этой таблице перечислены командлеты PowerShell (и связанный с ними командлет режима аудита), которые можно использовать для настройки мер устранения рисков.

Устранение рисков Применимо к Командлеты PowerShell Командлет режима аудита
Защита потока управления (CFG) Уровень системы и уровень приложения CFG, StrictCFG, SuppressExports Аудит недоступен
Предотвращение выполнения данных (DEP) Уровень системы и уровень приложения DEP, эмулировать AtlThunks Аудит недоступен
Принудительный случайный выбор изображений (обязательный ASLR) Уровень системы и уровень приложения ForceRelocateImages Аудит недоступен
Случайные выделения памяти (ASLR снизу вверх) Уровень системы и уровень приложения Снизу вверх, HighEntropy Аудит недоступен
Проверка цепочек исключений (SEHOP) Уровень системы и уровень приложения SEHOP, SEHOPTelemetry Аудит недоступен
Проверить целостность кучи Уровень системы и уровень приложения TerminateOnError Аудит недоступен
Защита от произвольного кода (ACG) Только на уровне приложения DynamicCode AuditDynamicCode
Блокировать изображения низкого уровня целостности Только на уровне приложения BlockLowLabel AuditImageLoad
Блокировать удаленные изображения Только на уровне приложения Блокировать удалённые изображения Аудит недоступен
Блокировать ненадежные шрифты Только на уровне приложения DisableNonSystemFonts AuditFont, FontAuditOnly
Защита целостности кода Только на уровне приложения MicrosoftSignedOnly, AllowStoreSignedBinaries AuditMicrosoftSigned, AuditStoreSigned
Отключить точки расширения Только на уровне приложения ExtensionPoint Аудит недоступен
Отключить системные вызовы Win32k Только на уровне приложения DisableWin32kSystemCalls AuditSystemCall
Не разрешать дочерние процессы Только на уровне приложения DisallowChildProcessCreation AuditChildProcess
Фильтрация адресов экспорта (EAF) Только на уровне приложения EnableExportAddressFilterPlus, EnableExportAddressFilter [1] Аудит недоступен[2]
Фильтрация адресов импорта (IAF) Только на уровне приложения EnableImportAddressFilter Аудит недоступен[2]
Имитация выполнения (SimExec) Только на уровне приложения EnableRopSimExec Аудит недоступен[2]
Проверка вызова API (CallerCheck) Только на уровне приложения EnableRopCallerCheck Аудит недоступен[2]
Проверить использование дескриптора Только на уровне приложения StrictHandle Аудит недоступен
Проверка целостности зависимостей изображения Только на уровне приложения Принудительно использовать подпись зависимостей модуля Аудит недоступен
Проверка целостности стека (StackPivot) Только на уровне приложения EnableRopStackPivot Аудит недоступен[2]

[1]. Чтобы включить фильтрацию адресов экспорта (EAF+) для процесса и ограничить его определенными модулями DLL, используйте следующий формат:

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll

[2]: Аудит для этой меры защиты недоступен через командлеты PowerShell.

Настройка уведомлений защиты от эксплойтов

Дополнительные сведения о настройке уведомлений при срабатывании правила и блокировке приложения или файла см. в разделе Безопасность Windows.