Шпионская кампания StrongPity, нацеленная на пользователей Android

Шпионская кампания StrongPity, нацеленная на пользователей Android

Исследователи ESET выявили активную кампанию StrongPity, распространяющую троянизированную версию приложения Android Telegram, представленную как приложение Shagle — сервис видеочата, у которого нет версии приложения.

Исследователи ESET выявили активную кампанию, которую мы приписали APT-группе StrongPity. Кампания, активная с ноября 2021 года, распространяла вредоносное приложение через веб-сайт, выдающий себя за Shagle — службу случайного видеочата, которая обеспечивает зашифрованное общение между незнакомцами. В отличие от полностью веб-сайта, подлинного сайта Shagle, который не предлагает официального мобильного приложения для доступа к своим услугам, сайт-подражатель предоставляет только приложение для Android для загрузки, и потоковая передача через Интернет невозможна.

Ключевые моменты поста в блоге:

  • Только одна другая кампания для Android ранее была приписана StrongPity.
  • Это первый раз, когда описанные модули и их функциональность были задокументированы публично.
  • Сайт-подражатель, имитирующий сервис Shagle, используется для распространения мобильного бэкдора StrongPity.
  • Приложение представляет собой модифицированную версию приложения Telegram с открытым исходным кодом, переупакованную с использованием бэкдора StrongPity.
  • Основываясь на сходстве с предыдущим кодом бэкдора StrongPity и приложении, подписанном сертификатом из более ранней кампании StrongPity, мы приписываем эту угрозу группе APT StrongPity.
  • Бэкдор StrongPity является модульным, в нем все необходимые бинарные модули шифруются с помощью AES и загружаются с его C&C-сервера, а также имеет различные шпионские функции.

Вредоносное приложение, по сути, представляет собой полнофункциональную, но троянизированную версию легитимного приложения Telegram, однако представленную как несуществующее приложение Shagle. Мы будем называть его поддельным приложением Shagle, троянским приложением Telegram или бэкдором StrongPity в остальной части этого сообщения. Продукты ESET обнаруживают эту угрозу как Android/StrongPity.A.

Этот бэкдор StrongPity имеет различные шпионские функции: его 11 динамически запускаемых модулей отвечают за запись телефонных звонков, сбор SMS-сообщений, списки журналов вызовов, списки контактов и многое другое. Эти модули документируются впервые. Если жертва предоставит вредоносному приложению StrongPity сервис специальных возможностей, один из его модулей также получит доступ к входящим уведомлениям и сможет извлекать сообщения из 17 приложений, таких как Viber, Skype, Gmail, Messenger и Tinder.

Кампания, вероятно, имеет очень узкую направленность, поскольку телеметрия ESET до сих пор не идентифицирует жертв. Во время нашего исследования проанализированная версия вредоносного ПО, доступная на веб-сайте подражателя, больше не была активной, и ее больше нельзя было успешно установить и активировать ее бэкдор, поскольку StrongPity не получил собственный идентификатор API для своего троянизированного приложения Telegram. Но это может измениться в любой момент, если злоумышленник решит обновить вредоносное приложение.

Обзор

Эта кампания StrongPity сосредоточена вокруг бэкдора Android, доставленного из домена, содержащего слово «голландский». Этот веб-сайт выдает себя за законный сервис Shagle по адресу shagle.com. На рисунке 1 вы можете увидеть домашние страницы обоих веб-сайтов. Вредоносное приложение предоставляется непосредственно с выдающего себя веб-сайта и никогда не было доступно в магазине Google Play. Это троянская версия законного приложения Telegram, представленная как приложение Shagle, хотя официального приложения Shagle для Android в настоящее время нет.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 1. Сравнение законного веб-сайта слева и подражателя справа

Как видно на рисунке 2, HTML-код поддельного сайта содержит доказательства того, что он был скопирован с легитимного сайта. shagle.com сайт 1 ноябряst, 2021, с помощью автоматизированного инструмента HTTrack. Вредоносный домен был зарегистрирован в один день, поэтому сайт-подражатель и поддельное приложение Shagle могли быть доступны для скачивания с этой даты.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 2. Журналы, сгенерированные инструментом HTTrack, записанные в HTML-код поддельного веб-сайта

