Microsoft EMET 5.0 - инструмент повышения защиты системы

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
7,814
Реакции
6,593
Enhanced Mitigation Experience Toolkit (EMET)

Cкачать: MSDN Review and Download Links
Системные требования:
Windows XP SP3 - Windows 8.1
(для EMET 5.0 - начиная с Windows Vista SP2)
Net FrameWork 4.0​

Описание

EMET – программа от Microsoft для повышения “нижней планки” уровня защиты Windows, призванная защитить программы написанные без учёта современных технологий безопасности. EMET управляет включением и отключением технологий защиты, которые теоретически могут быть добавлены на фазе компиляции программного обеспечения. Настоятельно рекомендуется использовать EMET для усиления защиты компьютеров под управлением ОС Windows, если вы знаете что делаете.

Следует понимать, что EMET:
- рассчитана на продвинутого пользователя;
- является целиком настраиваемая как для конкретного ПО, так и системы в целом;

EMET позволяет управлять такими защитными функциями как:
  1. (DEP) Data Execution Prevention
  2. (ASLR) Address Space Layout Randomization
  3. (SEHOP) Structured Exception Handler Overwrite Protection
  4. (EAT или EAF) Export Address Table Access Filtering
  5. (HSA) Heap Spray Allocation
  6. (NPA) Null Page Allocation
  7. (BUR) Bottom-Up Rand
  8. (ROP) Load Library Check – Return Oriented Programming *
  9. (ROP) Memory Protection Check – Return Oriented Programming *
  10. (ROP) Caller Checks – Return Oriented Programming *
  11. (ROP) Simulate Execution Flow – Return Oriented Programming *
  12. (ROP) Stack Pivot – Return Oriented Programming *
  13. (Pinning) Certificate Trust
  14. (ASR) Attack Surface Reduction (появится в версии 5.0)
  15. (EAF+) Export Address Table Filtering Plus (появится в версии 5.0)
* - только для 32-битных процессов.

Прежде чем рассматривать основные особенности этого инструмента, нужно прояснить несколько моментов:
  • EMET не является заменой антивируса или HIPS, поскольку не имеет функционала таких средств: не содержит баз сигнатур или специальных поведенческих шаблонов угроз.
  • EMET не является заменой песочнице (sandbox), поскольку не предназначен для этого и не способен эмулировать действия приложения.
  • EMET не является 100% системой защиты от эксплойтов, поскольку, по сути, ориентирован на отслеживание уже известных способов эксплуатации и не сможет помочь против методов эксплуатирования, которые ему неизвестны.
  • EMET ориентирован на продвинутых пользователей, которые умеют задавать соответствующие системные настройки и реагировать на поступающие сообщения.
  • EMET является бесплатным в использовании.
Главное окно EMET.

e4f4890448593c44d392221db62ee515.png


С точки зрения защиты от эксплойтов инструмент имеет два типа настроек: для системы в целом, т. е. общее правило для всех приложений в системе (System Status) и для конкретных приложений (Configure Applications). Настройки для системы включают в себя четыре главных пункта:
  • Data Execution Prevention (DEP) — определяет для каких приложений следует использовать DEP.
  • Structured Exception Handler Overwrite Protection (SEHOP) — определяет для каких приложений следует использовать технику защиты обработчиков SEH от перезаписи. Модификация обработчиков SEH в моде у эксплойтов уже давно. SEHOP был введен на уровне системы уже с Vista SP1.
  • Address Space Layout Randmization (ASLR) — определяет для каких приложений следует использовать ASLR.
  • Certificate Trust (Pinning) — функция доступна только для Internet Explorer и позволяет вручную создавать правила проверки цифровых сертификатов SSL/TLS соединений при посещении конкретных веб-ресурсов.

Расшифровку настроек DEP, ASLR, SEHOP см. здесь.
Инструмент поддерживает встроенные профили защиты для быстрой настройки:
  • Maximum Security Settings — опция включает все системные настройки на максимальный уровень.
  • Recommended Security Settings — опция включает системные настройки до «рекомендуемого уровня». В отличие от Maximum Security Settings, понижает статус DEP и SEHOP до App Opt In, т. е. включая эти настройки (по-умолчанию) только для ключевых системных процессов.

Проверить статус процессов с включенным DEP, ASLR вы можете, например, с помощью Process Explorer, задав в настройках отображение соответствующих столбцов. View->Select Columns->DEP Status, ASLR Enabled.

f7b257e77272819d41d35b395ea6c5a5.png


