Тестовое для разработчиков обернулось трояном с удалённым доступом

изображение: grok
Иранская группировка Nimbus Manticore нашла новый способ охоты на разработчиков. Вместо привычных фишинговых писем в ход пошли тестовые задания для соискателей, внутри которых прячутся 2 новых зловреда, NodeRabbit и PollCat. Исследователи «Лаборатории Касперского» нашли образцы на устройствах в Афганистане, Египте и Эфиопии, а сам код написан на JavaScript и Node.js и одинаково запускается в Windows, Linux и macOS.
Схема начинается в LinkedIn. Атакующий представляется рекрутером крупной техкомпании, хвалит резюме и присылает архив с тестовым заданием на позицию фронтенд- или фулстек-разработчика. Для человека, который ищет работу, просьба скачать проект и починить пару багов за 3 часа выглядит абсолютно рутинно, поэтому жертва запускает код сама, своими руками, полагая, что проходит обычный этап отбора.
Внутри архива Front-Technical-Challenge.zip лежал проект Taskflow для управления задачами. Кандидату предлагали найти ошибки во фронтенде, а файл server.js трогать запрещалось, он якобы уже рабочий. Там был спрятан триггер, поддельный npm-пакет colorized_terminal, который запускал компонент NodeRabbit прямо из папки node_modules. После старта зловред умеет:
- собирать данные об устройстве, процессах и каталогах;
- выполнять произвольные команды через оболочку;
- читать, кодировать в Base64 и передавать файлы по частям;
- удалять файлы и целые каталоги, создавать новые;
- менять частоту связи с управляющим сервером;
- запускать временные скрипты Node.js и подчищать за собой следы.
Интересно, что C2-адреса на Azure отвечают за разные задачи, один принимает регистрацию заражённой машины, другой раздаёт новые задания, а третий получает результат.
NodeRabbit нашли в 3 вариациях, они отличаются набором API и деталями маскировки. Закрепление зависит от системы, в Windows это ветка реестра Run, в Linux cron-задание, в macOS Launch Agent, а сам процесс выдаёт себя за обновление Microsoft Edge или Intel Driver & Support Assistant.
Третья версия пошла дальше и научилась работать даже с Windows Subsystem for Linux, видимо, чтобы жертва не отвертелась ни на одной платформе. Новый набор функций умеет:
- создавать ежедневную задачу в планировщике и запускать VBS-скрипт через wscript и wsl;
- искать почтовые адреса в файлах Outlook OST и PST;
- маскироваться под расширение VS Code с названием GitHub Copilot Helper;
- проверять собственные механизмы автозапуска и подчищать их при необходимости;
- находить git-репозитории на диске и дописывать загрузчик в git hooks.
Похожая механика легко ложится и на русскоязычный сегмент. Тестовые задания от рекрутеров, npm-пакеты без проверки и удалённые собеседования это стандартная практика для отечественных разработчиков не меньше, чем для их коллег на Ближнем Востоке.
Второй инструмент, PollCat, маскировался под соревнование для программистов, причём настолько убедительно, что задачки хотелось решать просто из спортивного интереса. Архив RankChallenge-react-6uJSX3-main.zip был собран как учебная CTF-платформа, внутри лежали ключи хранилища с префиксом ctf и PDF-инструкция с кнопкой Continue.
Кандидату нужно было ввести одноразовый 6-значный код, который обновлялся каждые 30 секунд, а на всё задание отводился час. Дедлайн работал как психологический трюк, человеку было некогда разбираться, почему проект ведёт себя странно.
Стоит обратить внимание, что проверка одноразового кода никак не влияла на работу PollCat, зловред запускался и без успешного входа в систему.
После авторизации PollCat получал свой JWT и стартовал второй экземпляр, уже без всякой видимой связи с учебным заданием. Всего у зловреда 22 команды и 7 API для связи с сервером, он умеет работать с файлами, запускать JavaScript и DLL, собирать и распаковывать ZIP, а ещё смотреть список процессов, дисков и точек монтирования.
Отдельная функция посвящена разведке установленного софта. PollCat ищет папки с названиями 24 компаний из мира разработки и защиты данных, среди них:
- Kaspersky Lab, ESET, Bitdefender и Avast;
- Cisco, Palo Alto Networks, Fortinet и Check Point;
- CrowdStrike, SentinelOne и Malwarebytes;
- Google, Microsoft, VMware и Citrix.
Если папка находится, зловред собирает список файлов верхнего уровня, упаковывает в JSON и отправляет оператору отдельным запросом.
У PollCat нашли родство с более ранним бэкдором MiniFast, известным также как MiniUpdate и Retrograde, совпадают архитектура, интервалы связи и набор операций. Русскоязычным пользователям тоже стоит держать в уме, что Kaspersky, обнаруживший атаку, много лет разбирает подобные кейсы на постсоветском пространстве, а значит следующая волна вполне может прийти и сюда.
Проверить себя до того, как HR пришлёт архив с тестовым заданием, несложно. Стоит взять за привычку:
- запускать незнакомый код в песочнице или отдельной виртуалке;
- сверять профиль рекрутера и домен компании перед созданием собеседования;
- не игнорировать файлы, которые просят не трогать, а как раз проверять в первую очередь;
- устанавливать npm-пакеты только после проверки в официальном реестре;
- держать антивирус и файрвол включёнными даже во время тестового.
Ранее сообщалось, что в июле хакеры, связанные с Ираном, атаковали небольшой генератор электроэнергии в Великобритании и вывели его из строя на четыре дня. Министр энергетики страны Майкл Шэнкс назвал объект крошечным и заявил, что угрозы национальной энергосистеме не возникало. По данным британских СМИ, кибератака впервые в стране привела к реальной остановке энергетического объекта.
Эксперты CISOCLUB отметили, что рынок труда в IT давно стал полноценной целью для шпионских группировок, а не просто побочной темой отчётов. По их мнению, кроссплатформенный JavaScript даёт атакующим одну кодовую базу сразу под 3 системы, поэтому охват жертв растёт быстрее, чем защита успевает подстраиваться.
Специалисты CISOCLUB обратили внимание, что психология кандидата работает лучше любого эксплойта, человек, который хочет получить оффер, редко проверяет код с той же дотошностью, с какой проверял бы письмо от незнакомца. Есть и риск для компаний, чьи сотрудники проходят внешние собеседования на личных устройствах, заражённая машина может стать точкой входа в корпоративную сеть. Тестовые задания стоит запускать изолированно и относиться к ним как к недоверенному коду от постороннего человека, а не как к обычной домашней работе.