виктимология

Июля 18th, 2022 г., одно из наших правил YARA на VirusTotal срабатывало, когда вредоносное приложение и ссылка на веб-сайт имитировали shagle.com были загружены. При этом нас уведомили о Twitter о том образце, хотя ошибочно приписывается Бахамуту. Данные телеметрии ESET по-прежнему не идентифицируют жертв, что позволяет предположить, что кампания, скорее всего, была узконаправленной.

приписывание

APK, распространяемый веб-сайтом-подражателем Shagle, подписан тем же сертификатом подписи кода (см. рис. 3), что и троянизированное сирийское приложение электронного правительства, обнаруженное в 2021 г. Trend Micro, который также был приписан StrongPity.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 3. Этот сертификат подписал поддельное приложение Shagle и троянизированное сирийское приложение электронного правительства.

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

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 4. Сравнение имен классов троянизированного сирийского приложения электронного правительства (слева) и троянизированного приложения Telegram (справа)

Сравнивая код бэкдора из этой кампании с кодом из троянизированного сирийского приложения электронного правительства (SHA-1: 5A5910C2C9180382FCF7A939E9909044F0E8918B), он имеет расширенную функциональность, но с тем же кодом, который используется для предоставления аналогичных функций. На рисунке 5 и рисунке 6 вы можете сравнить код из обоих примеров, который отвечает за отправку сообщений между компонентами. Эти сообщения отвечают за запуск вредоносного поведения бэкдора. Следовательно, мы твердо верим, что поддельное приложение Shagle связано с группой StrongPity.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 6. Диспетчер сообщений, ответственный за срабатывание вредоносных функций в поддельном приложении Shagle

Технический анализ

Начальный доступ

Как описано в разделе «Обзор» этого сообщения в блоге, поддельное приложение Shagle было размещено на веб-сайте подражателя Shagle, с которого жертвы должны были загрузить и установить приложение. Не было никакой уловки, предполагающей, что приложение было доступно в Google Play, и мы не знаем, как потенциальные жертвы были заманены или иным образом обнаружены на поддельном веб-сайте.

Набор инструментов

Согласно описанию на веб-сайте подражателя, приложение бесплатное и предназначено для знакомств и общения с новыми людьми. Однако загруженное приложение представляет собой злонамеренно исправленное приложение Telegram, а именно версию Telegram 7.5.0 (22467), которая была доступна для загрузки около 25 февраля.th, 2022.

Переупакованная версия Telegram использует то же имя пакета, что и законное приложение Telegram. Имена пакетов должны быть уникальными идентификаторами для каждого приложения Android и должны быть уникальными на любом конкретном устройстве. Это означает, что если официальное приложение Telegram уже установлено на устройстве потенциальной жертвы, то эту версию с бэкдором установить невозможно; см. рис. 7. Это может означать одно из двух: либо злоумышленник сначала связывается с потенциальными жертвами и подталкивает их к удалению Telegram со своих устройств, если он установлен, либо кампания фокусируется на странах, где Telegram редко используется для связи.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 7. Если на устройстве уже установлено официальное приложение Telegram, троянскую версию установить не удастся

Троянизированное приложение Telegram StrongPity должно было работать так же, как и официальная версия для связи, используя стандартные API, которые хорошо задокументированы на веб-сайте Telegram, но приложение больше не работает, поэтому мы не можем проверить.

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

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рис. 8. Ошибка, отображаемая при регистрации по номеру телефона

По материалам Telegram документация об ошибках, похоже, что StrongPity не получил собственный идентификатор API. Вместо этого он использовал образец идентификатора API, включенный в открытый исходный код Telegram, для целей первоначального тестирования. Telegram отслеживает использование идентификатора API и ограничивает образец идентификатора API, поэтому его использование в выпущенном приложении приводит к ошибке, показанной на рис. 8. Из-за этой ошибки невозможно зарегистрироваться и использовать приложение или запускать его вредоносные функции. . Это может означать, что операторы StrongPity не продумали это, или, возможно, было достаточно времени, чтобы шпионить за жертвами между публикацией приложения и его деактивацией Telegram из-за чрезмерного использования идентификатора приложения. Поскольку ни одна новая и рабочая версия приложения никогда не была доступна через веб-сайт, это может свидетельствовать о том, что StrongPity успешно развернул вредоносное ПО в желаемых целях.

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

