В начале этого года специалисты компании ReversingLabs обнаружили масштабную кампанию по распространению вредоносного кода под названием GraphAlgo. Два месяца спустя те же исследователи столкнулись с её более сложной версией. Речь идёт о серии фишинговых атак, нацеленных на разработчиков программного обеспечения. Злоумышленники создают поддельные компании в сфере блокчейн-технологий и выдают себя за рекрутеров. Их цель - заставить инженера установить троян удалённого доступа.
Описание
Схема атаки выглядит следующим образом. Хакеры находят разработчика на площадках для поиска работы или в соцсетях. Затем они отправляют ему тестовое задание. В файлах этого задания спрятана вредоносная зависимость. Когда разработчик запускает установку проекта, зависимость загружает на его компьютер троян. Такой подход уже использовался в первой версии кампании, в центре которой была подставная организация Veltrix Capital. Однако теперь технологии атакующих стали заметно изощрённее.
Если раньше злоумышленники размещали вредоносные пакеты в открытых репозиториях, таких как npm (менеджер пакетов для JavaScript) или PyPI (репозиторий пакетов для Python), то в новом варианте они отказались от этой практики. Причина проста: эти репозитории находятся под пристальным наблюдением служб безопасности. Вместо этого хакеры перенесли свои вредоносные зависимости в GitHub - в виде артефактов релизов. Это значительно снижает риск обнаружения. Сообщили исследователи ReversingLabs в своём отчёте, посвящённом новым находкам. Они подчёркивают, что смена тактики сделала атаку более труднообнаружимой.
Механика внедрения зависимости тоже изменилась. В первой волне злоумышленники прописывали ссылку на вредоносный пакет прямо в файле package.json. Теперь они прячут её глубоко внутри файла package-lock.json, в списке транзитивных зависимостей. Большинство зависимостей при этом остаются легитимными. Но одна из них указывает на скачивание пакета не из официального реестра npm, а из конкретного релиза на GitHub. Чтобы разработчик не заметил подмены, хакеры используют приём, известный как тайпсквоттинг. Например, название аккаунта на GitHub записывается так, чтобы его было трудно отличить от настоящего - заменой одной буквы. Вместо ljharb (строчная L) может быть Ijharb (прописная i), что визуально почти неразличимо.
Но самым необычным нововведением стала регистрация официального юридического лица. Хакеры от имени подставной компании Blockmerce подали документы на создание общества с ограниченной ответственностью (LLC) в штате Флорида. В заявлении указаны вымышленные имена сотрудников, включая генерального директора. Исследователи проверили адреса, фигурирующие в документах. Они оказались реальными, но принадлежали совершенно другим людям, которые не имеют отношения к атаке. Зачем атакующим понадобилась такая бюрократическая процедура? Скорее всего, для создания иллюзии серьёзной и проверенной организации. Установить личность хакеров это не помогло, зато повысило доверие потенциальных жертв.
Ещё одна новая техника касается подделки истории разработки на GitHub. Для большей убедительности злоумышленники копировали легитимные репозитории, например, библиотеку parity-bridges-common, и переписывали всю историю коммитов. Каждый коммит оставался на той же временной метке, но автор менялся на подставные аккаунты. Так в репозиториях-двойниках появлялись ложные имена "разработчиков", которые якобы давно и активно работают над проектом. Проверить подлинность такой истории обычным взглядом практически невозможно без сравнения с оригиналом.
Все эти усилия направлены на одну цель - заставить разработчика скачать и запустить код, который откроет доступ к его системе. Конечная нагрузка - это тот же троян удалённого доступа (RAT), что использовался и в первой волне. Он позволяет хакерам управлять заражённым компьютером, воровать данные и использовать его для дальнейших атак. Интересно, что после заражения вредоносная программа отправляет уведомление в зашифрованные каналы Telegram и Slack. Генерируется случайный адрес криптокошелька, который затем передаётся в смарт-контракт на тестовой сети Sepolia. Вероятно, так злоумышленники маркируют каждую успешную атаку.
Анализ временных меток коммитов и использование подставных личностей указывает на причастность группировки, связанной с Северной Кореей. Уровень подготовки, включая регистрацию компаний и сложные манёвры с git-историей, говорит о хорошо финансируемой структуре. Основная цель - разработчики, работающие с криптовалютами и блокчейн-проектами. Ущерб от таких атак может быть колоссальным. Недавние инциденты с компрометацией популярного npm-пакета axios и кража 285 миллионов долларов в ходе взлома платформы Drift подтверждают, что северокорейские хакеры представляют серьёзную угрозу для всей экосистемы открытого кода.
Вывод из этой истории очевиден: доверие к проектам на GitHub и open-source репозиториям больше не может быть безоговорочным. Даже если репозиторий выглядит солидно, имеет длинную историю коммитов и официально зарегистрированную компанию, он всё равно может быть ловушкой. Разработчикам стоит проверять каждую стороннюю зависимость, запускать тестовые задания в изолированной среде и использовать специализированные инструменты для анализа программного обеспечения. Кампания GraphAlgo показывает, что хакеры готовы вкладывать значительные ресурсы в создание убедительного фасада, а значит, и меры защиты должны быть не менее тщательными.
Индикаторы компрометации
Domains
- huvaret.art
URLs
- https://github.com/experss-js/body-parser/releases/download/v2.2.1/body-parser-2.2.1.tgz
- https://github.com/expessjs/body-parser/releases/download/v2.2.0/body-parser-2.2.0.tgz
- https://github.com/expess-js/body-parser/releases/download/v2.2.1/body-parser-2.2.1.tgz
- https://github.com/Ijharb/side-channel-weakmap/releases/download/1.0.2/side-channel-weakmap-1.0.2.tgz
- https://github.com/ljharb-js/parseurl/releases/download/v1.3.3/parseurl-1.3.3.tgz
Blockchain addresses
- 0x7526acdcf0b22f9b8f790cf069e5dd16cc414b0e
- 0x87bf60fb6657d5e5cd425e36ff18aa7bb5a8fcf4
SHA1
- 173bb313e6e29525fd6b04407c1c6e8a4a29c7a0
- 5c30d58dc44182f959c8035e990153b3553deace
- 65de94d3eb0524fc17df5fdec8c20afada2d0119
- 679fdccecfed0e5cc2c2636fe649a668d50f63ea
- 7a35c8b0e1182b1fd12a8acb49cfeaeb22eae1d6
- 7af1065e7e6fb6184f99541d142132ba6db03a41
- c4326153401904e82b17726864be65cac0c97fd1
- c7692a6816cc0eb61216358ff0367d7469125192
- cb7ac56cf1c3c1aac9fe4c86a9a323be0698de6c
- d531769223f468f93e42e19dea74cb16443ba0b8
- d75b3abbdd7af3b18be945caa721f1e4e076146c
- e3a71d70a5a5d3790a352955edb3bb7a003dd6d5
- e4bf38b28b7aeec2685d1d2581d271c965ee6b84
- ebb4630024764bdf5e5c1013166cc461d3df7550
- eea702ebc53a4b9f8c1b511fffce16f6874de666
- f1487451933a05a680e71dde7a2b11560d2d33a7
- f6c574baf05234284966abba25377eee589bba6a