В последнее время злоумышленники все чаще используют в качестве управляющего сервера (C2) Telegram. Вспомним хотя бы группировку Lazy Koala, о которой рассказывали здесь недавно. Колоссальное количество сообщений, огромное число жертв и каждодневное появление новых ботов и чатов в Telegram привлекли наше внимание, и мы занялись исследованием этого «всплеска». В ходе исследования мы обнаружили связанные с чатами СМС-стилеры из Индонезии. Подробнее об этом можно почитать в расширенном материале.

В этой статье мы расскажем про источники заражения и разберем уникальные экземпляры стилеров, которые имели нестандартные названия, форматы сообщений или особенности кода. Намерений злоумышленников нам не удалось узнать наверняка. Предполагаем, что все атаки совершены с целью наживы и кражи личных данных пользователей. Итак, команда PT ESC снова в деле!

Источники заражения

По данным индонезийским СМИ, самый большой источник распространения стилеров — мессенджер WhatsApp. В статье CNN Indonesia рассказывается, что существуют авторы стилеров, зарабатывающие на продаже вредоносных программ. Этим можно объяснить однотипность приложений и массовость их распространения.

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

Пример фишинга через WhatsApp с якобы запоздалым приглашением на свадьбу
Пример фишинга через WhatsApp с якобы запоздалым приглашением на свадьбу

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

http[:]//otp-bni.rf[.]gd
https[:]//pinjaman-pribadi[.]com
https[:]//wwwww.hengwin888.biz[.]id
https[:]//octoclicks.quizfinansial[.]cloud
https[:]//665c7425f6ef0924050d5bc7812d2870.cdn.bubble[.]io
https[:]//281057a700b761e04b22986e2c5809f2.cdn.bubble[.]io
https[:]//18598dc911409c4f002efc088d87a908.cdn.bubble[.]io
https[:]//upgradekartukrediitdbs00.getnew.my.id

На удивление, бóльшая часть адресов — это имитация свадебных приглашений. Вторую по величине долю составили фишинговые ссылки, имитирующие банковские приложения или просто официальные страницы настоящих банков. Следом за ним идут сайты доставок, ссылки на приложения в Google Play и различного рода формы для заполнения (опросники). Из экзотических ссылок — имитация чековых транзакций, сайт для покупки и продаже недвижимости, коллекция фотографий в Pinterest с распечатками чеков и даже статья про изучение английского языка.

Статистика по типам используемых приманок
Статистика по типам используемых приманок

Во многих образцах в качестве фишинга использовалась ссылка google.com. Мы предполагаем, что злоумышленники могли использовать некий шаблон стилера. Чаще всего для развертывания фишинговых сервисов использовались облачные платформы и онлайн-конструкторы сайтов, такие как Vercel, Bubble и Tilda. Огромной популярностью также пользуются открытые индонезийские сервисы для создания свадебных онлайн-приглашений, такие как Our Wedding или Undang Kami. По классике, остаются в ходу и сервисы для создания коротких ссылок, такие как s.id.

Самые популярные домены для фишинга
Самые популярные домены для фишинга

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

Анализ уникальных образцов

В ходе анализа встречались standalone-«чудаки», которые отличались от двух самых распространенных образцов SMS Webpro и NotifySmsStealer или они были их редкой модификацией. Ниже рассмотрены некоторые экземпляры, которые показались нам наиболее интересными.

Gallery Stealer

В начале февраля 2024 года был зарегистрирован бот под названием Sms Bombing Gallery Hack. Все пересылаемые им сообщения не содержали никакого текста: вся переписка состояла из одних фотографий.

Пример содержимого чата с Sms Bombing Gallery Hack
Пример содержимого чата с Sms Bombing Gallery Hack

Хотя в качестве основного языка чата в Telegram, куда отправлялись украденные данные, стоял английский, на фотографиях встречались лица людей с азиатской внешностью, а также города Индии.

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

Манифест Gallery Stealer
Манифест Gallery Stealer

Перейдем к классу MainActivity в пространстве имен com.my.newproject39. При старте в методе OnCreate запускают приманку. После инициализации графического интерфейса и создания полей для ввода приложение требует от пользователя ввести номер телефона и некоторое число. Если в поле ничего нет, он выводит сообщения Enter Number и Enter Amount. После ввода данных пользователь видит сообщение об успешной отправке СМС. При этом на самом деле введенный телефонный номер отправляется на сервер bkashotp-siam[.]vercel[.]app по четырем различным URL-адресам. После нескольких тысяч таких реквестов телефон «радостно» вибрирует.

Код для создания приманки в Gallery Stealer
Код для создания приманки в Gallery Stealer

На фоне же (если пользователь одобрил нужные разрешения) начинается настоящая активность приложения в методе initializeLogic. Приложение пытается получить названия всех файлов с разрешением .jpg при помощи функции getJpgFilesinDirectory. На вход подается путь к папке /storage/emulated/0/DCIM/Camera, отвечающей за хранение в системе фотографий, а на выход отдается массив названий файлов. Итерируясь по списку найденных файлов, стилер читает файл картинки и посылает ее на управляющий сервер с помощью функции TelegramImageUploader.

Сбор фотографий
Сбор фотографий

Если перейти в метод, отвечающий за отправку фото в Telegram, то можно отметить довольно ожидаемую функциональность. Создается POST-запрос на API Telegram — sendPhoto, где и фигурирует токен телеграм-бота. Данные посылаются в необработанном виде, начало и конец фотографии отделены символами *****.