Компоненты и разрешения, необходимые для кода бэкдора StrongPity, добавляются к AndroidManifest.xml файл. Как видно на рисунке 9, это позволяет легко увидеть, какие разрешения необходимы для вредоносного ПО.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 9. AndroidManifest.xml с выделенными компонентами и разрешениями бэкдора StrongPity

Из манифеста Android мы видим, что вредоносные классы были добавлены в org.telegram.messenger package, чтобы он отображался как часть исходного приложения.

Первоначальная вредоносная функциональность запускается одним из трех широковещательных приемников, которые выполняются после определенных действий: ЗАГРУЗКА_ЗАВЕРШЕНА, НИЗКИЙ ЗАРЯД БАТАРЕИили ПОЛЬЗОВАТЕЛЬ_ПРЕСЕНТ. После первого запуска он динамически регистрирует дополнительные приемники вещания для мониторинга. SCREEN_ON, ОТКЛЮЧЕНИЯ ЭКРАНАкачества ПОДКЛЮЧЕНИЕ_CHANGE События. Поддельное приложение Shagle затем использует IPC (межпроцессное взаимодействие) для связи между его компонентами для запуска различных действий. Он связывается с C&C-сервером, используя HTTPS, чтобы отправить основную информацию о скомпрометированном устройстве, и получает зашифрованный с помощью AES файл, содержащий 11 двоичных модулей, которые будут динамически выполняться родительским приложением; см. рис. 10. Как видно на рис. 11, эти модули хранятся во внутренней памяти приложения. /data/user/0/org.telegram.messenger/files/.li/.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 10. Бэкдор StrongPity получает зашифрованный файл, содержащий исполняемые модули

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 11. Модули, полученные с сервера, хранятся во внутреннем хранилище бэкдора StrongPity

Каждый модуль отвечает за разные функции. Список имен модулей хранится в локальных общих настройках в общий файлconfig.xml файл; см. рис. 12.

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

  • libarm.jar (модуль cm) – записывает телефонные звонки
  • libmpeg4.jar (модуль nt) — собирает текст входящих уведомлений от 17 приложений
  • местный .jar (модуль fm/fp) – собирает список файлов (файловое дерево) на устройстве
  • телефон.jar (модуль ms) — злоупотребляет службами специальных возможностей, чтобы шпионить за приложениями для обмена сообщениями, извлекая имя контакта, сообщение чата и дату.
  • ресурсы.jar (sm module) – собирает SMS-сообщения, хранящиеся на устройстве
  • Services.jar (модуль lo) – получает местоположение устройства
  • systemui.jar (модуль sy) — собирает информацию об устройстве и системе
  • таймер.jar (модуль ia) — собирает список установленных приложений
  • инструментарий.jar (модуль cn) – собирает список контактов
  • watchkit.jar (модуль ac) — собирает список учетных записей устройств
  • комплект одежды.jar (модуль cl) — собирает список журналов вызовов
Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 12. Список модулей, используемых бэкдором StrongPity

Все полученные данные сохраняются в открытом виде в /data/user/0/org.telegram.messenger/базы данных/outdata, перед шифрованием с помощью AES и отправкой на C&C-сервер, как показано на рис. 13.

Шпионская кампания StrongPity, нацеленная на пользователей Android PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рисунок 13. Зашифрованные пользовательские данные, переданные на C&C-сервер

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

Рисунок 14. Запросы вредоносного ПО от жертвы, доступ к уведомлениям и службам специальных возможностей

Имея доступ к уведомлениям, вредоносное ПО может читать полученные уведомления от 17 целевых приложений. Вот список имен их пакетов:

  • Messenger (com.facebook.orca)
  • Облегченный мессенджер (com.facebook.mlite)
  • Viber – безопасные чаты и звонки (com.viber.voip)
  • Скайп (com.skype.raider)
  • ЛИНИЯ: звонки и сообщения (jp.naver.line.android)
  • Kik — приложение для обмена сообщениями и чата (kik.android)
  • танго-прямой эфир и видеочат (com.sgiggle.production)
  • Видеовстречи (com.google.android.talk)
  • Телеграмма (org.telegram.messenger)
  • Вичат (com.tencent.mm)
  • Снапчат (com.snapchat.android)
  • Tinder (com.tinder)
  • Поход Новости и контент (com.bsb.hike)
  • Инстаграм (com.instagram.android)
  • Twitter (com.twitter.android)
  • Gmail (com.google.android.gm)
  • imo-Международные звонки и чат (com.imo.android.imoim)

