Новые технологии защиты от угроз
В Windows Server 2016 интегрированы мощные технологии защиты от угроз, что делает его активным компонентом вашей общей безопасности.
Эти технологии варьируются от блокировки внешних атак, пытающихся использовать уязвимости (Control Flow Guard), до устойчивости к атакам злоумышленников и программному обеспечению, которое получило административный доступ к серверу (Credential Guard и Device Guard).
Содержание:
Защита от угроз
В этой статье мы рассмотрим некоторые из этих новых функций.
Control Flow Guard
В Windows Server 2016 и Windows 10 операционная система защищается Control Flow Guard. Эта хорошо оптимизированная функция безопасности платформы, серьёзно затрудняет запуск произвольного кода с помощью таких эксплойтов, как переполнение буфера памяти.
Когда разработчик компилирует свой код, компилятор выполняет некоторые проверки безопасности кода, а затем определяет набор функций, который считается источником косвенного вызова. Эти косвенные вызовы могут исходить из эксплойта кода, в результате чего искажённые данные отправляются в функцию и ведут себя ненормально.
Косвенный вызов в не поддерживающем Control Flow Guard коде, может привести к переполнению буфера памяти, что повредит другие приложения или приведёт к привилегированному исполнению. Однако, поскольку компилятор идентифицировал эти наборы функций как потенциальные уязвимости и пометил, среда выполнения обнаружит их и предоставит дополнительную логику, проверяющую валидность этого косвенного вызова.
Если проверка косвенного вызова завершается неудачно, приложение прекратит работу, не позволяя ПО наносить дополнительный ущерб системе.
Device Guard в Windows Server 2016
Имея дело с тысячами создаваемых каждый день новых вредоносных файлов, использование традиционных методов, таких как антивирусные решения - обнаружение на основе сигнатур - для борьбы с вредоносными программами, для некоторых сред может быть недостаточно. Device Guard на Windows Server 2016 изменяет режим, в котором приложениям доверяют, если они не заблокированы антивирусом или другим решением безопасности, в режим, в котором операционная система доверяет только разрешённым вашим предприятием приложениям.
Device Guard защищает программное обеспечение, работающее как в режиме ядра, так и в пользовательском режиме. В режиме защиты ядра программа гарантирует, что драйверы, как минимум, подписаны известной подписью (WHQL). Вы можете их дополнительно ограничить, поместив в политике в список безопасных программ.
Device Guard блокирует драйверы от загрузки динамического кода. Блокирует любой, не находящийся в списке сейф-программы драйвер. Если не известный драйвер попытается изменить код в памяти, он выполняться на компьютере не будет.
А также, Device Guard обеспечивает режим пользователя (UMCI), это означает, что вы можете создавать политики целостности кода (CI), которые определяют то, что доверено и разрешено запускать на отдельных серверах.
Улучшенная защита режима ядра с использованием Hypervisor Code Integrity
Основные функциональные возможности и защита Device Guard начинается с аппаратного уровня. Устройства с процессорами, оснащёнными технологиями SLAT и расширениями виртуализации, такими как Intel VT x и AMD V, смогут использовать среду безопасности на основе виртуализации (VBS), которая, изолируя критические службы Windows от самой операционной системы, значительно повышает её безопасность.
Device Guard, для изолирования своей службы Hypervisor Code Integrity (HVCI) использует VBS, что позволяет ей защищать процессы и драйверы режима ядра от уязвимостей и атак. HVCI использует функциональность процессора, заставляя всё, работающее в режиме ядра программное обеспечение, безопасно распределять память.
Это означает, что после того, как выделена память, её состояние должно быть изменено с доступного для записи на только чтение или только запуск. Переводя память в эти состояния, она гарантирует, что атаки, использующие такие методы, как переполнение буфера или распыление массы, не смогут ввести вредоносный код в процессы и драйверы в режиме ядра.
Для обеспечения такого уровня безопасности, Device Guard имеет следующие требования к оборудованию и программному обеспечению:
- UEFI Secure Boot (возможно с отличным от Microsoft UEFI CA, удаленным из базы данных UEFI)
- Включённая по умолчанию в системной прошивке (BIOS) поддержка виртуализации
- Расширения виртуализации (например, Intel VT-x и AMD RVI)
- SLAT (например, Intel EPT и AMD RVI)
- IOMMU (например, Intel VT-d, AMD-Vi)
- UEFI BIOS сконфигурирован таким образом, чтобы предотвратить несанкционированный пользовательский доступ к зависящим от Device Guard устройствам безопасности (например, Secure Boot)
- Драйверы в режиме ядра подписаны и совместимы с целостностью защищённого гипервизором кода
Вы можете развернуть HVCI (защиту целостности на основе виртуализации) с помощью групповой политики (Group Policy). Рекомендуется включить HVCI на всех серверах под управлением Windows Server 2016. Для более подробной информации о конфигурации групповой политики перейдите на
Развёртывание политики целостности кода
Исторически так сложилось, что большинство вредоносных программ не подписаны. С помощью простого развёртывания политик целостности кода, любая организация получит немедленную защиту от, несущих ответственность за подавляющее большинство текущих атак, не подписанных вредоносных программ.
А также с помощью политик целостности кода, предприятие может точно выбрать, какие двоичные файлы могут выполняться как в режиме пользователя, так и в режиме ядра. Когда это полностью соблюдается, загружаться будут только определённые приложения или программное обеспечение с определёнными сигнатурами. Эта функция кардинально меняет безопасность на предприятии.
Вы можете запустить настраиваемый код целостности независимо от HVCI, таким образом сделать его доступным для устройств не соответствующих требованиям к оборудованию HVCI.
Политика настраиваемого кода целостности, предлагает широкий спектр опций, позволяющих администратору определить программному обеспечению на сервере определённый уровень контроля доверия, начиная от разрешения ПО, которое было подписано авторитетными производителями (например, Microsoft), до конкретного соответствия хэш файла.
Всегда, сначала рекомендуется развёртывать политики целостности кода в режиме аудита, что позволяет просмотреть, какие двоичные файлы загружаются не в соответствии с политикой. Затем, прежде чем запускать политику целостности кода в режим принудительного исполнения, вы можете её настроить.
Ниже, мы иллюстрируем два общих типа политик целостности кода: один для общего использования сервера и второй для заблокированных серверов:
- Серверы общего использования. Серверы, которые запускают множество рабочих нагрузок. Предполагается, что время от времени будет установлено новое необходимое для их работы программное обеспечение.
- Блокированные серверы. Серверы, которые выполняют определённую критическую по надёжности рабочую нагрузку, например, контроллеры домена или хоста Hyper-V.
Создание политики целостности кода для сервера общего использования
Чтобы создать политику целостности кода, вы можете начать с создания пробного сервера на своём стандартном оборудовании, а затем установить всё необходимое для запуска сервера, программное обеспечение. Затем запустите следующий командлет:
New-CIPolicy -Level Publisher -Fallback Hash -UserPEs -FilePath C:\CI\Publisher.xml
Больше информации. Подробнее смотрите на странице
Этот командлет создаёт политику путём сканирования файлов на сервере, извлечения из файлов информации производителя и добавления её в политику. Политика создаётся в режиме аудита. В режиме аудита могут загружаться не закрытые политикой CI файлы; однако они будут регистрироваться в журнале событий Microsoft\Windows\CodeIntegrity. Администраторы для обнаружения любых атак безопасности, могут проверять эти журналы.
В рамках обычных операций они получат обновления программного обеспечения или, возможно, добавят ПО от тех же его поставщиков. Поскольку в этих обновлениях и программном обеспечении «Производитель» остаётся неизменным, обновлять политику целостности кода нет необходимости.
Вы можете развернуть одну и ту же политику целостности кода на серверах той же категории и работать с одним и тем же оборудованием.
Создание политики целостности кода для заблокированного сервера
Для этой категории серверов, политика целостности кода создаётся таким же образом, но с различным уровнем контроля над доверяемым программным обеспечением. Для этого типа сервера рекомендуется использовать FilePublisher, что обеспечит загрузку на сервер только файлов из белого списка. Чтобы создать политику целостности кода, запустите следующий командлет:
New-CIPolicy -Level FilePublisher -Fallback Hash -UserPEs -FilePath C:\CI\FilePublisher.xml
Этот командлет создаёт политику, просматривая файлы на сервере и создавая в политике список программных файлов в виде файлов с их именами, версиями и издателем. Доверенными считаются только находящиеся в списке безопасных программ файлы, с соответствующим именем, издателем и равной или большей версией. В случае обновления программного обеспечения, обновление охватываемых политикой файлов, будет иметь более высокий номер версии; поэтому вам не нужно будет восстанавливать политику CI. Если на сервер добавлены новые файлы, вам нужно будет отсканировать новые файлы и объединить их с существующей политикой CI.
Командлет создаёт политику в режиме аудита. То есть, сначала вы можете проверить создаваемую политику в режиме аудита, что гарантирует, покрытие политикой CI всех доверяемых файлов. После того, как вы всё проверили, можно запустить следующий командлет, чтобы изменить его на режим применения:
Set-RuleOptions -FilePath C:\CI\FilePublisher.xml -Option 3 -delete
Развертывание политики целостности кода
И все же созданный New-CIPolicy файл xml, ещё не может быть использован системой Чтобы развернуть эту политику, её необходимо преобразовать в двоичный формат и скопировать в папку CodeIntegrity (system32).
Чтобы преобразовать XML-файл выполните следующий командлет:
ConvertFrom-CIPolicy C:\CI\FilePublisher.xml C:\CI\FilePublisher.bin
Развёртывание CI политики:
Copy-Item C:\CI\FilePublisher.bin C:\Windows\System32\CodeIntegrity\SiPolicy.p7b
Перезагрузите сервер, чтобы позволить службе целостности кода загрузить политику.
Подробнее. Для получения некоторой базовой информации о том, как начать работу с политиками целостности кода, а также получить дополнительную информацию о создании политики аудита и её развёртывании с помощью групповой политики, перейдите на
aspx#code_integrity_policies