Привет, хабр. Если вы состоите в более-менее крупных ТГ сообществах, то наверняка замечали, как время от времени в чатах мелькают боты с предложением установить сомнительный APK. Обычно их мгновенно банит антиспам или админ, и на этом всё заканчивается. Правда, пока сообщение ещё висит, взгляд успевает за него зацепиться, и в голове проскакивает «это очевидно скам, но как оно работает?». У меня эта мысль проскочила в дождливый вечер прошлой пятницы, и вот, неделю спустя, я всё ещё смотрю на четыре домена, куда уходят перехваченные банковские коды, и ожидаю хоть каких-до действий от уполномоченных компаний, которые были уведомлены об атаке почти неделю назад.
В этой статье я хочу пробежаться по инциденту: как вирус распространяется, что у него под капотом, и как различные компании и организации реагируют на сообщения о том, что их инфраструктура используется для взлома.
Часть 1: Механизм работы
Началась атака вечером прошлой пятницы — 22го августа. Тогда, практически одномоментно, в кучу бесед стали сыпаться сообщения одинаковой формы, предлагающие установить бесплатный супер VPN

Качаем его, запускаем jadx, иии… Видим, что это лишь первый слой, в котором куча мусорных классов чтобы обойти антивирус, packageInstaller для настоящего вируса, а также обрывки base64, которые разбросаны по всему проекту

А также обнаруживаем класс, который поднимает VPN туннель, заворачивает туда соединения определенных приложений, и ставит будильник на ~4 минуты, после чего отключается

Декодируем Base64, и получаем следующие значения:
com.android.vending, com.google.android.gms, com.kaspersky.android.antivirus, com.kms.free, com.samsung.android.sm, com.samsung.android.sm.policy, com.samsung.android.securitylogagent, com.miui.securitycenter, com.miui.guardprovider
То есть троян отключает сеть всем антивирусам на устройстве, заворачивая их трафик внутрь туннеля, который ведет в никуда.
Помимо прочего, в коде и ресурсах можно найти обрывки html, и одну большую WebView. Разобрав, получаем ряд экранов:
Из них следует, что приложение «обновляется», просит дать ему доступ к специальным возможностям, затем говорит «Приложение несовместимо с устройством», и якобы удаляется с устройства.
Осталось только понять, что именно оно устанавливает. Натравливаем LLM, чтобы она расковыряла обфусцированные ресурсы, и она возвращается с таким скриптом:

Отсюда понимаем, ресурсы в assets зашифрованы AES-256 и носят безобидные имена вроде .db, .idx, .cache, .bin, а ключи лежат в .dex файлах, и, по классике, в base64. Открываем config.json, и находим ссылку
https://o3-rc3.akave.xyz/omni/2bb01ddbf2344fc7.bin?X-Amz-Algorithm=AWS4-HMAC-SHA256…
Это и есть основной payload трояна. Можно заметить, что у файла расширение .bin, чтобы вызвать меньше подозрения у компании-владельца бакета. По-сути это просто наивно переименованный .apk. В дальнейших вариациях вирус начнет лучше мимикрировать — под .mp4 файл с реальными байтами mp4-бокса в начале файла.
Приводим этот файл к .apk формату, запускаем jadx, иии… Снова куча обфусцированного кода. Однако злоумышленник допустил ошибку, и зачем-то зашил дебажную сборку в ассеты самого первого приложения, и благодаря этому у нас появилась возможность взглянуть на кишки вируса:

