Безопасное соединение с банком оказалось иллюзией.

В Бразилии уже больше трех лет действует одна из самых сложных банковских вредоносных программ местного происхождения. Исследователи подробно разобрали GoPix - угрозу для клиентов финансовых организаций и пользователей криптовалют, и пришли к неприятному выводу: перед ними не очередной банковский троян в знакомой оболочке, а куда более зрелая и скрытная платформа. GoPix работает почти без следов на диске, загружает ключевые модули прямо в память, использует запутанные сценарии PowerShell и маскируется под легитимные системные инструменты Windows. Такой подход сильно осложняет поиск заражения и последующий разбор инцидента.
Главная цель кампании - клиенты бразильских банков и пользователи криптокошельков. Вредонос следит за операциями через Pix, популярную в Бразилии систему мгновенных платежей, отслеживает платежные документы Boleto bancário и вмешивается в операции с криптовалютой. Pix в стране давно стал повседневным платежным механизмом, а Boleto остается одним из самых распространенных способов расчетов: такой документ похож на счет с суммой, сроком оплаты, реквизитами получателя и длинной цифровой строкой, которую можно вручную ввести в банковском приложении. GoPix умеет распознавать и такие данные.
По архитектуре угроза заметно отличается от более известных бразильских семейств вроде Grandoreiro. Если многие прежние банковские программы строились вокруг классического удаленного управления и автоматизированных переводов, то GoPix пошел дальше. Авторы кампании взяли наработки троянов удаленного доступа и систем автоматического перевода средств, а затем собрали на их базе собственную схему, которую исследователи раньше не встречали. Вредонос ведет себя как LOLBin, то есть злоумышленники опираются на легитимные инструменты и компоненты системы, чтобы реже попадаться под защитные механизмы.
Один из самых примечательных элементов кампании связан с первичным заражением. Распространение строится через вредоносную рекламу, активную как минимум с декабря 2022 года. Злоумышленники в большинстве случаев используют Google Ads и заманивают жертв поддельными объявлениями, связанными с популярными сервисами и приложениями. Среди приманок фигурируют WhatsApp, Google Chrome и даже бразильская почтовая служба Correios. Пользователь кликает по объявлению, попадает на специально подготовленную страницу и видит предложение скачать якобы нужную программу.
Дальше цепочка работает не по принципу массовой рассылки, а скорее по модели тщательного отбора. Страница не выдает вредонос всем подряд. Сначала запускается проверка, которая должна понять, перед сайтом реальный интересный пользователь или бот, песочница и аналитическая среда. Для такого отбора злоумышленники используют легитимный антифрод-сервис и систему оценки IP-адресов и параметров среды. Сайт отправляет туда сведения о браузере и окружении, получает идентификатор запроса, а затем уже на его основе решает, показывать ли вредоносный установщик. Если посетитель не выглядит ценной целью, сайт просто отправляет его на безобидную заглушку. В таком подходе особенно показательно другое: преступники задействуют нормальные коммерческие сервисы репутации и антифрода не для защиты, а чтобы точнее выбирать жертв и не светить инфраструктуру перед исследователями.
Исследователи отдельно отмечают, что операторы GoPix заражают не случайную аудиторию. В отчете говорится о ручном отборе целей, среди которых фигурируют клиенты крупных организаций, государственные финансовые структуры и большие компании. На практике такой фильтр снижает шум, уменьшает число бесполезных заражений и помогает дольше держать кампанию в активной фазе.
После прохождения первой проверки страница обращается к вредоносному конечному узлу check.php и получает JSON-ответ с двумя URL. Затем происходит еще одна проверка, уже на стороне JavaScript: скрипт смотрит, открыт ли на localhost порт 27275. Такой порт использует функция Safe Banking в продуктах Avast, популярных в том числе в Бразилии. От результата зависит, по какой ветке пойдет заражение.
Если порт закрыт, жертва получает поддельный исполняемый файл под видом установщика WhatsApp. Файл собран на NSIS, системе для создания установщиков Windows. Если порт открыт, то есть на устройстве, вероятно, установлен продукт Avast, сайт отдает уже не EXE, а ZIP-архив с LNK-файлом, то есть ярлыком. Исследователи сначала предполагали, что разница может вести к эксплойту, но в итоге выяснили более прагматичную причину: браузерные и банковские защитные функции Avast блокируют прямую загрузку исполняемых файлов, поэтому злоумышленники переключаются на другую ветку и заворачивают следующую стадию в архив с ярлыком.
Исполняемый NSIS-установщик постоянно меняется, чтобы обходить обнаружение. К тому же файл подписан украденным сертификатом подписи кода, выданным на PLK Management Limited. Тот же сертификат использовался и для подписи легитимной программы Driver Easy Pro. Подпись делает файл более правдоподобным и помогает пройти часть простых проверок доверия.
Задача NSIS-установщика сводится не к полноценной установке, а к запуску следующего звена цепочки. Он создает и выполняет обфусцированный BAT-файл, который уже через PowerShell запрашивает следующий вредоносный компонент с удаленного сайта. Ветка с LNK-файлом делает примерно то же самое другим путем. Внутри ярлыка спрятана запутанная командная строка PowerShell, которая скачивает и исполняет следующий этап напрямую из сети. В обоих случаях пользователь видит мнимую установку нужной программы, а вредонос тем временем разворачивает следующую стадию.
После запуска команды PowerShell цепочка не заканчивается. GoPix получает еще один удаленно загружаемый сценарий PowerShell, тоже обфусцированный. Сначала такой сценарий собирает данные о системе и отправляет их на командный сервер GoPix. В ответ приходит JSON-файл с конфигурацией и набором модулей, которые сохраняются на компьютере жертвы. В этом наборе есть имена папок и файлов для каталога %APPDATA%, обфусцированный сценарий PowerShell, зашифрованный PowerShell-скрипт, отдельный вредоносный имплант с зашифрованным shellcode загрузчика, сам загрузчик, shellcode основного модуля и главный имплант GoPix, а также конфигурационный файл.
После сохранения всех компонентов создается еще один BAT-файл. Его задача простая: запустить обфусцированный PowerShell-сценарий с ослабленной политикой выполнения. Дальше схема становится заметно интереснее. Обфусцированный скрипт расшифровывает другой сценарий, запускает новый экземпляр PowerShell и передает уже расшифрованный код через стандартный ввод. За счет такого приема расшифрованный сценарий не записывается на диск. Для защиты и криминалистов такой прием крайне неприятен: анализировать уже нечего, потому что ключевая логика существует только в памяти.
Следующий сценарий PowerShell тоже работает только в памяти. Он расшифровывает shellcode загрузчика GoPix, сам загрузчик, shellcode основного модуля и главный имплант, выделяет память и размещает все нужные части прямо там. Затем внутри процесса PowerShell создается небольшой фрагмент shellcode, который передает исполнение загрузчику GoPix. Авторы вредоноса заранее подготовили варианты под x86 и x64, так что цепочка подстраивается под архитектуру машины жертвы.
Shellcode в GoPix используется на двух этапах. Сначала через него запускается загрузчик, затем уже основной модуль. Исследователи заметили две версии такого shellcode. В старых образцах адреса API-функций определялись по именам. В новых используется более скрытная схема с хешированием API. Сначала считается хеш имени DLL, потом на его основе вычисляется хеш нужной функции. Такой прием затрудняет статический анализ, потому что в коде больше нет наглядных строк с именами системных функций.
Вредонос дополнительно затирает сигнатуру MZ у двух DLL, которые загружаются в память. Сигнатура MZ - стандартный маркер PE-файла Windows. Многие инструменты дампа памяти и поиска вредоносных модулей ориентируются именно на такие признаки. Если сигнатуру обнулить, часть инструментов уже не увидит в памяти привычный исполняемый файл.
Когда управление получает дроппер, начинается следующая стадия. Сначала модуль проверяет, запущен ли он внутри Explorer.exe. Если нет, выполнение прекращается. Затем дроппер по очереди ищет установленные браузеры Chrome, Firefox, Edge и Opera и берет путь к первому найденному приложению из раздела реестра App Paths. Исследователи отдельно подчеркивают, что строки в новой версии дроппера зашифрованы необычным способом, причем для каждой строки применяется собственный алгоритм. Такая детализация снова показывает, насколько много сил авторы вложили в сопротивление анализу.
После выбора браузера дроппер запускает нужный процесс в приостановленном состоянии с помощью прямых системных вызовов. Прямые системные вызовы помогают обходить часть перехватов со стороны защитного ПО. Затем дроппер внедряет в браузер shellcode основного GoPix и передает параметры для запуска. Внедренный код извлекает главный имплант прямо в память, загружает его и вызывает основную экспортируемую функцию. Среди параметров передается число 1, которое запускает основную функциональность GoPix, а также текущий идентификатор процесса Explorer.exe.
Одна из самых практичных функций главного модуля связана с буфером обмена. GoPix давно умеет следить за адресами криптокошельков и подменять их на адрес злоумышленника, если жертва копирует Bitcoin- или Ethereum-кошелек перед переводом. Теперь в набор целей добавили и Boleto bancário. Когда вредонос замечает Pix- или Boleto-операцию, он отправляет сведения на командный сервер. А вот при работе с криптовалютой сценарий уже другой: адрес в буфере обмена тихо подменяется, и пользователь рискует отправить средства чужому получателю.
Самый необычный элемент GoPix связан с атакой посредника, то есть man-in-the-middle. Для такой схемы используется PAC-файл, Proxy AutoConfig, файл автоматической настройки прокси. В Бразилии преступники применяют PAC уже много лет, но раньше механизм обычно сводился к перенаправлению пользователя на фишинговую страницу. GoPix использует тот же инструмент заметно изощреннее. Вместо подмены страницы злоумышленники вмешиваются в трафик, пока жертва работает с настоящим банковским сайтом.
Чтобы спрятать перечень интересующих доменов, вредонос не хранит адреса в открытом виде. В поле host PAC-файла используются значения CRC32, а окончательная конфигурация собирается на лету из файла pf. Именно записи в pf определяют, через какой прокси пойдет трафик жертвы. Авторы GoPix скрывают не только список банков, но и собственный вредоносный прокси. После установки соединения вредонос перечисляет активные подключения, определяет процесс, который открыл канал, берет CRC32C-контрольную сумму имени исполняемого файла и сравнивает ее с жестко заданным списком контрольных сумм браузеров. Если процесс не совпадает с известным браузером, соединение просто разрывается. Такая проверка помогает не показывать вредоносную прокси-инфраструктуру посторонним приложениям и исследовательским инструментам.
Чтобы выяснить, какие организации входят в список целей, исследователи собрали домены и поддомены множества бразильских финансовых организаций, посчитали для них CRC32 и сравнили результаты с кодами, зашитыми в GoPix. Совпадения показали, что вредонос нацелен на конкретные банковские и финансовые веб-ресурсы, в том числе на интернет-банкинг и государственные финансовые порталы.
Перехват HTTPS в такой схеме выглядит самой чувствительной частью, потому что банковский трафик обычно шифруется. GoPix обходит защиту необычным способом: внедряет доверенный корневой сертификат не в хранилище операционной системы, а прямо в память браузера на машине жертвы. Затем злоумышленник получает возможность перехватывать и даже менять зашифрованный трафик. Исследователи нашли в образцах GoPix два сертификата. Один истек в январе 2025 года, второй создали в феврале 2025 года, а срок его действия заканчивается в феврале 2027-го. Для защиты такой прием особенно неприятен еще и потому, что вредоносный сертификат не виден обычным системным инструментам Windows, которые показывают стандартное хранилище сертификатов.
Вся кампания в целом показывает, насколько сильно вырос уровень бразильского банковского вредоносного ПО. GoPix не ограничивается банальным воровством учетных данных или примитивной подменой страницы. Платформа сочетает вредоносную рекламу, многоступенчатую доставку, фильтрацию целей через легитимные антифрод-сервисы, работу почти без артефактов на диске, короткоживущие C2-серверы, переход между процессами, устойчивость к песочницам и сложную схему перехвата банковского трафика. Командные серверы живут всего несколько часов, что дополнительно усложняет реагирование и сбор доказательств.
Отдельно стоит и механизм противодействия расследованию. GoPix старается сохранять минимум следов на диске, использует надежную зачистку, загружает модули только в память и прячет ключевые компоненты за несколькими слоями шифрования и обфускации. В такой модели классическая охота по YARA-правилам становится заметно менее эффективной, потому что многие характерные артефакты либо вообще не попадают на диск, либо быстро исчезают.
Исследователи наблюдают за GoPix с 2023 года и отмечают, что активность кампании не снижается. По их оценке, перед отраслью уже не просто очередной банковский троян, а устойчиво развивающаяся платформа, авторы которой явно учатся у APT-группировок методам скрытности, закрепления и обхода аналитики. Признак сдвига виден в деталях: от загрузки модулей в память и переходов между процессами до применения украденного сертификата и использования легитимного антифрод-сервиса в качестве фильтра для отбора жертв.
Продукты Касперского детектируют угрозу как HEUR:Trojan-Banker.Win64.GoPix, Trojan.PowerShell.GoPix и HEUR:Trojan-Banker.OLE2.GoPix.