Новый бэкдор для macOS, крадущий криптовалюты

security IOC

Месяц назад Kaspersky Lab обнаружили несколько взломанных приложений, распространявшихся на пиратских сайтах и зараженных троянским прокси. Злоумышленники переупаковывали взломанные приложения в PKG-файлы со встроенным троянским прокси и пост-инсталляционным скриптом, инициирующим заражение. Недавно нам удалось обнаружить новое, доселе неизвестное семейство вредоносных программ для macOS, которые использовали взломанное программное обеспечение. Угроза оказалась гораздо более мощной, чем несанкционированная установка прокси-сервера.

Бэкдор

Обнаруженные Kaspersky Lab образцы успешно запускались на macOS Ventura 13.6 и более поздних версиях, что позволяет предположить, что операторы нацелились только на пользователей более новых версий операционной системы как на процессорах Intel, так и на кремниевых машинах Apple. Скомпрометированные образы дисков содержат программу под названием "Activator" и приложение, которое пользователь хочет установить. При открытии/монтировании образа появляется окно с инструкциями по установке.

Инструкция предписывает пользователю скопировать приложение в /Applications/, а затем запустить Activator. Последний выглядит довольно безыскусно: просто кнопка PATCH, при нажатии на которую появляется запрос пароля.

Приложение в папке Resources каким-то образом содержало инсталлятор Python 3.9.6 и дополнительный файл Mach-O с именем tool. Основной файл Fat Mach-O, показательно названный GUI, по сути, реализовывал кнопку PATCH, нажатие на которую запускало два события:

  • Программа установки Python копировалась в каталог временных файлов: /tmp/
  • Исполняемый файл утилиты в папке resources запускался с правами администратора. Для этого Activator использовал уже устаревшую функцию AuthorizationExecuteWithPrivileges, которая вызывала окно с запросом пароля администратора.

После запуска утилита проверяла систему на наличие установленной копии Python 3, и если не находила ее, то устанавливала ту, которую предварительно скопировала в /tmp/. Далее она "патчила" загруженное приложение: сравнивала первые 16 байт модифицированного исполняемого файла с последовательностью, жестко закодированной в Activator, и удаляла их в случае совпадения

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

Помимо выполнения команд, скрипт собирал и отправлял на сервер следующую информацию:

  • Версия операционной системы
  • Список каталогов внутри /Users/
  • Пустое поле "av" предположительно будет заполнено информацией о наличии антивирусных программ в последующих версиях.
  • Список установленных приложений
  • Тип процессора
  • Внешний IP-адрес
  • Пустое поле "ver", в которое, предположительно, будет отправлена информация о версии полезной нагрузки.

На момент проведения исследования сервер не выдал ни одной команды, а позже и вовсе перестал отвечать. В частности, разработчики изменили "метаданные", хранящиеся в начале программы и содержащие IP-адрес и доменное имя сервера C2, а также GUID и версию программы. По всей видимости, они автоматически обновлялись внутри скрипта, как только менялся IP-адрес сервера, что происходило примерно каждые 10-20 минут. Обновления функционального кода также производились человеком (см. изображения ниже).

Помимо вышеупомянутых возможностей, скрипт содержал еще две примечательные функции: check_exodus_and_hash() и check_btccore_and_hash().

Обе они содержали домен apple-analyser[.]com, который служил хостом для дальнейшей полезной нагрузки. Обе функции имели схожую цель: проверить, содержит ли устройство соответствующее приложение криптокошелька, и если да, то заменить его на загруженное с apple-analyser[.]com. Кроме приложения, на сервере хранилась чистая версия фреймворка Electron для запуска "новой" версии Exodus, а также файл Exodus.scpt, который вы можете видеть на скриншоте выше и который нужен только для выполнения следующей команды

Злоумышленники заразили Exodus, внедрив свое детище в самое начало приложения: в файл main/index.js, который запускался первым при запуске приложения.

Приложение отправило в канал с именем 334b4425988b47a5b67c92518f9815c6 некие данные, которые впоследствии попали на 22[.]imohub[.]workers[.]dev. Оставалось только найти точный фрагмент кода, который отправил данные, и это был... барабанная дробь... wallet/index.js. Поскольку в коде не было ни переносов строк, ни отступов, мы придали ему нужное форматирование и проверили, что там происходит.

Indicators of Compromise

Domains

  • 22.imohub.workers.dev
  • apple-analyser.com
  • apple-health.org
  • imohub.net

MD5

  • 005fb6dee90eeefa89d6400f7a06d058
  • 09ab22fcf21385cc5702ec52ac4eca02
  • 18c564a5cc4b7414df8345a8bdce7418
  • 29a35e0e65bba727a97747acdf921c09
  • 29b1ba90407a93400e062fb65dc9b667
  • 2ebfe93a39ce3fcecca883b5f182029e
  • 2ed32d3df8b4a2ef891b44a6397cf6ea
  • 3422f0cefa0c4612d18643bbf07a4a98
  • 352f0d288e612e4f66c50aaf9214a81d
  • 38e4ef0d9221b25510cc50bcc8f4b4e8
  • 3a89719527d51e7c60854704e9f49a32
  • 3af3d6ba3c80b7bf5d67deddb2971c61
  • 3b357b8d65537d40e87599c5329d2a3d
  • 3f89644dfc394e888a741f6c09638d98
  • 4886a687ada61fc7f53b41f6020e76cc
  • 4c2ec35d13c5f44000caf658e40e444c
  • 5abe156cb33b18a46c7279d9c52b1c64
  • 5bab5ba8c509a9baa5db246d932a099f
  • 609596d15e684f4a8ea80b7ee4b8c6a8
  • 67e1f194c37968bb2edaf469bf40b837
  • 71eefe83f836ebceadc9f68ff0e37d3b
  • 7fd9a401fd0d7901cf4494333d1896cb
  • 9124843fdbf27e7b31d2f883042021a9
  • 948a90b43ade9dbc559fd27be404f9f0
  • 948c1bdc9edf3e57758b677a0a449f34
  • 95c86de53ad9ca116f8c6eb2e6a152f5
  • 9c0e8d45cbf5cae428bef90b5824e5b1
  • a33b6c5905cefced329fa89f5eebb481
  • a386380e03097055c24b0f35263d5492
  • a5924fff42d60a732853da167a743182
  • a9231044dd45a85a0bf45e01584bf213
  • adede572ad9599e331592103f9eea2a2
  • b2d519d13125c29832b132e927fd141b
  • ba41c9f6d89671b729eafbe6d5f1c85e
  • bbe4c19f3b675705073ba3e8a560b768
  • be7e6e625d15d30ff47e34ebb1ee4511
  • c7178d08c13f3e49a6ebefe23d1fedff
  • c88c28149387ccf52ca3869442533fd9
  • cad3081fc6174ca4a4c18b8f73b3fe59
  • d1177ed07dddb09415c175a205143eb6
  • e12566cd9d72a9b56d5e53f00b7d2d53
  • e5f12e92b1fa956d02d35d6224abdbc8
  • e64773b03ad1eae52180c2b58907f1f6
  • f4282d7e32c7e8ab4e075c572ac43803
  • fb050f4c29a166480ff2f5a1fa8b9800
  • ff608ab027db4d1e076c1d8098e8dc8a
Добавить комментарий