Обзор Android-трояна Fanta. Часть 1

Обзор Android-трояна Fanta. Часть 1

Life-Hack [Жизнь-Взлом]/ХакингJ

#Обучение 

Известный Android-троян сменил тактику и «заработал» десятки миллионов рублей на российских пользователях 

Однажды вы захотите продать что-нибудь на Avito и, выложив подробное описание своего товара (например, модуль оперативной памяти), получите вот такое сообщение: 

Открыв ссылку, вы увидите с виду довольно безобидную страницу, уведомляющую вас, счастливого и успешного продавца, о совершении покупки:

После того, как вы нажали кнопку Продолжить, на ваше Android-устройство будет загружен APK-файл с иконкой и названием, внушающим доверие. Вы установили приложение, которое почему-то запросило права AccessibilityService, потом появились и быстро исчезли пара окон и… Все. 

Вы заходите проверить свой баланс, но ваше банковское приложение почему-то снова запрашивает данные вашей карты. После ввода данных по какой-то пока еще непонятной для вас причине деньги начинают исчезать с вашего счета. Вы пытаетесь решить проблему, но ваш телефон сопротивляется: сам нажимает на клавиши "Назад" и "Домой", не выключается и не дает активировать никакие средства защиты. В итоге вы остаетесь без денег, ваш товар не куплен, вы в замешательстве и задаетесь вопросом: что случилось? 

Ответ прост: вы стали жертвой Android-трояна Fanta, семейства Flexnet. Как же так вышло? Сейчас объясним. 

Немного статистики

Впервые о семействе Android-троянов Flexnet стало известно еще в 2015 году. За достаточно долгий период активности семейство расширилось до нескольких подвидов: Fanta, Limebot, Lipton и т.д. Троян, как и связанная с ним инфраструктура, не стоят на месте: разрабатываются новые эффективные схемы распространения — в нашем случае качественные фишинговые страницы, нацеленные на конкретного пользователя-продавца, а разработчики трояна следуют модным трендам вирусописания — добавляют новые функциональные возможности, позволяющие эффективнее воровать деньги с зараженных устройств и обходить механизмы защиты.

Описываемая в данной статье кампания нацелена на пользователей из России, небольшое количество зараженных устройств зафиксировано на Украине, еще меньше в Казахстане и Беларуси.

Несмотря на то, что Flexnet находится на арене Android-троянов уже более 4 лет и подробно изучен многими исследователями, он все еще в хорошей форме. Начиная с января 2019 года потенциальная сумма ущерба составляет более 35 миллионов рублей — и это только по компаниям в России. В 2015 году различные версии данного Android-трояна продавались на андеграундных форумах, там же можно было найти и исходный код трояна с подробным описанием. А это значит, что статистика ущерба в мире еще внушительнее. Неплохой показатель для такого старичка, не так ли?

От продажи до обмана

Как видно из представленного ранее скриншота фишинговой страницы под Интернет-сервис для размещения объявлений Avito, она готовилась под конкретную жертву. Судя по всему, злоумышленники используют один из парсеров Avito, вытаскивающий телефонный номер и имя продавца, а также описание товара. После разворачивания страницы и подготовки APK-файла жертве отправляется СМС-сообщение с ее именем и ссылкой на фишинговую страницу, содержащую описание его товара и суммы, полученной с "продажи" товара. Нажав на кнопку, пользователь получает вредоносный APK-файл - Fanta.

Исследование домена shcet491[.]ru показало, что он делегирован на DNS-серверы компании Hostinger:

ns1.hostinger.ru

ns2.hostinger.ru

ns3.hostinger.ru

ns4.hostinger.ru

Файл зоны домена содержит записи, указывающие на ip-адреса 31.220.23[.]236, 31.220.23[.]243 и 31.220.23[.]235. Однако основная ресурсная запись домена (A-запись) указывает на сервер с IP-адресом 178.132.1[.]240.

IP-адрес 178.132.1[.]240 расположен в Нидерландах и принадлежит хостеру WorldStream. IP-адреса 31.220.23[.]235, 31.220.23[.]236 и 31.220.23[.]243 расположены в Великобритании и принадлежат серверу виртуального хостинга HOSTINGER. В качестве регистратора используется openprov-ru. На IP-адрес 178.132.1[.]240 также резолвились домены:

