Microsoft EMET 4.0 – Новая планка безопасности

EMET 4.0 - нововведения и улучшения в очередной версии

Привет.

Со времени выхода технологического превью EMET 3.5 прошло достаточно много времени, и уже назревали вопросы – где, мол, хотя бы бета? Заявленный функционал радовал, и всё работало без вопросов, но всё ж как-то держать в production Tech Preview – некорректно. Microsoft не сидел сложа руки, и решил не доводить до полновесной версии 3.5, а сразу делать 4.0 – с новыми возможностями и большим количеством мелких, но важных улучшений в плане использования.

EMET 4.0 – Новое и улучшенное

  • Tic-tock
  • Изменения в установке EMET
  • Улучшенная реализация ROP
  • Режим аудита
  • Легализация полного ASLR
  • Защищаем не только *.exe
  • EMET 4.0 работает быстрее
  • Интерфейсные оптимизации
  • Работа с SSL/TLS – EMET Certificate Trust (Pinning)
  • Заключение и где скачать?

Приступим.

Tic-tock

Этим термином в последнее время в IT принято определять достаточно многое в плане развития, что можно разбить на две фазы – первую – “tick” – внедрение новых фич, вторую – “tock” – доработку и оптимизацию существующих. Если проследить по выходу EMET, то EMET 2.1 – “tic”, EMET 3.0 (как явное “допиливание до нужной степени применимости и удобства”) – “tock”, EMET 3.5 со своими фичами – опять “tic”, и EMET 4.0 – “tock”.

Изменения в установке EMET

Установка у EMET всегда была простой – теперь, если у Вас Windows 8 или Windows Server 2012, всё стало ещё удобнее. Дело в том, что предыдущая версия – EMET 3.5 – просила работоспособный .NET Framework 2.0, а он в NT 6.2 был на откидном месте – не ставился по умолчанию, плюс, когда надо было его добавить, Вы должны указать путь, откуда будет забираться дистрибутив – что-то вида \Sources\SxS. Теперь это не нужно – новый EMET использует .NET 4.0, который по умолчанию присутствует в Windows 8 / Windows Server 2012.

Положительный момент в том, что минимальные требования по ОС у EMET не увеличились – Вы по-прежнему можете установить его на Windows XP и Windows Server 2003 (хотя, конечно, не все возможности EMET, в силу использования ядер NT 5.1 / NT 5.2, будут доступны).

Улучшенная реализация ROP

Если следите за EMET’ом, то помните, что после выхода 3.5, который анонсировал пачку ROP’ов, практически сразу были придуманы обходные варианты (подробнее, например, здесь – http://repret.wordpress.com/2012/08/08/bypassing-emet-3-5s-rop-mitigations/ ). Хотя они и работали в малом проценте случаев, это не помешало ряду людей написать что-то вида “ну раз не 100% срабатывает , а 98.5%, то значит фу и не нужно совсем”. В общем-то, далее PoC такие атаки, в силу кучи дополнительных условий, и не пошли, но Microsoft поступила правильно и решила дожать ситуацию – теперь к реализуемым EMET 3.5 задачам добавлены следующие:

Блокировка низкоуровневых функций kernelbase!VirtualAlloc и ntdll!NtAllocateVirtualMemory

Ранее EMET делал хук только для kernel32!VirtualAlloc, теперь, включив пункт настроек под названием Deep Hooks (находится в меню ConfigureApplicationsOptionsAdvanced Configuration), вы включите отслеживание EMET’ом использования данных API.

Anti Detours – блокировка перехода к нехорошему коду после имитации начала “нормальной” функции

Один из, на мой взгляд, красивых способов обхода – известно, насколько глубоко EMET “пасёт” вызываемый код, поэтому можно скопировать кусок от начала “хорошего варианта функции”, а дальше передать управление на нужный код. Теперь, включив опцию Anti Detours (находится там же, в меню ConfigureApplicationsOptionsAdvanced Configuration), такая возможность отсекается.

Отключение заблокированных API-вызовов

Атака такого вида была продемонстрирована на CanSecWest 2013 – вкратце, там вызывалась старая API-функция ntdll!LdrHotPatchRoutine, игнорировавшая DEP и ASLR, и через неё шла атака. Включив в настройках опцию “Banned API” (находится всё там же, в меню ConfigureApplicationsOptionsAdvanced Configuration), вы уберёте и эту возможность для атаки.

Режим аудита

Раньше при нарушении защиты EMET убивал процесс. Без вариантов. Это, конечно, сурово, но иногда хочется не только срочно пресечь такие действия, но и поизучать их. В этом случае поможет новая функция EMET 4.0 – Audit Mode. Конфигурируется там же, где 3 вышеописанные настройки:

Режим аудита в EMET 4.0Режим аудита в EMET 4.0
(кликните для увеличения до 395 px на 253 px)
Учебный центр Advanced Traininginfo@atraining.ru

Легализация полного ASLR

Если помните, то в предыдущих версиях EMET на уровне всей ОС можно было включить в режим Always On только DEP – у ASLR такой возможности штатно не было, т.к. была велика вероятность, что включив ASLR везде, система может не загрузиться, т.к. драйверы сторонних производителей запросто могли уронить систему в BSoD, пытаясь обратиться по абсолютному смещению в памяти, не учитывая, что память “перетасовали”.

Способ включения этого был простым, через реестр, описан он в предыдущих статьях – ключевое в новой, 4й версии EMET, то, что теперь эта настройка штатная. Теперь ничего в реестре править не надо – и если у вас нет таких подозрительных драйверов (например, речь про виртуальную машину, где устройства синтетические), включайте и получайте более высокий уровень безопасности для компонентов ОС.

Защищаем не только *.exe

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

EMET 4.0 работает быстрее

Весь блок ROP-mitigations оптимизирован, поэтому загрузка в память и выполнение стартовых проверок идут быстрее – следовательно, меньше загрузка процессора в случае старта приложения, которое запускает пачку сервисов и/или загружает много dll’ок.

Интерфейсные оптимизации

Наконец-то можно ПРОСТО добавить приложение в защищаемые, после щёлкнуть на его названии правой кнопкой мыши и выбрать Enable All Mitigations, а не тыкать в каждую галочку. Для моего списка в 600+ приложений это просто спасение. :)

