Обновление PowerLoader’a для 64-разрядных систем на основе утечек кода новых эксплоитов

Обновление PowerLoader’a для 64-разрядных систем на основе утечек кода новых эксплоитов

Несколько месяцев назад в этом блоге я описывал функционал PowerLoader, в том числе интересный способ повышения привилегий в процессе explorer.exe. Код PowerLoader’а также используется в других уязвимостях, например, в Win32/Gapz дроппере.

Автор: ALEKSANDR MATROSOV

Несколько месяцев назад в этом блоге я описывал функционал PowerLoader, в том числе интересный способ повышения привилегий в процессе explorer.exe. Код PowerLoader’а также используется в других уязвимостях, например, в Win32/Gapz дроппере. В августе 2013-го вышла новая версия PowerLoader для 64-разрядных операционных систем (антивирусами семейства ESET детектируется как Win64/Vabushky.A). Эта версия использует 3 уязвимости для повышения локальных прав (Local privilege escalation - LPE): MS13-053 (CVE-2013-3660), MS12-041 (CVE-2012-1864), and MS12-042 (CVE-2012-0217). Ранее ни в самом PowerLoader, ни в похожих продуктах не было обзора совместного использования данных уязвимостей.

Win64/Vabushky – отличный пример того, как кибермошенники могут использовать ранее появившийся в сети код Carberp. Два эксплоита для 64-разрядных систем (CVE-2012-1864 и CVE-2012-0217) из обновления PowerLoader’а используют этот код. До утечки кода в Интернет, использование данных уязвимостей в 64-разрядных ОС не представлялось возможным. Также стоит отметить, что код PowerLoader’а был выложен в сеть в апреле 2013, вызвав скачок в использовании и распространении дропперовна его основе.

Дроппер для Win64/Vabushky упакован MPRESS, потому что это один из немногих упаковщиков, поддерживающих x64 PE32+ файлы. После распаковки дроппер извлекает оригинальный PE32+ заголовок, содержащий время компиляции.

1

Согласно дате компиляции, все файлы, в том числе тело дроппера, были скомпилированы в начале Августа. Таблица экспорта PowerLoader’а после распаковки от более ранней версии отличается незначительно:

2

Наиболее интересная часть последних изменений имеет отношение к повышению локальных прав.

Обновление LPE эксплоита

Код новой версии PowerLoader’а внедряется в explorer.exe и пытается повысить локальные права при своем выполнении в адресном пространстве процесса:

flow-graph

http://www.welivesecurity.com/wp-content/uploads/2013/08/flow-graph.png

Данный набор LPE эксплоитов может обойти некоторые виды песочницы, используемой в продуктах, обеспечивающих безопасность. Это имеет место благодаря тому, что прямые манипуляции некоторых структур ядра разрешены в пользовательском режиме при условии использования вызовов WinAPI.

CVE-2013-3660

Научный сотрудник Google – Трэвис Ордмэнди (Tavis Ormandy) – обнаружил уязвимость MS31-053 в Марте, детали эксплуатации были раскрыты в Мае, а патч стал доступен только в июле. До последней версии PowerLoader’а, мной не было замечено 64-разрядных вариантов MS31-053, публично была доступна только x86-версия, но PowerLoader использует 64-разрядный код. Отличное описание эксплуатации уязвимости можно найти здесь.

Прежде чем начать, создадим второй рабочий стол, чтобы с помощью манипуляций с GDI объектами скрывать видимые артефакты.

second desktop

http://www.welivesecurity.com/wp-content/uploads/2013/08/second-desktop.png

Основной код эксплуатации для CVE-201303660 представлен на следующем изображении:

CVE-2013-3660

http://www.welivesecurity.com/wp-content/uploads/2013/08/CVE-2013-3660.png

Shell код, выполняемый в nt!NtQueryIntervalProfile() выглядит следующим образом:

shellcode

http://www.welivesecurity.com/wp-content/uploads/2013/08/shellcode.png

Данный код эксплоита не подходит для 64-разрядных платформ MS Windows 8, так как он не может обойти технологию Intel SMEP (Supervisor Mode Execution Protection – защита при исполнении кода в режиме супервизора), используемую в современных процессорах (первой линейкой процессоров, поддерживающих данную технологию, стали Ivy Bridge). Microsoft стала поддерживать SMEP начиная с Windows 8. Данная технология блокирует все попытки выполнения кода из пользовательских страниц памяти в режиме ядра. Хорошее описание SMEP при использовании для защиты от эксплоитов есть здесь. В 64-разрядной Windows 8 данную технологию защиты можно обойти с помощью возвратно-ориентированного программирования. Однако, Intel анонсировала новую защитную технологию SMAP (Supervisor Mode Access Prevention – Предотвращение доступа в режиме супервизора). SMAP блокирует попытки чтения пользовательских страниц памяти в режиме ядра. Обе данные технологии были разработаны для предотвращения эксплуатации проблем, связанных с нулевыми указателями в режиме ядра, но SMAP в операционных системах Microsoft еще не поддерживается.

CVE-2012-0217 и CVE-2012-1864

CVE-2012-0217 и CVE-2012-1864 в основе своей содержат утекший исходный код Carberp. 64-разрядная версия CVE-2012-1864 не была общедоступна до утечки исходного кода. Код эксплоита CVE-2012-0217, доступный общественности, не является надежным для 64-разрядных ОС. Кроме того, данный эксплоит не будет работать на Windows 8 из-за меньшей уязвимости платформы. После анализа сходств с кодом Carberp, я проверил скомпилированные бинарные файлы эксплоитов, найденные в архиве. В обоих эксплоитах был использован один и тот же путь к директории сборки.

