Одна из интересных составляющих исследования той или иной вредоносной программы — это изучение пути ее эволюции, наблюдение за тем, как создатели постепенно добавляют новые средства монетизации зловреда или его закрепления в системе. Интерес представляют в том числе опытные образцы, которые получили ограниченное распространение или даже вовсе не встречались «в дикой природе». Один из таких образцов недавно попал к нам — бэкдор для MacOS, который мы назвали Calisto.
Зловред был загружен на VirusTotal еще в далеком 2016 году — скорее всего, в том же году он и был создан. Однако два года, до мая 2018-го, Calisto оставался вне поля зрения антивирусных решений, и лишь недавно на VT появились первые детекты.
Зловреды для MacOS встречаются не так часто, к тому же в этом мы обнаружили несколько подозрительно знакомых черт. Поэтому мы решили посмотреть, что из себя представляет Calisto и почему его разработка была остановлена (и была ли?).
Распространение
У нас нет достоверных сведений о том, как распространялся бэкдор. Установочный файл Calisto представляет собой неподписанный DMG-образ и выдает себя за защитное решение от компании Intego. Примечательно, что в качестве прикрытия авторами Calisto выбрана девятая, актуальная на данный момент версия программы.
Для наглядности сравним файл зловреда c версией Mac Internet Security X9, скачанной с официального сайта.
Backdoor | Intego Mac Internet Security 2018 |
Не подписан | Подписан INTEGO |
Выглядит вполне убедительно, пользователь вряд ли заметит подмену, особенно если раньше не имел дела с легитимной версией защитного решения.
Установка
Сразу после запуска приложение встречает нас лицензионным соглашением, нужным для отвода глаз. Текст немного отличается от предлагаемого в продукте Intego — возможно, злоумышленники взяли одну из предыдущих версий соглашения.
Далее «антивирус» запрашивает логин и пароль пользователя, но это вполне рядовая ситуация на MacOS при установке программы, которая может вносить изменения в систему.
Но после получения запрошенного программа слегка подвисает, а затем сообщает, что произошла ошибка и лучше скачать новый установочный пакет с официального сайта разработчика антивируса.
Прием простой, но эффективный. Официальная версия программы, скорее всего, будет установлена без проблем, потому пользователь вскоре забудет об ошибке. А в это время Calisto будет спокойно решать поставленные перед ним задачи.
Анализ троянца
С включенным SIP (System Integrity Protection)
Деятельность Calisto на компьютере с включенным SIP (System Integrity Protection) довольно ограничена. Напомним, SIP была анонсирована компанией Apple в 2015 году вместе с новой версией OSX El Capitan и предназначена для защиты критических для функционирования системы файлов от изменения, даже если их пытается осуществить пользователь с root-правами. Разработка Calisto осуществлялась в 2016 году или раньше, и можно предположить, что авторы троянца просто не стали принимать во внимание новую на тот момент технологию. Впрочем, многие пользователи до сих пор отключают SIP по различным причинам; мы категорически не рекомендуем так поступать.
Деятельность Calisto можно оценить по логу дочерних процессов троянца и декомпилированному коду:
Видно, что троянец сохраняет в скрытую директорию с именем .calisto следующие данные:
- хранилище Keychain,
- извлеченные из окна ввода логин и пароль пользователя,
- данные о сетевом подключении,
- данные из Google Chrome: историю, закладки, файлы cookies.
Напомним, что в Keychain хранятся пароли/токены, сохраненные пользователем, в том числе сохраненные в браузере Safari. Ключом для шифрования хранилища является пользовательский пароль.
Дальше в системе с включенным SIP возникает ошибка при внесении изменений в системные файлы. Она ломает логику работы троянца, и на этом его работа заканчивается.
При отсутствии/выключенном SIP
Наблюдать за действиями Calisto с отсутствующим или выключенным SIP намного интереснее. Троянец сначала выполняет шаги из предыдущей главы, но поскольку SIP не прерывает его работу, далее Calisto:
- копирует себя в /System/Library/,
- прописывается в автозагрузку,
- размонтирует и удаляет свой DMG-образ,
- прописывается в Accessibility,
- собирает дополнительную информацию о системе,
- включает удаленный доступ к системе,
- пересылает собранные данные на C&C-сервер.
Рассмотрим подробнее механизмы реализации вредоносных функций.
Добавление в автозагрузку происходит классическим для MacOS способом, через запись plist-файла в директорию /Library/LaunchAgents/ со ссылкой на зловред:
Размонтирование и удаление DMG-образа выполняется следующей командой:
Для расширения своих возможностей Calisto прописывается в Accessibility, напрямую модифицируя файл TCC.db, что является плохой практикой и индикатором вредоносной активности для антивируса. Но зато этот метод не требует взаимодействия с пользователем.
Важной частью Calisto является предоставление удаленного доступа к системе пользователя. Для этого он:
- Включает удаленный вход.
- Включает раздельное использование экрана.
- Настраивает разрешения на удаленный вход для пользователя.
- Разрешает удаленный вход всем.
- Включает скрытую в MacOS учетную запись root и устанавливает пароль, указанный в коде троянца.
Используемые для этого команды:
Напомним, что пользователь root в macOS хоть и существует, но по умолчанию выключен. Интересно, что после перезагрузки Calisto снова запрашивает пользовательские данные, но в этот раз ожидает ввода актуального root-пароля, который ранее сменил сам (root: aGNOStIC7890!!!). Это одно из подтверждений «сырости» троянца.
В конце Calisto пытается передать все данные из папки .calisto на сервер злоумышленников. Но на момент нашего исследования сервер уже не отвечал на запросы и, по-видимому, был выключен:
В дополнение
Во время статического анализа Calisto был обнаружен недописанный и неиспользуемый дополнительный функционал:
- загрузка/выгрузка расширений ядра (kernel extension), связанных с обслуживанием USB устройств,
- кража данных из пользовательских директорий,
- самоликвидация вместе с ОС.
Связь с Backdoor.OSX.Proton
Бэкдор Calisto идейно похож на представителя семейства Backdoor.OSX.Proton:
- Схожий способ распространения: маскируется под известный антивирус (ранее был обнаружен экземпляр Backdoor.OSX.Proton, маскирующийся под антивирус Symantec).
- В теле программы есть строка «com.proton.calisto.plist».
- Этот троянец, как и Backdoor.OSX.Proton, способен украсть множество персональных данных из системы пользователя, в том числе содержимое Keychain.
Напомним, что все известные зловреды семейства Proton распространялись и были обнаружены в 2017 году. Найденный же нами Calisto был создан как минимум в 2016-м. Если допустить, что данный троянец написан теми же авторами, то он может являться одной из самых первых версий Backdoor.OSX.Proton или даже прототипом. В пользу последнего варианта говорит большое количество неиспользуемых и не до конца реализованных функций. Впрочем, в поздних версиях Proton они так и не появились.
Для защиты от Calisto, Proton и их аналогов следует:
- Всегда обновляться до актуальной версии ОС.
- Не отключать SIP.
- Запускать только подписанное программное обеспечение, скачанное из доверенных источников, таких как AppStore.
- Использовать антивирусное ПО.
MD5
DMG-образ: d7ac1b8113c94567be4a26d214964119
Исполняемый Mach-О: 2f38b201f6b368d587323a1bec516e5d
MacOS-троянец Calisto: первый зловред семейства Proton?