CrateDepression Malware IOCs

malware IOC

Компания SentinelLabs провела расследование атаки на цепочку поставок против сообщества разработчиков Rust, которую они называют "CrateDepression". 10 мая 2022 года репозиторий сообщества зависимостей Rust crates.io выпустил сообщение об удалении вредоносного crate 'rustdecimal'. Пытаясь обмануть разработчиков Rust, вредоносный крейт опечатывает хорошо известный пакет rust_decimal, используемый для дробных финансовых вычислений. Зараженная машина проверяется на наличие переменной окружения GITLAB_CI в попытке определить конвейеры непрерывной интеграции (CI) для разработки программного обеспечения.

CrateDepression Malware

  • 10 мая 2022 года рабочая группа Rust Security Response Working Group выпустила рекомендацию, в которой сообщалось об обнаружении вредоносного крита, размещенного в репозитории сообщества зависимостей Rust.
  • Вредоносная зависимость проверяет переменные окружения, которые указывают на особый интерес к конвейерам непрерывной интеграции (CI) GitLab.
    Зараженные CI-конвейеры получают полезную нагрузку на втором этапе. Мы идентифицировали эту полезную нагрузку как двоичные файлы Go, построенные на основе фреймворка для красной передачи данных Mythic.
  • Учитывая характер жертв, на которых направлена атака, она может послужить средством для последующих атак на цепочки поставок в большем масштабе по отношению к зараженным конвейерам разработки.

Вредоносный пакет был первоначально замечен внимательным наблюдателем и сообщен на легитимный аккаунт rust_decimal на github. Последующее расследование, проведенное командой безопасности crates.io и рабочей группой Rust Security Response, выявило 15 итерационных версий вредоносного "rustdecimal", поскольку злоумышленник(и) тестировал(и) различные подходы и усовершенствования. Начиная с версий 1.22.0 и заканчивая 1.23.5, вредоносный крейт функционировал идентично легитимной версии, за исключением добавления одной функции Decimal::new. Эта функция содержит код, слегка обфусцированный с помощью пятибайтового XOR-ключа.

Злоумышленник устанавливает хук на std::panic, чтобы при любых неожиданных ошибках выводилась следующая (деобфусцированная) строка: "Не удалось зарегистрировать этот бегунок. Возможно, у вас проблемы с сетью". Это более знакомое сообщение об ошибке для разработчиков, использующих программу GitLab Runner для конвейеров CI.

Тема сообщения об ошибке выдает цель злоумышленника. Функция bit_parser() проверяет, установлена ли переменная окружения GITLAB_CI; в противном случае она выдает ошибку "503 Service Unavailable". Если переменная окружения установлена, что означает, что зараженная машина, скорее всего, является конвейером GitLab CI, вредоносный крейт проверяет существование файла по адресу /tmp/git-updater.bin. Если файл отсутствует, то вызывается функция check_value().

В зависимости от операционной системы хоста, check_value() деобфусцирует URL и использует запрос curl для загрузки полезной нагрузки и сохранения ее в /tmp/git-updater.bin. Доступны два URL-адреса:

  • Linux https://api.githubio.codes/v2/id/f6d50b696cc427893a53f94b1c3adc99/READMEv2.bin
  • macOS https://api.githubio.codes/v2/id/f6d50b696cc427893a53f94b1c3adc99/README.bin

Как только он становится доступен, rustdecimal выполняет соответствующие команды, чтобы установить двоичный файл как исполняемый и породить его как форк. В системах macOS перед выполнением полезной нагрузки он дополнительно очищает расширенный атрибут карантина.

Если какая-либо из этих команд не сработает, процедура expect() выдаст пользовательскую ошибку: "ERROR 13: Type Mismatch".

Полезная нагрузка второго этапа поставляется в формах ELF и Mach-O, причем последняя скомпилирована только для компьютеров Apple Intel Mac. Вредоносная программа будет работать на компьютерах Apple M1 Mac при условии, что пользователь предварительно установил Rosetta.

Оба двоичных файла собраны на базе Go 1.17.8 и представляют собой неподписанные полезные нагрузки Poseidon, установки агентов для фреймворка Mythic, работающего после эксплойта. Хотя Mythic имеет несколько возможных типов агентов, Poseidon является наиболее подходящим для злоумышленников, стремящихся скомпрометировать как Linux, так и более современные версии macOS. Написанный на языке Go, Poseidon позволяет избежать проблем с зависимостями, которые возникают на компьютерах Mac при использовании агентов Mythic, написанных на Python, AppleScript и JXA.

