WeaselBiscuit крадет данные криптокошельков из расширений Chrome
Вредоносный JavaScript-инфостилер заразил 13 npm-пакетов
WeaselBiscuit — новый JavaScript-инфостилер, который распространялся через npm-пакеты. Первые образцы появились в середине сентября. Вредонос выгружает данные расширений Chrome с компьютеров под управлением Windows, macOS и Linux. Команда OpenSourceMalware описала механизм работы WeaselBiscuit. Заражение происходит не на этапе установки зависимости, а после импорта пакета приложением. Встроенный loader.js запускает отдельный процесс Node.js. Затем он обращается к сервису Npoint, получает закодированный JavaScript и выполняет его в памяти через new Function. Такой подход минимизирует файловые следы и отделяет загрузчик от основной полезной нагрузки.
WeaselBiscuit собирает системную информацию и данные криптокошельков
После запуска WeaselBiscuit собирает имя компьютера и пользователя, сведения об операционной системе, процессоре и памяти. Также он получает локальные сетевые адреса, публичный IP и геолокацию. Вредонос перебирает каталоги Local Extension Settings в профилях Chrome. Затем он отправляет на сервер управления все читаемые непустые файлы из этих папок. Среди них может быть содержимое LevelDB, где расширения хранят локальное состояние. Хранилища расширений могут содержать состояние криптокошельков, адреса аккаунтов, списки токенов и другую служебную информацию. Отдельные команды сервера позволяют WeaselBiscuit следить за изменениями буфера обмена. На Windows он также записывает нажатия клавиш. В этот поток могут попасть пароли, API-токены, адреса кошельков и фразы восстановления.
Атака проще, чем у аналогов, но имеет потенциальные связи
WeaselBiscuit проще более известных вредоносов BeaverTail и OtterCookie. В найденном коде отсутствует функция прямого вывода криптовалюты, расшифровки сохранённых паролей Chrome, поиска seed-фраз по шаблонам, снимков экрана, удалённой оболочки и загрузки InvisibleFerret. Закрепление вредоноса ограничено отдельным процессом Node.js и локальным файлом с его идентификатором. Сходство с BeaverTail и OtterCookie заставило авторов отчёта проверить возможную связь с кампанией Contagious Interview. Эта кампания ранее маскировала заражение под проекты и тестовые задания для разработчиков. OpenSourceMalware оценивает связь с северокорейскими операторами с низкой или умеренной уверенностью. В пользу гипотезы говорят похожая схема с Npoint, одинаковая последовательность определения публичного IP и геолокации, а также архитектура управления, напоминающая OtterCookie. Общих уникальных серверов, подписей, данных о жертвах или убедительного совпадения кода пока нет. Ещё один след связан с числовыми идентификаторами 10, 12, 44, 79, 95 и 99, которые встречаются в названиях пакетов и передаваемых данных. Похожую разметку установок применяла PolinRider, ранее атаковавшая разработчиков через npm и расширения Chrome.
Ищите обращения к Npoint и подозрительные процессы Node.js
Для проверки возможного заражения OpenSourceMalware советует искать обращения к выявленным адресам Npoint и серверу управления. Также необходимо искать подозрительные дочерние процессы Node.js, файлы .pid и следы клавиатурного монитора в Windows. Важно установить, какое приложение импортировало заражённый пакет. Вредонос не использует lifecycle-hook npm и не запускается сразу после обычной установки зависимости. На момент публикации отчёта версия engin1 1.3.99 и пакет laycot 1.3.10 были доступны в npm. Список индикаторов OpenSourceMalware включает 13 npm-пакетов.
Источник: SecurityLab