
Недавно нам на глаза попался APK-файл с интригующим и внушающим доверие названием «Антивирус ФСБ.apk».
Установив его, мы обнаружили, что при запуске пользователя встречает интерфейс известной программы для управления звонками на Android — Right Dialer от разработчика Goodwy.
Вероятнее всего, выбор злоумышленников пал именно на это приложение, так как оно запрашивает большое количество разрешений: работа с контактами, выполнение звонков, доступ к камере и так далее.

AndroidManifest приложения Goodwy
При открытии AndroidManifest.xml, нетрудно увидеть, что основной пакет — com.syscore.toolsuite, а не com.goodwy.dialer. Это означает, что код Goodwy был встроен в чужое приложение — уже известный Android-шпион LunaSpy, более ранняя версия которого была рассмотрена в этой статье.

activity-aliasПеред статическим исследованием образца мы запустили его в нашей песочнице, чтобы получить общее представление о работе ВПО:

Ключевые наблюдения из динамического анализа:
Коммуникация с управляющими серверами.
Получение привилегий.
Создание скрытых файлов.
Перейдя к анализу приложения, мы обнаружили ряд обновление в LunaSpy:
Начнем с того, что ряд строк (например, все IP-адреса, названия некоторых команд) шифруется алгоритмом XOR для усложнения анализа.

Злоумышленники расширили свой шпион рядом новых команд (как говорится, если используешь Accessibility Service, используй его по полной):
GET_CALL_RECORDINGS — отправляет на управляющий сервер список имен файлов, перебирая файлы с расширением .wav, чей размер больше 44 байтов (размер заголовка WAV), в директории getFilesDir()/call_recordings;
Сами же звонки записываются фоновым сервисом CallService, наследуемым от системного InCallService. Файлы с содержанием звонка сохраняют в формате:
rec_<yyyyMMdd_HHmmss>_<calltype>_<call_number>.wav
Где calltype это строки incoming\outcoming или строка формата voip_<number>` для звонков по интернет протоколу.

DOWNLOAD_CALL_RECORDINGDOWNLOAD_CALL_RECORDING — команда-дополнение к GET_CALL_RECORDINGS . Она отправляет на управляющий сервер запись звонка с указанным id, закодированную в Base64;
Злоумышленники также имеют возможность перенаправлять вызовы. Команды SET_REDIRECT_RULES, GET_REDIRECT_RULES устанавливают и присылают правила для подмены исходящих звонков. Правила приходят в форматe json:
{ “real”: “”, // исходный номер “display”: “”, //отображаемый номер “direction”: “<both/outgoing/incoming>”, // направление вызова “active”: <true/false> }
Для удобства злоумышленники добавили больше команд для управления логированием устройства: REQUEST_LOGS, CLEAR_LOGS, LOGGING_ENABLE, LOGGING_DISABLE. А так же ряд команд - RESET_SOFT, RESET_DEEP, RESET_GLOBAL — осуществляют перезапуск части или всех вспомогательных сервисов шпиона;

RESET_REBOOTRESET_REBOOT — имитируют перезагрузку устройства (при получении — останавливает свои сервисы, отменяет задачи WorkManager, имитирует задержку при загрузке системы (8 секунд), после чего перезапускает сервисы);

GET_SCREEN_TREEGET_SCREEN_TREE — позволяет получить параметры текущего экрана: width, height, объекты на экране, их позиции, текст и свойства. В случае, если у графического элемента есть дочернии объекты, то рекурсивно собирает о них ту же информацию.

PERFORM_SWIPEСложные команды с параметрами для управления устройством (имитация действий пользователя): PERFORM_TAP (выполнить нажатие на экран), PERFORM_SWIPE (провести по экрану), PERFORM_INPUT_TEXT (выполнить вставку текста), PERFORM_PATH_GESTURE (выполнить жест по заданным позициям с определенной длительностью нажатия), PERFORM_PATTERN_UNLOCK (команда похожа на PERFORM_PATH_GESTURE, однако предназначена для адаптивных паттернов, например, разблокировка по рисунку), PERFORM_BACK (выполнить действие «назад»), PERFORM_HOME (выполнить переход на домашний экран), PERFORM_RECENTS (просмотреть список недавних приложений) — команды, активно использующие функции PerformGlobalAction и механизм GestureDescription;

REVIVE_PERMISSIONSREVIVE_PERMISSIONS — команда, которая показывает пользователю уведомление поверх всех окон с целью получения прав android.permission.CAMERA и android.permission.RECORD_AUDIO;

DISABLE_PLAY_PROTECTDISABLE_PLAY_PROTECT — отключить глобальную настройку в Android (Settings.Global.PACKAGE_VERIFIER_ENABLE), которая управляет проверкой приложений перед их установкой.
Вредоносное ПО демонстрирует устойчивую тенденцию к развитию: от простого шпионажа к комплексному контролю устройства с элементами антиобнаружения, масштабируемой инфраструктурой и усовершенствованными методами социальной инженерии. Это требует от пользователей и специалистов по безопасности постоянного повышения уровня защиты и бдительности.
Меры предосторожности
Не стоит скачивать приложения с открытым исходным кодом из неизвестных источников, так как их легко видоизменить. Лучше скачивать их из Google Play или брать последний релиз со страницы разработчика.
Не предоставляйте приложениям разрешения, которые им не потребуются (особенно разрешения
Accessibility Service).При подозрении на заражение ВПО проверьте список установленных приложений или воспользуйтесь средствами для отслеживания активности.
Индикаторы компрометации
Файловые индикаторы
Имя |
Хеш |
PT Fusion |
|---|---|---|
Антивирус ФСБ.apk |
|
Сетевые индикаторы
IP |
PT Fusion |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|