EMET позволяет защитить приложение, в том числе, от следующих весьма известных методов, которыми пользуются эксплойты:
  • ROP — давно известный и широко применяемый эксплойтами метод, позволяющий через специальные «кодовые гаджеты» на стеке добиться исполнения требуемой последовательности кода, обходя т. о. DEP.
  • SEH overwrite — блоки SEH (следующий, адрес обработчика) расположены на стеке и могут быть перезаписаны, например, как часть buffer overflow; соответственно, злоумышленники могут воспользоваться этой уязвимостью для передачи управления на свой код через обработчик исключения.
  • Stack pivoting — метод, применяемый для перемещения регистра стека ESP на нужный для эксплойта адрес.
  • Heapspray — эксплойты пользуются этим методом для выделения большого количества участков памяти с размещением там кода эксплойта, что увеличивает вероятность передачи управления на код, необходимый атакующему.

EMET группирует эти методы, относя некоторые из них к определенной группе. Ниже представлен скриншот настроек для процессов, в котором видно каким образом сгруппированы способы смягчения и используемые эксплойтами методы.

b98769fb34281a1d82c8fc38fbf64696.png


На этом скриншоте показаны настройки, относящиеся непосредственно к памяти.
  • DEP — реализуется за счет вызова kernel32!SetProcessDEPPolicy в контексте контролируемого EMET процесса.
  • BottomUpASLR — в некотором роде представляет собой ASLR для выделяемых регионов памяти на стеке и в куче (по мере выделения памяти и в старших адресах).
  • NullPage — см. MS13-031.
  • MandatoryASLR — принудительно включает ASLR для динамически загружаемых библиотек процесса, т. о. делая непредсказуемым адреса их загрузки. Реализуется за счет перехвата функции ntdll!NtMapViewOfSection.
  • HeapSpray — позволяет фиксировать попытки операций heapspraying за счет резервирования памяти кучи.


d479797a7e1e386ed13c86b45f82f896.png


  • LoadLib — отслеживание операций LoadLibrary с целью предотвращения загрузки библиотеки в память по пути UNC, например, \\server1\share.dll
  • MemProt — запрет изменения статуса страниц стека на executable.
  • Caller — также относится к ROP и позволяет наблюдать за тем, с помощью какой инструкции была вызвана API, т. е. контроль за тем, чтобы функция была вызвана с помощью call, а не ret, что широко применяется в эксплойтах.
  • SimExecFlow — позволяет обнаруживать ROP-гаджеты после вызова контролируемой EMET функции.
  • StackPivot — позволяет обнаруживать ситуации stack pivoting.


3c0b3ec7148a723cc7e49cf63bfb7f55.png


  • SEHOP — отслеживает попытки эксплуатирования обработчиков SEH. На самом деле такая возможность введена в самой ОС, начиная с Vista SP1. EMET позволяет использовать такую возможность и на системах ниже Vista SP1.
  • EAF (Export Address Table Access Filtering) — запрещает какие-либо операции обращения к странице памяти, на которой расположена таблица экспорта модуля, в зависимости от кода, который пытается получить к ней доступ. Т. е. разрешает к ней доступ только для кода, который принадлежит известному загруженному модулю. Используется эксплойтами (и не только) при ручном разборе таблицы экспорта модуля с целью получения адреса нужной функции.

Для выполнения всех этих операций EMET использует хорошо нам знакомый метод inline code patching, который наглядно представлен на скриншоте ниже (процесс, находящийся под контролем EMET).

e6e84fb2925986860690df12cf315ebd.png


EMET имеет дополнительные расширенные возможности для приложений, которые доступны из Application Configuration.

d525a23c09c49f0d92e7e87f38408f04.png


  • Deep Hooks — для защиты критических API EMET будет не только перехватывать сами эти функции, но и те функции (другие API), которые из них будут вызываться.
  • Anti Detours — блокирует действия эксплойтов, которые пропускают первые байты API (обычно пролог) и передают управление на инструкции, следующие за ними.
  • Banned Functions — запрещает вызов API-функций из специального списка. В 4-й версии в этом списке присутствует только функция ntdll!LdrHotPatchRoutine.

Задайте действие, которое будет выполнять EMET по возникновению одного из условий эксплуатации. Возможные варианты: Stop on exploit (блокирование действия с отображением специального сообщения и завершением процесса) и Audit only (уведомление о действии).

09833c33b756b29c55f3830eddcea21e.png


Что следует защищать EMET?

00dea47ef6116ef40d81e9f113e1aa61.png


Обратите внимание, что EMET имеет список процессов, для которых он будет включен по-умолчанию. В эти процессы входят: веб-браузер MS Internet Explorer, Adobe Acrobat, Java, MS Office. Список процессов Вы можете увидеть в окне Apps.
Мы выделяем следующие особенности касательно защиты приложений с использованием EMET:
  • Рассмотрите возможность включения EMET для процессов Skype (или другой мессенжер, которым вы пользуетесь), а также вашего браузера. Поскольку эти компоненты могут быть эксплуатированы удаленно.
  • Заметьте, что EMET не является полностью совместимым со всеми приложениями, не говоря уже об отладчиках и прочих системных инструментах. Поэтому, если вы являетесь администратором, не включайте EMET сразу для всех вам необходимых процессах в сети, лучше протестируйте совместимость с этими приложениями отдельно.
  • Список возможных несовместимостей и их обсуждение см. здесь.