Если устройство уже рутировано, вредоносная программа незаметно пытается предоставить разрешения для WRITE_SETTINGS, WRITE_SECURE_SETTINGS, REBOOT, MOUNT_FORMAT_FILESYSTEMS, MODIFY_PHONE_STATE, PACKAGE_USAGE_STATS, READ_PRIVILEGED_PHONE_STATE, чтобы включить специальные возможности и предоставить доступ к уведомлениям. Затем бэкдор StrongPity пытается отключить приложение SecurityLogAgent (com.samsung.android.securitylogagent), которое является официальным системным приложением, которое помогает защитить безопасность устройств Samsung и отключает все уведомления приложений, исходящие от самой вредоносной программы, которые могут отображаться для жертвы в будущем в случае ошибок приложения, сбоев или предупреждений. Бэкдор StrongPity сам не пытается рутировать устройство.

Алгоритм AES использует режим CBC и жестко закодированные ключи для расшифровки загруженных модулей:

  • ключ АЕС - aaaanthingimpossiblebbb
  • АЭС IV – аааааааааааааааааааанс

Заключение

Мобильная кампания, организованная группой StrongPity APT, выдавала себя за законный сервис для распространения своего бэкдора для Android. StrongPity переупаковала официальное приложение Telegram, включив в него вариант кода бэкдора группы.

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

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

Анализ кода показывает, что бэкдор является модульным, а дополнительные бинарные модули загружаются с C&C-сервера. Это означает, что количество и тип используемых модулей могут быть изменены в любое время в соответствии с запросами кампании при управлении группой StrongPity.

Судя по нашему анализу, это вторая версия вредоносного ПО StrongPity для Android; по сравнению с первой версией, он также неправильно использует службы специальных возможностей и доступ к уведомлениям, хранит собранные данные в локальной базе данных, пытается выполнить su команды, а для большей части сбора данных используются загруженные модули.

МНК

Файлы

SHA-1 Имя файла Имя обнаружения ESET Описание
50F79C7DFABECF04522AEB2AC987A800AB5EC6D7 видео.apk Android/StrongPity.A Бэкдор StrongPity (легитимное Android-приложение Telegram, перепакованное с вредоносным кодом).
77D6FE30DAC41E1C90BDFAE3F1CFE7091513FB91 libarm.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за запись телефонных звонков.
5A15F516D5C58B23E19D6A39325B4B5C5590BDE0 libmpeg4.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за сбор текста полученных уведомлений.
D44818C061269930E50868445A3418A0780903FE местный .jar Android/StrongPity.A Мобильный модуль StrongPity отвечает за сбор списка файлов на устройстве.
F1A14070D5D50D5A9952F9A0B4F7CA7FED2199EE телефон.jar Android/StrongPity.A Мобильный модуль StrongPity, ответственный за неправомерное использование специальных возможностей для слежки за другими приложениями.
3BFAD08B9AC63AF5ECF9AA59265ED24D0C76D91E ресурсы.jar Android/StrongPity.A Мобильный модуль StrongPity отвечает за сбор SMS-сообщений, хранящихся на устройстве.
5127E75A8FAF1A92D5BD0029AF21548AFA06C1B7 Services.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за определение местоположения устройства.
BD40DF3AD0CE0E91ACCA9488A2FE5FEEFE6648A0 systemui.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за сбор информации об устройстве и системе.
ED02E16F0D57E4AD2D58F95E88356C17D6396658 таймер.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за сбор списка установленных приложений.
F754874A76E3B75A5A5C7FE849DDAE318946973B инструментарий.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за сбор списка контактов.
E46B76CADBD7261FE750DBB9B0A82F262AFEB298 watchkit.jar Android/StrongPity.A Мобильный модуль StrongPity, отвечающий за сбор списка учетных записей устройств.
D9A71B13D3061BE12EE4905647DDC2F1189F00DE комплект одежды.jar Android/StrongPity.A Мобильный модуль StrongPity отвечает за сбор списка журналов вызовов.

