29 January 2016

Дурим DPI двумя скриптами

JavaScript
Данная статья является лиш исследованием на тему и не должна использоваться как инструкция к действию.

В связи с разгулом банхамера по интернет просторам участились советы по использованию различных прокси, vpn, tor и анонимайзеров. Эти все способы отправляют трафик третей стороне которая его может перехватывать и модифицировать. Это не наш метод. Мы сейчас просто и легко научим браузер дурить DPI.

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

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


Исходные данные:
Сайт(Адрес изменён): http://rutracker.og


Страница заглушка(Адрес изменён): http://198.51.100.0/...

Адрес страницы заглушки которая появляется при попытке открытия сайта. У каждого провайдера адрес страницы заглушки наверно разный.


Итак открываем блокнот и пишем первый скрипт:
function FindProxyForURL(url, host) {

  if (shExpMatch(url, "http://*") && shExpMatch(host, "rutracker.og")) {
    return "HTTPS rutracker.og.; PROXY rutracker.og; DIRECT";
  }

  return "DIRECT";
}


Сохраняем как «proxy.pac»

Суть этого скрипта в том чтобы использовать как прокси сам сервер к которому мы и хотим получить доступ.

Подключаем «proxy.pac» в Chrome:
1. Настройки -> Показать дополнительные настройки ->
Сеть -> Изменить настройки прокси-сервера ->
Вкладка «Поключения» -> Настройка сети
2. Ставим галочку «Использовать сценарий автоматической настройки»
3. В поле адрес пишем полный путь к «proxy.pac»
Например: C:\Users\name\Documents\proxy.pac

Теперь страница заглушка будет появляется через раз.

Снова открываем блокнот и пишем:
// ==UserScript==
// @name BackUserJS
// @description Window History Back Script
// @author ivan386
// @license MIT
// @version 1.0
// @include http://198.51.100.0/*
// @run-at document_start
// @grant none
// ==/UserScript==

(function (window) { 
    var w;

    w = window;
    
    if (w.self != w.top) {
        return;
    }

    if (/http:\/\/198.51.100.0/.test(w.location.href)) {
		w.history.back()
    }
})(window);


Сохраняем как «back.user.js» в папку «back»

Этот скрипт возвращает нас на страницу где мы можем снова кликнуть ссылку.

И опять открываем Блокнот и пишем:
{ 
    "manifest_version": 2,
    "content_scripts" : [
        {
            "js":[ "back.user.js" ], 
            "matches":[ "http://198.51.100.0/*" ], 
            "run_at":"document_start"  
        }
    ], 
    "description" : "Window History Back Script", 
    "name" : "BackUserJS",
    "version" : "1.0.0"
}


Сохраняем как «manifest.json» в папку «back»

Теперь добавим в Chrome как Расширение:
1. Дополнительные инструменты -> Расширения
2. Ставим галочку «Режим разработчика»
3. Нажимаем «Загрузить распакованное расширение...»
4. Находим папку «back» в которую сохраняли «back.user.js» и «manifest.json» и нажимаем ОК

Проверяем:
1. Перезагружаем Chrome
2. Нажимаем «Отмена» в окошке «Отключить расширения в режиме разработчика» справа.
3. Пишем в адресную строку адрес сайта и нажимаем Enter.
4. ???
5. PROFIT

Использованные материалы:
Изучаем deep packet inspection у RETN
Proxy Auto Configuration (PAC)
Учимся писать userscript'ы
Userscripts. Упаковываем юзерскрипт для Chrome

Продолжение:
Через фильтрующий прокси при помощи скрипта во имя Луны
Tags:antirknDPIJavaScriptrutracker
Hubs: JavaScript
+26
51.6k 229
Comments 54