sdelka-ru[.]ru

tovar-av[.]ru

av-tovar[.]ru

ru-sdelka[.]ru

shcet382[.]ru

sdelka221[.]ru

sdelka211[.]ru

vyplata437[.]ru

viplata291[.]ru

perevod273[.]ru

perevod901[.]ru

Следует отметить, что почти со всех доменов были доступны ссылки, следующего формата:

http://(www.){0,1}<%domain%>/[0-9]{7}

Под данный шаблон также попадает ссылка из СМС-сообщения. По историческим данным было обнаружено, что одному домену соответствует несколько ссылок по вышеописанному шаблону, что говорит об использовании одного домена для распространения трояна нескольким жертвам.

Забежим немного вперед: в качестве управляющего сервера загруженный по ссылке из СМС троян использует адрес onuseseddohap[.]club. Данный домен был зарегистрирован 2019-03-12, и начиная с 2019-04-29 происходило взаимодействие APK-приложений с данным доменом. Опираясь на данные, полученные с VirusTotal, всего с данным сервером взаимодействовало 109 приложений. Сам домен резолвился на IP-адрес 217.23.14[.]27, расположенный в Нидерландах и принадлежащий хостеру WorldStream. В качестве регистратора используется namecheap. На данный IP-адрес также резолвились домены bad-racoon[.]club (начиная с 2018-09-25) и bad-racoon[.]live (начиная с 2018-10-25). С доменом bad-racoon[.]club взаимодействовало более 80 APK-файлов, с bad-racoon[.]live - более 100.

В целом, ход атаки выглядит следующим образом:

Что у Fanta под крышкой?

Как и многие другие андроид-трояны, Fanta способна читать и отправлять СМС-сообщения, совершать USSD-запросы, демонстрировать собственные окна поверх приложений (в том числе банковских). Однако в арсенале функциональных возможностей данного семейства прибыло: Fanta начала использовать AccessibilityService для разных целей: чтение содержимого уведомлений других приложений, предотвращение обнаружения и остановки исполнения трояна на зараженном устройстве и т.д. Fanta работает на всех версиях Android не моложе 4.4. В данной статье мы подробнее рассмотрим следующий Fanta-семпл:

MD5: 0826bd11b2c130c4c8ac137e395ac2d4

SHA1: ac33d38d486ee4859aa21b9aeba5e6e11404bcc8

SHA256: df57b7e7ac6913ea5f4daad319e02db1f4a6b243f2ea6500f83060648da6edfb

Сразу после запуска

Непосредственно после запуска троян скрывает свою иконку. Работа приложения возможна только в том случае, если имя зараженного устройства не находится в списке:

android_x86

VirtualBox

Nexus 5X(bullhead)

Nexus 5(razor)

Данная проверка производится в главном сервисе трояна - MainService. При первом запуске происходит инициализация конфигурационных параметров приложения значениями по умолчанию (о формате хранения конфигурационных данных и их значении будет рассказано позже), а также регистрация нового зараженного устройства на управляющем сервере. На сервер будет отправлен HTTP POST-запрос с типом сообщения register_bot и информацией о зараженном устройстве (версия Android, IMEI, номер телефона, имя оператора и код страны, в которой зарегистрирован оператор). В качестве управляющего сервера выступает адрес hXXp://onuseseddohap[.]club/controller.php. В ответ сервер отправляет сообщение, в котором содержатся поля bot_idbot_pwdserver - эти значения приложение сохраняет в качестве параметров CnC-сервера. Параметр server необязательный, если поле не было получено - Fanta использует адрес регистрации - hXXp://onuseseddohap[.]club/controller.php. Функция изменения CnC адреса может быть применена для решения двух задач: равномерного распределения нагрузки между несколькими серверами (при большом количестве зараженных устройств нагрузка на неоптимизированный веб-сервер может быть высокой), а также для использования альтернативного сервера в случае отказа одного из CnC-серверов.

Если во время отправления запроса возникла ошибка, троян повторит процесс регистрации через 20 секунд.

