Расширения для браузеров упрощают нам жизнь: прячут назойливую рекламу, переводят текст, помогают сделать выбор в онлайн-магазинах и т.п. Есть среди них и нежелательные – те, что подсовывают пользователю рекламу или собирают информацию о его действиях. Но даже их можно назвать вполне безобидными на фоне расширений, основная задача которых заключается в краже денег. Чтобы обезопасить своих клиентов, мы автоматически обрабатываем множество расширений из различных источников, в том числе скачиваем и анализируем подозрительные расширения из Chrome Web Store. Одно из них, обнаруженное недавно, обращалось к подозрительному домену, чем и привлекло наше внимание.
Расширение под названием «Desbloquear Conteúdo» (с португальского «Разблокировать содержимое») для Google Chrome было ориентировано на пользователей бразильских интернет-банков – все зафиксированные нами попытки установки расширение происходили в Бразилии. Задачей зловреда является сбор аутентификационных данных (например, логины и пароли) и последующая кража денежных средств со счетов жертв. Расширение детектируется продуктами «Лаборатории Касперского» как HEUR:Trojan-Banker.Script.Generic.
На момент публикации вредоносное расширение уже было удалено из Chrome Web Store.
Анализ зловреда
Вредоносные расширения для браузеров часто используют различные техники для затруднения обнаружения и детектирования антивирусным ПО (например, обфускацию). Разработчики исследуемого расширения не стали обфусцировать его исходный код, выбрав другой путь. Для получения и передачи данных зловред использует протокол WebSocket, который позволяет обмениваться сообщениями с управляющим сервером в режиме реального времени. В результате C&C начинает играть роль прокси-сервера, куда расширение перенаправляет трафик в случаях, когда жертва находится на странице одного из бразильских банков. Фактически, оно осуществляет атаку Man-in-The-Middle.
Расширение «Desbloquear Conteúdo» состоит из двух JS-скриптов, рассмотрим их подробнее.
fundo.js
Первое, что привлекает внимание в коде скрипта, это функция websocket_init(). В ней создается WebSocket, и с сервера (ws://exalpha2018[.]tk:2018) загружаются данные, которые сохраняются в chrome.storage по ключу «manualRemovalStorage».
В результате обращения к hxxp://exalpha2018[.]tk/contact-server/?modulo=get расширение получает IP для перенаправления пользовательского трафика.
Здесь следует упомянуть технологию Proxy Auto Configuration (автоматическая настройка прокси-сервера). Современные браузеры используют специальный файл, написанный на языке JavaScript, в котором определена только одна функция: FindProxyForURL. С помощью этой функции браузер определяет какой прокси-сервер использовать для установления соединения с различными доменами.
Скрипт fundo.js использует технологию Proxy Auto Configuration в момент вызова функции implement_pac_script. В результате функция FindProxyForURL заменяется на новую для перенаправления трафика на сервер злоумышленников, но только в случаях, когда пользователь находится на странице одного из банков.
pages.js
В этом скрипте наиболее важен следующий участок кода:
В «manualRemovalStorage», как и в случае со скриптом fundo.js, сохранены загруженные с сервера данные: домены некоторых бразильских банков и код, который браузеру нужно выполнить, если пользователь зашел на соответствующий сайт.
pages.js скачивает с домена ganalytics[.]ga и запускает на сайтах банков следующие скрипты:
- ganalytics[.]ga/bbf.js,
- ganalytics[.]ga/bbj.js,
- ganalytics[.]ga/cef.js,
- ganalytics[.]ga/itf.js,
- ganalytics[.]ga/itf_new.js.
Все перечисленные скрипты имеют схожие возможности и предназначены для кражи аутентификационнных данных пользователя. Рассмотрим далее один из них.
cef.js
Одной из функций данного скрипта является добавление определенного HTML-кода на главную страницу системы онлайн-банкинга.
Если более внимательно посмотреть на код, который возвращается после обращения к серверу, то становится понятно, что он нужен для сбора одноразовых паролей, используемых для аутентификации на сайте банка.
Если пользователь находится на странице ввода логина и пароля, скрипт клонирует кнопку «Вход». Также создается функция, которая обрабатывает нажатие на нее. В этой функции пароль сохраняется в файлах cookie для последующей передачи на C&C и инициируется нажатие настоящей кнопки, которая скрыта от жертвы.
В результате пароль от аккаунта будет отправлен не только в систему онлайн-банкинга, но и на сервер злоумышленников.
Дополнительный анализ с помощью сервиса KL Threat Intelligence Portal позволяет получить некоторые интересные сведения. Например, упоминаемый выше ganalytics[.]ga зарегистрирован в доменной зоне, относящейся к Габону, и потому whois-сервисы предоставляют о нем сравнительно мало информации:
Но при этом IP-адрес, на котором он хостится, связан с несколькими другими любопытными доменами.
Видно, что на том же IP-адресе располагаются (либо располагались ранее) другие домены с характерными именами, содержащими слова advert, stat, analytic, и зарегистрированные в доменной зоне Бразилии .br. Примечательно, что многие из них были замечены в распространении веб-майнеров осенью прошлого года, причём загрузка майнящих скриптов осуществлялась при посещении легитимных сайтов бразильских банков.
Ситуация, загрузка вредоносного программного обеспечения происходит при посещении легитимного ресурса, зачастую свидетельствует о модификации траффика локально, на компьютерах пользователей. А некоторые другие данные — ориентированность на бразильских пользователей, использование одного и того же IP-адреса позволяют предположить, что ранее возможности описываемого браузерного расширения или аналогичных ему включали в себя добавление майнящих криптовалюту скриптов на посещаемые пользователями банковские сайты в момент их загрузки.
Заключение
Браузерные расширения, направленные на кражу логинов и паролей, встречаются довольно редко. Но учитывая возможный ущерб, который может нанести одно такое расширение, стоит отнестись к ним со всей серьезностью. Советуем выбирать проверенные дополнения, имеющие большое количество установок и отзывов в Chrome Web Store или другом официальном сервисе. Ведь несмотря на меры защиты, предпринимаемые владельцами таких сервисов, вредоносные расширения по-прежнему могут проникать в них – один из таких случаев мы разобрали. Не лишним будет и защитное решение, которое сможет предупредить о подозрительной активности установленного расширения.
MitM-расширение для Chrome