October 22, 2020

Банковские трояны и защита от них

У одного моего знакомого случился очень неприятный инцидент.С его банковского счета куда-то пропали 2 миллиона рублей. А в службе поддержки банка развели руками, отправив товарища писать заявление в полицию, поскольку денежные переводы были совершены с помощью мобильного приложения и подтверждены через SMS, что по всем признакам выглядит вполне легальной финансовой операции.

«Ты же программист, — простонал в трубку мой друг, — посоветуй, что делать». К сожалению, что-то делать было уже поздно, ибо инструментом для кражи денег послужил банковский троян (банкер), обосновавшийся на телефоне моего приятеля задолго до этого досадного инцидента. И предотвратить пропажу денег было можно, лишь заранее изучив принципы работы и методы борьбы с таким видом вредоносных приложений. Чем мы в сегодняшней статье и займемся.

Банковские трояны раньше

Первые полноценные банковские трояны для мобильной платформы Android были обнаружены еще в 2011 году. Нет, вредоносы, способные передавать злоумышленникам входящие SMS-сообщения, в том числе содержащие mTAN-коды (коды аутентификации транзакций), существовали и до этого. Кроме того, были известны трояны, умеющие оперировать USSD-командами. Они могли перевести заданную злодеями сумму с «привязанной» к телефону банковской карты, пополнив баланс левого мобильного телефона, или узнать остаток средств на счете. Но полноценными банковскими троянами, конечно же, не были, поскольку заметно уступали по функциональным возможностям своим десктопным аналогам.

Все изменилось с появлением Android.SpyEye. Этот трой работал в связке с вредоносом SpyEye для Windows, благодаря чему обрел способность обходить двухфакторную аутентификацию. Действовал он следующим образом.

Как только пользователь зараженной винды открывал в браузере банковский сайт, работающий на компе трой выполнял веб-инжект, встраивая в страницу кусок HTML-кода, который он подгружал из конфига. Поскольку инжект осуществлялся на стороне клиента, URL банковского сайта в адресной строке браузера оказывался корректным, а соединение было установлено по протоколу HTTPS. Поэтому содержимое веб-страницы не вызывало у жертвы никаких подозрений.

Текст, встроенный трояном в банковский сайт, гласил, что банк внезапно изменил условия работы и для авторизации в системе банк-клиент необходимо установить на мобильный телефон небольшое приложение размером около 30 Кбайт, скачав его по предложенной ссылке — «в целях безопасности». Приложением, естественно, был мобильный трой Android.SpyEye.

Эта вредоносная программа не создавала никаких значков, ее можно было отыскать только в списке работающих процессов под названием «Система». Основная задача троя — перехват всех входящих SMS-сообщений и пересылка их на управляющий сервер, адрес которого вредонос брал из XML-конфига.

Так выглядел один из первых мобильных банковских троянов — Android.SpyEye

Когда жертва вводит логин и пароль на банковском сайте в окне браузера, Windows-троян SpyEye перехватывает и отправляет их ботоводам. После этого злоумышленники в любой момент могут авторизоваться с помощью этих данных в системе банк-клиент на сайте банка, однако сервер обязательно отправит владельцу счета проверочный код в SMS, который нужно ввести в специальную форму. Это сообщение будет перехвачено мобильной версией SpyEye и передано вирусописателям. Используя перехват SMS, они смогут выполнять любые операции по счету, например опустошить его подчистую.

Примерно так выглядит схема работы первого мобильного банковского трояна SpyEye

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

Банковские трояны сегодня

Спустя какое-то время сотрудники IT-отделов банков понемногу освоили веб-программирование, и банк-клиенты окончательно перекочевали с десктопов в мобильные телефоны в виде Android-приложений. Это значительно облегчило жизнь вирусописателям: у них отпала необходимость заморачиваться с троянами под винду, и они смогли наконец полностью сосредоточить свои усилия на разработке мобильных банковских троянов. Ведь владелец Android-смартфона с банковским приложением на борту — это ходячий кошелек, опустошить который мечтает каждый уважающий себя вирмейкер.

