Реверс-инжиниринг Vidar Stealer: от обфусцированных строк в памяти до инъекции в процесс Chrome, выполнения вредоносного JS и активного перехвата сессий в Google и Reddit.
Образец Vidar Stealer, загруженный в Binary Ninja, отображает сильно обфусцированный код внутри функции main.vxormo. Анализ показывает, что вредоносное ПО полагается на шифрование строк, собственные XOR-процедуры и сборку в оперативной памяти, чтобы скрыть своё истинное поведение. Массивы байтов с преобладанием \x00 (x00\x00\x00...) в псевдо-C представлении указывают на то, что фрагменты необработанной полезной нагрузки конструируются непосредственно в памяти.
Обфусцированные функции: Случайно сгенерированные имена, такие как main.vxormo, main.oqvmwusz и main.dzgsnuhm, используются для сокрытия функциональности. Обфусцированные строки: whatnthotsfalse... и cornbindtrue... — это зашифрованные строки, которые разрешаются во время выполнения. Собственная XOR-процедура: Само имя функции vxormo указывает на активный цикл расшифровки с помощью собственного XOR. Конструирование полезной нагрузки в памяти: Массивы, содержащие байты \x00, \x89, \x99, \x48, записываются в память с помощью _builtin_memcpy. Указатель uint8_t)rax показывает сборку фрагментов необработанного шелл-кода/полезной нагрузки.
Противодействие статическому анализу: Использование функций со случайными именами и зашифрованных строк означает, что статические антивирусы на основе сигнатур не смогут идентифицировать полезную нагрузку. Выполнение в памяти (безфайловое): Полезная нагрузка \x00 никогда не записывается на диск; она выделяется и выполняется непосредственно в памяти (RWX), обходя файловые сканеры. Собственное XOR-шифрование: Собственная XOR-процедура препятствует простому извлечению строк или сопоставлению с правилами YARA. Сокрытие данных: Огромные нечитаемые массивы (\x00\x00\x00\x01...) вероятно представляют собой зашифрованные блоки конфигурации (URL-адреса C2, модули сбора данных), которые расшифровываются только при необходимости.

Второе представление образца Vidar Stealer в Binary Ninja показывает функцию (main.obttcklrlfwpzvugbzqtn), предназначенную для разведки системы и антифорензической очистки. Функция обрабатывает зашифрованные строки и разрешает имена API для стирания следов своего выполнения, в частности нацеливаясь на DNS-кэши, журналы событий и временные интернет-файлы перед сбросом финальной полезной нагрузки.
Обфусцированное разрешение API: Строка ...DiednsQuery_WGGetIfEntryCancelIoExCreatePipe... представляет собой зашифрованную конкатенацию вызовов WinAPI Идентифицированные API очистки: DnsQuery_W / DnsFlushResolverCache – очищает DNS-кэш, чтобы скрыть следы разрешения домена C2. GetIfEntry – перечисляет сетевые интерфейсы (проверка на наличие песочницы/виртуальных адаптеров). WinExec – динамически выполняет системные утилиты очистки (например, cmd.exe /c del ...). Выполнение системных вызовов/скриптов: Ссылки на dllws2_32.dll и /dev/stdin (перенаправление стандартного ввода) указывают на то, что вредоносное ПО готовится взаимодействовать со стандартными потоками или сетевым стеком системы.
Антифорензика: Очистка DNS-кэша (DnsFlushResolverCache) и вызов процедур очистки гарантируют уничтожение сетевых журналов и локальных артефактов, что затрудняет реагирование на инциденты. Обход песочницы: Запрос сетевых интерфейсов (GetIfEntry) позволяет стилеру обнаруживать виртуализированные среды (например, VMware, VirtualBox) и прерывать выполнение при обнаружении песочницы Подмена потока выполнения: Использование WinExec для очистки означает, что вредоносному ПО не нужно статически импортировать API удаления; оно перекладывает грязную работу на ОС. Безфайловое взаимодействие: Перенаправление /dev/stdin и использование каналов (CreatePipe) позволяют стилеру передавать украденные данные в внедрённый процесс или командную оболочку, не касаясь диска.

Представление памяти процесса chrome.exe (PID 8944) в Process Hacker подтверждает, что Vidar Stealer внедрил свою полезную нагрузку непосредственно в адресное пространство браузера. Сканирование строк выявляет множество блоков выполнения потоков — стандартный артефакт process hollowing или инъекции удалённых потоков. Внедряясь в Chrome, стилер действует под видом доверенного процесса с высоким уровнем целостности, чтобы незаметно собирать cookie, сохранённые учётные данные и токены сессий.
Внедрённые потоки (строки в памяти): THREAD_BROWSER_WATCHDOG / THREAD_GPU_WATCHDOG — сторожевые потоки перехвачены, чтобы поддерживать жизнь внедрённых потоков. THREAD_CACHE_BLOCKFILE — указывает на манипуляции с кэшем Chrome (вероятно, для извлечения данных сессий). THREAD_AUDIO_INPUTDEVICE / THREAD_GAMEPAD_POLLING — несущественные потоки перепрофилированы для маскировки вредоносной активности. THREAD_WEBCRYPTO — крайне подозрительно; внутренний криптографический API Chrome используется для расшифровки сохранённых паролей и cookie. THREAD_PROXYRESOLVER / THREAD_DATABASE — используются для перехвата сетевого трафика и доступа к локальной базе учётных данных.
Кража учётных данных браузера: перехват THREAD_WEBCRYPTO и THREAD_DATABASE позволяет Vidar обходить шифрование Chrome и красть сохранённые пароли и cookie. Living off the Land: внедряясь в chrome.exe, вредоносное ПО маскируется под легитимный трафик браузера, легко обходя межсетевые экраны и сетевые правила EDR. Process Hollowing: наличие стандартных потоков Chrome наряду с внедрёнными означает, что вредоносное ПО, вероятно, опустошило легитимный поток или использовало CreateRemoteThread. Перехват сессий: THREAD_CACHE_BLOCKFILE и извлечение cookie позволяют атакующему украсть активные сессии (session hijacking), не нуждаясь в пароле пользователя. Уклонение от обнаружения: антивирусные решения редко сканируют адресное пространство подписанного браузера, такого как Chrome.

Более глубокий взгляд на внедрённое адресное пространство chrome.exe (PID 8944) выявляет набор строк, целенаправленно ориентированных на потоки аутентификации Google, сессии Reddit и выполнение JavaScript в браузере. Наличие этих строк подтверждает, что Vidar Stealer внедряет вредоносный JavaScript или перехватывает API браузера для перехвата учётных данных для входа и токенов сессий.