После успешной регистрации устройства Fanta выведет пользователю следующее сообщение:

Важное замечание: сервис под названием Безопасность системы - наименование сервиса трояна, и после нажатия на кнопку ОК будет открыто окно с настройками Accessibility зараженного устройства, где пользователь должен сам выдать Accessibility-права для вредоносного сервиса:

Как только пользователь включает AccessibilityService, Fanta получает доступ к содержимому окон приложений и действиям, производимым в них:

Сразу после получения Accessibility-прав троян запрашивает права администратора и права на чтение уведомлений:

При помощи AccessibilityService приложение имитирует нажатия клавиш, тем самым выдавая себе все необходимые права.

Fanta создает несколько экземпляров баз данных (которые будут описаны позже), необходимых для сохранения конфигурационных данных, а также собранной в процессе информации о зараженном устройстве. Для отправления собранной информации троян создает повторяющуюся задачу, предназначенную для выгрузки полей из базы данных и получения команды от управляющего сервера. Интервал обращения к CnC устанавливается в зависимости от версии Android: в случае 5.1 интервал составит 10 секунд, иначе 60 секунд.

Для получения команды Fanta осуществляет запрос GetTask на управляющий сервер. В ответ CnC может отправить одну из следующих команд:

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

Хранение конфигурационных параметров

Для хранения конфигурационных параметров Fanta использует стандартный подход для платформы Android - Preferences-файлы. Настройки будут сохранены в файл с именем settings. Описание сохраняемых параметров находится в таблице ниже.

Так же Fanta использует файл smsManager:

Взаимодействие с базами данных

В процессе своей работы троян использует две базы данных. База данных с именем a используется для хранения различной информации, собранной с телефона. Вторая база данных носит имя fanta.db и используется для сохранения настроек, отвечающих за создание фишинговых окон, предназначенных для сбора информации о банковских картах.

Троян использует базу данных а для хранения собираемой информации и логирования своих действий. Данные хранятся в таблице logs. Для создания таблицы используется следующий SQL-запрос:

create table logs ( _id integer primary key autoincrement, d TEXT, f TEXT, p TEXT, m integer)

В базе данных содержится следующая информация:

Логирование включения зараженного устройства сообщением Телефон включился!

Уведомления от приложений. Сообщение формируется по следующему шаблону:

(<%App Name%>)<%Title%>: <%Notification text%>

3. Данные банковских карт из создаваемых трояном фишинговых форм. Параметр VIEW_NAME может быть одним из списка, например:

AliExpressAvitoGoogle PlayРазное <%App Name%>

Сообщение логируется в формате:

[<%Time in format HH:mm:ss dd.MM.yyyy%>](<%VIEW_NAME%>) Номер карты:<%CARD_NUMBER%>; Дата:<%MONTH%>/<%YEAR%>; CVV: <%CVV%>

4. Входящие/Исходящие СМС сообщения в формате:

([<%Time in format HH:mm:ss dd.MM.yyyy%>] Тип: Входящее/Исходящее) <%Mobile number%>:<%SMS-text%>

5. Информация о пакете, создающем диалоговое окно в формате:

(<%Package name%>)<%Package information%>

Одной из функциональных возможностей Fanta является сбор информации о банковских картах. Сбор данных происходит за счет создания фишинговых окон при открытии банковских приложений. Троян создает фишинговое окно только один раз. Информация, о том, что окно было показано пользователю сохраняется в таблице settings в базе данных fanta.db. Для создания базы данных используется следующий SQL-запрос:

create table settings (can_login integer, first_bank integer, can_alpha integer, can_avito integer, can_ali integer, can_vtb24 integer, can_telecard integer, can_another integer, can_card integer);

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

first_bank – не используется

can_avito – поле отвечает за показ формы при открытии приложения Avito

can_ali – поле отвечает за показ формы при открытии приложения Aliexpress

can_another – поле отвечает за показ формы при открытии любого приложения из списка: ЮлаPandaoДром АвтоКошелёк. Скидочные и бонусные картыAviasalesBookingTrivago.

can_card – поле отвечает за показ формы при открытии Google Play

Продолжение следует…

Источник


Report Page