MAX без оболочки: Что мы нашли в его APK

Переводчик Google

Недавно появившейся в мессенджер «Макс», наделал много шума. Он является достаточно спорным приложением и мне пришла в голову мысль изучить приложение и посмотреть, а настолько ли опасно оно, как о нем говорят.
Как можно познакомиться с приложением ближе, чем через его код? Тем более, что для исследования android-приложений нам не понадобятся сложные инструменты на подобии IDA или Ghidra, как это бывает с анализом исполняемых файлов.

Для анализа я использовал стандартный, для подобной задачи, набор инструментов: JADX, APKtool, VSCode ну и конечно же Android Studio, куда без него в анализе APK файлов.
Но, прежде чем лезть под капот «Макса» я установил его на эмулятор устройства и посмотрел его функционал и требуемые им разрешения. После того, как я ввел номер телефона и подтвердил его, «Макс» попросил доступ к моим контактам (Рисунок 1). Достаточно стандартное поведение для мессенджера, позволяет находить контакты из списка, зарегистрированных в «Максе»

Рис.1 Запрос доступа

Рис.1 Запрос доступа
После этого, «Макс» снова запросил доступ к контактам (рисунок 2).

Рис.2 Запрос доступа

Рис.2 Запрос доступа
Заполнив сведения о контакте, а именно имя пользователя, я решил выполнить звонок, и мессенджер сразу запросил разрешение для записи аудио (рисунок 3).

Рис.3

Рис.3
Пощупал остальной функционал, были запрошены доступ к камере, демонстрации и записи экрана (демонстрация экрана в звонке есть, а вот функционала записи я не увидел).

Рис.4 Запрос доступа к камере, демонстрации и записи экрана.

Рис.4 Запрос доступа к камере, демонстрации и записи экрана.
На первый взгляд, «Макс» представляет из себя обычный мессенджер со стандартными для такого приложения набором функций и разрешений. Но все ли так на самом деле. Давайте разбираться, пора посмотреть под капот этого приложения.

Итак, я «разобрал» приложение и приступил к его анализу. Как исследователей, нас в первую очередь интересует файл AndroidManifest.

AndroidManifest.xml — один из самых важных и интересных для исследователя файлов. Он содержит много информации, по которой можно составить представление о приложении, и даже сформировать поверхность атаки. В архиве он представлен в закодированном виде.

Рис.5 Содержимое AndroidManifest.xml

Рис.5 Содержимое AndroidManifest.xml
Итак, что же интересного я нашел? А нашлось достаточно много.

Ниже я приведу список опасных разрешений, с кодом из файла, и в некоторых местах буду вставлять свои комментарии.

· REQUEST_INSTALL_PACKAGES - может устанавливать другие приложения

Рис.6

Рис.6
· SYSTEM_ALERT_WINDOW - может показывать окна поверх других приложений

Рис.7

Рис.7
RECEIVE_BOOT_COMPLETED - автозапуск при старте системы

Рис.8

Рис.8
DISABLE_KEYGUARD - отключение блокировки экрана

Рис. 9

Рис. 9
USE_FULL_SCREEN_INTENT - полноэкранные уведомления

Рис. 10

Рис. 10
Доступ к личным данным:

READ_CONTACTS, WRITE_CONTACTS - полный доступ к контактам

Рис. 11

Рис. 11
ACCESS_FINE_LOCATION - точная геолокация. Постоянное отслеживание точного местоположения пользователя в реальном времени.

Рис.12

Рис.12
CAMERA - доступ к камере

Рис. 13

Рис. 13
RECORD_AUDIO - запись аудио

Рис. 14

Рис. 14
READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE - доступ к файловой системе

Рис. 15

Рис. 15
READ_MEDIA_IMAGES, READ_MEDIA_VIDEO - доступ к медиафайлам

Рис. 16

Рис. 16
READ_PHONE_NUMBERS - доступ к телефонным номерам

Рис. 17