При выполнении полезная нагрузка второго этапа выполняет ряд процедур начальной настройки, используя преимущества функции goroutines языка Go для их одновременного выполнения. Затем функция profile.Start() инициирует связь с C2.

На момент нашего расследования C2 не реагировал на запросы, но анализ бинарного файла и исходного кода Poseidon показал, что полезная нагрузка содержит переключатель с большим набором опций, включая захват экрана, запись клавиатуры, загрузку и скачивание файлов. На macOS оператор может выбрать для персистенции один из LaunchAgent/Daemon и LoginItem или оба.

Существуют некоторые заметные различия в зависимостях для обеспечения возможностей, специфичных для ОС. Например, версия для Linux не полагается на RDProcess, но добавляет библиотеки типа xgb для взаимодействия с протоколом Linux X.

В конечном итоге, оба варианта служат универсальным бэкдором, изобилующим функциональностью, позволяющей злоумышленнику захватить зараженный хост, сохранять, регистрировать нажатия клавиш, вводить дополнительные этапы, осуществлять захват экрана или просто удаленно администрировать различными способами.

Indicators of Compromise

IPv4

  • 64.227.12.57

Domains

  • api.kakn.li
  • githubio.codes

URLs

  • https://api.githubio.codes/v2/id/f6d50b696cc427893a53f94b1c3adc99/README.bin
  • https://api.githubio.codes/v2/id/f6d50b696cc427893a53f94b1c3adc99/READMEv2.bin
  • https://api.kakn.li

SHA1

  • 009bb8cef14d39237e0f33c3c088055ce185144f
  • 016c3399c9f4c90af09d028b32f18e70c747a0f6
  • 051d3e17b501aaacbe1deebf36f67fd909aa6fbc
  • 13f2f14bc62de8857ef829319145843e30a2e4ea
  • 16faf72d9d95b03c74193534367e08b294dcb27a
  • 2f8be17b93fe17e2f97871654b0fc2a1c2cb4ed3
  • 34a06b4664d0077f69b035414b8e85e9c2419962
  • 4add8c27d5ce7dd0541b5f735c37d54bc21939d1
  • 5847563d877d8dc1a04a870f6955616a1a20b80e
  • 5a9e79ff3e87a9c7745e423de8aae2a4da879f08
  • 609f80fd5847e7a69188458fa968ecc52bea096a
  • 7fd701314b4a2ea44af4baa9793382cbcc58253c
  • 88cbd4f284ba5986ba176494827b7252c826ff75
  • 8c0efac2575f06bcc75ab63644921e8b057b3aa1
  • 90551abe66103afcb6da74b0480894d68d9303c2
  • 987112d87e5bdfdfeda906781722d87f397c46e7
  • 98c531ba4d75e8746d0129ad7914c64e333e5da8
  • 99f7d1ec6d5be853eb15a8c6e6f09edd0c794a50
  • a0516d583c2ab471220a0cc4384e7574308951af
  • a14d34bb793e86eec6e6a05cd6d2dc4e72c96de9
  • a21af73e14996be006e8313aa47a15ddc402817a
  • a28b44c8882f786d3d9ff18a596db92b7e323a56
  • a4a576ea624f82e4305ca9e83b567bdcf9e15da7
  • a6c803fc984fd20ba8c2118300c12d671403f864
  • b8a9f5bc1f56f8431286461fe0e081495f285f86
  • bd927c2e1e7075b6ed606cf1e5f95a19c9cad549
  • be0e8445566d3977ebb6dbb6adae6d24bfe4c86f
  • be62b4113b8d6df0e220cfd1f158989bad280a57
  • c5f2a35c924003e43dabc04fc8bbc5f26a736a80
  • c91b0b85a4e1d3409f7bc5195634b88883367cad
  • d0fb17e43c66689602bd3147d905d388b0162fc5
  • ddca9d5a32aebc5a8106b4a3d2e22200898af91d
  • f578f0e6298e1055cdc9b012d8a705bc323f6053
  • fd63346faca7da3e7d714592a8222d33aaf73e09
Добавить комментарий