27 августа 2018 года в твиттере ИБ-специалиста с ником SandboxEscaper была опубликована информация об уязвимости нулевого дня. Уязвимость затрагивает версии Microsoft Windows с 7 по 10, точнее, интерфейс Advanced Local Procedure Call (ALPC) в Планировщике заданий Windows. Она обеспечивает локальное повышение привилегий (Local Privilege Escalation), что позволяет атакующему повысить права вредоносного кода от уровня User до SYSTEM. О скоординированном раскрытии уязвимости речь не идет – аккаунт SandboxEscaper вскоре удалили, закрывающие патчи отсутствовали.

Ссылка из твита вела в репозиторий GitHub с Proof-of-Concept кодом эксплойта – не только скомпилированной версией, но и исходным кодом. Следовательно, любой желающий мог модифицировать и перекомпилировать эксплойт, чтобы улучшить его, избежать обнаружения или включить в собственный код.

В общем, неудивительно, что всего через два дня эксплойт появился in the wild в кампании кибергруппы PowerPool. По данным телеметрии ESET, в числе целевых стран атакующих – Россия, Украина, Польша, Германия, Великобритания, США, Индия, Филиппины, Чили. Жертв сравнительно немного, что может указывать на высокую таргетированность кампании.



Инструментарий PowerPool


ESET зафиксировала новую группу сравнительно недавно, тем не менее, в распоряжении хакеров PowerPool довольно широкий спектр инструментов. Далее кратко рассмотрим некоторые из них.

Эксплойт локального повышения привилегий в ALPC


Разработчики PowerPool не использовали бинарный файл, опубликованный SandboxEscaper, – они несколько изменили исходный код и перекомпилировали его. Эксплойт также был отмечен исследователями безопасности и группами CERT.


Рисунок 1. Авторское описание эксплойта

Брешь – в функции API SchRpcSetSecurity, которая не проверяет корректно права пользователя. Таким образом, пользователь может записывать любой файл в C:\Windows\Task, вне зависимости от фактических разрешений – при наличии разрешения на чтение возможно заменить содержимое защищенного от записи файла.

Любой пользователь может записывать файлы в C:\Windows\Task, поэтому в этой папке можно создать файл, являющийся жесткой ссылкой на любой целевой файл. Затем, вызывая функцию SchRpcSetSecurity, можно получить доступ на запись этого целевого файла. Чтобы обеспечить локальное повышение привилегий, атакующему нужно выбрать целевой файл, который будет перезаписан – важно, чтобы этот файл выполнялся автоматически с правами администратора. Как вариант, это может быть системный файл или утилита для обновления ранее установленного ПО, которая выполняется регулярно. Последний шаг – замена содержимого целевого файла вредоносным кодом. Таким образом, при следующем автоматическом выполнении малварь будет обладать правами администратора вне зависимости от первоначальных прав.

Разработчики PowerPool решили изменить содержимое файла C:\Program Files (x86)\Google\Update\GoogleUpdate.exe. Это легитимный апдейтер для приложений Google, он регулярно выполняется с правами администратора посредством задачи Microsoft Windows.


Рисунок 2. Создание жесткой ссылки на Google Updater


Рисунок 3. Использование SchRpcCreateFolder для смены разрешений исполняемого файла Google Updater

Последовательность операций на рисунке выше позволяет операторам PowerPool получить права на запись исполняемого файла GoogleUpdate.exe. Затем они перезаписывают его, заменяя копией своего вредоносного ПО второго этапа (опишем ниже), чтобы получить права администратора при следующем вызове апдейтера.

Начальная компрометация


Группа PowerPool использует разные методы для первоначальной компрометации жертвы. Один из них – спам-рассылка с вредоносным ПО первого этапа во вложении. Рано делать выводы, но пока мы наблюдали очень мало образцов в данных телеметрии, поэтому предполагаем, что получатели тщательно выбраны и о массовой рассылке речь не идет.

С другой стороны, мы знаем, что в прошлом PowerPool уже практиковали спам-рассылки. Согласно посту в блоге SANS, опубликованному в мае 2018 года, они использовали для распространения вредоносных программ схему с файлами Symbolic Link (.slk). Microsoft Excel может загрузить эти файлы, которые обновляют ячейку, и заставить Excel выполнять код PowerShell. Похоже, что эти .slk-файлы тоже распространяются в спам-сообщениях. На основе первого файла, упомянутого в посте SANS (SHA-1: b2dc703d3af1d015f4d53b6dbbeb624f5ade5553), можно найти на VirusTotal соответствующий образец спама (SHA-1: e0882e234cba94b5cf3df2c05949e2e228bedd2b):


Рисунок 4. Спам PowerPool

Бэкдоры Windows


Группа PowerPool как правило работает с двумя бэкдорами: бэкдор первого этапа используется после первоначальной компрометации, бэкдор второго этапа внедряется только на интересующих машинах.

Бэкдор первого этапа