Разработчик не доделал проект: в нём присутствует много неиспользованных методов и даже классов. Другой факт, подтверждающий неопытность автора – кнопка со ссылкой на его телеграм-канал Dark_Cyber_Security, а также примечание: «????????? ?? ??? ????? ?? ??????». По имени находятся связанные аккаунты в соцсетях разработчика Abu Talha Al Nayeem.

Аккаунт разработчика
Аккаунт разработчика

Текст в Instagram-аккаунте* бенгальский, а телеграм-канал публикует посты из Бангладеша. Кроме того, с таким именем есть аккаунт в threads.net, в котором опубликована фотография хакера.

* Instagram принадлежит компании Meta Inc., которая признана экстремистской и запрещена в РФ.

Фото хакера в соцсетях
Фото хакера в соцсетях

FalseCaller

Мы также обнаружили бота MyNotificationListenerBot, отличавшегося нестандартным форматом сообщений, и связанное с ботом приложение Truecaller_13.47.9_sign.apk, загруженное из Индии.

MyNotificationListnerBot
MyNotificationListnerBot

Несмотря на название, можно заметить, что это не настоящее приложение: его сертификат сгенерирован на скорую руку, и подписывающая компания называется fast, в то время как у настоящего приложения это Truecaller. Из-за такого подражания оригинальному приложению мы назвали этот стилер FalseCaller.

Certificate Subject

FalseCaller

Clean TrueCaller

Distinguished Name

C:IN, CN:fast, ST:IN

CN:truecaller

Common Name

fast

truecaller

Country Code

IN

-

State

IN

-

В манифесте приложения порядка 1000 строк. Большинство из них принадлежит настоящему приложению Truecaller. Однако в самом конце манифеста присутствуют три записи, не относящиеся к настоящему приложению (выделены фиолетовым на рисунке ниже). Классы com.truecaller.MyNotificationListener, com.truecaller.SmsReceiver и com.truecaller.AnswerCallBroadcastReceiver фильтруют намерения на прием уведомлений, СМС и звонков соответственно.

Дополнение манифеста вредоносными классами
Дополнение манифеста вредоносными классами

Исследуя сообщения в телеграм-боте, мы обнаружили среди 100 тысяч сообщений по меньшей мере 24 жертвы данного стилера. Номера принадлежали телекоммуникационным компаниям Bharti Airtel и Reliance Jio Infocomm. Обе компании в основном работают в Индии.

ICARD

Еще один обнаруженный нами бот — ICARD. APK-файл для установки вредоноса имел примечательное название — ICICI BANK.apk.apk. Злоумышленники подделывали оригинальное приложение банка ICICI. При этом официальное название приложения в Google Play отличается — оно называется iMobile Pay. Сертификат у вредоносного приложения явно поддельный, хотя сделан заметно лучше, чем у предыдущего стилера, и выглядит достоверным.

Непрофессиональным взглядом сложно заметить что-то подозрительное. Внизу приведено сравнение сертификатов оригинального и поддельного приложения.

Certificate Subject

ICARD

iMobile Pay

Distinguished Name

C:US, CN:Android, L:Mountain View, O:Android, ST:California, OU:Android, email:android@android.com

C:91, CN:ICICI BANK, L:MUMBAI, O:ICICI BANK, ST:MAHARASHTRA, OU:ICICI BANK

Common Name

Android

ICICI BANK

Country Code

US

91

State

California

MAHARASHTRA

Перейдем в ресурсы самого стилера и посмотрим внешний вид страницы. При запуске появляется лого банка ICICI, и спустя некоторое время загружается форма аутентификации на сайте. Злоумышленники поставили тайм-аут на загрузку страницы регистрации для более достоверной имитации запуска приложения.

Липовая форма для входа в ICICI Bank
Липовая форма для входа в ICICI Bank

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

Картинка-заглушка
Картинка-заглушка

После того, как у пользователя открылась фишинговая страница, стилер извлекает из ресурсов данные для коммуникации с управляющим сервером: ID телеграм-бота и ID чата.

Далее приложение проверяет, чтобы было не более пяти попыток запустить эту функцию. При успешном запуске приложение пытается настроить автостарт для телефонов модели OPPO. После этого стилер отправляет приветственное сообщение.

К базе данных телефона siminfo происходит обращение с запросом следующего вида:

Query = getApplicationContext().getContentResolver().query(
  Uri.parse("content://telephony/siminfo"),
  new String[]{
    "_id", "sim_id", "imsi","icc_id","number","display_name"
  }, 
  "0=0",
  new String[0],
  null
);

При таком запросе злоумышленник получает все строки данных из всех вышеперечисленных столбцов. Однако, перебирая все результаты, он извлекает только поля number и display_name, которые и отправляет на сервер в дополнение к приветственному сообщению.

В ресивере для входящих СМС ничего интересного не происходит. По уже классической схеме из сообщения извлекается текст и отправитель. Потом данные отсылаются на сервер с пометкой бренда и модели телефона в качестве идентификатора.

Сам банк разместил информацию о распространении ложных версий на своей официальной страничке в LinkedIn. Цепочка заражения начинается через СМС и сообщения в WhatsApp под видом уведомлений от банковского сотрудника о том, что текущая версия приложения банка не работает. В качестве решения этой проблемы присылается якобы новое обновленное приложение — APK-файл, который и содержит вредонос.

Как защититься?

Чтобы уберечься от подобных атак, стоит следовать простым правилам безопасности:

  • Проверять расширения передаваемых вам файлов.

  • Не скачивать приложения от незнакомых вам номеров, даже если отправители представляются банковскими работниками.

  • При загрузке приложения из Google Play убедиться в правильности названия приложения, проверив его в официальных источниках.

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

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


Группа исследования сложных угроз

PT Expert Security Center

Комментарии (0)