> >

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

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

//cdn.atraining.ru/i/at300x300.jpg300300

Привет.
 
Со времени выхода технологического превью 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
 

Легализация полного 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:
 
EMET 4.0 - Certificate Trust
 
После включения данной технологии необходимо настроить, какие сертификаты для каких сайтов Вы будете отслеживать. Это делается в меню ConfigureCertificate Trust:
 
EMET 4.0 - Настраиваем Certificate Trust
 
Что же туда добавлять и как? Рассмотрим на примере.
 
Допустим, я часто подключаюсь к облачным сервисам Office365, в частности – веду курсы через Lync 2013. Технически, подключение к курсу – это подключение к узлу https://meet.lync.com. Вот его сертификат:
 
EMET 4.0 - Сертификат meet.lync.com
 
Вот его иерархия выдачи:
 
EMET 4.0 - Иерархия сертификата meet.lync.com
 
Открываем корневик:
 
Trusted Root CA от meet.lync.com
 
Фиговый, замечу, корневик – с md5 и килобитным ключом, но не суть. :)
 
Я хочу подстраховаться от того, что кто-нибудь, допустим, поставит между мной и узлом https://meet.lync.com например Microsoft TMG 2010 и включит там запись “развёрнутого” SSL-трафика, а после будет его обратно “заворачивать”, показывая мне, что с сертификатом всё ОК. Как он это сделает – допустим, если я подключаюсь из сети организации, он может раздать мне валидный корневой сертификат TMG через политику, или как-то ещё – не суть.
 
Создаю новое описание нормального сертификата – это называется Pinning Rules:
 
EMET 4.0 - Правила для Certificate Trust
 
Добавляю туда искомый сертификат (добавляются только уже существующие в Trusted Root-хранилище, так что озаботьтесь выгрузкой сертификата в файл и копированием файла в хранилище):
 
EMET 4.0 - Список Trusted Root CA
 
Кстати, можно добавить и несколько к одному правилу – это поможет, если хочется сделать правило вида “Все сертификаты фирмы X”, куда добавить все их самоподписанные, например.
 
Далее.
 
Если хочется, чтобы правило было не строгим – т.е. в случае, когда корневой сертификат не подпал под один из указанных, сессия не отбивалась, то есть Optional Checks For Non-Pinned Root CA. Если Вы переключите один из параметров из состояния N/A в явно указанное значение, то правило начнёт допускать и другие корневые CA, подпадающие под это правило. Допустим, Вы хотите создать правило, суть которого – “Я сейчас точно не могу сказать, какой сертификат предъявят, но он должен быть с ключом от 2К, в x.500-атрибутах должна быть Россия, а хэш должен быть точно не-MD. Тогда будет что-то такое:
 
EMET 4.0 - Правила для Certificate Trust
 
Теперь осталось только добавить правило для URL, которое будет использовать одно из наших только что созданных условий:
 
EMET 4.0 - Создание правила проверки SSL для сайта
 
В общем-то всё. Теперь подсунуть левый сертификат будет сложно – EMET чутко следит за установкой сессии.

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

Обычно я тут пишу, что хороший EMET стал ещё лучше. В этот раз я напишу то же самое. :)
 
Скачать тут: http://www.microsoft.com/en-us/download/details.aspx?id=38761
 
Да, и в планах Microsoft выпустить RTM уже в мае. Так что – используйте, штука определённо стоящая.
 
Удач!

Автор

@
info@atraining.ruAdvanced Training
//cdn.atraining.ru/i/at300x300.jpg300300

Полезные статьи

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