Больше 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 — краткое резюме

Итак, продолжим на понятном языке. Ниже приведен список того, что умеет делать этот как-бы блокировщик.

  1. Он скрывает вредоносный код внутри известной библиотеки java-скриптов (jQuery).
  2. Этот код отправляет на сервер информацию о некоторых сайтах, которые вы посещаете.
  3. Он получает команды с удаленного командного сервера. Чтобы избежать обнаружения, эти команды скрыты внутри на первый взгляд безвредного изображения.
  4. Команды представляют собой скрипты, которые затем исполняются в привилегированном контексте («background page» расширения) и могут изменять поведение вашего браузера.

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

Беда не приходит одна

Я просканировал другие расширения в WebStore и нашел еще четыре, использующие тот же подход. Кстати, два из них вовсе не фейковые блокировщики рекламы, и ничто не указывало на их зловредность, пока я не проверил код.

Вот полный список:

Мы сообщили о данных расширениях Google, и на данный момент все они уже удалены из Chrome WebStore.

Как защитить себя от вредоносных расширений

На самом деле, это действительно хороший вопрос. В наше время серфинг в Chrome WebStore напоминает прогулку по минному полю. Прежде чем устанавливать какое бы то ни было расширение, я бы посоветовал вам подумать дважды. А затем, еще раз подумать дважды.

Ну ладно, я понял, вам абсолютно необходимо это расширение.

Тогда вот пара советов:

  1. Узнайте, кто является автором этого расширения, и удостоверьтесь, что ссылка на сайте разработчика действительно ведет на это расширение в Chrome WebStore.

  2. Никогда не устанавливайте расширение, если вы не доверяете его автору. А даже если доверяете, следите за обновлениями. В любой момент расширение может быть продано кому-то другому, и кто знает, каким оно станет после этого (вот яркое тому подтверждение).

Cистема комментариев предоставлена Disqus
загружая комментарии, вы соглашаетсь с политикой использований Disqus

Андрей Мешков

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

Москва

Подписаться на Блог AdGuard

Последние посты будут доставлены в ваш почтовый ящик.

или подписаться через RSS с Feedly! *нажимая кнопку “Подписаться“, вы принимаете условия использования