Охота на мастер-ключ: новый стилер VoidStealer ловит пароли Chrome в тот краткий миг, когда защита «расслабляется»

Охота на мастер-ключ: новый стилер VoidStealer ловит пароли Chrome в тот краткий миг, когда защита «расслабляется»

Инфостилеры научились обходить шифрование v20_master_key, подсматривая в память браузера.

image

Вредоносные программы, которые крадут данные из браузеров, снова обошли защиту Google, но сделали это гораздо аккуратнее, чем раньше. Новый инфостилер VoidStealer научился извлекать ключ шифрования прямо из памяти браузера без повышения привилегий и без внедрения кода, что заметно снижает шансы на обнаружение.

Речь идет о механизме Application-Bound Encryption, который Google внедрила в Chrome летом 2024 года, начиная с версии 127. Смысл защиты в том, чтобы привязать доступ к чувствительным данным браузера к конкретному приложению и усложнить их расшифровку. Пароли, куки и другие данные хранятся в зашифрованном виде, а ключ для расшифровки защищен дополнительным уровнем - через системные механизмы Windows.

В основе схемы лежит мастер-ключ, который исследователи обозначают как v20_master_key. Именно он используется для расшифровки данных браузера, зашифрованных алгоритмом AES-GCM. Сам ключ хранится на диске в зашифрованном виде и извлекается через цепочку системных вызовов, включая CryptUnprotectData с участием учетной записи NT AUTHORITY\SYSTEM. Такой подход должен был сделать прямое извлечение данных крайне сложным.

Однако защита имеет уязвимое место. Даже при всех ограничениях ключ на короткое время появляется в памяти браузера в открытом виде, когда происходит расшифровка данных. Именно этот момент и использует новая техника обхода.

VoidStealer действует как отладчик. Вредоносная программа запускает браузер, подключается к процессу и отслеживает его работу. Затем она устанавливает аппаратные точки останова - специальные триггеры на уровне процессора, которые срабатывают при выполнении определенной инструкции. В нужный момент, когда ключ оказывается в памяти в открытом виде, программа считывает его с помощью функции ReadProcessMemory.

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

Поиск нужного места для перехвата тоже автоматизирован. Вредоносный код отслеживает загрузку библиотек браузера и ищет строку OSCrypt.AppBoundProvider.Decrypt.ResultCode в секции данных. В коде Chromium эта строка появляется рядом с вызовом функции расшифровки. По ней вычисляется адрес инструкции, где в регистрах процессора уже лежит указатель на ключ. После срабатывания точки останова достаточно двух вызовов ReadProcessMemory, чтобы извлечь значение из памяти.

Еще один важный момент связан с тем, когда именно происходит атака. Браузер загружает куки и другие данные сразу после запуска, а значит, обращается к ключу почти сразу. Поэтому вредоносная программа запускает процесс в скрытом режиме, подключается к нему и перехватывает нужный момент в самом начале работы.

VoidStealer не ограничивается одним методом. Помимо описанной техники, он также использует более привычный способ - внедрение в процесс браузера и вызов функции расшифровки через COM-интерфейс IElevator. Такой подход надежен, но оставляет заметные следы и часто фиксируется средствами защиты. Новый вариант с отладчиком заметно тише и потому опаснее.

Интересно, что сама идея не нова. Авторы вредоносной программы взяли ее из открытого проекта ElevationKatz. Разница в том, что раньше подобные методы оставались на уровне исследовательских инструментов, а теперь впервые зафиксировано применение в реальных атаках.

Для специалистов по защите ситуация дает несколько точек контроля. Обычные приложения не запускают отладку браузеров, поэтому попытка подключиться к процессу Chrome или Edge без участия пользователя выглядит подозрительно. Дополнительный сигнал - чтение памяти, даже без записи. Также стоит обращать внимание на скрытый запуск браузера, например с флагом SW_HIDE, в безголовом режиме или вне видимой области экрана.

Application-Bound Encryption не блокирует кражу данных полностью, но заставляет атакующих действовать сложнее и заметнее. Появление методов с аппаратными точками останова показывает, что злоумышленники адаптировались к новым ограничениям. Учитывая доступность исходного кода подобных техник, можно ожидать, что похожие подходы скоро появятся и в других инфостилерах.