Cеть

IP Поставщик Впервые увидели Подробнее
141.255.161[.]185 NameCheap 2022-07-28 intagrefedcircuitchip[.]com C&C
185.12.46[.]138 Свиная булочка 2020-04-21 сегмент сетевого программного обеспечения[.]com C&C

Техники MITER ATT & CK

Эта таблица была построена с использованием версия 12 каркаса MITER ATT & CK.

тактика ID Фамилия Описание
Настойчивость T1398 Сценарии инициализации загрузки или входа в систему Бэкдор StrongPity получает ЗАГРУЗКА_ЗАВЕРШЕНА широковещательное намерение активировать при запуске устройства.
T1624.001 Выполнение, инициированное событием: широковещательные приемники Функциональность бэкдора StrongPity срабатывает, если происходит одно из следующих событий: НИЗКИЙ ЗАРЯД БАТАРЕИ, ПОЛЬЗОВАТЕЛЬ_ПРЕСЕНТ, SCREEN_ON, ОТКЛЮЧЕНИЯ ЭКРАНАили ПОДКЛЮЧЕНИЕ_CHANGE.
Уклонение от защиты T1407 Загрузить новый код во время выполнения Бэкдор StrongPity может загружать и выполнять дополнительные бинарные модули.
T1406 Замаскированные файлы или информация Бэкдор StrongPity использует шифрование AES для сокрытия загруженных модулей и сокрытия строк в APK-файле.
T1628.002 Скрыть артефакты: уклонение пользователя Бэкдор StrongPity может отключать все уведомления приложений, исходящие от самой вредоносной программы, чтобы скрыть свое присутствие.
T1629.003 Ослабить защиту: отключить или изменить инструменты Если у бэкдора StrongPity есть root, он отключает SecurityLogAgent (com.samsung.android.securitylogagent) если имеется.
Открытие T1420 Обнаружение файлов и каталогов Бэкдор StrongPity может отображать список доступных файлов на внешнем хранилище.
T1418 Обнаружение программного обеспечения Бэкдор StrongPity может получить список установленных приложений.
T1422 Обнаружение конфигурации сети системы Бэкдор StrongPity может извлекать IMEI, IMSI, IP-адрес, номер телефона и страну.
T1426 Обнаружение системной информации Бэкдор StrongPity может извлекать информацию об устройстве, включая тип интернет-соединения, серийный номер SIM-карты, идентификатор устройства и общую системную информацию.
Транспортировка T1417.001 Захват ввода: кейлоггинг Бэкдор StrongPity регистрирует нажатия клавиш в сообщениях чата и данные о звонках из целевых приложений.
T1517 Уведомления о доступе Бэкдор StrongPity может собирать уведомления от 17 целевых приложений.
T1532 Архивировать собранные данные Бэкдор StrongPity шифрует эксфильтрованные данные с помощью AES.
T1430 Отслеживание местоположения Бэкдор StrongPity отслеживает местоположение устройства.
T1429 Аудиозапись Бэкдор StrongPity может записывать телефонные звонки.
T1513 Захват экрана Бэкдор StrongPity может записывать экран устройства, используя МедиаПроектионМенеджер API.
T1636.002 Защищенные пользовательские данные: журналы вызовов Бэкдор StrongPity может извлекать журналы вызовов.
T1636.003 Защищенные данные пользователя: список контактов Бэкдор StrongPity может извлечь список контактов устройства.
T1636.004 Защищенные данные пользователя: SMS-сообщения Бэкдор StrongPity может извлекать SMS-сообщения.
Управление и контроль T1437.001 Протокол прикладного уровня: веб-протоколы Бэкдор StrongPity использует HTTPS для связи со своим C&C-сервером.
T1521.001 Зашифрованный канал: симметричная криптография Бэкдор StrongPity использует AES для шифрования своих сообщений.
эксфильтрации T1646 Эксфильтрация через канал C2 Бэкдор StrongPity извлекает данные с помощью HTTPS.

Отметка времени:

Больше от Мы живем в безопасности