d05cb00c189d3dcb2d59a03b5a6a443c.png

Список несовместимостей механизмов EMET с различными приложениями.
А также см. здесь.

Новые методы защиты, которые появятся в версии 5.0 называются Attack Surface Reduction (ASR) и Export Address Table Filtering Plus (EAF+). Первый из них предусматривает настройки для ограничения функциональности отдельных программ.

002.png

Например, администратор может запретить программе Microsoft Word обращаться к плагину Adobe Flash Player.

003.png


Реализована поддержка зон безопасности, так что Internet Explorer, к примеру, можно настроить на исполнение апплетов Java только из внутренних доменов корпоративной сети, но не из интернета.

EAF+ защищает низкоуровневые модули от некоторых техник, которые используются для построения динамических ROP-конструкций в памяти из таблиц.

004.png


Такие технологии как DEP, ASLR, SEHOP и другие могут применяться как по умолчанию, так и для отдельных приложений. В версии 4.0 их список расширился, а использование стало более гибким. С помощью опции Wildcard, например, можно быстро выбрать программу, которая нуждается в защите, а оптимизированная функция RopCheck стала работать гораздо быстрее. Также появился режим аудита, в котором атакованный процесс не останавливается, и специалист может попробовать выяснить детали.

Где взять и почему ж такую полезную штуку не встроят в Windows Server, да и вообще – в любую ОС?

Загрузить его можно отсюда:
EMET 4.1.
EMET 5.0. Tech PreView

Почему не встроят – ну, на то есть несколько причин.


Во-первых, часть технологий – ASLR, DEP, SEHOP – уже интегрированы в ОС начиная с Vista (а тот же DEP – с XP). Просто EMET даёт возможность их “красиво” настроить из единой точки.

Во-вторых, множество ПО написано не со 100% совместимостью со всеми требованиями, выдвигаемыми со стороны ОС. Достаточно частой является ситуация, когда при выходе новой ОС производитель ПО (или драйверов) делает минимальное тестирование своего продукта. Вида “вроде подожглось, значит всё ОК, кому надо – в режиме совместимости пусть запускают, у нас своих дел много”. К сожалению, политика корпорации Microsoft, которая поддерживает совместимость ПО на протяжении десятилетий, имеет такой негативный эффект как наплевательское отношение ряда производителей ПО к выпуску новых версий продуктов. Поэтому, когда на новой платформе “закручиваются гайки” по уровню безопасности, это всегда делается крайне медленно и осторожно – именно из соображений совместимости. Достаточно усилить настройки по-умолчанию слишком сильно, и во всех СМИ будет синхронный крик “Microsoft специально делает новую ОС несовместимой со старым ПО, потому что хочет, чтобы покупали новое ПО”. Хотя по факту Microsoft просто заботится о безопасности пользователей и не хочет отвечать за некачественное ПО сторонних разработчиков. Ведь когда такое ПО “роняет систему в синий экран”, весь негатив идёт на производителя ОС – вот ведь какие плохие разработчики в Microsoft, у них же ОС падает. То, что это вызвано noname-драйвером китайского mp3-проигрывателя, который пытается записывать в защищённую область памяти, написано на экране, и понятно профессионалам, но в СМИ профессионалы в IT обычно такие статьи не пишут. :)

Поэтому выпустить EMET интегрированным в ОС, притом сразу с “максимальными” настройками – это убить множество любительского (да и не только) ПО и вызвать шквал негодования.

Полезные ссылки:

Руководство Microsoft по EMET [PDF] здесь.
MSDN. Официальный обзор EMET здесь.
Презентация EMET на RECon'13 от одного из разработчиков здесь.
Использование через командную строку - здесь.

Подробнее о технологиях защиты:
Новый EMET 2.1 – обзор технологий DEP, ASLR, SEHOP, EAT/EAF, HSA, NPA, BUR
Новый EMET 3.5 – механизмы ROP
Microsoft EMET 4.0 – Новая планка безопасности
EMET 4.0 и Windows Server 2012 R2
MSDN. Описание новшеств EMET 5.0

Статья подготовлена по материалам:
http://deadlock.org.ua/kit/habr/post/16654
http://www.comss.info/page.php?al=Microsoft_EMET_40
http://www.xakep.ru/post/62113/
 
Назад
Сверху Снизу