Это базовое вредоносное ПО, которое используется для разведки. Состоит из двух исполняемых файлов Windows.

Первый из них – основной бэкдор, обеспечивающий персистентность посредством службы. Он также создает мьютекс под названием MyDemonMutex%d, где %d находится в диапазоне от 0 до 10. Бэкдор собирает информацию о прокси, адрес C&C сервера жестко закодирован в бинарном файле. Малварь может выполнять команды и производить базовую разведку в системе, передавая данные на C&C сервер.


Рисунок 5. Сбор информации о прокси

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

Бэкдор второго этапа


Малварь загружается в ходе первого этапа, предположительно в том случае, если машина покажется интересной операторам. Тем не менее, программа не похожа на современный АРТ-бэкдор.

Адрес C&C сервера жестко закодирован в двоичном формате, механизма обновления этого важного элемента конфигурации не предусмотрено. Бэкдор ищет команды от http://[C&C domain]/cmdpool и загружает дополнительные файлы с http://[C&C domain]/upload. Дополнительные файлы преимущественно являются инструментами для горизонтального перемещения, упомянутыми ниже.

Поддерживаемые команды:
— выполнить команду
— завершить процесс
— отправить файл
— скачать файл
— просмотреть содержимое папки

Команды отправляются в формате JSON. Примеры ниже – запросы на выполнение команд и перечисление папок:


Рисунок 6. Примеры команд бэкдора

Инструменты для горизонтального перемещения


Обеспечив постоянный доступ к системе с помощью бэкдора второго этапа, операторы PowerPool используют несколько инструментов с открытым исходным кодом, написанные преимущественно на PowerShell, для горизонтального перемещения в сети.

PowerDump: модуль Metasploit, который может извлекать имена пользователей и хеши из Диспетчера учетных записей безопасности (Security Account Manager).
PowerSploit: коллекция модулей PowerShell, а-ля Metasploit.
SMBExec: инструмент PowerShell для выполнения атак pass-the-hash с использованием протокола SMB.
Quarks PwDump: исполняемый файл Windows, который может извлекать учетные данные.
FireMaster: исполняемый файл Windows, который может извлекать сохраненные пароли из Outlook, веб-браузеров и др.

Вывод


Раскрытие информации об уязвимостях до выхода обновлений ставит под угрозу пользователей. В данном случае может быть скомпрометирована даже новейшая версия Windows. CERT-CC предлагает временное решение проблемы, которое, однако, не было официально согласовано Microsoft.

Атака PowerPool нацелена на ограниченное число пользователей. Тем не менее, инцидент показывает, что злоумышленники всегда в курсе событий и оперативно внедряют новые эксплойты.

Специалисты ESET продолжают отслеживать эксплуатацию новой уязвимости. Индикаторы компрометации доступны также на GitHub.

Индикаторы компрометации


Хеши


Бэкдор первого этапа (Win32/Agent.SZS) 038f75dcf1e5277565c68d57fa1f4f7b3005f3f3
Бэкдор первого этапа (Win32/Agent.TCH) 247b542af23ad9c63697428c7b77348681aadc9a
Бэкдор второго этапа (Win32/Agent.TIA) 0423672fe9201c325e33f296595fb70dcd81bcd9
Бэкдор второго этапа (Win32/Agent.TIA) b4ec4837d07ff64e34947296e73732171d1c1586
LPE-эксплойт ALPC (Win64/Exploit.Agent.H) 9dc173d4d4f74765b5fc1e1c9a2d188d5387beea

Детектирование продуктами ESET


— Win32/Agent.SZS
— Win32/Agent.TCH
— Win32/Agent.TEL
— Win32/Agent.THT
— Win32/Agent.TDK
— Win32/Agent.TIA
— Win32/Agent.TID

C&C серверы


— newsrental[.]net
— rosbusiness[.]eu
— afishaonline[.]eu
— sports-collectors[.]com
— 27.102.106[.]149

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


  1. simplix
    07.09.2018 17:34

    Для закрытия уязвимости достаточно выполнить команду:

    icacls %WinDir%\Tasks /grant:r *S-1-5-11:RX


  1. ildarz
    08.09.2018 12:28

    Брешь – в функции API SchRpcSetSecurity, которая не проверяет корректно права пользователя. Таким образом, пользователь может записывать любой файл в C:\Windows\Task, вне зависимости от фактических разрешений – при наличии разрешения на чтение возможно заменить содержимое защищенного от записи файла.

    Этот абзац неверно сформулирован. Функция не "не проверяет корректно права", а просто вызывается в контексте безопасности SYSTEM вместо %username%. И брешь не в том, что в эту папку может писать любой пользователь (сам по себе негативных последствий этот факт не несет), а в том, что при определенных манипуляциях на записанные в эту папку файлы в дальнейшем неправильно назначаются права (назначение идет не от имени инициирующего пользователя, а от имени системы). Как следствие, если "файл" является хардлинком, можно назначить нужные права на файлы, к которым обычно нет доступа на запись.