Описание вредоносного ПО

Convuster: рекламное ПО для macOS теперь и на Rust

Введение

Традиционно значительная часть детектируемых вредоносных объектов для платформы macOS является рекламным ПО: помимо уже широко известного семейства Shlayer, в первую десятку входят такие представители Adware, как Bnodlero, Cimpli, Adload, Pirrit и прочие. Как правило, они написаны на языке C, Objective-C или Swift. Однако в последнее время злоумышленники все чаще обращают внимание на новые языки программирования — видимо, в надежде, что скомпилированный код будет сложнее анализировать вирусному аналитику, который еще не сталкивался со зловредом на новом языке. Мы уже видели довольно много образцов, написанных на Go, а недавно злоумышленники добрались и до Rust.

Первым о подозрительных файлах на этом языке программирования написал пользователь Twitter с ником @gorelics:

На скриншоте из его сообщения видно, что несколько образцов подозрительного ПО запускаются конфигурационными plist-файлами через механизм LaunchAgents/LaunchDaemons. В совокупности с подозрительными именами plist-файлов это является первым «тревожным звонком», указывающим на опасность программы, если учесть невысокую популярность исполняемых файлов на Rust.

Мы исследовали данные образцы на предмет вредоносного поведения. Анализ показал, что эти исполняемые файлы являются новой рекламной программой, которая получила название Convuster.

Технические детали

Образец на языке Rust

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

Артефакты языка программирования Rust в образце

При запуске исполняемый файл проверяет конфигурационные plist-файлы ~/Library/LaunchAgents/com.ist.up.plist и /Library/LaunchDaemons/com.ist.up.plist на наличие обязательных для запуска образца ключей, таких как RunAtLoad, StartInterval и Version. Мы не смогли получить эти файлы, но, предположительно, именно они служат для запуска рассматриваемого образца при входе пользователя в систему.

После прохождения проверок приложение получает идентификатор устройства, версию и разрядность системы и отсылает эти данные на сервер hxxps://post.convstats[.]com/hb/. В ответ Convuster получает файл в формате JSON и отправляет запрос на указанный в этом файле хост. Ответом на запрос является bash-скрипт, который после исполнения оболочкой Bash удаляется из системы.

Формирование запроса

На момент анализа сервер не отвечал на запросы. Однако изучив информацию о подозрительном домене convstats[.]com, мы обнаружили поддомены update.convstats[.]com и trk.convstats[.]com (помимо уже известного post.convstats[.]com).

Образец на языке Swift

На поддомене update.convstats[.]com — по адресу hxxps://update.convstats[.]com/Player.dmg — мы нашли DMG-образ диска, содержащий в себе другой исполняемый файл Convuster, уже на языке Swift.

Полезная нагрузка исполняемого файла зашифрована:

XOR-шифрование

Расшифровав данные, Convuster запускает полученный код и в первую очередь проверяет, что DMG-образ был скачан именно с адреса hxxps://update.convstats[.]com/Player.dmg с параметрами ?_=1390081 или &_=1390081. Делает он это путем обращения к карантинной базе данных штатной технологии Gatekeeper с помощью запроса:

select LSQuarantineAgentBundleIdentifier, LSQuarantineDataURLString from LSQuarantineEvent order by LSQuarantineTimeStamp desc limit 3

Типичное содержимое базы данных Gatekeeper

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

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

Установщик мимикрирует под обновление Flash Player

Независимо от того, согласится пользователь на установку или попытается закрыть окно, Convuster отправит на hxxps://post.convstats[.]com/dis/ запрос на загрузку установочного скрипта, после чего запустит его в оболочке Bash.

Запуск скрипта в оболочке Bash

Распространение

Convuster запускается через механизм LaunchAgents, но при этом приложение не пытается добавить себя в автозагрузку самостоятельно. Это означает, что исследуемый файл, скорее всего, не скачивался и не устанавливался непосредственно пользователем. Мы предполагаем, что Convuster мог быть установлен другим рекламным ПО.

На момент проведения исследования нам было известно о следующих доменных именах, осуществляющих перенаправление на поддомен update.convstats[.]com:

  • storeoverlyadvancedapplication[.]best
  • streamgreatlyadvancedprogram[.]best
  • streamstrongcompletelyprogram[.]best
  • syncextremelysophisticatedsoftware[.]icu
  • streamquickcompletelyprogram[.]best
  • getnewestextremelyapp[.]best
  • launchfreeextremelyfreeware[.]best
  • loadsophisticated-thecompletelyfile[.]best

Также на форумах можно найти упоминания других доменов с жалобами на предложения установить поддельное обновление Flash Player:

Жалобы пользователей на рекламные редиректы

Заключение

Основываясь на том, как ведут себя написанные на Rust и Swift образцы Convuster, мы относим это приложение к классу рекламных. Авторы такого ПО, осваивая «нетипичные» языки, не испытывают ограничений из-за их «экзотичности»: в том же Rust достаточно средств не только для написания рекламного ПО, но и для реализации более сложных атак.

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

Защитные решения «Лаборатории Касперского» детектируют данное рекламное ПО с вердиктом not-a-virus:HEUR:AdWare.OSX.Convuster.a.

IoCs

SHA-256

Swift samples

Mach-O executables:
f9615ce5f1038afd4e19d3e35643c98af1a2ee53d9bf45958c84e5a7c4529e62

Disk Images:
02a0842beaf5ee9ed4f0f693ba276b73d53717eca821d2506efcdef7711d66da

Archives:
e5871655465e31c57e27900254e281233787f44bcec5604607b0b3bbbf5a9b16
182d8821182a143770e60a901486f262f63d2cfdc8bc9de3c076a80d36d02049
6bc8fc9fb7693379666049659e83f25b336b6b0b5e8073e1dd69e5b3dcb9826d
cbd6fb1075fc3e57ea7ac886ca218a105c307b75c37e10ca86a5779f4abeca3a
02e6f4388387c940b30c9afb911686d6bee5b3a7249e986f239bbd73d9003a0d
31526cfba9202086feeb658f92941b1ecd7ae1b646c75886600a991f86a843a4

Rust samples

Mach-O executables:
947ae8f075fd0d1e5be0341b922c0173f0c5cfd771314ebe220207f3ed53466a
77bc8b0e17e1c56fba70d8707de9718cd5c10565454fdb85c862a7f3d7e82983
8898f499f334a3231695b8a60dfdfb289836da1de7a4e4e334df83a748c11e07
d511e44ee6ae06228170aef1bef567e059596d259e205295b99e85de8c966354

Domains

post.convstats[.]com
update.convstats[.]com
trk.convstats[.]com

Convuster: рекламное ПО для macOS теперь и на Rust

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

«Лаборатория Касперского» обнаружила новую APT-угрозу CloudSorcerer, нацеленную на российские государственные организации и использующую облачные службы в качестве командных серверов аналогично APT CloudWizard.

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике