SHA1:
- 6d0c88f488902d0c975167068027920ca18ff8af
- a305a0f363bc8891ca7a5ca31e20c2c01b5a6c24
- 70e39daafe8d68ec2b43b3ce7353e5364a381ba2
Банковский троянец, работающий на мобильных устройствах под управлением ОС Android. Его основная задача — кража конфиденциальных данных. Android.BankBot.495.origin впервые был обнаружен в каталоге Google Play и предназначался для бразильских пользователей. Троянец распространялся под видом приложений для слежки за владельцами мобильных устройств.
Начало работы
При запуске Android.BankBot.495.origin открывает окно системных настроек и предлагает пользователю разрешить банкеру доступ к функциям специальных возможностей (Accessibility). Если потенциальная жертва соглашается это сделать, троянец получает возможность считывать содержимое активных окон приложений и самостоятельно нажимать на кнопки.
После получения нужных полномочий Android.BankBot.495.origin запускает свой сервис MainService и автоматически закрывает окно настроек специальных возможностей системы.
Далее вредоносная программа пытается получить доступ к показу экранных форм и окон поверх других приложений. Для этого она запрашивает следующее системное разрешение:
- android.permission.ACTION_MANAGE_OVERLAY_PERMISSION
Если на мобильном устройстве языком системы является португальский, троянец автоматически нажимает на кнопки с текстом «PERMITIR» и самостоятельно обеспечивает себе нужные привилегии.
Получение первоначальных настроек
Троянский сервис MainService запускает активность Main2Activity, которая загружает в невидимом окне WebView адрес http://brazilian*****.ddns.net/renew. Далее на сайте происходит цепочка перенаправлений:
- http://brazilian*****.ddns.net/renew
- http://brazilian*****.ddns.net/renew/
- http://brazilian*****.ddns.net/renew/1.php?cg=MzQuM******2LjgyfDUyLjEyL******2OA==]
- http://brazilian*****.ddns.net/renew/d.html?finishurl
Ключ 1.php?cg= сигнализирует троянцу о том, что далее в ссылке указаны необходимые ему настройки — закодированные в Base64 адреса основных управляющих серверов. Символ «]» является закрывающим ключом для закодированных данных. После расшифровки адреса удаленных узлов имеют вид:
34.222.**.**|52.12.**.***
Первый IP-адрес принадлежит серверу с подготовленными злоумышленниками мошенническими веб-страницами, которые троянец будет использовать для фишинг-атак. Второй адрес принадлежит командному серверу, управляющему банкером.
Успешно приняв настройки и получив ключ ?finishurl в последней ссылке, троянец завершает работу активности Main2Activity.
Получение команд и использование специальных возможностей для кражи конфиденциальных данных
При старте сервис MainService запускает два постоянно активных потока ProcessualThread и AppStartWatchThread. Поток ProcessualThread с перерывами а 6 секунд делает запросы к управляющему серверу по адресу http://52.12.**.***/mobileConfig.php и выполняет поступающие от него команды. Процесс выглядит следующим образом.
-
Выполняется запрос с параметрами
hwid=********3X37a********681bf&type=1&act=firstRun (здесь и далее hwid – это идентификатор устройства, состоящий из серийного номера оборудования и значения Settings.Secure.ANDROID_ID). В ответ троянцу поступает JSON со списком приложений. Android.BankBot.495.origin проверяет, какие из этих приложений присутствуют на мобильном устройстве и отправляет результат в следующем запросе:hwid=********3X37a********681bf&ttdd=%5B%22oct2%22%5D
-
Выполняется запрос с параметрами
hwid=********3X37a********681bf&operador=cfData&content=chkItTk. Если ответ сервера содержит строку «mobile_ita_tk», троянец запускает приложение Banco Itaú (com.itau). Далее он считывает содержимое его окна, сохраняет и передает на сервер данные о балансе банковского счета жертвы. Затем он самостоятельно нажимает на кнопки с текстом «alterar conta», «acessar com outra», а также «iToken». Android.BankBot.495.origin передает на сервер содержимое элемента интерфейса приложения с текстом «Número válido por» (значение ключа iToken). -
Выполняется запрос с параметрами
hwid=********3X37a********681bf&operador=cfData&content=chkDescoTk. Если ответ сервера содержит строку «mobile_desco_tk», банкер запускает приложение Bradesco (com.bradesco) и пытается ввести в нем PIN-код, который поступил в команде. С использованием функции специальных возможностей Android.BankBot.495.origin анализирует содержимое окна программы и в зависимости от элемента ее интерфейса выполняет следующие действия:- если строковое представление элемента содержит «viewIdResName: agn», троянец сохраняет его в переменную «Agencia»;
- если строковое представление элемента содержит «viewIdResName: ctaDig», Android.BankBot.495.origin сохраняет его в переменную «Conta»;
- если в окне присутствует элемент, содержащий текст «CHAVE DE», и с сервера поступала команда запустить атакуемое приложение, банкер нажимает на этот элемент и устанавливает флаг, что нажатие на кнопку было выполнено;
- если флаг подтверждения нажатия на кнопку с текстом «CHAVE DE» активен, и в окне есть элемент с текстом «DIGITAR A SENHA», троянец нажимает на него;
- если флаг подтверждения нажатия на кнопку с текстом «CHAVE DE», и в окне есть элемент с текстом «Digite seu PIN», Android.BankBot.495.origin вводит PIN-код, полученный с сервера, и устанавливает флаг, подтверждающий ввод пароля;
- если стоит флаг успешного ввода PIN-кода, и описание элемента содержит «ОК», банкер нажимает на него;
- если описание элемента в окне содержит строку «valorSaldoBox», Android.BankBot.495.origin сохраняет его значение в переменную «Saldo»;
- если описание элемента содержит «id/otp_field», троянец сохраняет его строковое представление как «Token».
- Содержимое переменных «Agencia», «Conta», «Saldo», «Token» загружается на сервер http://52.12.**.*** в потоке AppStartWatchThread.
-
Выполняется два запроса:
- hwid=********3X37a********681bf&operador=cfData&content=chkSMSB;
- hwid=********3X37a********681bf&operador=cfData&content=chkSMSCf.
Если ответ сервера содержит строку «chkSMS», банкер запускает установленное по умолчанию приложение для работы с СМС. С использованием специальных возможностей Android.BankBot.495.origin считывает и сохраняет текст СМС-сообщений, хранящихся в этом приложении.
Собираемые троянцем данные передаются на сервер в потоке AppStartWatchThread, который постоянно отслеживает изменения в полях класса. При этом Android.BankBot.495.origin отдельно выделяет сообщения от банка CaixaBank, S.A. и отправляет их на сервер в отдельном запросе.
Фишинг-атаки
С использованием специальных возможностей Android.BankBot.495.origin отслеживает работу следующих приложений:
- Itaucard Controle seu cartão;
- Banco do Brasil;
- CAIXA;
- Bradesco;
- Banco Itaú;
- Uber;
- Netflix;
- Twitter.
При запуске одного из них троянец отображает поверх его окна WebView с загруженной в нем фишинговой страницей, которую получает с управляющего сервера 34.222.**.**. Эти страницы имитируют внешний вид атакуемых программ и запрашивают у жертвы различную конфиденциальную информацию: логины, пароли, имена учетных записей, данные о банковских картах и т. п. После ввода и отправки данных мошенническая страница выполняет перенаправление по ссылке, которая содержит строку «finishurlkk». Android.BankBot.495.origin закрывает WebView и повторно запускает атакуемую программу, чтобы не вызывать подозрений, если целевое приложение ранее было закрыто или свернуто.
Пример мошеннических окон, которые показывает троянец:
Самозащита
Android.BankBot.495.origin имеет функцию самозащиты. Троянец контролирует запуск приложений и ищет в именах их пакетов совпадение по следующим строкам:
- com.vtm.uninstall
- com.ddm.smartappunsintaller
- com.rhythm.hexise.uninst
- com.GoodTools.Uninstalle
- mobi.infolife.uninstaller
- om.utils.uninstalle
- com.jumobile.manager.systemapp
- com.vsrevogroup.revouninstallermobi
- oo.util.uninstall
- om.barto.uninstalle
- om.tohsoft.easyuninstalle
- vast.android.mobile
- avast.android.cleane
- om.antiviru
- om.avira.andro
- om.kms.fre
Если банкер обнаруживает соответствие, он 4 раза нажимает кнопку «Назад», пытаясь закрыть программу.