Аналитики «Лаборатории Касперского» рассказали об эволюции банковского трояна для Android, Asacub (Trojan-Banker.AndroidOS.Asacub).
Впервые эта угроза была обнаружена еще в 2015 году, но первые версии малвари имели больше возможностей для шпионажа, чем для кражи средств. Исследователи пишут, что с тех пор троян эволюционировал, а его разработчики провели масштабную кампанию по распространению (весна-лето 2017 года), благодаря чему в течение последнего года представители Asacub занимают первые места по количеству атак среди мобильной банковской малвари, обгоняя такие семейства, как Svpeng и Faketoken.
Новый отчет исследователей посвящен работе актуальные версий трояна (а 2018 году наиболее активно распространялись версии 5.0.0 и 5.0.3), ориентированных на кражу денег у владельцев Android-устройств с подключенным сервисом мобильного банкинга одного из крупнейших российских банков, чье название не разглашается.
В первую очередь Asacub ориентирован на российских пользователей – на Россию приходятся 98% случаев заражения (225 000), что объясняется нацеленностью злоумышленников на клиентов крупного российского банка. Также атаки трояна затронули пользователей из Украины, Турции, Германии, Белоруссии, Польши, Армении, Казахстана, США и других стран мира.
Происхождение малвари
По данным «Лаборатории Касперского», семейство Asacub эволюционировало из трояна Trojan-SMS.AndroidOS.Smaps. Общение обоих вредоносов с управляющими серверами строится по одному принципу: схожим образом формируются относительные адреса, на которые трояны отправляют сетевые запросы, а также пересекается набор возможных команд, которые они могут выполнять. Кроме того, нумерация версий Asacub продолжает нумерацию Smaps.
Основное отличие заключается в том, что Smaps передает данные открытым текстом, а Asacub зашифровывает данные алгоритмом RC4 и затем кодирует в формат base64.
Ниже можно увидеть примеры трафика от Smaps и Asacub – инициализирующий запрос к командному серверу с информацией о зараженном устройстве и ответ от сервера с командой на выполнение.
Также можно сравнить формат, в котором Asacub и Smaps пересылают с устройства на командный сервер входящие SMS-сообщения (закодированные алгоритмом base64).
Для обфускации малварь использует различные способы: от простейших, таких как конкатенация строк и переименования классов и методов, до выноса реализации некоторых функций в нативный код – включение в APK-файл SO-библиотек на C/C++, что требует использования дополнительных инструментов или динамического анализа для деобфускации, поскольку большинство инструментов для статического анализа Android-приложений поддерживают только байткод Dalvik. Также в некоторых версиях Asacub строки в приложении шифруются тем же алгоритмом, что и данные, передаваемые на управляющий сервер, но с другими ключами.
Общение с командным сервером
Хотя возможности Asacub постепенно менялись, в его сетевом поведении – формате общения с управляющим сервером – изменения были незначительные. В частности, именно это и позволило экспертам предположить, что разные по своим возможностям банковские трояны относятся к одному семейству. Так, данные всегда передавались на командный сервер по протоколу HTTP в теле POST-запроса в зашифрованном виде на относительный адрес /something/index.php.
Передаваемые и получаемые малварью данные зашифрованы алгоритмом RC4 и закодированы по стандарту base64. Адрес управляющего сервера и ключ шифрования (в версиях 4.x и 5.x один для различных модификаций, и различный для различных C&C в более поздних версиях) зашиты в теле малвари.
С декабря 2016 года изменения в общении с командным сервером затронули только способ генерации относительного пути в URL: на смену осмысленному слову пришла достаточно длинная случайная комбинация букв и цифр, например, «ozvi4malen7dwdh» или «f29u8oi77024clufhw1u5ws62».
Распространение
Банкер распространяется через фишинговые SMS-сообщения, содержащие ссылку и предложение посмотреть фото или MMS. Ссылка ведет на веб-страницу с аналогичным предложением и кнопкой для скачивания, при нажатии на нее на устройство загружается APK-файл троянца. То есть для установки малвари пользователю необходимо разрешить установку приложений из неизвестных источников в настройках.
Проникнув на устройство, Asacub маскируется под различные приложения для работы с MMS или клиент популярного сервиса бесплатных объявлений. Экспертам встречались такие названия, как «Фото», «Сообщение», «Avito-Предложение», «ММС – Послание».
APK-файлы трояна загружаются с сайтов типа mmsprivate[.]site, photolike[.]fun, you-foto[.]site, mms4you[.]me под именами формата:
- photo_[number]_img.apk,
- mms_[number]_img.apk
- avito_[number].apk,
- img_[number]_photo.apk,
- mms[number]_photo.image.apk,
- mms[number]_photo.img.apk,
- img.photo_[number].apk,
- photo_[number]_obmen.img.apk.
Эксперты подчеркивают, что пример Asacub наглядно показывает, что мобильные вредоносы могут функционировать на протяжении нескольких лет с минимальными изменениями схемы распространения. В данном случае это SMS-спам, но люди до сих пор переходят по подозрительным ссылкам, устанавливают ПО из сторонних источников и не глядя дают приложениям любые разрешения.
Заражение
Во время установки Asacub запрашивает у пользователя (в зависимости от версии трояна) либо права администратора устройства (Device administrator), либо разрешение на использование службы специальных возможностей AccessibilityService. После получения нужных прав малварь назначает себя приложением для SMS-сообщений по умолчанию и пропадает с экрана устройства. Если пользователь игнорирует или отклоняет запрос, окно снова открывается через каждые несколько секунд.
После установки троян начинает общение с командным сервером. Все данные передаются в формате JSON (после расшифровки). Среди них есть информация о модели смартфона, версии ОС, операторе сотовой связи, версии вредоноса. Список команд, зашитых в теле трояна, выглядит следующим образом:
Исследователи отмечают, что набор возможных команд – это наиболее существенное различие между разными версиями Asacub. В версиях 2015 года и начала 2016 года инструкции от управляющего сервера в JSON-формате содержали название команды в текстовом виде («get_sms», «block_phone»). В более поздних версиях вместо названия команд стал передаваться их числовой код. Одной команде в разных версиях соответствовал один и тот же числовой код, но набор поддерживаемых команд различался. Например, в версии 9.0.7 (2017 год) следующий набор команд: 2, 4, 8, 11, 12, 15, 16, 17, 18, 19, 20. После получения команды троян пытается выполнить ее, а затем возвращает на C&C-сервер информацию о статусе выполнения и полученные данные, если таковые имеются.
Так как Asacub назначает себя SMS-приложением по умолчанию, при поступлении нового SMS он пересылает злоумышленникам номер отправителя и текст сообщения в формате base64. Таким образом, троян может выводить средства с привязанной к телефону банковской карты путем отправки SMS-сообщений для перевода средств на другой счет по номеру карты или мобильного телефона.
Также малварь перехватывает SMS-сообщения от банка, содержащие одноразовые пароли и информацию о балансе привязанной банковской карты. Некоторые версии трояна могут самостоятельно извлекать из таких SMS-сообщений коды подтверждения операций и отправлять их на нужный номер. При этом пользователь не сможет проверить баланс через мобильный банк или поменять в нем какие-либо настройки, так как после получения команды с кодом 40 троян запрещает открытие на телефоне банковского приложения.