Скрыть данные от провайдера можно разными способами, например, с помощью надежного VPN-сервиса или своего VPN на базе OpenVPN и stunnel, но есть и альтернативный способ: программа Noisy, разработанная израильским программистом Итаем Хари, которая может закидать вашего интернет-провайдера случайными HTTP/DNS-запросами (т.е. если даже данные будут перехвачены, они не будет представлять особой ценности).
Сетевой нейтралитет
Если вы не знакомы с термином «Сетевой нейтралитет», попробую вас быстренько ввести в курс дела.
Несколько месяцев назад в Америке вышел закон, который аннулирует сетевой нейтралитет. То есть теперь провайдер на законных основаниях может собирать и анализировать информацию о деятельности пользователя в сети без получения согласия. На практике это означает, что будут собираться IP-адреса, которые с легкостью могут быть преобразованы в физическое местонахождение, историю посещения сайтов и содержимое страниц, просмотренных вне протокола HTTPS, включая информацию, отправленную через веб-формы. В фонде электронных рубежей (Electronic Frontier Foundation; EFF) полагают, что интернет-провайдеры могут пойти еще дальше и начать продавать собранную информацию третьим лицам.
Сокрытие данных от провайдера с помощью Noisy
Для сокрытия данных от провайдера нам поможет утилита Noisy, представляющая собой простой скрипт, написанный на Python. Он может генеририровать случайный HTTP/DNS-трафик в фоновом режиме, в то время когда вы посещаете сайты. Таким образом, ваша информация теряет уникальность, становится бесполезной для маркетологов и компаний, занимающихся анализом подобного рода сведений.
Идеи, реализованные в скрипте Noisy, не являются чем-то новым, и были подчерпнуты из инструмента Squawk, представляющего собой скрипт, встраевымый в веб-страницы для отсылки дополнительных случайных запросов. Однако Noisy проще использовать и модифицировать.
Рассмотрим пошагово, как работать с Noisy.
Установка зависимостей
У вас должен быть установлен Python. В Kali Linux все необходимое уже есть по умолчанию. Noisy совместим с версиями 2.7 и 3.6. Для проверки версии Python в вашей системе введите следующую команду:
1 |
python -V |
В Noisy используется модуль Requests, который можно установить при помощи следующей команды:
1 |
pip install requests |
Кроме того, еще большую пользу от Noisy можно получить, если установить Docker, поскольку в этом случае вы сможете изолировать трафик в ограниченной среде как отдельный канал. Однако использование Docker не является обязательным.
Клонирование Noisy из GitHub
После того как Python и все нужные зависимости установлены, загружаем Noisy из репозитория при помощи команды git:
1 |
git clone https://github.com/1tayH/noisy.git |
Альтернативный вариант: зайти в репозиторий и загрузить .zip файл. Вначале нажмите на кнопку «Clone or download» и в открывшемся контекстном меню выберите пункт «Download ZIP». После загрузки распакуйте содержимое архива.
Знакомство с конфигурационным файлом
Теперь нужно отредактировать конфигурационный файл. Несмотря на то, что для корректной работы Noisy изменять настройки не требуется, попутно мы сможем разобраться, как работает программа. Вначале переходим в директорию с распакованным архивом при помощи команды cd:
1 |
cd noisy |
Затем откройте файл config.json в вашем любимом текстовом редакторе. В качестве примера используем Vim:
1 |
vim config.json |
Альтернативный вариант: на рабочем столе зайти папку «Files», а затем в директорию «noisy» и открыть файл config.json в редакторе Notepad++.
Информация в файле хранится в формате JSON. Noisy берет первый адрес из списка «root_urls» и ждет случайное время в диапазоне между «min_sleep» и «max_sleep» (в секундах) перед тем, как кликнуть на случайную ссылку на странице. Глубина просмотра указана в параметре «max_depth». После завершения просмотров страниц на текущем сайте, берется следующий адрес из списка и так далее.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
{ "max_depth": 25, "min_sleep": 3, "max_sleep": 6, "timeout": false, "root_urls": [ "http://4chan.org", "https://www.reddit.com", "https://www.yahoo.com", "http://www.cnn.com", "https://p---hub.com", "https://www.ebay.com", "https://wikipedia.org", "https://youtube.com", "https://github.com", "https://medium.com", "https://thep-----bay.org", ], "blacklisted_urls": [ "https://t.co", "t.umblr.com", "messenger.com", "itunes.apple.com", "l.facebook.com", "КИДАЛА", "mediawiki", ".css", ".ico", ".xml", "intent/tweet", "twitter.com/share", "dialog/feed?", ".json", "zendesk", "clickserve", ".png" ], "user agents": [ "there are many user agents here!" ] } |
Как вы могли заметить, есть некоторые особенности, связанные с настройками. Во-первых, в списке «root_urls» всего 11 адресов. Во-вторых, при посещении некоторых сайтов в вышеуказанном списке могут возникнуть проблемы.
При посещении сайтов содержимое не показывается на экране, но может привлечь внимание того, кто занимается мониторингом локальной сети или в случае, если просмотр этих сайтов запрещен настройками прокси-сервера. Короче говоря, отредактируйте этот список на ваше усмотрение. Чем больше будет добавлено адресов, тем более случайным будет трафик.
Поскольку в файле config.json мало адресов, весь список будет пройден за не очень большое время. Как итог, потенциально может появиться опознаваемый кусок информации, который легко будет отфильтрован.
Добавление сайтов в конфигурационный файл
Чтобы избежать вышеупомянутой проблемы, я создал альтернативный конфигурационный файл. Я решил, что миллиона адресов будет вполне достаточно, загрузил первый миллион сайтов из рейтинга Alexa и прогнал этот список более пяти раз через простейший скрипт-рандомизатор, написанный на Python. Полученный перечень был скопирован в файл config.json. Теперь трафик, генерируемый утилитой Noisy, будет более случайным.
Мой конфигурационный файл размером более 25 Мб можно загрузить, если зайти на GitHub-страницу и либо кликнуть правой кнопкой мыши на кнопку «Download» и в контекстном меню выбрать «Save Link As», либо нажать на кнопку «Download», после чего содержимое файла загрузится в браузере, и вы сможете сохранить страницу. После загрузки не забудьте заменить оригинальный конфигурационный файл в папке «noisy».
Если вы решите сделать свой собственный список сайтов, помните, что информация хранится в формате JSON, и каждый адрес должен быть заключен в двойные кавычки с запятой на конце. Кроме того, я всегда добавляю префикс https://, чтобы вначале попробовать зайти на сайт через протокол HTTPS. Пример:
1 |
"https://website.com", |
Рандомизация трафика
После обновления файла config.json все готово для рандомизации трафика. При помощи команды cd зайдите в директорию noisy и запустите скрипт noisy.py с аргументом в виде конфигурационного файла:
1 2 |
cd noisy python noisy.py --config config.json |
После запуска этой команды начнется генерация случайного трафика. Если все работает корректно, вы должны увидеть исходящий поток различных адресов как в примере ниже:
1 2 3 4 5 6 |
INFO:root:Visiting https://azerbaijantourism.az/about INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): azerbaijantourism.az INFO:root:Visiting https://azerbaijantourism.az/ INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): azerbaijantourism.az INFO:root:Visiting https://azerbaijantourism.az/booking-conditions INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): azerbaijantourism.az |
Чтобы остановить скрипт, нажмите комбинацию клавиш Ctrl-C.
Другие параметры в Noisy
Когда Noisy не запущен, используйте аргумент h или help для ознакомления с другими опциями, как, например, установка таймаута.
1 |
python noisy.py –help |
Полный перечень аргументов:
1 |
[crayon-6629eaf917a16941375053 inline="true" ]noisy.py [-h] [--log -l] --config -c [--timeout -t] |
[/crayon] опциональные аргументы:
- -h, —help справка
- —log -l уровень логирования событий
- —config -c файл настройки
- —timeout -t продолжительность работы паука в секундах
Запуск Noisy через Docker (необязательно)
Как говорилось выше, можно поместить Noisy в контейнер на базе Docker при помощи следующей команды (но вначале нужно установить Docker):
1 |
docker build -t noisy . |
Вы даже можете сделать сборку для устройства Raspberry Pi с операционной системой Raspbian, если хотите вынести рандомизатор трафика в отдельное место.
1 |
docker build -f Dockerfile.pi -t noisy . |
После того как сборка выполнена, запуск осуществляется при помощи следующей команды:
1 |
docker run -it noisy --config config.json |
Увеличение объемов случайного трафика (необязательно)
Изучая конфигурационный файл, вы могли заметить, что задержка устанавливается в секундах. Сей факт означает, что наименьшая задержка может быть равна одной секунде, если настроить конфигурацию так:
1 2 |
"min_sleep": 0, "max_sleep": 1, |
В некоторых случаях этой задержки может быть недостаточно, как, например, в ситуациях, когда в вашей сети много людей, и нужно генерировать большие объемы случайного трафика.
Используя Docker-compose, мы можем запустить одновременно несколько контейнеров для генерации неограниченных объемов трафика. Нужно зайти в папку examples, собрать новый образ и запустить сборку на том количестве контейнеров, которое вам необходимо:
1 2 3 |
cd examples/docker-compose docker-compose build docker-compose up --scale noisy=<number-of-containers> |
Однако в этом случае нужно отслеживать количество генерируемого трафика, поскольку при большом количестве работающих контейнеров может замедлиться скорость интернета. Кроме того, если у вас есть ограничения по трафику, нужно очень внимательно следить за тем, сколько генерируется случайных данных.
Как вы могли убедиться, Noisy – чрезвычайно простая утилита, и после некоторых настроек, вы получаете невероятно мощный инструмент, который должен стать вашим повседневным инструментом, если вы заботитесь о своей конфиденциальности.
Еще по теме: Анонимность в сети
git clone https://github.com/1tayH/noisy.git не является внутренней или внешней командой исполняемой программой или пакетным файлом.
поставил версию 3.5.2 python , установил, но команда не работает
ставьте 2.7 (последнюю из 2.7 версий) — всё будет работать
Не ясно, зачем столько возни?Не проще ли использовать ТОР, или что то подобное? Или это будет лучше?
Tor скрывает трафик, а Noisy вводит провайдера в заблуждение.
Вопрос. А не будет ли этой утилитой забит канал настолько, что работать будет невозможно?
почему нельзя замусорить канал работающим торентом с ограничением скорости ?
Спустя 3-х часового изучения, множества неудачных попыток и упорства у меня все же удалось, конфиг ваш поставил. Wind-Ubuntu 18.04-python 3.7.2
Проверил через мониторинг сети, там полный фарш и анархия. Спасибо за статью, если бы я знал основы или же изначально владел уже настроенным ПО, то заняло бы на все 10 минут.
торрент использует протокол bittorrent, а запросы браузером делается по протоколу http / https. По сигнатуре их легко отличить. А цель подмешать в твой трафик похожих рандомных запросов.
Скачай программу git и сможешь репозиторий клонировать.
А нельзя это все сделать просто в виде небольшой программки с возможностью настройки конфигурации?
Рандомизация списка url предусмотрена в самом скрипте, принудительная внешняя вроде бы лишняя.
А вот user_agent’ов забито много, но моего среди них не оказалось! Т. о., мои настоящие запросы очень легко отфильтровать. Предполагаю, что наоборот в этом списке надо оставить только один user_agent, а именно свой собственный (ну и те, которые еще реально ходют в интернет из вашей сети).
Меня пугает факт то что 30% Конфигурации файла config это порно сайты (которые могут составить плохую статистику, характер!!!)
А можно «ЧЕЛОВЕЧЕСКИМ ЯЗЫКОМ» написать пошагово, какую программу скачать и пошагово, что запустить, в каком окне ввести ту или иную команду, куда распаковать скачанное итд.
Чтобы пользователь не ломал голову, а в какое же поле, и в какой программе вводить команду на проверку питона в системе? А в какое поле pip… что-то там ещё. Руки бы написавшему статью оторвать за такое объяснение. Не все такие красноглазые гении как он!
И можно ли обойтись без 800+ мегабайтной программы «Kali Linux», что всё работало?
Здравствуйте!
На машине запущен клиент vpn и dnsproxy.
Как запустить noisy, так, что бы мусорный трафик шёл в обход vpn и dnsproxy?
1. Инструкция по установке на оффсайте gin прекрасно отрабатывает в GNU/Linux в хрюне не знаю, там консоль другая.
2. Если у вас с вашей машины установлен VPN, то вы не можете запускать Noisy т.к вся обфускация будет перенаправлена на ваш VPN а не на вашего провайдера. Пользуйтесь виртуализацией. С виртуальной машины устанавливайте VPN а с гипервизора — обфускацию Noisy.
3. Выбросьте ваши WiFi роутеры они вам не нужны т.к это совершенно лишнее оборудование в вашей квартире/доме, чисто для слежки за вами, сбора информации и что бы вся ваша домашняя сеть была проходным двором для любых желающих а вместо него делайте свой прокси сервер (комп с двумя сетевухами). Для этого может подойти одноплатник типа Banana PI с OpenWrt а лучше обычный комп с OpenBSD т.к в OpenWrt присутствует SystemD/procd от АНБ. На базе своего домашнего прокси сервера, делайте и обфускацию Noisy/