Компания
228,47
рейтинг
24 июня 2013 в 16:05

Разработка → EMET v4 Release

На прошлой неделе бета-версия тулкита EMET v4 вышла в релиз. Мы уже писали о некоторых новых возможностях 4-й версии и хотели бы остановиться более подробно на самом релизе, поскольку этот инструмент действительно заслуживает внимания. Повторимся, что Enhanced Mitigation Experience Toolkit (EMET) использует превентивные методы по блокированию различных действий эксплойтов для защиты приложений от атак, которые имеют целью эксплуатирование flaws (или уязвимостей) в ПО и изменение потока выполнения кода. Несмотря на то, что современные Windows 7 и Windows 8 имеют встроенные, включенные по-умолчанию, возможности DEP и ASLR, направленные на смягчение (mitigation) последствий эксплуатирования, EMET позволяет ввести новые возможности блокирования действий эксплойтов, а также включить DEP или ASLR по-умолчанию, например, для устаревшей Windows XP.

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

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

Главное окно EMET.



С точки зрения защиты от эксплойтов инструмент имеет два типа настроек: для системы в целом, т. е. общее правило для всех приложений в системе (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.



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

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



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




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




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

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



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



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

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



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



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



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

Руководство Microsoft по EMET [PDF] здесь.
Презентация EMET на RECon'13 от одного из разработчиков здесь.
Автор: @esetnod32
ESET NOD32
рейтинг 228,47

Комментарии (5)

  • +1
    И все-таки эта штука для очень уж продвинутых пользователей. После установки у меня стали появляться периодические проблемы с запуском приложений. То Itunes, то Opera, то Sandboxie, даже родной Microsoft Excel вылетает. Вроде и с технологиями Microsoft знаком, и даже Руссиновича почитывал, а все равно не хочется сидеть и разбираться по каждому мелкому случаю. На работе снес сразу, дома еще попытаюсь разобраться, но чую тоже удалю в итоге, хотя надо признать, штука потенциально очень полезная для безопасности. Если кто подскажет, как заставить приложения работать и где найти точную причину их вылета, буду благодарен.
    • 0
      В принципе EMET и Sandboxie это полярно несовместимые вещи, особенно если учитывать специфику работы Sandboxie и ее перехваты в системе.
      Тестировал на Vista x32 и Windows 7 x64 в системе без всяких активных отладчиков/сандбоксов с Maximum Security Settings и активным EMET для Chrome + Skype — полет нормальный.
    • 0
      Там все достаточно гибко настраивается. Во первых, как это не банально звучит, попробовать обновить глюкавое приложение до последних версий.
      Если продолжаются вылеты, то пробовать отключать защиты для конкретного приложения. Для скайпа, например, как указанно в табличке выше, помогает отключение EAF.
      • 0
        Да, действительно, нужно было поэксперементировать с галочками. Во всех случаях, кроме Sandboxie, причиной было Caller Mitigation, о чем он собственно и писал во всплывающем сообщении.
        Что интересно, проблемы были именно с новыми версиями, а старые работали нормально, например Thunderbird, о котором я забыл упомянуть.
  • 0
    EMET стоит и дома и на защищаемых сетях. С 3 версией были глюки на терминалах (вылетал офис), апдейт до последней версии проблему решил.

    EMET позволяет ввести новые возможности блокирования действий эксплойтов, а также включить DEP или ASLR по-умолчанию, например, для устаревшей Windows XP.


    DEP да. ASLR нет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка