![](https://habrastorage.org/getpro/habr/upload_files/591/4fa/691/5914fa691424220946af4ea014c1f315.png)
В последнее время злоумышленники все чаще используют в качестве управляющего сервера (C2) Telegram. Вспомним хотя бы группировку Lazy Koala, о которой рассказывали здесь недавно. Колоссальное количество сообщений, огромное число жертв и каждодневное появление новых ботов и чатов в Telegram привлекли наше внимание, и мы занялись исследованием этого «всплеска». В ходе исследования мы обнаружили связанные с чатами СМС-стилеры из Индонезии. Подробнее об этом можно почитать в расширенном материале.
В этой статье мы расскажем про источники заражения и разберем уникальные экземпляры стилеров, которые имели нестандартные названия, форматы сообщений или особенности кода. Намерений злоумышленников нам не удалось узнать наверняка. Предполагаем, что все атаки совершены с целью наживы и кражи личных данных пользователей. Итак, команда PT ESC снова в деле!
Источники заражения
![](https://habrastorage.org/getpro/habr/upload_files/f89/d15/d60/f89d15d608e17faec086e6945ffd1411.jpg)
По данным индонезийским СМИ, самый большой источник распространения стилеров — мессенджер WhatsApp. В статье CNN Indonesia рассказывается, что существуют авторы стилеров, зарабатывающие на продаже вредоносных программ. Этим можно объяснить однотипность приложений и массовость их распространения.
Что касается способа доставки ВПО, то в основном используется фишинг. Жертве присылают сообщение с вложением в виде APK-файла. Пользователи кликают на вложение, не заметив его расширения. В результате этого действия на телефон устанавливается СМС-стилер. Само вредоносное приложение маскируется под различные сервисы и документы: курьерскую доставку посылок, свадебные приглашения, электронные штрафы за проезд, интернет-счета, сообщения о вакансиях, уведомления комитетов по голосованию.
![Пример фишинга через WhatsApp с якобы запоздалым приглашением на свадьбу Пример фишинга через WhatsApp с якобы запоздалым приглашением на свадьбу](https://habrastorage.org/getpro/habr/upload_files/9f8/900/635/9f89006350b4cedab97c8bee7a1337ae.png)
Кроме фишинга присутствует и другой, менее популярный способ распространения ВПО через фишинговые сайты. В ходе анализа мы обнаружили несколько ссылок, с которых скачивались вредоносные приложения. Поскольку их срок действия давно истек, только по названию скачиваемых с них приложений можно догадаться, подо что маскировались эти сайты:
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 с распечатками чеков и даже статья про изучение английского языка.
![Статистика по типам используемых приманок Статистика по типам используемых приманок](https://habrastorage.org/getpro/habr/upload_files/ea9/eba/b05/ea9ebab05cd85e7391ebee980fdc5a44.png)
Во многих образцах в качестве фишинга использовалась ссылка google.com. Мы предполагаем, что злоумышленники могли использовать некий шаблон стилера. Чаще всего для развертывания фишинговых сервисов использовались облачные платформы и онлайн-конструкторы сайтов, такие как Vercel, Bubble и Tilda. Огромной популярностью также пользуются открытые индонезийские сервисы для создания свадебных онлайн-приглашений, такие как Our Wedding или Undang Kami. По классике, остаются в ходу и сервисы для создания коротких ссылок, такие как s.id.
![Самые популярные домены для фишинга Самые популярные домены для фишинга](https://habrastorage.org/getpro/habr/upload_files/5df/ecf/705/5dfecf705533d3ffe35068f87ed58f5c.png)
Основная цель такой атаки — обычные пользователи. Во многих СМС-сообщениях, которые приходят на телефон, содержатся одноразовые коды. С их помощью можно получить подтверждение для входа в аккаунты, например в мессенджерах. Но самыми уязвимыми являются одноразовые пароли от банковских аккаунтов: перехватив их, злоумышленник может вывести средства жертвы со счета.
Анализ уникальных образцов
В ходе анализа встречались standalone-«чудаки», которые отличались от двух самых распространенных образцов SMS Webpro и NotifySmsStealer или они были их редкой модификацией. Ниже рассмотрены некоторые экземпляры, которые показались нам наиболее интересными.
Gallery Stealer
В начале февраля 2024 года был зарегистрирован бот под названием Sms Bombing Gallery Hack. Все пересылаемые им сообщения не содержали никакого текста: вся переписка состояла из одних фотографий.
![Пример содержимого чата с Sms Bombing Gallery Hack Пример содержимого чата с Sms Bombing Gallery Hack](https://habrastorage.org/getpro/habr/upload_files/aa1/5f3/e7c/aa15f3e7ce90de7d347576694d490221.png)
Хотя в качестве основного языка чата в Telegram, куда отправлялись украденные данные, стоял английский, на фотографиях встречались лица людей с азиатской внешностью, а также города Индии.
На вход приложение-стилер требовало приличное количество разрешений: от очевидного доступа к памяти до непонятного разрешения на вибрацию. Ко всему прочему, ему нужен был доступ к контактам на чтение и запись, а также на установление контактов по умолчанию. Последние три требования характерны для таких приложений, как менеджер контактов. Однако в приложении фильтруется только намерение на его запуск. Исходя из логики манифеста, первым запустится класс MainActivity
.
![Манифест Gallery Stealer Манифест Gallery Stealer](https://habrastorage.org/getpro/habr/upload_files/b3f/8b9/a3c/b3f8b9a3cbdaf77519ad29da74df8aea.png)
Перейдем к классу MainActivity
в пространстве имен com.my.newproject39
. При старте в методе OnCreate
запускают приманку. После инициализации графического интерфейса и создания полей для ввода приложение требует от пользователя ввести номер телефона и некоторое число. Если в поле ничего нет, он выводит сообщения Enter Number и Enter Amount. После ввода данных пользователь видит сообщение об успешной отправке СМС. При этом на самом деле введенный телефонный номер отправляется на сервер bkashotp-siam[.]vercel[.]app
по четырем различным URL-адресам. После нескольких тысяч таких реквестов телефон «радостно» вибрирует.
![Код для создания приманки в Gallery Stealer Код для создания приманки в Gallery Stealer](https://habrastorage.org/getpro/habr/upload_files/f29/f11/055/f29f1105574ac39afa0a3d66a95467fb.png)
На фоне же (если пользователь одобрил нужные разрешения) начинается настоящая активность приложения в методе initializeLogic
. Приложение пытается получить названия всех файлов с разрешением .jpg при помощи функции getJpgFilesinDirectory
. На вход подается путь к папке /storage/emulated/0/DCIM/Camera, отвечающей за хранение в системе фотографий, а на выход отдается массив названий файлов. Итерируясь по списку найденных файлов, стилер читает файл картинки и посылает ее на управляющий сервер с помощью функции TelegramImageUploader
.
![Сбор фотографий Сбор фотографий](https://habrastorage.org/getpro/habr/upload_files/7fd/d9b/70b/7fdd9b70bd143279cd2263c68a2a8d29.png)
Если перейти в метод, отвечающий за отправку фото в Telegram, то можно отметить довольно ожидаемую функциональность. Создается POST-запрос на API Telegram — sendPhoto
, где и фигурирует токен телеграм-бота. Данные посылаются в необработанном виде, начало и конец фотографии отделены символами *****.
Разработчик не доделал проект: в нём присутствует много неиспользованных методов и даже классов. Другой факт, подтверждающий неопытность автора – кнопка со ссылкой на его телеграм-канал Dark_Cyber_Security, а также примечание: «????????? ?? ??? ????? ?? ??????». По имени находятся связанные аккаунты в соцсетях разработчика Abu Talha Al Nayeem.
![Аккаунт разработчика Аккаунт разработчика](https://habrastorage.org/getpro/habr/upload_files/854/5a4/41f/8545a441f554cc55540633023983f7ff.png)
Текст в Instagram-аккаунте* бенгальский, а телеграм-канал публикует посты из Бангладеша. Кроме того, с таким именем есть аккаунт в threads.net, в котором опубликована фотография хакера.
* Instagram принадлежит компании Meta Inc., которая признана экстремистской и запрещена в РФ.
![Фото хакера в соцсетях Фото хакера в соцсетях](https://habrastorage.org/getpro/habr/upload_files/7a3/12d/0b4/7a312d0b41f6a69e05ddb8a0996fcdff.png)
FalseCaller
Мы также обнаружили бота MyNotificationListenerBot, отличавшегося нестандартным форматом сообщений, и связанное с ботом приложение Truecaller_13.47.9_sign.apk, загруженное из Индии.
![MyNotificationListnerBot MyNotificationListnerBot](https://habrastorage.org/getpro/habr/upload_files/7b7/e1c/603/7b7e1c60359d6ccc5592f45df01ad327.png)
Несмотря на название, можно заметить, что это не настоящее приложение: его сертификат сгенерирован на скорую руку, и подписывающая компания называется 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
фильтруют намерения на прием уведомлений, СМС и звонков соответственно.
![Дополнение манифеста вредоносными классами Дополнение манифеста вредоносными классами](https://habrastorage.org/getpro/habr/upload_files/ed5/b59/cd3/ed5b59cd3d19b4c5cd84f0421e63e4ac.png)
Исследуя сообщения в телеграм-боте, мы обнаружили среди 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](https://habrastorage.org/getpro/habr/upload_files/d74/c9d/8c0/d74c9d8c0d652c9e747e950c5f4901ae.png)
При вводе любых значений в форму происходит редирект на следующую страницу, которая подгружает картинку с информацией о том, что сервис не доступен по техническим причинам. Такая уловка не только отвлекает внимание пользователей, но и заставляет их через какое-то время повторно выполнять вход, гарантируя дополнительный запуск вредоноса.
![Картинка-заглушка Картинка-заглушка](https://habrastorage.org/getpro/habr/upload_files/3f7/2cb/190/3f72cb190b664a2ff2dcba96de1fff02.png)
После того, как у пользователя открылась фишинговая страница, стилер извлекает из ресурсов данные для коммуникации с управляющим сервером: 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-файл, который и содержит вредонос.
Как защититься?
![](https://habrastorage.org/getpro/habr/upload_files/5f8/208/4f3/5f82084f34e57cfe078f59078e011bc4.jpg)
Чтобы уберечься от подобных атак, стоит следовать простым правилам безопасности:
Проверять расширения передаваемых вам файлов.
Не скачивать приложения от незнакомых вам номеров, даже если отправители представляются банковскими работниками.
При загрузке приложения из Google Play убедиться в правильности названия приложения, проверив его в официальных источниках.
Не загружать и не устанавливать приложения, требующие подозрительных разрешений для данного типа приложения.
Будьте начеку, не принимайте приглашения на свадьбу и следите за безопасностью своих данных.
![](https://habrastorage.org/getpro/habr/upload_files/c7b/886/772/c7b886772e22b26bcc23dcbd97af8b65.png)
Группа исследования сложных угроз
PT Expert Security Center
B1is7aj
Зная культурный размах свадеб в индии, не удивительно, что такой фишинг может действительно успешно работать. Вдруг это действительно приглашение от какого-нибудь восьмиюродного брата по пробабкиной линии)