Недавно появившейся в мессенджер «Макс», наделал много шума. Он является достаточно спорным приложением и мне пришла в голову мысль изучить приложение и посмотреть, а настолько ли опасно оно, как о нем говорят.
Как можно познакомиться с приложением ближе, чем через его код? Тем более, что для исследования android-приложений нам не понадобятся сложные инструменты на подобии IDA или Ghidra, как это бывает с анализом исполняемых файлов.
Для анализа я использовал стандартный, для подобной задачи, набор инструментов: JADX, APKtool, VSCode ну и конечно же Android Studio, куда без него в анализе APK файлов.
Но, прежде чем лезть под капот «Макса» я установил его на эмулятор устройства и посмотрел его функционал и требуемые им разрешения. После того, как я ввел номер телефона и подтвердил его, «Макс» попросил доступ к моим контактам (Рисунок 1). Достаточно стандартное поведение для мессенджера, позволяет находить контакты из списка, зарегистрированных в «Максе»
Рис.1 Запрос доступа
После этого, «Макс» снова запросил доступ к контактам (рисунок 2).
Рис.2 Запрос доступа
Заполнив сведения о контакте, а именно имя пользователя, я решил выполнить звонок, и мессенджер сразу запросил разрешение для записи аудио (рисунок 3).
Рис.3
Пощупал остальной функционал, были запрошены доступ к камере, демонстрации и записи экрана (демонстрация экрана в звонке есть, а вот функционала записи я не увидел).
Рис.4 Запрос доступа к камере, демонстрации и записи экрана.
На первый взгляд, «Макс» представляет из себя обычный мессенджер со стандартными для такого приложения набором функций и разрешений. Но все ли так на самом деле. Давайте разбираться, пора посмотреть под капот этого приложения.
Итак, я «разобрал» приложение и приступил к его анализу. Как исследователей, нас в первую очередь интересует файл AndroidManifest.
AndroidManifest.xml — один из самых важных и интересных для исследователя файлов. Он содержит много информации, по которой можно составить представление о приложении, и даже сформировать поверхность атаки. В архиве он представлен в закодированном виде.
Рис.5 Содержимое AndroidManifest.xml
Итак, что же интересного я нашел? А нашлось достаточно много.
Ниже я приведу список опасных разрешений, с кодом из файла, и в некоторых местах буду вставлять свои комментарии.
· REQUEST_INSTALL_PACKAGES - может устанавливать другие приложения
Рис.6
· SYSTEM_ALERT_WINDOW - может показывать окна поверх других приложений
Рис.7
RECEIVE_BOOT_COMPLETED - автозапуск при старте системы
Рис.8
DISABLE_KEYGUARD - отключение блокировки экрана
Рис. 9
USE_FULL_SCREEN_INTENT - полноэкранные уведомления
Рис. 10
Доступ к личным данным:
READ_CONTACTS, WRITE_CONTACTS - полный доступ к контактам
Рис. 11
ACCESS_FINE_LOCATION - точная геолокация. Постоянное отслеживание точного местоположения пользователя в реальном времени.
Рис.12
CAMERA - доступ к камере
Рис. 13
RECORD_AUDIO - запись аудио
Рис. 14
READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE - доступ к файловой системе
Рис. 15
READ_MEDIA_IMAGES, READ_MEDIA_VIDEO - доступ к медиафайлам
Рис. 16
READ_PHONE_NUMBERS - доступ к телефонным номерам
Рис. 17
GET_ACCOUNTS, AUTHENTICATE_ACCOUNTS, MANAGE_ACCOUNTS, USE_CREDENTIALS - полный доступ к аккаунтам. Может получить список всех аккаунтов (Google, соцсети, почта) на устройстве и манипулировать ими.
Рис. 18
USE_FINGERPRINT - доступ к биометрии
Рис. 19
Сетевые разрешения:
INTERNET - полный доступ в интернет
Рис .20
ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE - мониторинг сети
Bluetooth разрешения - полный контроль Bluetooth
CHANGE_WIFI_STATE - изменение состояния Wi-Fi. Могут мешать работе сети, перехватывать трафик.
Рис. 21
Подозрительные сервисы
Сервис для звонков с доступом к камере и микрофону
Рис. 22
Сервис медиа-проекции (может записывать экран)
Рис. 23
Опасные компоненты
LinkInterceptorActivity с возможностью перехвата deeplinks:
android:exported="true" (Критическая уязвимость). Эта активность может быть запущена извне — другим приложением на устройстве или даже из браузера по специальной ссылке.
android:excludeFromRecents="true" (Тактика скрытности). После того как пользователь завершит работу с этой активностью, она не появится в списке последних приложений (который вызывается кнопкой "Недавние").
Рис. 24
CallNotifierFixActivity с возможностью показа на экране блокировки
Рис. 25
Трекинг и аналитика
com.google.android.gms.permission.AD_ID - доступ к рекламному ID. Нужен для создания уникального профиля пользователя для таргетированной рекламы и трекинга между разными приложениями.
Рис. 26
Отключено резервное копирование (allowBackup="false"). Обычные приложения разрешают бэкап, чтобы пользователь мог восстановить данные. Вредоносное приложение отключает эту функцию, чтобы усложнить исследование своего поведения и извлечение украденных данных при помощи инструментов анализа.
Включен нативный код (extractNativeLibs="false"). Указывает системе не распаковывать нативные библиотеки (.so файлы) из APK. Это может использоваться для затруднения статического анализа кода антивирусами и исследователями, так как часть логики спрятана в скомпилированных бинарниках.
Рис. 27
Дополнительные опасные функции
DOWNLOAD_WITHOUT_NOTIFICATION - скрытые загрузки. Позволяет скачивать файлы без уведомления пользователя.
FOREGROUND_SERVICE_DATA_SYNC - фоновая синхронизация данных. Позволяет запустить foreground-сервис для "синхронизации данных". Это механизм для длительной фоновой работы под видом полезной деятельности, чтобы постоянно собирать данные.
Рис. 28
Автозапуск: Receiver для автозапуска при включении устройства. Ресивер BootCompletedReceiver с тремя разными действиями (BOOT_COMPLETED, QUICKBOOT_POWERON) — это гарантирует, что запуск выполниться автоматически при любой возможности сразу после включения телефона, даже до его разблокировки.
Рис. 29
Проведенный технический анализ мессенджера выявил тревожный дисбаланс между заявленным функционалом и запрашиваемым уровнем доступа к устройству и данным пользователя.
Безусловно, часть разрешений, такие как доступ к микрофону для голосовых сообщений или к камере для съемки фото, объективно необходимы для работы любого современного коммуникационного приложения. Однако нашлось и множество «спорных» возможностей, которые выходят далеко за рамки обычных возможностей мессенджера:
Возможность постоянного отслеживания точной геолокации, записи экрана (mediaProjection) и доступа к аккаунтам устройства не являются критичными для обмена сообщениями и вызывают серьезные вопросы о реальных намерениях разработчика.
Автозапуск при загрузке, скрытые загрузки, отключение резервного копирования и сложность анализа кода (extractNativeLibs="false") — это приемы, которые чаще ассоциируются с вредоносным ПО, стремящимся закрепиться в системе и скрыть свою деятельность.
В итоге, перед нами не просто мессенджер, а многофункциональный комплекс с широчайшими полномочиями. Пользователь, устанавливая это приложение, по сути, добровольно предоставляет ему ключи от всей своей цифровой жизни: от переписки и звонков до местоположения, паролей и возможности наблюдать через камеру.
Источник
Как можно познакомиться с приложением ближе, чем через его код? Тем более, что для исследования android-приложений нам не понадобятся сложные инструменты на подобии IDA или Ghidra, как это бывает с анализом исполняемых файлов.
Для анализа я использовал стандартный, для подобной задачи, набор инструментов: JADX, APKtool, VSCode ну и конечно же Android Studio, куда без него в анализе APK файлов.
Но, прежде чем лезть под капот «Макса» я установил его на эмулятор устройства и посмотрел его функционал и требуемые им разрешения. После того, как я ввел номер телефона и подтвердил его, «Макс» попросил доступ к моим контактам (Рисунок 1). Достаточно стандартное поведение для мессенджера, позволяет находить контакты из списка, зарегистрированных в «Максе»

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

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

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

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

