Привет.
В мае 2012 Microsoft наконец-то сделал новую версию своего hardening tool, являщегося абсолютно необходимым для установки на всех серверных (да и домашних) ОС семейства Microsoft. Нововведений относительно немного, но они стоят рассмотрения.
Что внутри
Первым делом – ознакомьтесь с моей статьёй про EMET 2.1. Весь функционал – DEP, SEHOP, ASLR, NullPage, HeapSpray, EAF, MandatoryASLR, BottomUpASLR – остался тем же, основные добавления в версии 3.0 – улучшения управляемости, совместимости и удобства работы.
Оглавление
- Переименование – много разных ASLR; ASLR, MandatoryASLR и BottomUpASLR
- Официальная поддержка
- Централизованное развёртывание
- Упрощение конфигурации EMET: профили
- Обновление с предыдущих версий
- EMET Notifier
- Расширенный синтаксис EMET_conf
Переименование – много разных ASLR
Наверняка Вы уже заметили по перечню, что есть ASLR, MandatoryASLR и BottomUpASLR.
Давайте упорядочим оные, опираясь на принятую в EMET терминологию.
ASLR
Когда этот термин идёт без дополнительных, то он обозначает режим работы данной технологии для всего, кроме компонентов ОС – компонентов и сервисов, например. Для них она вообще всегда включена, тут через EMET Вы ничего не сделаете.
Выбирая ASLR в режиме Disabled, Вы укажете системе, что надо включать ASLR только для компонентов ОС – для тех программ, которые разработаны с учётом этой технологии и поддерживают её, ASLR включаться не будет. Т.е. даже если программа запросит ASLR – её просьбу проигнорируют.
Вариант Opt In является стандартным – тогда, помимо компонентов ОС, ASLR будет применяться и к тем модулям, которые покажут поддержку данной технологии (например, скомпилированные Visual Studio 2010 с ключом /DYNAMICBASE), плюс явно выбранным в EMET модулям.
Вариант Always On для ASLR стандартно не доступен, но его можно включить так же, как в предыдущей версии – зайти в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EMET и выставить параметр EnableUnsafeSettings в единицу. В этом случае ASLR будет включён для всех исполняемых модулей вообще, что достаточно опасно на практике – я, например, сталкивался с ситуацией, что обновление драйверов устройства приносило с собой BSoD, так как новая версия некорректно поддерживала ASLR. Тут каждый решит для себя – если речь про виртуальную машину на базе Hyper-V, то я бы рекомендовал включать режим Always On, так как там ситуация с драйверами оборудования получше, и напороться на бета-драйвера, в которых ещё недоделана поддержка ASLR, практически невозможно, а вот полезный эффект от 100% ASLR всё ж явный.
MandatoryASLR
Данный термин обозначает следующее – даже если приложение никак не запрашивает ASLR, то, добавив его в список защищаемых EMET’ом приложений, Вы можете выбрать данный пункт и операционная система будет “форсированно” перемешивать при выделении блоки памяти, нужные для работы приложения. Это может привести к тому, что приложение завершится аварийно, поэтому надо рассматривать каждый конкретный случай отдельно, общего совета здесь нет.
BottomUpASLR
Так официально называют BUR, появившийся в EMET 2.1, информация про него есть в предыдущей версии статьи про EMET 2.1.
Официальная поддержка
Все предыдущие версии EMET официально не поддерживались фирмой Microsoft. Примерно как, допустим, утилиты из Resource Kit’ов для Windows Server 2003 / 2000 – они вроде как есть, но если Вы ими что-то натворите, то все последствия являются Вашими личными проблемами. Теперь EMET 3.0 является поддерживаемым решением, поэтому наличие его на серверах можно считать обязательным.
Поддержка Windows 8 / Windows Server 2012
Новый EMET работает на новых ОС от Microsoft. Функционально в плане механизмов защиты ничего нового там не добавляется, но в отличии от EMET 2.1 он корректно управляет уже имеющимися возможностями.
Централизованное развёртывание
Теперь EMET можно разворачивать через групповые политики и SCCM. Это делает очень удобным включение его в обязательный комплект ПО для серверов. Для работы с групповыми политиками в каталоге, куда установился EMET, есть подкаталог Deployment\Group Policy Files, там есть файл EMET.admx и языковый модуль к нему EMET.adml. Скопируйте admx-файл в %WINDIR%\PolicyDefinitions, а adml – в %WINDIR%\PolicyDefinitions\en-us, и при открытии оснастки по управлению групповой политикой в разделе Computer Configuration\Administrative Templates\Windows Components увидите новый раздел с предсказуемым названием EMET.
Упрощение конфигурации EMET: профили
Теперь настраивать EMET ещё проще, т.к. создан механизм хранения настроек в xml-файлах профилей, лежащих в подкаталоге Deployment\Protection Profiles. Формат файла достаточно прост, можно открыть любой из них (например, All.xml) Блокнотом и убедиться, что особо расписывать там нечего, да и внутри документирован он более чем достойно. Из интересного стоит отметить нововведение в синтаксисе – теперь можно указывать не полный URL защищаемого приложения (вида C:\Windows\System32\arp.exe), а использовать wildcard – вида *\arp.exe, чтобы указать, что где бы не находился указанный файл, в момент запуска к нему надо применить все указанные настройки.
Обновление с предыдущих версий
EMET 3.0 ставится на EMET 2.1 без вопросов, все настройки сохраняются. С EMET 2.0 та же ситуация, багов не заметно. Также проверено, устанавливающийся через group policy EMET нормально заменяет собой ранее установленный вручную, и не имеет каких-либо проблем.
EMET Notifier
Теперь при логине пользователя запускается полезное приложение – EMET Notifier (можно запустить и вручную, файл называется EMET_notifier.exe и располагается в том же каталоге, куда установился EMET 3.0). Оно будет в режиме реального времени информировать о ситуациях нарушения одной из защитных мер, известных EMET, и уведомлять что такое-то приложение было остановлено по такой-то причине. Крайне полезная штука, так как раньше чтобы понять почему именно такое-то приложение было остановлено, необходимо было предпринять много различных неочевидных действий. Т.е. теперь вариант “добавил приложение в EMET -> запустил, попробовал выполнять различные действия -> упало, надо выяснить, почему именно” стал крайне несложным.
Расширенный синтаксис EMET_conf
Файл EMET_conf.exe был и раньше, но теперь у него больше интересного. Например, при помощи его можно форсированно переприменить настройки EMET. Для этого есть секретный ключ –refresh – он не указан в выводе команды EMET_conf /?, но если выполнить EMET_conf –refresh, то EMET форсированно применит настройки, которые в данный момент указаны для данной системы. Это удобно, потому что иногда возникает ситуация – через групповые политики настройки изменены, изменение уже “разошлось” по сети, а на целевой системе EMET уже запущен и выполняет те правила, которые ему указаны при загрузке. Применение этого ключа позволит, не перезагружая систему, применить новые настройки.
Откуда загружать?
http://www.microsoft.com/en-us/download/details.aspx?id=29851
Выводы
Хороший инструмент для предотвращения работы эксплойтов и злонамеренного ПО стал ещё лучше, проще в применении и теперь с гарантией является “must have” для любой ОС, включая самые новые Windows 8 и Windows Server 2012. Если ещё не установили его – устанавливайте смело.