leak1

http://www.welivesecurity.com/wp-content/uploads/2013/08/leak1.png

leak2

http://www.welivesecurity.com/wp-content/uploads/2013/08/leak2.png

Это указывает на то, что разработчик и продавец этого эксплоита – один человек. Код CVE-2012-0217 во многом отличается от общедоступной концепции эксплоитов. Новый эксплоит работает надежнее, а также поддерживает 64-разрядные операционные системы.

Стоит проверить схожесть кода модификации PowerLoader’а и нового эксплоита для CVE-2012-0217. Следующая блок-схема показывает схожесть основных структурных блоков (код PowerLoader’а слева)

CVE-2012-0217

http://www.welivesecurity.com/wp-content/uploads/2013/08/CVE-2012-0217.png

Структура выглядит очень похожей. Все различия проявляются только в дополнительном коде отладки, не включенном в модификацию PowerLoader’а. Существует несколько специфичных методик для увеличения стабильности эксплоита.

HalDispatchTable

http://www.welivesecurity.com/wp-content/uploads/2013/08/HalDispatchTable.png

Данный код вносит изменения в nt!HalDispatchTable для избегания 100% загрузки процессора несколькими потоками в процессе эксплоита.

Похожая ситуация складывается и с уязвимостью CVE-2012-1864. До недавнего времени этот эксплоит не был доступен публике. CVE-2012-1864 была обнаружена Таржеем Мандтом (Tarjei Mandt) из Azimuth Security. Детали были раскрыты в докладе «Smashing the Atom» на конференции Recon в июне 2012, но код не был представлен. Код эксплоита PowerLoader’а выглядит более оптимизированным и не имеет отладочного кода с выводом в консоль. Например, как представлено в следующем коде (код дизассемблирования PowerLoader’а на втором изображении):

CVE-2012-1864 leak

http://www.welivesecurity.com/wp-content/uploads/2013/08/CVE-2012-1864-leak.png

CVE-2012-1864 PL

http://www.welivesecurity.com/wp-content/uploads/2013/08/CVE-2012-1864-PL.png

CVE-2012-0217 и CVE-2012-1864 – хороший пример экплоитов, позволяющих обходить песочницу продуктов, обеспечивающих безопасность. Оба эксплоита могут манипулировать структурами уровня ядра из пользовательского режима с помощью вызовов WinAPI. Неплохой набор векторов для обхода песочницы с использованием этих уязвимостей представлен в исследовательском отчете Bromium Labs «Application Sandboxes: A Pen-Tester’s Perspective».

Содержимое

После успешного использования PowerLoader’а и повышения привилегий, для инфицирования системы была скачана программа, требующая выкупа - Win64/Vabushky.A. Несколько ранее на этой неделе мой коллега Жан-Ян Ботин (Jean-Ian Boutin) рассматривал еще один вариант подобного вредоносного ПО в своем посте «Nymaim – Obfuscation Chronicles». Что ж, после первого запуска скачанного нами файла повышение уровня привилегий дошло до уровня SYSTEM. Win64/Vabushky.A использует трюк с самостоятельно сгенерированным легитимным сертификатом и последующей установкой локального хранилища доверенных сертификатов с использованием учетных данных ROOT и TrustedPublisher. Следующий код показывает методику работы:

CA

http://www.welivesecurity.com/wp-content/uploads/2013/08/CA.png

Этот трюк нельзя назвать новым, он упоминался в посте Мандианта «The “Hikit” Rootkit: Advanced and Persistent Attack». Также во время установки изменения вносятся в BCD (Boot Configuration Data - данные конфигурации загрузки), что позволяет активировать политику тестовой подписи, позволяющую загрузить неподписанный модуль драйвера. На следующем изображении показаны ключи реестра с настройками, позволяющими осуществить загрузку вредоносного драйвера (также описаны различные варианты безопасной загрузки):

Paths

http://www.welivesecurity.com/wp-content/uploads/2013/08/Paths.png

Следующим шагом будет установка поддельного драйвера для блокировки системы и вывода тестового изображения, скачанного по следующему адресу и жестко прописанного в коде:

pic urls

http://www.welivesecurity.com/wp-content/uploads/2013/08/pic-urls.png

После успешного инфицирования экран будет выглядеть следующим образом:

ransome

http://www.welivesecurity.com/wp-content/uploads/2013/08/ransome.bmp

Заключение

Дроппер Win64/Vabushky использует интересную модификацию кода PowerLoadre’а. В свою очередь, модификации кода PowerLoadre’а основываются на выложенном в сеть LPE эксплоите для 64-разрядных операционных систем (на базе кода Carberp). Все модули и компоненты, удаляемые Win64/Vabushky, являются 64-разрядными компонентами Microsoft Windows. Только один эксплоит - CVE-2013-3660 – может быть применен против Windows 8, потому что только он может обойти технологию Intel SMEP. В Windows 8 внедрена улучшенная защита режима ядра, что автоматически делает эксплоиты под данную ОС более сложными. Эти защитные механизмы можно обойти в случае целевых атак, учитывающих их наличие, но это, в свою очередь, увеличит стоимость используемых техник для обычных киберпреступников. 

Устали от того, что Интернет знает о вас все?

Присоединяйтесь к нам и станьте невидимыми!