Рис.5 Содержимое AndroidManifest.xml
Итак, что же интересного я нашел? А нашлось достаточно много.
Ниже я приведу список опасных разрешений, с кодом из файла, и в некоторых местах буду вставлять свои комментарии.
· REQUEST_INSTALL_PACKAGES - может устанавливать другие приложения

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

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

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

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

Рис. 10
Доступ к личным данным:
READ_CONTACTS, WRITE_CONTACTS - полный доступ к контактам

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

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

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

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

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

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

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

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

Рис. 19
Сетевые разрешения:
INTERNET - полный доступ в интернет

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

Рис. 21
Подозрительные сервисы
Сервис для звонков с доступом к камере и микрофону

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

Рис. 23
Опасные компоненты
LinkInterceptorActivity с возможностью перехвата deeplinks:
android:exported="true" (Критическая уязвимость). Эта активность может быть запущена извне — другим приложением на устройстве или даже из браузера по специальной ссылке.
android:excludeFromRecents="true" (Тактика скрытности). После того как пользователь завершит работу с этой активностью, она не появится в списке последних приложений (который вызывается кнопкой "Недавние").

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

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

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

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

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

Рис. 29
Проведенный технический анализ мессенджера выявил тревожный дисбаланс между заявленным функционалом и запрашиваемым уровнем доступа к устройству и данным пользователя.
Безусловно, часть разрешений, такие как доступ к микрофону для голосовых сообщений или к камере для съемки фото, объективно необходимы для работы любого современного коммуникационного приложения. Однако нашлось и множество «спорных» возможностей, которые выходят далеко за рамки обычных возможностей мессенджера:
Возможность постоянного отслеживания точной геолокации, записи экрана (mediaProjection) и доступа к аккаунтам устройства не являются критичными для обмена сообщениями и вызывают серьезные вопросы о реальных намерениях разработчика.
Автозапуск при загрузке, скрытые загрузки, отключение резервного копирования и сложность анализа кода (extractNativeLibs="false") — это приемы, которые чаще ассоциируются с вредоносным ПО, стремящимся закрепиться в системе и скрыть свою деятельность.
В итоге, перед нами не просто мессенджер, а многофункциональный комплекс с широчайшими полномочиями. Пользователь, устанавливая это приложение, по сути, добровольно предоставляет ему ключи от всей своей цифровой жизни: от переписки и звонков до местоположения, паролей и возможности наблюдать через камеру.
Источник