Привет.
Со времени выхода технологического превью 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 (находится в меню Configure – Applications – Options – Advanced Configuration), вы включите отслеживание EMET’ом использования данных API.
Anti Detours – блокировка перехода к нехорошему коду после имитации начала “нормальной” функции
Один из, на мой взгляд, красивых способов обхода – известно, насколько глубоко EMET “пасёт” вызываемый код, поэтому можно скопировать кусок от начала “хорошего варианта функции”, а дальше передать управление на нужный код. Теперь, включив опцию Anti Detours (находится там же, в меню Configure – Applications – Options – Advanced Configuration), такая возможность отсекается.
Отключение заблокированных API-вызовов
Атака такого вида была продемонстрирована на CanSecWest 2013 – вкратце, там вызывалась старая API-функция ntdll!LdrHotPatchRoutine
, игнорировавшая DEP и ASLR, и через неё шла атака. Включив в настройках опцию “Banned API” (находится всё там же, в меню Configure – Applications – Options – Advanced Configuration), вы уберёте и эту возможность для атаки.
Режим аудита
Раньше при нарушении защиты EMET убивал процесс. Без вариантов. Это, конечно, сурово, но иногда хочется не только срочно пресечь такие действия, но и поизучать их. В этом случае поможет новая функция EMET 4.0 – Audit Mode. Конфигурируется там же, где 3 вышеописанные настройки:
(кликните для увеличения до 395 px на 253 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.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:
(кликните для увеличения до 595 px на 396 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
После включения данной технологии необходимо настроить, какие сертификаты для каких сайтов Вы будете отслеживать. Это делается в меню Configure – Certificate Trust:
(кликните для увеличения до 795 px на 476 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Что же туда добавлять и как? Рассмотрим на примере.
Допустим, я часто подключаюсь к облачным сервисам Office365, в частности – веду курсы через Lync 2013. Технически, подключение к курсу – это подключение к узлу https://meet.lync.com. Вот его сертификат:
(кликните для увеличения до 419 px на 522 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Вот его иерархия выдачи:
(кликните для увеличения до 419 px на 522 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Открываем корневик:
(кликните для увеличения до 419 px на 522 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Фиговый, замечу, корневик – с md5 и килобитным ключом, но не суть. :)
Я хочу подстраховаться от того, что кто-нибудь, допустим, поставит между мной и узлом https://meet.lync.com например Microsoft TMG 2010 и включит там запись “развёрнутого” SSL-трафика, а после будет его обратно “заворачивать”, показывая мне, что с сертификатом всё ОК. Как он это сделает – допустим, если я подключаюсь из сети организации, он может раздать мне валидный корневой сертификат TMG через политику, или как-то ещё – не суть.
Создаю новое описание нормального сертификата – это называется Pinning Rules:
(кликните для увеличения до 795 px на 496 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Добавляю туда искомый сертификат (добавляются только уже существующие в Trusted Root-хранилище, так что озаботьтесь выгрузкой сертификата в файл и копированием файла в хранилище):
(кликните для увеличения до 693 px на 430 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Кстати, можно добавить и несколько к одному правилу – это поможет, если хочется сделать правило вида “Все сертификаты фирмы X”, куда добавить все их самоподписанные, например.
Далее.
Если хочется, чтобы правило было не строгим – т.е. в случае, когда корневой сертификат не подпал под один из указанных, сессия не отбивалась, то есть настройка Optional Checks For Non-Pinned Root CA. Если вы переключите один из параметров из состояния N/A в явно указанное значение, то правило начнёт допускать и другие корневые CA, подпадающие под это правило.
Пример – допустим, надо создать правило, суть которого – “Я сейчас точно не могу сказать, какой сертификат предъявят, но он должен быть с ключом от 2К, в x.500-атрибутах должна быть Россия, а хэш должен быть точно не-MD”. Тогда будет что-то такое:
(кликните для увеличения до 888 px на 476 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Теперь осталось только добавить правило для URL, которое будет использовать одно из наших только что созданных условий:
(кликните для увеличения до 888 px на 476 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
В общем-то всё. Теперь подсунуть левый сертификат будет сложно – EMET чутко следит за установкой сессии.
Заключение и где скачать?
Обычно я тут пишу, что хороший EMET стал ещё лучше. В этот раз я напишу то же самое. :)
Скачать тут: http://www.microsoft.com/en-us/download/details.aspx?id=38761
Да, и в планах Microsoft выпустить RTM уже в мае. Так что – используйте, штука определённо стоящая.
Удач!