Больше 20 миллионов пользователей Chrome стали участниками ботнета из фейковых блокировщиков рекламы
Согласно отчету PageFair от 2014 года, Google Chrome стал главным катализатором роста блокировки рекламы на компьютерах. Около 20% пользователей открыли для себя возможности блокировки с помощью поиска «доступных браузерных расширений». Учитывая, насколько популярна блокировка рекламы вообще, это довольно высокий показатель. Данный факт также хорошо объясняет, почему «клонирование» широко известных рекламных блокировщиков так распространилось среди онлайн-мошенников. Например, семь месяцев назад по крупным новостным изданиям разошлась история о том, как 37 тысяч пользователей были обмануты, установив поддельное расширение Adblock Plus.
А если я скажу, что из-за плохой модерации Chrome WebStore ситуация в действительности гораздо хуже, и обманутыми в результате установки фейковых блокировщиков, на самом деле, остались более 20 миллионов пользователей? Более того, по сути эти 20 миллионов стали участниками настоящего ботнета.
К сожалению, эта проблема не нова. Много времени прошло с тех пор, как мошенники начали спамить Chrome WebStore клонами популярных блокировщиков (добавляя всего несколько строк своего кода). Так, пользователи вполне могли установить какие-нибудь «Adguard Hardline» или «Adblock Plus Premium» или другие имитации известных блокировщиков. Единственный возможный способ борьбы с подобными приложениями — это обратиться к Google с жалобой о неправомерном использовании товарного знака. Удаление клона занимает несколько дней.
Теперь они стали умнее. Для того, чтобы убедиться в этом, достаточно всего лишь посмотреть на результаты поиска. Все расширения, которые я выделил, — это незамысловатые подделки, к которым “авторы” добавили пару строк кода и аналитику. Однако, вместо использования хитрых имен они стали употреблять ключевые слова в описании расширений, чтобы оказаться первыми в результатах поиска.
По всей видимости, для завоевания доверия случайных пользователей пребывания в топе поиска вполне достаточно. Просто взгляните на статистику одного из приложений:
Как видно, у одного этого фейка больше 10 миллионов пользователей. Поразительно, насколько доверчивы пользователи. Так продолжаться не должно, поэтому я решил поглубже заглянуть внутрь этих "блокировщиков".
Все оттенки скрытых скриптов
Этот раздел написан очень "техническим" языком и требует определенного набора знаний для понимания. Если вас не интересуют такие детали, просто перейдите к следующему, в котором дано описание на нормальном языке.
Итак, первым заметным отличием от оригинального кода расширения AdBlock, является наличие файла coupons.txt
:
Вторая странность — при инициализации расширение загружает картинку со стороннего домена www.hanstrackr.com
:
Выглядит странно, но пока что - не преступно. Давайте разберемся, зачем им нужны эти файлы. Выясняется, что оба были загружены скриптом, скрытым внутри модифицированной библиотеки jQuery:
jQuery.extend({
normalize: function(value) {
return jQuery.xrat+'ob("'+value+'")';
}
});
Эта функция возвращает строку: atob («здесь идет скрытый скрипт в base64»)
, которая затем выполняется. Сам скрипт также был обфусцирован. Вы можете взглянуть на его расшифрованную версию здесь.
Этот скрытый скрипт слушает каждый запрос, сделанный браузером, и сравнивает md5 (url + «% Ujy% BNY0O»)
со списком сигнатур, загружаемых из coupons.txt
(так вот что это за "купоны"). Как только совпадение найдено, скрипт загружает iframe
с домена g.qyz.sx
, передавая информацию о посещенной странице, а затем повторно инициализирует расширение. Например, одна из этих сигнатур соответствует https://www.google.com/
.
Перейдем к странному изображению. Оказывается, что внутри него был скрыт еще один скрипт, который расшифровывался и исполнялся:
decodeMessage = function(variable_0, variable_1) {
var variable_2 = [],
variable_4 = getNumberFromBits(variable_0, variable_2, variable_1);
if (16 * (variable_4 + 1) > 0.75 * variable_0["length"]) {
return ""
};
if (0 === variable_4) {
return ""
};
for (var variable_3 = [], variable_5 = 0; variable_5 < variable_4; variable_5++) {
var variable_66 = getNumberFromBits(variable_0, variable_2, variable_1);
variable_3["push"](String["fromCharCode"](variable_66))
};
return variable_3["join"]("")
}
Эта техника называется "Стеганография" и она часто используется авторами вредоносных программ и расширений.
Обратите внимание на то, что все эти скрипты исполняются в привилегированном контексте (справочная страница расширения), и могут делать с вашим браузером буквально все, что угодно.
AdRemover — краткое резюме
Итак, продолжим на понятном языке. Ниже приведен список того, что умеет делать этот как-бы блокировщик.
- Он скрывает вредоносный код внутри известной библиотеки java-скриптов (jQuery).
- Этот код отправляет на сервер информацию о некоторых сайтах, которые вы посещаете.
- Он получает команды с удаленного командного сервера. Чтобы избежать обнаружения, эти команды скрыты внутри на первый взгляд безвредного изображения.
- Команды представляют собой скрипты, которые затем исполняются в привилегированном контексте («background page» расширения) и могут изменять поведение вашего браузера.
По сути, это ботнет, состоящий из браузеров, зараженных поддельными расширениями. Браузер будет выполнять то, что приказывает владелец командного сервера.
Беда не приходит одна
Я просканировал другие расширения в WebStore и нашел еще четыре, использующие тот же подход. Кстати, два из них вовсе не фейковые блокировщики рекламы, и ничто не указывало на их зловредность, пока я не проверил код.
Вот полный список:
- AdRemover for Google Chrome™ (10M+ пользователей)
- uBlock Plus (8M+ пользователей)
- Adblock Pro (2M+ пользователей)
- HD for YouTube™ (400K+ пользователей)
- Webutation (30K+ пользователей)
Мы сообщили о данных расширениях Google, и на данный момент все они уже удалены из Chrome WebStore.
Как защитить себя от вредоносных расширений
На самом деле, это действительно хороший вопрос. В наше время серфинг в Chrome WebStore напоминает прогулку по минному полю. Прежде чем устанавливать какое бы то ни было расширение, я бы посоветовал вам подумать дважды. А затем, еще раз подумать дважды.
Ну ладно, я понял, вам абсолютно необходимо это расширение.
Тогда вот пара советов:
-
Узнайте, кто является автором этого расширения, и удостоверьтесь, что ссылка на сайте разработчика действительно ведет на это расширение в Chrome WebStore.
-
Никогда не устанавливайте расширение, если вы не доверяете его автору. А даже если доверяете, следите за обновлениями. В любой момент расширение может быть продано кому-то другому, и кто знает, каким оно станет после этого (вот яркое тому подтверждение).