- 16, Mar 2019
- #1
Никакого сетевого нейтралитета нет и все интернет-провайдеры могут собирать и анализировать информацию о посещенных сайтах пользователя.
Скрыть данные от провайдера можно разными способами, например, с помощью надежного 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 в вашей системе введите следующую команду:
python -V
В Noisy используется модуль Requests, который можно установить при помощи следующей команды:
pip install requests
Кроме того, еще большую пользу от Noisy можно получить, если установить Docker, поскольку в этом случае вы сможете изолировать трафик в ограниченной среде как отдельный канал.
Однако использование Docker не является обязательным.
Клонирование Noisy из GitHub После того как Python и все нужные зависимости установлены, загружаем Noisy из репозитория при помощи команды git: git clone https://github.com/1tayH/noisy.git
Альтернативный вариант: зайти в репозиторий и загрузить .zip файл. Вначале нажмите на кнопку «Clone or download» и в открывшемся контекстном меню выберите пункт «Download ZIP». После загрузки распакуйте содержимое архива. Загрузка архива из репозитория
Знакомство с конфигурационным файлом Теперь нужно отредактировать конфигурационный файл.
Несмотря на то, что для корректной работы Noisy изменять настройки не требуется, попутно мы сможем разобраться, как работает программа.
Вначале переходим в директорию с распакованным архивом при помощи команды cd: cd noisy Затем откройте файл config.json в вашем любимом текстовом редакторе.
В качестве примера используем Vim: vim config.json Альтернативный вариант: на рабочем столе зайти папку «Files», а затем в директорию «noisy» и открыть файл config.json в редакторе Notepad++. Информация в файле хранится в формате JSON.
Noisy берет первый адрес из списка «root_urls» и ждет случайное время в диапазоне между «min_sleep» и «max_sleep» (в секундах) перед тем, как кликнуть на случайную ссылку на странице.
Глубина просмотра указана в параметре «max_depth». После завершения просмотров страниц на текущем сайте, берется следующий адрес из списка и так далее.
Во-первых, в списке «root_urls» всего 11 адресов.
Во-вторых, при посещении некоторых сайтов в вышеуказанном списке могут возникнуть проблемы.
При посещении сайтов содержимое не показывается на экране, но может привлечь внимание того, кто занимается мониторингом локальной сети или в случае, если просмотр этих сайтов запрещен настройками прокси-сервера.
Короче говоря, отредактируйте этот список на ваше усмотрение.
Чем больше будет добавлено адресов, тем более случайным будет трафик. Поскольку в файле config.json мало адресов, весь список будет пройден за не очень большое время.
Как итог, потенциально может появиться опознаваемый кусок информации, который легко будет отфильтрован.
Добавление сайтов в конфигурационный файл Чтобы избежать вышеупомянутой проблемы, я создал альтернативный конфигурационный файл
. Я решил, что миллиона адресов будет вполне достаточно, загрузил первый миллион сайтов из рейтинга Alexa и прогнал этот список более пяти раз через простейший скрипт-рандомизатор, написанный на Python.
Полученный перечень был скопирован в файл config.json.
Теперь трафик, генерируемый утилитой Noisy, будет более случайным.
Мой конфигурационный файл размером более 25 Мб можно загрузить, если зайти на GitHub-страницу и либо кликнуть правой кнопкой мыши на кнопку «Download» и в контекстном меню выбрать «Save Link As», либо нажать на кнопку «Download», после чего содержимое файла загрузится в браузере, и вы сможете сохранить страницу.
После загрузки не забудьте заменить оригинальный конфигурационный файл в папке «noisy». Если вы решите сделать свой собственный список сайтов, помните, что информация хранится в формате JSON, и каждый адрес должен быть заключен в двойные кавычки с запятой на конце.
Кроме того, я всегда добавляю префикс https://,
чтобы вначале попробовать зайти на сайт через протокол HTTPS. Пример: "https://website.com",
Рандомизация трафика После обновления файла config.json все готово для рандомизации трафика.
При помощи команды cd зайдите в директорию noisy и запустите скрипт noisy.py с аргументом в виде конфигурационного файла: cd noisy python noisy.py --config config.json После запуска этой команды начнется генерация случайного трафика.
Если все работает корректно, вы должны увидеть исходящий поток различных адресов как в примере ниже: 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 для ознакомления с другими опциями, как, например, установка таймаута. python noisy.py –help Полный перечень аргументов: noisy.py [-h] [--log -l] --config -c [--timeout -t] опциональные аргументы:
Запуск Noisy через Docker (необязательно)
Как говорилось выше, можно поместить Noisy в контейнер на базе Docker при помощи следующей команды (но вначале нужно установить Docker):
docker build -t noisy .
Вы даже можете сделать сборку для устройства Raspberry Pi с операционной системой Raspbian, если хотите вынести рандомизатор трафика в отдельное место.
docker build -f Dockerfile.pi -t noisy .
После того как сборка выполнена, запуск осуществляется при помощи следующей команды:
docker run -it noisy --config config.json
Увеличение объемов случайного трафика (необязательно) Изучая конфигурационный файл, вы могли заметить, что задержка устанавливается в секундах.
Сей факт означает, что наименьшая задержка может быть равна одной секунде, если настроить конфигурацию так:
"min_sleep": 0,
"max_sleep": 1,
В некоторых случаях этой задержки может быть недостаточно, как, например, в ситуациях, когда в вашей сети много людей, и нужно генерировать большие объемы случайного трафика.
Используя Docker-compose, мы можем запустить одновременно несколько контейнеров для генерации неограниченных объемов трафика.
Нужно зайти в папку examples, собрать новый образ и запустить сборку на том количестве контейнеров, которое вам необходимо:
cd examples/docker-compose
docker-compose build
docker-compose up --scale noisy=
Однако в этом случае нужно отслеживать количество генерируемого трафика, поскольку при большом количестве работающих контейнеров может замедлиться скорость интернета.
Кроме того, если у вас есть ограничения по трафику, нужно очень внимательно следить за тем, сколько генерируется случайных данных.
Как вы могли убедиться, Noisy – чрезвычайно простая утилита, и после некоторых настроек, вы получаете невероятно мощный инструмент, который должен стать вашим повседневным инструментом, если вы заботитесь о своей конфиденциальности.
Скрыть данные от провайдера можно разными способами, например, с помощью надежного 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 в вашей системе введите следующую команду:
python -V
В Noisy используется модуль Requests, который можно установить при помощи следующей команды:
pip install requests
Кроме того, еще большую пользу от Noisy можно получить, если установить Docker, поскольку в этом случае вы сможете изолировать трафик в ограниченной среде как отдельный канал.
Однако использование Docker не является обязательным.
Клонирование Noisy из GitHub После того как Python и все нужные зависимости установлены, загружаем Noisy из репозитория при помощи команды git: git clone https://github.com/1tayH/noisy.git
Альтернативный вариант: зайти в репозиторий и загрузить .zip файл. Вначале нажмите на кнопку «Clone or download» и в открывшемся контекстном меню выберите пункт «Download ZIP». После загрузки распакуйте содержимое архива. Загрузка архива из репозитория
Знакомство с конфигурационным файлом Теперь нужно отредактировать конфигурационный файл.
Несмотря на то, что для корректной работы Noisy изменять настройки не требуется, попутно мы сможем разобраться, как работает программа.
Вначале переходим в директорию с распакованным архивом при помощи команды cd: cd noisy Затем откройте файл config.json в вашем любимом текстовом редакторе.
В качестве примера используем Vim: vim config.json Альтернативный вариант: на рабочем столе зайти папку «Files», а затем в директорию «noisy» и открыть файл config.json в редакторе Notepad++. Информация в файле хранится в формате JSON.
Noisy берет первый адрес из списка «root_urls» и ждет случайное время в диапазоне между «min_sleep» и «max_sleep» (в секундах) перед тем, как кликнуть на случайную ссылку на странице.
Глубина просмотра указана в параметре «max_depth». После завершения просмотров страниц на текущем сайте, берется следующий адрес из списка и так далее.
{
"max_depth": 25,
"min_sleep": 3,
"max_sleep": 6,
"timeout": false,
"root_urls": [
"https://4chan.org",
"https://www.reddit.com",
"https://www.yahoo.com",
"https://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. Пример: "https://website.com",
Рандомизация трафика После обновления файла config.json все готово для рандомизации трафика.
При помощи команды cd зайдите в директорию noisy и запустите скрипт noisy.py с аргументом в виде конфигурационного файла: cd noisy python noisy.py --config config.json После запуска этой команды начнется генерация случайного трафика.
Если все работает корректно, вы должны увидеть исходящий поток различных адресов как в примере ниже: 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 для ознакомления с другими опциями, как, например, установка таймаута. python noisy.py –help Полный перечень аргументов: noisy.py [-h] [--log -l] --config -c [--timeout -t] опциональные аргументы:
- -h, —help справка
- —log -l уровень логирования событий
- —config -c файл настройки
- —timeout -t продолжительность работы паука в секундах
Запуск Noisy через Docker (необязательно)
Как говорилось выше, можно поместить Noisy в контейнер на базе Docker при помощи следующей команды (но вначале нужно установить Docker):
docker build -t noisy .
Вы даже можете сделать сборку для устройства Raspberry Pi с операционной системой Raspbian, если хотите вынести рандомизатор трафика в отдельное место.
docker build -f Dockerfile.pi -t noisy .
После того как сборка выполнена, запуск осуществляется при помощи следующей команды:
docker run -it noisy --config config.json
Увеличение объемов случайного трафика (необязательно) Изучая конфигурационный файл, вы могли заметить, что задержка устанавливается в секундах.
Сей факт означает, что наименьшая задержка может быть равна одной секунде, если настроить конфигурацию так:
"min_sleep": 0,
"max_sleep": 1,
В некоторых случаях этой задержки может быть недостаточно, как, например, в ситуациях, когда в вашей сети много людей, и нужно генерировать большие объемы случайного трафика.
Используя Docker-compose, мы можем запустить одновременно несколько контейнеров для генерации неограниченных объемов трафика.
Нужно зайти в папку examples, собрать новый образ и запустить сборку на том количестве контейнеров, которое вам необходимо:
cd examples/docker-compose
docker-compose build
docker-compose up --scale noisy=
Однако в этом случае нужно отслеживать количество генерируемого трафика, поскольку при большом количестве работающих контейнеров может замедлиться скорость интернета.
Кроме того, если у вас есть ограничения по трафику, нужно очень внимательно следить за тем, сколько генерируется случайных данных.
Как вы могли убедиться, Noisy – чрезвычайно простая утилита, и после некоторых настроек, вы получаете невероятно мощный инструмент, который должен стать вашим повседневным инструментом, если вы заботитесь о своей конфиденциальности.