Как и прочие вредоносы для Android, банковские трояны распространялись под видом каких-либо полезных программ — «универсальных видеокодеков» или проигрывателей Flash, в том числе через официальный каталог Google Play. Троянская функциональность таких приложений, естественно, не афишировалась разработчиками, и проявлялась она либо спустя какое-то время, либо после загрузки очередного обновления. Так, в одном из случаев банковский троян раздавался в виде программы, якобы объединяющей в себе возможности банк-клиентов сразу нескольких крупных кредитных организаций. Зачем вам куча отдельных приложений, когда вместо них можно скачать одно, с трояном? Также известны случаи, когда вредоносы встраивались в подлинные приложения некоторых банков, модифицированные злоумышленниками. Такие приложения распространялись с поддельных страниц банков, оформленных в точности как настоящие, а жертв на них завлекали рассылками фишинговых писем.

Еще один вектор распространения мобильных банковских троянов — фишинговые SMS-рассылки. Обычно это происходит так. Пользователю, зарегистрированному на одном из сайтов бесплатных объявлений, приходит SMS-сообщение с предложением обмена. При этом получателя называют по имени, что должно усыпить его бдительность, — вирусописатели предварительно распарсили базу пользователей этого сайта, вытянув оттуда всю полезную информацию. При переходе по короткой ссылке из сообщения потенциальная жертва направляется на промежуточную страницу, где определяется, что пользователь зашел на сайт именно с мобильного устройства под управлением Android, и выявляется его мобильный оператор, после чего происходит перенаправление на фейковую страницу с сообщением о поступлении MMS, оформленную в стилистике соответствующего ОПСОСа. После нажатия на кнопку начинается загрузка трояна.

Пример фишинговой SMS-рассылки, цель которой — распространение банковского трояна

Первые мобильные банковские трояны работали очень просто. Если для функционирования вредоноса были нужны права администратора, он настойчиво демонстрировал на экране окно с требованием выдать ему соответствующие полномочия, до тех пор пока измученный пользователь не согласится на это действие. Но иногда вирусописатели шли на различные ухищрения, чтобы обмануть потенциальную жертву. Например, банковский троян Android.BankBot.29 маскировал окно запроса прав администратора под сообщение приложения Google Play: «Ваша версия устарела, использовать новую версию?» При попытке пользователя нажать на экранную кнопку «Да» layout трояна исчезал, и тап попадал на кнопку Accept диалогового окна DeviceAdmin, в результате чего вредонос получал администраторские привилегии.

Получить админские права для Android-трояна не просто, а очень просто

Еще один банковский троян доставал пользователей запросом на включение режима Accessibility Service — специальных возможностей для людей с ограничениями по здоровью. А получив такое разрешение, сам включал для себя админа.

Другой способ получения привилегий — Accessibility Service

После этого трой просто висит в памяти мобильного телефона, ожидая запуска мобильного банковского приложения. При наступлении этого события он определяет, какое именно приложение запущено, и рисует поверх него соответствующую поддельную форму ввода логина и пароля, а введенные данные тут же пересылаются на управляющий сервер по HTTP в виде JSON или на заданный телефонный номер SMS-сообщением. Конфиг мобильного банковского трояна может содержать HTML-код нескольких десятков форм с различным оформлением, копирующим интерфейс приложений наиболее популярных банков. После этого остается только перехватить и отправить в том же направлении SMS с одноразовыми паролями, чтобы предоставить ботоводам полный доступ к банковскому счету. Входящие сообщения от банков при этом обычно скрываются, чтобы не вызывать у жертвы подозрений.

Поддельное окно мобильного банкинга
Мобильные банковские трояны могут рисовать поддельные окна авторизации популярных банков

Сколько денег подобным образом было похищено со счетов пользователей Android, сказать трудно, но суммы здесь наверняка фигурируют шестизначные. Даже если троянам по какой-то причине не удавалось получить доступ к банковскому счету, они благополучно похищали реквизиты банковских карт. Для этого, например, широко использовались фейковые окна привязки карты к приложению Google Play.

