JokerSpy Trojan IOCs

remote access Trojan IOC

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

JokerSpy Trojan

На данный момент эти образцы еще практически не обнаружены, и о каждом из них имеется очень мало информации. Самое раннее упоминание, которое мы смогли найти, это анонимная загрузка на VirusTotal 18 апреля (IoC A), а также три образца (B - D), которые, похоже, были загружены жертвой, с которой мы работали в ходе расследования.

Два из трех изолированных образцов представляют собой общие бэкдоры, написанные на Python, которые, похоже, нацелены на операционные системы на базе Mac OS, Windows и Linux.

Чтобы определить операционную систему жертвы, бэкдор shared.dat имеет процедуру, которая проверяет ОС, затем возвращает 0 для Windows, 1 для macOS и 2 для Linux.

Первый идентифицированный файл называется shared.dat и использует подстановку rot13 для сокрытия значений определенных путей к файлам и строк. Он также генерирует уникальный идентификатор устройства для последующего использования в запросах к командно-контрольному центру.

При выполнении бэкдор сначала генерирует UID, упомянутый выше. Затем этот UID используется для присвоения имени временному файлу (<uid>.dat). Затем вредоносная программа входит в цикл while True, где пытается установить связь с удаленным сервером, используя специальный формат пакетов. Эти пакеты начинаются с GITHUB_RES или GITHUB_REQ + UID, сгенерированный на предыдущем этапе. Бэкдор поддерживает четыре команды, посылаемые удаленным сервером в виде номеров cmdType:

Код 501: Извлечь основную информацию

Когда бэкдор получает команду cmdType 501, он извлекает такие сведения, как текущее время, имя пользователя, имя хоста, версия ОС, а также результаты следующих команд:

ifconfig -a и ps -ef при выполнении на Unix-системе;
ipconfig /all и tasklist /svc при выполнении на машине Windows.

Эти данные также записываются в файл, полученный в качестве аргумента - в нашем случае файл называется b.dat

Код 502: CmdExec

Функция cmdExec, очевидно, используется для выполнения определенной команды, предоставленной в качестве аргумента с помощью функции subprocess.Popen. Запрос содержит команду, закодированную как base64, и результаты кодируются тем же методом.

Код 503: DownExec

Функция DownExec ведет себя по-разному в зависимости от операционной системы жертвы. Для устройств MacOS функция записывает файл /Users/Shared/AppleAccount.tgz. Содержимое, записанное в архив, при получении с сервера также кодируется в base64. Он распаковывает архив в папку /Users/Shared, затем открывает приложение /Users/Shared/TempUser/AppleAccountAssistant.app.

На системах Linux вредоносная программа вызывает функцию dist_name, которая проверяет /etc/os-release для подтверждения того, является ли дистрибутив жертвы Debian, Fedora или каким-либо другим. Функция записывает некоторый C-код, полученный от C2, во временный файл tmp.c, который позже компилируется в файл /tmp/.ICE-unix/git с помощью команды cc на Fedora и gcc на Debian. После компиляции файл выполняется в фоновом режиме с двумя параметрами, также полученными от C2.

Код 504: KillSelf

Эта функция не требует пояснений и используется для простого выхода из скрипта.
sh.py - более мощный аналог бэкдора

Бэкдор sh.py (SHA-1 bd8626420ecfd1ab5f4576d83be35edecd8fa70e) также написан на языке Python и обладает кроссплатформенными возможностями. Он хранит свои параметры конфигурации в файле ~/Public/Safari/sar.dat после того, как закодирует их в base64. Параметры, хранящиеся в этом файле, включают такие детали, как UID, SleepCycleMin, а также два возможных URL-адреса сервера. Подобно бэкдору shared.dat, sh.py также генерирует и сохраняет UID (хотя и 9-значный).

В отличие от бэкдора shared.dat, этот бэкдор не содержит жестко заданного значения для сервера C&C. Вместо этого значение для C&C может быть задано в качестве параметра при запуске скрипта или загружено из файла настроек.

В своей основной функции скрипт взаимодействует с удаленным сервером с помощью цикла while и обрабатывает определенные команды с помощью функции `process_command', которая может принимать в качестве аргумента любое из следующих значений:

  • "l" -> листинг файлов (путь, размер, время доступа, разрешения)
  • "c" -> вывод команды, выполняемой в системе
  • "cd" -> смена каталога
  • "xs", "xsi" -> выполнение команды с помощью exec. В отличие от xs, xsi выполняет команду, которая изначально закодирована в base64
  • "r" -> удалить файл/каталог
  • "e" -> выполнить файл по определенному пути (также с параметрами)
  • "u" -> записывает данные, полученные от сервера, в файл после их base64-декодирования
  • "d" -> читает данные из файла и отправляет их на сервер партиями в кодировке base64
  • "g" -> вызывает функцию load_setting() и отправляет текущую конфигурацию на сервер (из файла sar.dat), также в кодировке base64
  • "w" -> устанавливает значение для определенных опций, таких как SleepCycleMin или ServerUrl (массив из 2 элементов), используя функцию save_settings.

Бэкдор также включает функцию 'get_basic_information', которая извлекает специфические детали о системе, такие как имя хоста, имя пользователя, версия ОС, версия Python и многое другое. При выполнении скрипт пытается подключиться к одному из двух URL-адресов сервера, чтобы передать эти данные. Если первый URL недоступен, он пытается связаться со вторым.

xcc - предшественник шпионских программ

В отличие от двух предыдущих файлов, третий компонент представляет собой двоичный файл FAT (мультиархитектурный файл), который содержит файлы Mach-O для двух архитектур (x86 Intel и ARM M1). Двоичный файл xcc написан на языке Swift и предназначен для MacOS версии 12 и новее. Его основная цель, по-видимому, заключается в проверке разрешений перед использованием потенциального шпионского компонента (вероятно, для захвата экрана), но сам шпионский компонент в него не входит. Это наводит нас на мысль, что эти файлы являются частью более сложной системы.

Продукты Bitdefender отмечают компоненты Python как Trojan.Python.JokerSpy. Двоичные файлы Mach-O обнаруживаются как Trojan.MAC.JokerSpy.

Indicators of Compromise

URLs

  • https://www.git-hub.me/view.php

SHA1

  • 1ed2c5ee95ab77f8e1c1f5e2bd246589526c6362
  • 370a0bb4177eeebb2a75651a8addb0477b7d610b
  • 76b790eb3bed4a625250b961a5dda86ca5cd3a11
  • 937a9811b3e5482eb8f96832454723d59229f945
  • bd8626420ecfd1ab5f4576d83be35edecd8fa70e
  • c7d6ede0f6ac9f060ae53bb1db40a4fbe96f9ceb
Добавить комментарий