Наконец-то можно выбрать в меню Options пункт Show Full Path и увидеть, что несколько одинаково называющихся exe-файлов – это разные файлы из разных каталогов.

Работа с SSL/TLS – EMET Certificate Trust (Pinning)

Самая серьёзная новая защитная система – это Certificate Trust. Фактически, это механизм предотвращения атак класса MitM, состоящих в подделке сертификата. Такое весьма часто практикуется, кстати, и в корпоративных сетях, для перехвата и анализа защищённого трафика (обычно называется SSL-проксирование). Глобально данная технология включается прямо на стартовом экране EMET 4.0:

После включения данной технологии необходимо настроить, какие сертификаты для каких сайтов Вы будете отслеживать. Это делается в меню ConfigureCertificate Trust:

Что же туда добавлять и как? Рассмотрим на примере.

Допустим, я часто подключаюсь к облачным сервисам Office365, в частности – веду курсы через Lync 2013. Технически, подключение к курсу – это подключение к узлу https://meet.lync.com. Вот его сертификат:

Вот его иерархия выдачи:

Открываем корневик:

Trusted Root CA от meet.lync.comTrusted Root CA от meet.lync.com
(кликните для увеличения до 419 px на 522 px)
Учебный центр Advanced Traininginfo@atraining.ru

Фиговый, замечу, корневик – с md5 и килобитным ключом, но не суть. :)

Я хочу подстраховаться от того, что кто-нибудь, допустим, поставит между мной и узлом https://meet.lync.com например Microsoft TMG 2010 и включит там запись “развёрнутого” SSL-трафика, а после будет его обратно “заворачивать”, показывая мне, что с сертификатом всё ОК. Как он это сделает – допустим, если я подключаюсь из сети организации, он может раздать мне валидный корневой сертификат TMG через политику, или как-то ещё – не суть.

Создаю новое описание нормального сертификата – это называется Pinning Rules:

Добавляю туда искомый сертификат (добавляются только уже существующие в Trusted Root-хранилище, так что озаботьтесь выгрузкой сертификата в файл и копированием файла в хранилище):

EMET 4.0 - Список Trusted Root CAEMET 4.0 - Список Trusted Root CA
(кликните для увеличения до 693 px на 430 px)
Учебный центр Advanced Traininginfo@atraining.ru

Кстати, можно добавить и несколько к одному правилу – это поможет, если хочется сделать правило вида “Все сертификаты фирмы X”, куда добавить все их самоподписанные, например.

Далее.

Если хочется, чтобы правило было не строгим – т.е. в случае, когда корневой сертификат не подпал под один из указанных, сессия не отбивалась, то есть настройка Optional Checks For Non-Pinned Root CA. Если вы переключите один из параметров из состояния N/A в явно указанное значение, то правило начнёт допускать и другие корневые CA, подпадающие под это правило.

Пример – допустим, надо создать правило, суть которого – “Я сейчас точно не могу сказать, какой сертификат предъявят, но он должен быть с ключом от 2К, в x.500-атрибутах должна быть Россия, а хэш должен быть точно не-MD”. Тогда будет что-то такое:

Теперь осталось только добавить правило для URL, которое будет использовать одно из наших только что созданных условий:

В общем-то всё. Теперь подсунуть левый сертификат будет сложно – EMET чутко следит за установкой сессии.

Заключение и где скачать?

Обычно я тут пишу, что хороший EMET стал ещё лучше. В этот раз я напишу то же самое. :)

Скачать тут: http://www.microsoft.com/en-us/download/details.aspx?id=38761

Да, и в планах Microsoft выпустить RTM уже в мае. Так что – используйте, штука определённо стоящая.

Удач!

Возможно, вам будет также интересно почитать другие статьи про EMET на нашей Knowledge Base

Ruslan V. Karmanov

Зайдите на сайт под своей учётной записью, чтобы видеть комментарии под техническими статьями. Если учётной записи ещё нет - зарегистрируйтесь, это бесплатно.