Рис. 17
GET_ACCOUNTS, AUTHENTICATE_ACCOUNTS, MANAGE_ACCOUNTS, USE_CREDENTIALS - полный доступ к аккаунтам. Может получить список всех аккаунтов (Google, соцсети, почта) на устройстве и манипулировать ими.

Рис. 18

Рис. 18
USE_FINGERPRINT - доступ к биометрии

Рис. 19

Рис. 19
Сетевые разрешения:

INTERNET - полный доступ в интернет

Рис .20

Рис .20
ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE - мониторинг сети
Bluetooth разрешения - полный контроль Bluetooth
CHANGE_WIFI_STATE - изменение состояния Wi-Fi. Могут мешать работе сети, перехватывать трафик.

Рис. 21

Рис. 21
Подозрительные сервисы

Сервис для звонков с доступом к камере и микрофону

Рис. 22

Рис. 22
Сервис медиа-проекции (может записывать экран)

Рис. 23

Рис. 23
Опасные компоненты

LinkInterceptorActivity с возможностью перехвата deeplinks:

android:exported="true" (Критическая уязвимость). Эта активность может быть запущена извне — другим приложением на устройстве или даже из браузера по специальной ссылке.

android:excludeFromRecents="true" (Тактика скрытности). После того как пользователь завершит работу с этой активностью, она не появится в списке последних приложений (который вызывается кнопкой "Недавние").

Рис. 24

Рис. 24
CallNotifierFixActivity с возможностью показа на экране блокировки

Рис. 25

Рис. 25
Трекинг и аналитика

com.google.android.gms.permission.AD_ID - доступ к рекламному ID. Нужен для создания уникального профиля пользователя для таргетированной рекламы и трекинга между разными приложениями.

Рис. 26

Рис. 26
Отключено резервное копирование (allowBackup="false"). Обычные приложения разрешают бэкап, чтобы пользователь мог восстановить данные. Вредоносное приложение отключает эту функцию, чтобы усложнить исследование своего поведения и извлечение украденных данных при помощи инструментов анализа.
Включен нативный код (extractNativeLibs="false"). Указывает системе не распаковывать нативные библиотеки (.so файлы) из APK. Это может использоваться для затруднения статического анализа кода антивирусами и исследователями, так как часть логики спрятана в скомпилированных бинарниках.

Рис. 27

Рис. 27
Дополнительные опасные функции

DOWNLOAD_WITHOUT_NOTIFICATION - скрытые загрузки. Позволяет скачивать файлы без уведомления пользователя.
FOREGROUND_SERVICE_DATA_SYNC - фоновая синхронизация данных. Позволяет запустить foreground-сервис для "синхронизации данных". Это механизм для длительной фоновой работы под видом полезной деятельности, чтобы постоянно собирать данные.

Рис. 28

Рис. 28
Автозапуск: Receiver для автозапуска при включении устройства. Ресивер BootCompletedReceiver с тремя разными действиями (BOOT_COMPLETED, QUICKBOOT_POWERON) — это гарантирует, что запуск выполниться автоматически при любой возможности сразу после включения телефона, даже до его разблокировки.

Рис. 29

Рис. 29
Проведенный технический анализ мессенджера выявил тревожный дисбаланс между заявленным функционалом и запрашиваемым уровнем доступа к устройству и данным пользователя.

Безусловно, часть разрешений, такие как доступ к микрофону для голосовых сообщений или к камере для съемки фото, объективно необходимы для работы любого современного коммуникационного приложения. Однако нашлось и множество «спорных» возможностей, которые выходят далеко за рамки обычных возможностей мессенджера:

Возможность постоянного отслеживания точной геолокации, записи экрана (mediaProjection) и доступа к аккаунтам устройства не являются критичными для обмена сообщениями и вызывают серьезные вопросы о реальных намерениях разработчика.

Автозапуск при загрузке, скрытые загрузки, отключение резервного копирования и сложность анализа кода (extractNativeLibs="false") — это приемы, которые чаще ассоциируются с вредоносным ПО, стремящимся закрепиться в системе и скрыть свою деятельность.

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

Источник
 
Назад
Сверху Снизу