Сегодня QR-коды получили самое широкое распространение, став простым способом доставки маркетингового контента и перенаправления пользователей на веб-сайты и интересующие их ресурсы. Но вместе с тем они превратились и в средство маскировки для распространителей вредоносного кода.
Исследователи из компании Socket обнаружили новый тип атак, в которых вредоносный JavaScript-пакет маскируется в QR-коде под безобидную утилиту и с помощью методов стеганографии осуществляет кражу учетных данных пользователей.
Пакет fezbox выдавал себя за вполне легитимную библиотеку вспомогательных функций на TypeScript. В его описании на китайском языке содержались упоминания о высокой производительности, тестах и даже о наличии модуля для работы с QR-кодами, который способен генерировать и анализировать коды, а также автоматически загружать необходимые программные компоненты. Все это создавало впечатление надежного инструмента для разработчиков. Нигде, однако, не упоминалось о том, что простой импорт библиотеки инициировал серверный процесс, который извлекал и запускал программный код, скрывавшийся в удаленном образе QR-кода.
Вредоносный пакет fezbox замаскирован под библиотеку утилит и имеет три уровня обфускации: реверсированную строку, QR-код и скрытую полезную нагрузку. Вредоносный код скрывается в больших блоках, казалось бы, безобидных инструкций, которые позволяют обходить проверки безопасности. Определенное условие в коде анализирует, запущено ли приложение в среде разработки, и, если это так, код ничем не проявляет себя. Злоумышленник не хочет рисковать быть пойманным в виртуальной или любой другой непроизводственной среде, и, чтобы избежать этого, устанавливает ограничения на время и способ запуска своего эксплойта.
Через 120 секунд после подключения библиотеки она загружает изображение QR-кода с удаленного ресурса, извлекает из него зашифрованный код JavaScript и выполняет его. Программа считывает файл cookie из 'document.cookie', извлекает оттуда имя пользователя и пароль, если они существуют, а затем переворачивает строку – 'password' превращается в 'drowssap'. Реверсирование – это классический прием для защиты от проверок, позволяющий обойти соответствующие инструменты анализа, которые ищут URL-адреса, но не их реверсированные версии.
Если файл cookie содержит имя пользователя и пароль, пакет извлекает его с помощью команды HTTPS POST; в противном случае он ничего не делает и тихо завершает работу. Сегодня большинство приложений не хранят пароли в файлах cookie, поэтому трудно сказать, насколько успешной может быть атака такого рода.
Пакет fezbox уже удален с GitHub и внесен в список вредоносных. Но его появление свидетельствует о расширении использования QR-кодов, аудио- и видеофайлов злоумышленниками, чьи методы становятся все более изощренными.
По мнению исследователей, интенсивность атак такого рода будет только нарастать, ведь фишинг разработчиков еще более выгоден, чем фишинг обычных пользователей.