Для хищения реквизитов банковских карт многие банковские трояны используют поддельные окна Google Play

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

Банкботы — разновидность банковского трояна

Банкботы — это побочная ветвь эволюции мобильных банковских троянов. Если обычные банковские трои работают более-менее автономно, то банкботы способны получать различные управляющие команды и выполнять их на зараженном девайсе.

Команды могут передаваться по HTTP, например в формате JSON, по SMS, а в некоторых случаях даже через специальный Telegram-канал. Большинство банкботов по команде включают или отключают перехват входящих SMS-сообщений, могут скрывать полученные SMS (прятать можно сообщения с определенных номеров или с заданными ключевыми словами), отключать звук мобильного телефона, отправлять сообщения на указанный злоумышленниками номер с заданным содержимым или выполнять USSD-команды. Также ботовод может изменить адрес управляющего сервера или системный номер телефона, на который будет пересылаться информация, если ее не удалось передать по HTTP.

Многие банкботы также могут скачивать и устанавливать на мобильном устройстве APK-файлы, ссылку на которые укажет в команде ботовод. В результате на зараженный девайс попадают другие трояны, имеющие более широкий ассортимент функций. Также некоторые банкботы умеют отображать на экране смартфона активити с присланными злодеем параметрами — это открывает широчайшие возможности для фишинга и реализации самых изощренных мошеннических схем. Ну и почти все такие вредоносы умеют сливать на командный сервер адресную книгу, SMS-переписку и прочие конфиденциальные данные, а также переадресовывать входящие звонки на заданный в команде телефонный номер. Отдельные экземпляры троянов ко всему прочему обладают функциями самозащиты: они отслеживают имена работающих в системе процессов и при обнаружении антивируса пытаются выгрузить его, используя права администратора.

Практически все банкботы используют веб-админку, предоставляющую ботоводам подробную статистику по инфицированным девайсам и похищенной на них информации.

админка мобильного банковского бота
админка мобильного банковского бота
Типичная админка типичного мобильного банковского бота

Распространение банковских троянов

С распространением мобильных устройств на Android производство троянов для этой платформы стало понемногу превращаться в самую настоящую подпольную индустрию. В полной мере коснулось это и банкеров.

В даркнете стали появляться объявления о сдаче банковских троянов под Android в аренду, с предоставлением клиенту админки и технической поддержки. А затем начали распространяться билдеры, с использованием которых любой желающий без каких-либо навыков программирования мог соорудить банковского трояна, маскирующегося под выбранное приложение или определенную систему банк-клиент.

Билдер для создания банковского троя под Android

Благодаря этому количество банковских троев примерно с 2017 года начало расти если не в геометрической прогрессии, то весьма заметно. И шансы подцепить подобную заразу у пользователей смартфонов на Android тоже значительно выросли. А с учетом того, что большинство подобных вредоносов работает с привилегиями администратора, удалить их с устройства не так-то просто: для этого в лучшем случае придется запустить систему в безопасном режиме, в худшем — сбросить девайс к заводским настройкам со всеми вытекающими последствиями.

Защита от банковского трояна

Доказанный факт: даже отключение на телефоне возможности установки приложений из сторонних источников далеко не всегда защищает пользователя от проникновения банкеров. Случаев загрузки подобных вредоносов даже из официального каталога Google Play известно множество: технология проверки размещаемых там приложений все еще несовершенна.

Кроме того, операционную систему Android отличает значительное количество уязвимостей, которые могут использоваться вирусописателями в своих, отнюдь не благородных целях. Защитить устройство от несанкционированного проникновения зловредов способны антивирусы, но вот устанавливать их или нет — личное дело самих пользователей Android. По крайней мере, мой приятель-коммерсант после инцидента с похищением денег решил больше не испытывать судьбу и скачал на свой телефон такую программу: лишней не будет.