Из этого мы можем узнать список возможностей:
Кража SMS и звонков банка
-
становится приложением по умолчанию для SMS (DefaultSmsActivity), читает и отправляет сообщения незаметно (HeadlessSmsSendService, SmsReceiver, MmsReceiver)
-
команды MSG_SMS_*: список переписок, чтение, отправка, массовая рассылка
-
перехват одноразовых кодов из банковских SMS
Слежка за экраном и вводом
-
трансляция экрана в реальном времени: через MediaProjection и через спецвозможности (MSG_VNC_*, MediaProjectionService)
-
удалённое управление вводом (MSG_VNC_INPUT)
-
кейлоггер (KeylogService, MSG_KEYLOG_EVENT)
-
перехват PIN и графического ключа (MSG_SET_PRIORITY_PIN)
Прослушка и съёмка
-
микрофон (MSG_MIC_*)
-
камера (MSG_CAMERA_*)
Чтение устройства
-
контакты (MSG_CONTACTS_*)
-
файлы: список, скачивание, удаление, превью (MSG_FILE_*)
-
список и запуск приложений, удаление (MSG_APP_*)
-
сведения об устройстве (DeviceInfo)
Уведомления
-
чтение всех уведомлений (NotificationCaptureService)
-
фейковые уведомления и пуш-события (MSG_FAKE_NOTIFICATION, MSG_PUSH_EVENT)
Скрытность и удержание
-
прячется из меню приложений, скрытный режим (MSG_STEALTH_MODE_*)
-
сопротивление удалению (anti_uninstall)
-
сам выдаёт себе разрешения через спецвозможности (AutoPermissionService)
-
управление экраном: разблокировка, сон, пробуждение (MSG_SCREEN_UNLOCK/SLEEP/WAKE), чтобы работать, пока жертва не видит
Общается вирус по сокету через свой бинарный протокол, и по возможности может загрузить для себя дополнительные модули:

Итак, имея всю эту информацию, осталась последняя часть загадки: куда стекаются украденные данные?
Часть 2: Сетевая инфраструктура
Рецепт тот же — берем LLM, даем вилку, и просим почистить обфусцированные исходники и зашифрованные ассеты. На выходе получаем такой скрипт:

Что ведет нас к очередному конфигу с адресами злоумышленника

Отсюда мы получаем эндпоинт
/api/v2/device/sync
И список доменов
Дергаем whois на каждый из доменов, и получаем
nserver: ns1.reg.ru.
nserver: ns2.reg.ru.
state: REGISTERED, DELEGATED, UNVERIFIED
person: Private Person
registrar: REGRU-RU
admin-contact: http://www.reg.ru/whois/admin_contact
created: 2026-08-06T17:47:11Z
paid-till: 2027-08-06T17:47:11Z
free-date: 2027-09-06
source: TCI
Затем дергаем dig +short A, и получаем адрес VPS, куда утекают данные.
Итого, в атаке задействованы 3 независимых звена:
-
s3 с основным вирусом
-
домены, куда отправляются запросы
-
VPS
Часть 3: Обращения и реакции
Я попытался связаться со всеми тремя звеньями, чтобы остановить атаку. У американских и европейских компаний, чьи хранилища и сервера были задействованы, в среднем занимало несколько часов на расследование, обнуление роутингов и удаление аккаунтов.
В отдельных случаях от письма до удаления проходили буквально минуты:

Однако злоумышленник поднимал новые хранилища и VPS за считанные часы, и по-сути все это превратилось в кошки-мышки: делается новая сборка смотрящая на новую инфраструктуру, запускается очередная рассылка ботами, атака продолжается.
За это время я разобрал уже 4 разных apk, у которых одна и та же подпись, и которые смотрят на одни и те же домены. И эту атаку не остановить, пока домены, принадлежащие reg.ru активны. Инфраструктура просто пересобирается, а данные новых и ранее зараженных пользователей продолжают утекать. Даже команда телеги, известная свой медлительностью, успела снести канал за несколько дней.
Прошла почти неделя с тех пор, как были отправлены письма в abuse@reg.ru, response@f6.ru, cert@kaspersky.com и incident@cert.gov.ru. Но ответ пришел только от reg.ru:
Согласно законодательству Российской Федерации, регистратор не является лицом, уполномоченным выявлять и квалифицировать акты мошенничества (и иные правонарушения), а также разрешать споры между другими лицами и брать на себя иные полномочия судебных и правоохранительных органов. Администратор домена самостоятельно осуществляет управление доменом, несёт полную ответственность за материалы, размещённые на его ресурсе, и все связанные с ним действия.Как аккредитованный регистратор мы обязательно примем меры к администратору домена на основании вступившего в законную силу судебного решения или официального запроса организации, уполномоченной Координационным центром национального домена сети Интернет.
Никто, конечно же, ничего в итоге не сделал.
И сюда напрашивается довольно закономерное заключение: европейским и американским компаниям есть дело до утекающих данных россиян, а российским компаниям — нет.
ссылка на оригинал статьи https://habr.com/ru/articles/1076024/