
Хакер #315. Positive Hack Days Fest 3
Специалисты «Доктор Веб» рассказали о семействе малвари Trojan.Scavenger, с помощью которого злоумышленники воруют данные из криптокошельков и менеджеров паролей у пользователей Windows. Для запуска вредоносов используются легитимные приложения и эксплуатируются уязвимости, связанные с перехватом порядка поиска DLL (DLL Search Order Hijacking).
В своем отчете исследователи напоминают, что в 2024 году они обнаружили попытку проведения целевой атаки на российского оператора грузовых железнодорожных перевозок. Тогда атакующие эксплуатировали уязвимость «Яндекс Браузера» к перехвату порядка поиска DLL.
Дело в том, что Windows-приложения при запуске производят поиск необходимых для работы библиотек в различных хранилищах и в определенной последовательности. Злоумышленники размещают вредоносные DLL-файлы там, где поиск будет выполняться в первую очередь (например, в каталоге установки целевого ПО). При этом вредоносным файлам даются имена легитимных библиотек, которые располагаются в менее приоритетных для поиска директориях. В результате уязвимые программы первыми загружают именно вредоносные DLL.
После изучения инцидента 2024 года, специалисты внедрили в антивирусные продукты Dr.Web функциональность, которая позволяет отслеживать и предотвращать попытки эксплуатации такого рода уязвимостей.
Теперь же, при изучении телеметрии этой функции, аналитики обнаружили попытки загрузки ранее неизвестной малвари Trojan.Scavenger в несколько браузеров клиентов. В итоге были выявлены две цепочки заражения с разным числом задействованных троянских компонентов.
Так, в цепочке из трех загрузчиков стартовым компонентом является Trojan.Scavenger.1, представляющий собой DLL. Эта малварь может распространяться как в составе пиратских игр, так и под видом различных игровых патчей, читов и модов через торренты и посвященные игровой тематике сайты. Да
В случае, когда вредонос маскируется под патч, Trojan.Scavenger.1 распространяется в виде ZIP-архива вместе с инструкцией по установке. В ней злоумышленники побуждают потенциальную жертву поместить «патч» в каталог с игрой Oblivion Remastered — якобы для улучшения ее производительности.
Drag umpdc.dll and engine.ini to the game folder:
\steamapps\common\Oblivion Remastered\OblivionRemastered\Binaries\Win64
Engine.ini will automatically be loaded by the module.
The module will also apply some native patches to improve performance
Имя вредоносного файла выбрано не случайно: в Windows легитимный файл с именем umpdc.dll располагается в системном каталоге %WINDIR%\System32. Он является частью графического API, которое используют различные программы и игры.
Если в установленной у жертвы версии игры присутствует незакрытая уязвимость, копируемый вредоносный файл будет автоматически запускаться вместе с ней.
При этом отмечается, что актуальная на момент проведения исследования версия игры Oblivion Remastered корректно обрабатывала очередность поиска библиотеки umpdc.dll, поэтому в рассматриваемом примере Trojan.Scavenger.1 не мог автоматически запуститься и продолжить цепочку заражения.
В случае успеха троян загружает с удаленного сервера и запускает следующую стадию атаки — загрузчика Trojan.Scavenger.2 (tmp6FC15.dll). Тот в свою очередь скачивает и устанавливает в систему другие модули семейства — Trojan.Scavenger.3 и Trojan.Scavenger.4.
Trojan.Scavenger.3 маскируется под version.dll, которая копируется в каталог одного из целевых Chromium-браузеров. DLL имеет такое же имя, как и одна из системных библиотек в директории %WINDIR%\System32.
Уязвимые к перехвату порядка поиска DLL браузеры не проверяют, откуда загружается библиотека с таким именем. Поскольку троянский файл находится в их каталоге, он имеет приоритет над легитимной библиотекой и загружается первым.
Попытки эксплуатации этой уязвимости были зафиксированы в Google Chrome, Microsoft Edge, Яндекс Браузере и Opera.
После старта Trojan.Scavenger.3 отключает защитные механизмы целевого браузера (например, запуск его песочницы), в результате чего в нем пропадает изоляция выполняемого JS-кода. Кроме того, троян отключает проверку расширений в браузере. Для этого он определяет соответствующую библиотеку Chromium по наличию в ней экспортируемой функции CrashForExceptionInNonABICompliantCodeRange. Затем малварь выполняет поиск процедуры проверки расширений в этой библиотеке и вносит соответствующий патч.
После этого вредонос модифицирует установленные в браузере целевые расширения, получая необходимые модификации в виде JavaScript-кода с управляющего сервера. Изменениям подвергаются: криптокошельки Phantom, Slush и MetaMask, а также менеджеры паролей Bitwarden и LastPass.
При этом модифицируются не оригиналы, а копии, которые троян предварительно помещает в каталог %TEMP%/ServiceWorkerCache. Чтобы браузер «подхватил» измененные расширения, малварь перехватывает управление функциями CreateFileW и GetFileAttributesExW, подменяя локальные пути к оригинальным файлам на пути к модификациям (они обозначены как Trojan.Scavenger.5).
Сами модификации представлены двумя вариантами:
- добавляется временная метка к cookie;
- добавляется отправка пользовательских данных на управляющий сервер.
Из криптокошельков Phantom, Slush и MetaMask злоумышленники похищают приватные ключи и seed-фразы. Из менеджера паролей Bitwarden крадут cookie авторизации, а из LastPass — добавляемые жертвами пароли.
В свою очередь, Trojan.Scavenger.4 (profapi.dll) копируется в каталог с приложением криптокошелька Exodus. Вредонос запускается автоматически вместе с программой, также эксплуатируя в ней уязвимость DLL Search Order Hijacking (легитимная системная библиотека profapi.dll находится в %WINDIR%\System32, но из-за уязвимости приоритет загрузки при запуске кошелька отдается вредоносному файлу).
После старта Trojan.Scavenger.4 перехватывает функцию v8::String::NewFromUtf8 в движке V8 для работы с JavaScript и WebAssembly. С ее помощью малварь отслеживает JSON, сформированные целевым приложением, и может получать различные пользовательские данные.
В случае Exodus троян ищет JSON, в котором присутствует ключ passphrase, после чего считывает его значение. В результате он получает пользовательскую мнемоническую фразу, которой можно расшифровать или сгенерировать приватный ключ от криптокошелька жертвы. Далее троян находит приватный ключ seed.seco от криптокошелька, считывает его и вместе с ранее полученной мнемонической фразой отправляет на сервер хакеров.
Также исследователи изучили цепочку, состоящую из двух загрузчиков. Она почти идентична первой, однако в распространяемых архивах с «патчами» и «читами» к играм вместо Trojan.Scavenger.1 находится модифицированная версия Trojan.Scavenger.2, представленная не в качестве DLL-файла, а в виде файла с расширением .ASI. То есть фактически это DLL с измененным расширением.
После того как пользователь копирует файл в указанную директорию, тот будет автоматически запускаться при старте целевой игры, которая будет воспринимать его как свой плагин. С этого момента цепочка заражения повторяет шаги из первого варианта.
Специалисты сообщают, что большинство троянов семейства имеет ряд общих признаков. Одним из них является стандартная процедура проверки окружения на предмет работы в виртуальной среде или в режиме отладки. Если малварь обнаруживает признаки искусственной среды, она завершает работу.
Другой отличительный признак семейства Trojan.Scavenger — единый алгоритм общения с управляющим сервером. Для связи с ним трояны проходят этап создания ключа и проверки шифрования.
Процесс состоит из отправки двух запросов. Первый необходим для получения части ключа, который используется для шифрования некоторых параметров и данных в определенных запросах. Второй выполняется с целью проверки ключа и содержит определенные параметры, такие как случайным образом сгенерированная строка, текущее время и зашифрованное значение времени. На него управляющий сервер отвечает полученной ранее строкой. Все последующие запросы содержат параметры времени, и при их отсутствии сервер отказывается выполнять соединение.