Специалисты компании FireEye обнаружили серьезную недоработку безопасности в инструменте EMET [1,2,3,4,5,6,7], которая позволяет достаточно просто отключить его механизмы защиты процессов с использованием его же встроенных функций. Уязвимость присутствует в предыдущих версиях EMET, т. е. в версиях до актуальной 5.5. Пользователям этих версий рекомендуется обновить EMET до последней версии.

Сам EMET поддерживает внутренний механизм снятия перехватов с API-функций системных библиотек в защищаемых процессах. Эта функция применяется в том случае, когда нужно оперативно отключить защиту процесса, за реализацию которой отвечает динамическая библиотека emet.dll. Полное отключение защиты реализуется обработчиком DllMain с кодом выгрузки DLL_PROCESS_DETACH. В силу того, что emet.dll не перехватывает функцию kernel32!GetModuleHandleW и не контролирует ее поведение, шелл-коду достаточно вызвать GetModuleHandleW для получения адреса загрузки DLL в памяти и вызвать DllMain, передав функции это значение и константу выгрузки.
Читать полностью »