Pull to refresh
0

Набор эксплойтов Angler EK специализируется на обходе механизмов безопасности EMET

Reading time4 min
Views3.5K
Специалисты FireEye сообщили об обнаружении новой модификации Angler Exploit Kit, который использует специальные приемы для обхода EMET. Речь идет о нескольких эксплойтах для Adobe Flash и MS Silverlight, которые используют нестандартные методы обхода механизмов безопасности EMET, используемые для блокирования вредоносных действий эксплойтов в памяти. Эксплойты обходят настройки DEP, EAF и EAF+ в новейшей версии EMET 5.5.



Мы уже много раз писали про EMET [1,2,3,4,5,6,7]. Этот инструмент позиционируется Microsoft как бесплатное и эффективное средство для защиты от RCE-эксплойтов, т. е. тех эксплойтов, которые используются злоумышленниками для удаленного исполнения кода. Новейшая версия EMET также содержит функцию противодействия LPE-эксплойтам, которые используют уязвимости в драйвере win32k.sys для повышения своих привилегий до уровня SYSTEM.

EMET принудительно включает DEP для процессов, блокируя попытки эксплойтов использовать RW-страницы памяти для исполнения программного кода. Эксплойты используют методы ROP для обхода DEP, при этом они опираются на специальные гаджеты кода и передают на них управление, используя для этого стек вызовов. Для обхода DEP необходимо, как минимум, добраться до вызова API-функции VirtualProtect, с помощью которой можно убрать бит NX с нужных страницы памяти.

Особенность одного из обнаруженных FireEye эксплойтов заключается в том, что он не использует ROP для обхода DEP. Вместо этого используются встроенные функции в библиотеках Flash.ocx и Coreclr.dll (Silverlight), с помощью которых вызываются VirtualProtect и VirtualAlloc с константой PAGE_EXECUTE_READWRITE. Ниже на рисунке представлен Silverlight эксплойт, который использует код библиотеки coreclr.dll для обхода DEP.


Рис. Вызов VirtualAlloc в библиотеке coreclr.dll, который помогает обойти DEP без ROP (данные FireEye).

В свою очередь, Flash эксплойт использует функции модуля flash.ocx для вызова VirtualProtect для обхода DEP перед исполнением шелл-кода.


Рис. Код с вызовом VirtualProtect в flash.ocx (данные FireEye).

Так как подобные манипуляции с кодом осуществляются во встроенных функциях ActionScript и Silverlight, EMET не способен эффективно использовать свои проверки адресов возврата вызываемых функций на стеке, что используется для обнаружения ROP (настройки EMET Caller Check, SimExecFlow, StackPivot).

Другая настройка, которую обходит эксплойт, называется EAF, а также ее расширенная модификация EAF+. Настройка EAF (Export Address Table Filtering) используется EMET для блокирования несанкционированного доступа к страницам памяти, которые содержат таблицу экспортов системных библиотек kernel32.dll и ntdll.dll. EMET различает код, который пытается получить доступ к таким страницам и если обнаруживает неопознанный источник, выводит соответствующее предупреждение. EAF+ расширяет EAF путем добавления в черный список динамических библиотек, которые чаще всего используются для эксплуатации. По умолчанию, EAF+ включает в себя черный список из библиотек mshtml.dll, flash*.ocx, jscript*.dll, vbscript.dll, vgx.dll.

JIT-код эксплойта Silverlight использует преимущества библиотеки фреймворка под названием coreclr.dll. Так как эта библиотека не включена в черный список EAF+, получаемый через нее доступ к таблицам экспорта системным библиотек не является нарушением политики безопасности EMET.


Рис. Вызов шелл-кода через Silverlight coreclr.dll (данные FireEye).


Рис. Будучи вызванным из Silverlight coreclr.dll шелл-код получает доступ к таблице импорта user32.dll для дальнейшего получения адреса GetProcAddress API, через который затем получает адреса остальных функций в обход EAF. Так как шелл-код использует легитимный вызов GetProcAddress, EMET воспринимает доступ кода в EAT модуля как легитимный (данные FireEye).


Рис. Список полученных эксплойтом адресов API-функций (данные FireEye).

Эксплуатация и обход EAF в случае с эксплойтом Flash выглядит следующим образом.

На первом этапе ActionScript код находит в памяти адрес начала модуля flash.ocx. После этого он выполняет поиск адреса директории импорта flash.ocx (Import Directory Table) и находит элемент директории импорта для kernel32.dll. Далее эксплойт читает содержимое буферов RvaImportLookupTable и RvaImportAddressTable для получения адресов необходимых API-функций и записывает эти адреса в отдельный буфер для использования шелл-кодом. После подготовительных действий, ActionScript код эксплойта вызывает VirtualProtect из flash.ocx (см. выше).

Далее управление передается на шелл-код первого уровня, который вызывает VirtualAlloc и копирует в выделенный буфер шелл-код второго уровня.


Рис. Вызов VirtualAlloc для копирования второй части шелл-кода (данные FireEye).

Как можно увидеть на рисунке ниже, шелл-код второго уровня снова пытается получить API-адрес GetProcAddress через таблицу импорта IAT, таким образом обходя проверки EAF. После получения адреса GetProcAddress, эта функция используется для получения других адресов API, что также позволяет обойти EAF, легитимизируя данный процесс.


Рис. Шелл-код читает IAT flash.ocx.

После выполнения всех операция, эксплойт запускает на исполнение дроппер вымогателя TeslaCrypt. Он также предусматривает и вариант своего выполнения без запуска исполняемого файла вредоносной программы на исполнение. затем модифицирует первые пять байт функции kernel32!ExitProcess inline-перехватом на функцию ntdll!RtlExitUserThread. Это помогает эксплойту быть уверенным в том, что процесс веб-браузера Internet Explorer не будет завершен после закрытия его вкладок. Ниже на скриншоте можно увидеть демонстрацию успешной работы эксплойта, которые запускает на исполнение TeslaCrypt при включенном EMET 5.5 в системе.





См. также.

EMET 5.5 вышел в релиз
habrahabr.ru/company/eset/blog/276311

EMET 5.5 вышел в бету
habrahabr.ru/company/eset/blog/268165

EMET, предотвращение эксплуатации и неочевидные настройки
habrahabr.ru/company/eset/blog/221129

EMET v4 Release
habrahabr.ru/company/eset/blog/184428

Microsoft добавила в Windows 10 очередную функцию защиты от эксплойтов
habrahabr.ru/company/eset/blog/281481
Tags:
Hubs:
Total votes 7: ↑6 and ↓1+5
Comments0

Articles

Information

Website
www.esetnod32.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Словакия