Методы анонимности в сети



« Назад

10.06.2015 00:00

Часть 1. Просто о сложном

88614833c4df48632f4135c61c5c985a

«Бывают наивны, как малые дети,
Те, кто верит в анонимность в интернете».
М. Сандомирский

Эту статью меня заставили написать различные «обзоры» схем анонимности, появившиеся недавно в Интернете. Здесь я, упрощая многие технические моменты, расскажу о различных методах и способах обеспечения анонимности в Сети. Если тема найдет отклик, в следующих статьях цикла я перейду к более интересным техническим деталям.

Чтобы было проще, разделим анонимность в Интернете на два направления:

  • «Социальная анонимность» — это то, что человек сам осознанно или неосознанно рассказывает о себе в Сети.
  • «Техническая анонимность» — когда утечка деанонимизирующих данных связана с используемыми техническими средствами и приложениями.

Мы сконцентрируемся именно на Технической анонимности.

Прокси-серверы

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

В разрезе же обеспечения анонимности прокси-серверы бывают:

  • HTTP-(веб)-прокси-серверы. Такие серверы пропускают через себя только HTTP-траффик, по умолчанию добавляя в передаваемый траффик данные о применении прокси;
  • SOCKS-прокси-серверы. В отличие от HTTP-прокси-серверов, SOCKS передаёт всю информацию, ничего не добавляя от себя. Протокол SOCKS находится на сеансовом уровне модели OSI, этим достигается независимость от высокоуровневых протоколов: HTTP, FTP, РОРЗ и др., что и позволяет SOCKS пропускать через себя весь траффик, а не только HTTP;
  • отдельно стоит упомянуть CGI-прокси или «анонимайзеры», которые по сути представляют собой web-сервер с формой, где клиент вводит адрес нужного сайта. После чего открывается страница запрошенного ресурса, но в адресной строке браузера виден адрес CGI-прокси. CGI-прокси, как и любой web-сервер может использовать https для защиты канала связи между собой и клиентом.

Схему работы прокси-серверов вы видите на картинке, тут всё просто:

9fe34f047fc6f253a6cf08c4b12e299e

Плюсы прокси-серверов:

  • прокси дешевы, в сети можно найти много бесплатных прокси.

Минусы прокси-серверов:

  • надо доверять прокси-серверу;
  • для http-прокси надо фильтровать HTTP-заголовки: «HTTP_X_FORWARDED_FOR: client, ip1...», HTTP_VIA, HTTP_FORWARDED и др.;
  • протоколы прокси (http, SOCKSx) НЕ поддерживают шифрование между HTTP/SOCKS/Elite/Anonymous-прокси и клиентом. А SSL-прокси означает лишь то, что клиент может работать с https-ресурсами;
  • цепочки прокси неэффективны: "Привет Proxy1, отправишь моё сообщение:«forward to Proxy3; forward to Proxy4; forward to encrypted.google.com/c8e8df895c2cae-что-нибудь-ещё-здесь-зашифрованное-166baf' для Proxy2?» Спасибо!;
  • необходимость настройки прокси-сервера для каждого приложения либо использование отдельных программ-соксификаторов, например, Proxifier.

VPN/SSH

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

Схема работы VPN показана на картинке:

40e51d7e63890a221c3851e26035d9e0

В настоящее время коммерческими провайдерами предлагаются следующие протоколы VPN:

  • PPTP – используется наиболее широко, быстрый, легко настраивается, однако считается «наименее защищённым» по сравнению с остальными;
  • L2TP + IPSec. L2TP обеспечивает транспорт, а IPSec отвечает за шифрование. Данная связка имеет более сильное шифрование, чем PPTP, устойчива к уязвимостям PPTP, обеспечивает также целостность сообщений и аутентификацию сторон;
  • OpenVPN – безопасный, открытый, а следовательно, распространённый, позволяет обходить многие блокировки, но требует отдельного программного клиента;
  • SSTP – такой же безопасный, как и OpenVPN, отдельного клиента не требует, однако сильно ограничен в платформах: Vista SP1, Win7, Win8.

Практически все коммерческие VPN-провайдеры предлагаю выбор из двух протоколов: OpenVPN и PPTP. Реже предлагается протокол L2TP+IPSec. И совсем единицы предлагают протокол SSTP.

Отдельно стоит отметить сервисы, предоставляющие «DoubleVPN», когда перед тем, как выйти в Интернет, траффик проходит 2 разных VPN-сервера в разных странах, или даже «QuadVPN», когда используется 4 сервера, которые пользователь может выбрать сам и расположить в произвольном порядке.

Любопытное исследование, касающееся анонимности и надёжности коммерческих VPN-серверов, было проведено ресурсом torrentfreak.com: torrentfreak.com/vpn-services-that-take-your-anonymity-seriously-2013-edition-130302

VPN-провайдерам были заданы вопросы:

  • Храните ли вы журналы, позволяющие вам или третьим лицам сопоставить ip-адрес или временную отметку с вашим клиентом? Если да, то какие данные вы храните?
  • Под какой юрисдикцией работает ваша компания, и при каких обстоятельствах вы раскроете данные третьей стороне?
  • В случае, если вы получите DMCA-уведомление или его европейский аналог, что вы с ним сделаете?
  • С какими платежными системами Вы работаете, и как они связаны с учетными записями пользователей?

Резюмируя, стоит отметить, что большинство VPN-провайдеров в своих ответах единодушны: «Журналы не хранятся, а если и хранятся, то очень недолго, по ним вычислить абонента нельзя. На нас очень трудно надавить и заставить выдать хоть что-то». Разумеется, других ответов от сервисов, главной целью которых является обеспечения анонимности пользователей, ожидать не приходится.

Плюсы VPN/SSH:

  • быстро и удобно, не надо отдельно настраивать приложения.

Минусы VPN/SSH:

  • нужно доверять VPN/SSH-серверу/провайдеру.

Отмечу, что большинство тематических дополнений для браузеров и «программ для анонимности» используют в своей основе именно прокси-серверы и VPN-серверы для скрытия ip-адреса клиента.

Tor. Великий и ужасный

О Tor говорилось уже много, но я попытаюсь рассказать просто :)

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

Сейчас Tor — это 10 авторитетных (управляющих) узлов, около 4200 узлов-посредников, в том числе примерно 900 выходных узлов.

На картинке упрощённая схема работы Тоr

f95447c1936ef8f83a364d658f0699c5.jpg

Отмечу, что обратно траффик идет в открытом виде, на выходном узле он зашифровывается временным симметричным ключом и передается по цепочке (да-да, непосредственно сам траффик шифруется на симметричных ключах, а эти ключи шифруются уже на ассиметричных ключах).

Тоr ругают потому, что требуют от него слишком многого: безопасно передавать в сеть траффик любых приложений, защиты от глобального наблюдателя, конфиденциальности передаваемых данных и пр. Но он решает главную задачу при своей модели угроз: достаточно высокий уровень анонимности клиента при передаче только http-траффика при соблюдении всех обязательных правил: www.torproject.org/download/download-easy.html.en

Плюсы Tor:

  • высокая степень анонимности клиента при соблюдении всех правил;
  • простота использования (скачал Tor Browser Bundle, запустил и пользуйся).

Минусы Tor:

  • выходной траффик прослушивается;
  • низкая скорость;
  • наличие управляющих серверов.

На одном из форумов я нашёл опрос, касающийся Tor. Количество опрошенных не говорит о достоверности результатов, однако победивший ответ весьма правильный :)

8ee2dde04bc49a64421ff0a18568ef3d.png

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

I2P

Про I2P было сказано много слов, буду лаконичен и постараюсь объяснить все наглядно.
I2P — это анонимная сеть, работающая поверх Интернета. В ней есть свои сайты, форумы и другие сервисы. По своей архитектуре она полностью децентрализована, также в I2P нигде не используются ip-адреса.
В I2P есть два главных понятия:

  • «туннель» – это временный однонаправленный путь через некоторый список узлов. Туннели бывают входящие и исходящие;
  • «сетевая база NetDb», которая в той или иной мере распределена по всем клиентам I2P. Её цель – хранение информации о том, как клиенту соединиться с определенным адресатом.

База NetDb хранит в себе:

  • RouterInfos – контактные данные роутеров (клиентов), используются для построения туннелей (упрощая, они представляют собой криптографические идентификаторы каждого узла);
  • LeaseSets – контактные данные адресатов, используются для связи исходящих и входящих туннелей.

На начало 2013 года I2P включала в себя 25.000 роутеров и 3.000 LeaseSets.

Расскажу про алгоритм взаимодействия узлов:

Шаг первый. Узел «Kate» строит исходящие туннели. Она обращается к NetDb за данными о роутерах и строит туннель с их участием.

c15c082f3c8498e68d379d7e0e0b79da.jpg

Шаг второй. «Boris» строит входной туннель аналогично тому, как и строится исходящий туннель. Затем он публикует свои координаты или так называемый «LeaseSet» в NetDb (здесь отметьте, что LeaseSet передается через исходящий туннель).

f8281869bb586d422211ec21a14729cb.jpg

Шаг третий. Когда «Kate» хочет оправить сообщение «Boris’у», она запрашивает в NetDb LeaseSet «Boris’а». И по исходящим туннелям пересылает сообщение к шлюзу адресата.

6b0154abfbb6fd7826a2040592be3784.jpg

У I2P есть возможность выхода в Интернет через специальные Outproxy, но они неофициальные и по совокупности факторов даже хуже выходных узлов Тоr. Разработчики I2P говорят: «Хотите Интернет – используйте Тоr».

Плюсы I2P:

  • высокая степень анонимности клиента;
  • полная децентрализация, что ведёт к устойчивости сети;
  • конфиденциальность данных: сквозное шифрование между клиентом и адресатом.

Минусы I2P:

  • низкая скорость;
  • «свой Интернет».

Подробно об I2P, в том числе и о механизмах защиты, а с ними у I2P всё хорошо, я тоже расскажу в следующих статьях цикла.

Иные средства

На самом деле существовали и существуют десятки отдельных проектов, посвященных анонимности в Интернете, это не считая «дополнений в браузерах» и «программ для анонимности». Просто другие, менее популярные, решения либо уже скомпрометированы, либо еще не так популярны, а следовательно — и не изучены мировым экспертным сообществом, чтобы говорить об их достаточной надежности. Сейчас активно развиваются следующие наиболее перспективные проекты:

Отдельным интересным примером анонимных сетей являются сети, построенные на основе Wi-Fi. Тогда как при традиционном подходе транспортные функции любой анонимной сети выполняет Интернет, использование беспроводных решений позволяет достичь независимости от Интернет-провайдеров:

Заключение

В заключение приведу цитату с главной страницы проекта I2P: «У анонимности нет однозначного порога, после которого можно расслабиться — мы не пытаемся создать нечто «абсолютно анонимное», но работаем над тем чтобы атаки на такую сеть становились бы всё более и более «дорогими» для злоумышленников».

Действительно, техническая часть — это лишь небольшая составляющая анонимности в Интернете. Важно понимать, что надёжность каждой такой схемы упирается в средства: материальные ресурсы и время, которые могут быть потрачены на её компрометацию.

Часть 2. Утечки данных

01b24c42909bceefb43c03ddc40e5191

Вторая часть получилась чуть более сложной для новичков. Она будет состоять из двух разделов:

  • В первом разделе мы закончим разговор про централизованные решения для «анонимности»: VPN, SSH, SOCKSx.
  • Во втором — рассмотрим конкретные утечки деанонимизирующих данных.

Централизованные средства «анонимности»

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

Мы не будем рассуждать об организационных, политических и бюрократических сложностях на пути раскрытия анонимности.

Возможно, VPN-сервер в Панаме действительно более безопасен, чем такой же сервер в Испании. А возможно — нет.

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

Перейдём к конкретике.

Прокси-серверы: http и SOCKSx

Рассмотрим подробнее http-заголовки в http-прокси.
HTTP-заголовок – это строка в http-сообщении с некоторыми параметрами вида: «Имя: Значение». Заголовков существуют достаточно много, ими при взаимодействии обмениваются между собой клиенты и серверы.
Например, следующее поле: «Date: Sat, 12 Dec 2012 15:41:52 GMT» возвращает от сервера клиенту текущее время и дату.

Один из таких заголовков: X-Forwarded-For, по сути, является стандартом для получения сервером оригинального адреса клиента при доступе к серверу через HTTP-прокси. И вот в этом заголовке, если его не фильтровать, передаётся вся цепочка прокси-серверов от начала до конца, например:

  • X-Forwarded-For: client1, proxy1, proxy2 …
  • X-Forwarded-For: 169.78.138.66, 169.78.64.103...

Также к заголовкам, разглашающим деанонимизирующую информацию, относятся: HTTP_VIA, HTTP_FORWARDED и др.

HTTP-прокси-серверы, которые скрывают ip-адрес клиента, называют анонимными. Такие серверы подразделяются на виды, деление это весьма условно, но, тем не менее, существуют:

  • Простые анонимные прокси (anonymous). Эти серверы не скрывают факта использования http-прокси, однако они подменяют ip-адрес клиента на свой.
  • Элитные анонимные (high anonymous/elite). Такие серверы ещё скрывают и сам факт использования http-прокси.

SOCKS-прокси, как вы помните, никаких заголовков не передают.

Рассмотрим разницу между SOCKS 4, 4a и 5. Существуют разные версии SOCKS:

  • SOCKS4. Такие серверы требуют от клиента, например, веб-браузера, только ip-адрес ресурса, к которому он обращается (адресата). Следовательно, клиенту надо как-то этот ip-адрес узнать, а узнать его клиент может только прямым DNS-запросом в обход прокси. Это может привести к деанонимизации, так как интернет-провайдер может видеть DNS-запросы в открытом виде, данная уязвимость называется DNS-leaks, она описана далее, во второй части статьи.
  • SOCKS4a. Является расширением SOCKS4. Главное отличие состоит в том, что SOCKS4a-сервер принимает от клиента только DNS-имя адресата, а не его ip-адрес. Это бывает необходимо, когда клиент не может самостоятельно определить ip-адрес адресата по DNS-имени.
  • SOCKS5. Также является расширением SOCKS4. Сервер SOCKS5 поддерживает UDP, IPv6, авторизацию и пр. И хотя SOCKS5-прокси могут принимать от клиента как ip-адрес, так и DNS-имя целевого ресурса, некоторые приложения, поддерживающие SOCKS5, могут сами получать ip-адрес адресата до того, как обратиться к SOCKS5-прокси, что также может привести к утечке DNS-запросов.

SSH. Сравнение SSH и VPN

SSH туннель — это туннель, создаваемый посредством SSH-соединения и используемый для шифрования передаваемых данных. Как гласит одноимённая статья в Википедии: «SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов)».

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

Схема работы SSH-туннеля показана на рисунке:

635b6bc6cc4be3a0e96f4b90ccb95499.jpg

Протокол SSH поддерживает несколько вариантов работы:

  • В первом варианте туннелируемое приложение должно иметь настройки HTTP/SOCKS-прокси для направления траффика через локальный прокси-сервер в SSH-туннель. Если таких настроек нет, то можно использовать программы-соксификаторы, которые отправляют траффик через прокси-сервер.
  • Во втором случае можно организовать практически полноценное VPN-соединение и обойтись без настройки SOCKS. Начиная с версии 4.3, открытая реализация SSH, OpenSSH, может использовать туннельные сетевые интерфейсы 2-го и 3-го уровней модели OSI, то есть организовывать аналоги VPN-соединений.

Сравним VPN и SSH с точки зрения анонимности.

Цели
Исторически VPN и SSH предназначались для разных целей, что и объясняет их плюсы и минусы.

  • VPN призван обеспечить защищённый удалённый доступ к ресурсам корпоративной сети. Как только компьютер подключается к VPN-серверу, он становится частью «локальной» сети, а, следовательно, может получать все её сервисы: общие ресурсы, локальный сервис VoIP, также становятся возможными NetBios-, UDP-, и широковещательные запросы, единые VPN-политики и т.д. Через VPN в большинстве случаев отправляется траффик всей операционной системы и приложений.
  • SSH изначально предназначался для защищенного удаленного управления устройствами. SSH-соединение — это соединение с «конкретным устройством», а не с «сетью». Хотя мастера SSH могут делать с помощью него много крутых вещей.

Безопасность
Протоколы VPN и SSH достаточно безопасны за исключением разве что PPTP. Большинство возможных атак сводится к Man-in-the-middle и подмене сертификатов или ключей, однако это проблема аутентификации и внимательности пользователя.

Удобство
Удобство — понятие условное и субъективное, оно зависит от ваших целей и опыта.

69d7ff095b988d3c626be33fec126060.png

К VPN-серверу легко подключиться, но для новичков может быть непросто его настроить.

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

Скорость
Скорость каждого средства зависит от конкретной реализации и используемых протоколов. Если сравнивать SSH и OpenVPN, поделюсь уже проведённым исследованием:

  • network — 96.5 Mbps.
  • network/SSH — 94.2 Mbps.
  • network/VPN — 32.4 Mbps.

Подводя итог, стоит отметить, что VPN-серверы более популярны, чем SSH. В интернете существует много коммерческих VPN-провайдеров. Однако и SSH-туннели тоже продаются в избытке на специализированных форумах.

Что разворачивать на своём сервере в Антарктиде — дело ваше.

Полезный совет

Иногда бывает ситуация, когда VPN-соединение по каким-либо причинам может разрываться. Если в случае с прокси-сервером, сетевое взаимодействие прекращается, то в случае с VPN траффик продолжит идти напрямую. Наиболее надёжным вариантом для недопущения этого является использование таблицы маршрутизации, где в качестве основного шлюза по умолчанию указан только шлюз VPN-сервера.

Делается это просто:

1. Удаляем любые маршруты по умолчанию:

2. Разрешаем доступ в интернет только к адресу VPN-сервера:

3. Добавляем маршрут по умолчанию со шлюзом – VPN-сервером:

Где: 192.168.0.1 — шлюз интернета, 55.55.55.55 — VPN-шлюз.

Еще одним способом является установка в свойствах открытого интернет-соединения несуществующих DNS-серверов, например, 127.0.0.1. В таком случае веб-сёрфинг и другие подобные задачи становятся невозможными без подключения к VPN-серверу.
Также существуют специальные программы, например, VPN-watcher, которые для заданных приложений проверяет VPN-соединение несколько раз в секунду и приостанавливает их работу, если VPN-соединение обрывается.

Спасибо за еще один способ Pongo: "Еще один способ обезопасить себя от разрыва vpn — это настройка файрвола. Подойдет в том числе и стандартный windows firewall. Есть инструкция с картинками. Причем блокирующие правила можно не создавать, а ограничиться 10-м пунктом. Для отдельных программ (например для openvpn) можно отдельно создать разрешающие правила, чтобы эти программы работали даже если впн не подключен."

Спасибо за еще один способ amarao: "Я думаю, если строить защищённую конструкцию, то следует просто выделять две сессии — защищённую и не защищённую. Лидера сессии положить в cgroups, откуда не-vpn интерфейс просто не доступен для использования — в этом случае информация будет отправляться только через этот интерфейс."

Деанонимизирующие данные и возможные уязвимости

Посмотрим, какую идентификационную информацию о себе мы можем передать в интернет. Я не буду рассматривать уязвимости (в том числе и 0day) в программах, эксплуатация которых может привести вообще к полному контролю за компьютером.

9251965e9e6274593b87c65b99d6bae5.png

Общее

IP-адрес. Самый «популярный» идентификатор в сети. Его ценность может быть разной в различных ситуациях, но как правило именно раскрытием ip-адреса принято пугать сетевых «анонимусов».
Решение: со скрытием ip-адреса справляются средства, описанные в первой статье: "Методы анонимности в сети. Просто о сложном"

DNS-leaks возникает тогда, когда приложение может отправлять свои DNS-запросы, используя DNS-серверы интернет-провайдера. Так часто бывает, когда люди через локальный прокси-сервер (привет, SOCKS 4, 5!) пытаются отправить в сеть Tor траффик различных приложений, которые резолвят DNS-имена в обход Tor.
Проверить, подвержены ли вы этой утечке можно здесь: www.dnsleaktest.com/
Решение: при работе с VPN-соединением наиболее удобным вариантом является принудительное использование статических DNS-серверов VPN-провайдера либо, если VPN-сервер у вас личный, использование серверов OpenDNS (208.67.222.222, 208.67.222.220) или DNS Google (8.8.8.8, 8.8.4.4).
Чтобы не допустить подобных утечек в Tor, рекомендуется использовать Tor Browser Bundle либо, если уж хочется отправить в Tor траффик другого приложения, то наиболее безопасным и универсальным вариантов является изолирующий прокси, который будет рассмотрен в одной из следующих статей.
В сети I2P DNS-запросов нет. При работе с outproxy DNS-запросы выполняются на самом outproxy.
Спасибо за совет Rulin: "… при использовании Socks прокси в Firefox, DNS-leaks будет по умолчанию происходить, чтоб от этого избавиться, надо: В адресной строке набираем about:config, Жмем «I'll be careful, I promise!»,
Находим опцию network.proxy.socks, Двойным кликом меняем значение на true,
Все, теперь при использовании socks прокси, dns запросы будут тоже ходить через socks
".
Настройка «network.proxy.socks_remote_dns» определяет, где будут выполняться DNS-запросы при использовании SOCKS5. Значение «True» устанавливает, что они будут выполняться через SOCKS-прокси, а не на клиенте.

Профилирование возникает, когда большая часть траффика долго выходит в интернет через один узел, например, Тоr. Тогда появляется возможность отнести увиденную активность к одному псевдониму. Выходной узел может и не знать ваш ip-адрес, но будет знать, что вы делаете.
Решение: не использовать постоянные цепочки Tor, регулярно менять выходные узлы (VPN-серверы, прокси-серверы), либо, забегая вперёд, использовать дистрибутив Whonix.

MitM-атаки направлены на прослушивание и модификацию траффика на выходном узле, например Tor или любом прокси-сервере. Интересным вариантом является модификация выходным узлом цифровых подписей, GPG- или SSL-отпечатков, хеш-сумм скачиваемых файлов.
Решение: быть внимательным при появлении предупреждений о валидности сертификатов и ключей.

Деанонимизирующая активность в анонимном сеансе. Например, когда клиент из анонимного сеанса заходит на свою страницу в соцети, то его интернет-провайдер об этом не узнает. Но соцсеть, несмотря на то, что не видит реальный ip-адрес клиента, точно знает, кто зашёл.
Решение: не допускать никакой левой активности в анонимном сеансе.

Одновременное подключение по анонимному и открытому каналу. В таком случае, например, при обрыве интернет-соединения, оборвутся оба соединения клиента с одним ресурсом. По данному факту серверу будет нетрудно вычислить и сопоставить два одновременно завершенных соединения и вычислить реальный адрес.
Решение: не допускать одновременного подключения к ресурсу по анонимному и открытому каналу.

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

MAC-адрес сетевого интерфейса становится известен wi-fi точке доступа при подключении к ней клиента.
Решение: если переживаете за то, что точка доступа запомнит MAC-адрес вашего интерфейса, просто поменяйте его до подключения.

На этом ресурсе, посвящённом нашей «цифровой тени»: myshadow.org/trace-my-shadow, помимо всего прочего, мы можем увидеть, какие данные передаём о себе в сеть:

5f4aae1fe43b6fc85b695ab26b1bf931.png

Что могут рассказать Браузеры?

Cookies — это текстовые файлы с какими-либо значениями, хранимые приложением (часто — браузером) для разных задач, например, аутентификации. Часто бывает, что клиент сначала посетил ресурс из открытого сеанса, браузер сохранил cookies, а потом клиент соединился из анонимного сеанса, тогда сервер может сопоставить cookies и вычислить клиента.

Более того, существуют так называемые 3rd-party cookies, которые сохраняются у нас, например, после просмотра рекламного баннера с другого сайта (3rd-party). И сайт-владелец этого баннера способен отслеживать нас на всех ресурсах, где размещёны его баннеры.
Тем, кто хочет изучить тему cookies подробнее, советую почитать статьи:

Flash, Java, Adobe. Эти плагины являются по сути отдельными приложениями, которые запускаются от имени пользователя. Они могут обходить настройки прокси, хранить свои отдельные долгоживущие cookies (Flash — Local Shared Objects) и пр. О регулярно публикуемых в них уязвимостях говорить излишне.

Fingerprint (отпечаток) браузера. Браузер предоставляет серверу десятки категорий данных, в том числе и так называемый user agent. Всё это может сформировать достаточно уникальный «цифровой отпечаток браузера», по которому его можно найти среди многих других уже в анонимном сеансе.
Какие именно данные отправляет ваш браузер серверу, можно посмотреть, например, здесь, здесь (он же panopticlick.eff.org) и здесь.

Скрипты Javascript, исполняемые на стороне клиента, могут собрать для сервера еще больше информации, в том числе и явно его идентифицирующей. Более того, если посещаемый нами сайт подвержен XSS, то включенные на нём скрипты Javascript помогут злоумышленнику провести успешную атаку со всеми вытекающими последствиями.

Web Bugs — это невидимые детали веб-страниц, используемые для мониторинга посещений сайта, способны дополнительно отсылать серверу разные данные о клиенте. Web Bugs от Гугла широко распространены по всему интернету.

HTTP-referer — это http-заголовок, с помощью которого веб-сайт может определить, откуда к нему идёт траффик. То есть, если вы кликнули по ссылке, которая передает http referer, то сайт, на который данная ссылка ведёт, сможет узнать, с какого именно сайта вы на него перешли.

Решение: про безопасную настройку каждого из браузеров, включая блокировку каждой из вышеописанных категорий идентифицирующих данных, очень подробно и ясно написано на ресурсе: fixtracking.com/, от замечательного поисковика DuckDuckGo:

1bbd4aecd697b43b3fbc9e4507b29b8f

Приложения

Важно понимать, что изначально многие приложения задумывались и проектировались не столько для обеспечения анонимности, сколько для нормальной и эффективной работы в «трудных» сетевых условиях: обхода блокирующих межсетевых экранов, прокси-серверов.

В качестве примера я приведу лишь малую часть приложений, которые могут самостоятельно передавать в сеть идентифицирующие нас данные.

  • Некоторые клиенты BitTorrent игнорируют настройки прокси, отправляя траффик по открытым каналам.
  • Windows Update отсылает серверу десяток категорий данных, включая уникальный 128-битный идентификатор (GUID). Windows Update также уязвим к MitM, а следовательно, выходной узел, например, Tor, может быть источником атаки.
  • Лицензионные ключи платных или серийные номера бесплатных приложений также могут передаваться в интернет, например, при активации или обновлении, тем самым идентифицируя пользователя.
  • Windows Media Player может самостоятельно запрашивать информацию о музыке или обменивается служебными данными.
  • Данные о часовом поясе могут передаваться при использовании IRC-чата через протокол CTCP, Client-to-client protocol.
  • Дамп оперативной памяти ОС Windows, отправляемый в случае ошибки, также содержит идентифицирующие данные.
  • Метаданные файлов могут включать важные данные: дата создания, авторство и пр.

Решение: не использовать в анонимном сеансе любое недоверенное и непроверенное приложение.

Часть 3. Firefox

46a83ae2e16b97be4862892cc70c6d17

Немногие озадачиваются подробной настройкой браузера, хотя браузер – это самая популярная программа для работы в интернете. На примере Firefox я покажу, как можно сделать свой браузер максимально безопасным и чуть более «анонимным» по сравнению с его настройкой по умолчанию, при этом сохранив даже некоторую функциональность! :) Opera или Chrome, имеют схожие настройки, но, на мой взгляд, самый гибкий с точки зрения безопасности – всё же Firefox.

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

Cookies

Cookies — это текстовые файлы с какими-либо значениями, хранимые приложением (часто — браузером) для разных задач, например, аутентификации.

Если совсем отключить приём cookies, то на некоторых сайтах могут возникнуть проблемы с авторизацией, но Firefox позволяет принимать cookies и очищать их после своего закрытия. Пункт «Принимать куки со сторонних сайтов» тоже желательно отключить, однако, например, залогинившись на Хабре с отключенным 3rd party куки, мы не получим доступа на habrastorage.org, поэтому я предпочитаю всё же принимать куки с посещенных сайтов.

9fa4afda0cff4fc5467802c83d8ab1a4

Более того, Firefox позволяет вести белый и чёрный список сайтов с куки.

c99ea6592deff8faa3ae97d352831980

Если мы хотим приватности, то при закрытии Firefox, нужно всё очищать. Да, не совсем удобно, но и следов не остаётся.

1839a30f757e06563be01ca3dc7e2ddc

Обратите внимание на галочку «Flash Cookies», это не дефолтная галочка Firefox, о ней мы поговорим чуть позже, когда затронем LSO или Flash cookies.

Здесь же, в настройках, особое внимание стоит уделить очистке кеша браузера. В статье: "Cookie без куков", обосновывается необходимость очистки кеша.

На странице настроек Firefox: about:config, есть параметр: browser.cache.disk.enable, отвечающий за использование дискового кэша. Значение «false», означает, что кеш использоваться вообще не будет. По остальным настройкам browser.cache.disk не заморачивайтесь, после отключения кеша они уже не важны.

А удобная и бесплатная программа, CCleaner, поможет вам вычистить все уже накопленные следы интернет-активности, хранящиеся даже в самых дальних уголках жесткого диска.

Java, Flash, Adobe Reader...

Все эти плагины являются отдельными приложениями, которые запускаются от имени пользователя. Они могут обходить настройки прокси, хранить свои отдельные долгоживущие cookies (Flash — Local Shared Objects) и пр.

Все плагины в идеале должны быть отключены или удалены. Без Java и Adobe Reader в браузере вполне можно прожить, но бывают ситуации, когда Flash всё же приходится включать, иначе сайт попросту не заработает. В таком случае нужно обеспечить регулярное обновление Flash и запрет хранения Local Shared Objects (LSO) или Flash cookies.

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

453474a9d811c0a5b31c70c5eb02e14e

Для запрета хранения LSO специально разработано дополнение к Firefox, Better privacy. Я предпочитаю, чтобы галочка об очистке LSO была добавлена в меню Firefox «Стереть историю», как на предыдущем рисунке.

0a1b781e92cef82dd1ed06c7d03ef417

Fingerprint (отпечаток) браузера

Браузер предоставляет серверу десятки категорий данных, в том числе и так называемый user agent. Всё это может сформировать достаточно уникальный «цифровой отпечаток браузера», по которому его можно найти среди многих других уже в анонимном сеансе.

Существует немало дополнений по подмене юзерагента браузера, я привык пользоваться User Agent Overrider. Дополнение стабильно, удобно, постоянно обновляется, есть в официальных репозиториях Firefox.

e82aff7bf87998aef65dbcda58601d97

Скрипты Javascript

Скрипты Javascript, исполняемые на стороне клиента, могут собирать для сервера множество категорий идентифицирующий данных. Более того, если посещаемый сайт подвержен XSS, то включенные на нём скрипты Javascript помогут злоумышленнику провести успешную атаку со всеми вытекающими последствиями.

Для того, чтобы запретить данные скрипты лучше всего подходит дополнение NoScript.

70b4029a3e0f4ffeeadf32557e8e6ecd

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

1da89694796dae4ed53884506aeecac3

В этом же разделе я опишу еще один аддон, который идёт бок-о-бок с NoScript: RequestPolicy.

Аддон RequestPolicy нужен для контроля межсайтовых запросов и защиты от CSRF. Межсайтовые запросы осуществляются, когда вы зашли на один сайт, он запросил уже у другого сайта нужный ресурс, например, картинку, и показал её вам. Подобные механизмы наиболее часто используются в рекламных целях. Отмечу, что таким образом вредоносные сайты могут делать совсем плохие вещи, например, при определённых условиях выполнять несанкционированные действия на третьем сайте с вашими сохранившимися куками.

Представьте, чем это может грозить.

Автор RequestPolicy рекомендует использовать его в связке с NoScript, так как каждое дополнение заточено под свои цели, а вместе они позволяют добиться гибкой и всесторонней защиты. На картинке RequestPolicy блокирует картинку с habrastorage.org.

a1a0af92d7e78c88ccab8a3ce36507c1

Стоит отметить, что некоторым сайтам совсем не нравится блокировка Javascript и межсайтовых запросов. Должно пройти какое-то время в режиме «обучения», чтобы сформировался доверенный список регулярно посещаемых ресурсов. Что поделать, безопасность и удобство всегда стояли на разных чашах весов.

Web Bugs

Web Bugs — это невидимые детали веб-страниц, используемые для мониторинга посещений сайта, они способны дополнительно отсылать серверу разные данные о клиенте.

Для блокирования web bugs существуют два основных дополнения: Ghostery и DoNotTrackMe.

Принцип у них схож, когда я их сравнивал, то остановился по своим субъективным ощущениями на Ghostery, его и опишу. Важно отметить, что при дефолтной настройке Ghostery не блокирует все баги и треккеры, это надо сделать вручную, в его настройках по локальному адресу: resource://firefox-at-ghostery-dot-com/ghostery/data/options.html.

ec800b8ce41718620355e6fbc8535e41

При заходе на сайт, где есть подобные элементы, Ghostery их заблокирует и выдаст следующее оповещение.

f7f775d7e304da97a2d63d90368eff05

Со временем вы заметите, что Ghostery и RequestPolicy пересекаются в блокировании некоторых элементов, например, Google Analytics, Yandex.Metrics и пр.

HTTP-referer

HTTP-referer — это http-заголовок, с помощью которого веб-сайт может определить, откуда к нему идёт траффик. Если вы кликнули по ссылке, которая передает http-referer, то сайт, на который данная ссылка ведёт, сможет узнать, с какого именно сайта вы на него перешли.
Firefox имеет интересную настройку в about:config: network.http.sendRefererHeader. Данный пункт определяет, в каких случаях будет отсылаться HTTP-referer. Есть три варианта:

  • 0 – никогда не отсылать HTTP-referer
  • 1 – отсылать только по кликнутым ссылкам
  • 2 – отсылать для ссылок и картинок (по умолчанию)

Проведем эксперимент. Есть сайт: www.whatismyreferer.com, цель которого – показывать наш HTTP-referer.

Используем установленное по умолчанию значение network.http.sendRefererHeader = 2.

Кликаем по ссылке: www.whatismyreferer.com, видим наш реферер, выделенный красным цветом (в вашем случае он будет немного отличаться):

0b96dbfa810c4952931bfb0032cf34c5

Сделаем то же самое: www.whatismyreferer.com, но с network.http.sendRefererHeader = 0. Опа!

bfa1f508cc3649f3416de7e034c65bcf.png

Ставьте network.http.sendRefererHeader = 0, и реферер передаваться не будет.

В настройках есть еще один схожий параметр, network.http.sendSecureXSiteReferrer, он отвечает за передачу реферера между двумя https-сайтами. Однако не заморачивайтесь, он не работает после отключения предыдущей настройки.

Кстати все слышали про поисковик DuckDuckGo? В том, что он рефереры не отправляет, я был уверен. Но кликнув левой кнопкой мыши по первой ссылке (после рекламы) в его поисковой выдаче по запросу: duckduckgo.com/?q=www.whatismyreferer.com с установленным network.http.sendRefererHeader = 2, я увидел следующее:

ea21835ba2a4818a7536e9bee4a7b7e2.png

Если кликнуть средней кнопкой мыши (открыть новую вкладку), то всё ок, реферер действительно не показывается.
Будьте внимательны: рефереры используются в работе многих интернет-ресурсов, их отключение может привести к самым неожиданным последствиям, меня, например, после отключения реферера не пускало логиниться в TM ID.

Прочее

Совершенно лишним будет отправлять какую-либо служебную информацию в Mozilla.

10a9392e449fec2b69bb085c945ad618

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

9000335c488f99a5fba49302084a5c67

HTTPS Everywhere

Данный аддон нужен для того, чтобы принудительно использовать только https-соединение для сайтов, которые это поддерживают.

67b2ca6d5e13fc351946a8dcb8937b9a

Adblock Plus

Не столько безопасно, сколько просто полезно. Adblock Plus нужен для блокировки всей возможной рекламы при этом он имеет регулярно обновляемый список фильтров. Я отмечу, что в настройках есть галочка: «Разрешить некоторую ненавязчивую рекламу», которую при желании можно убрать.

9529bff11be2ba3d08c573aaeedbd8da

Последний совет для тех, кто активно пользуется SOCKS при веб-серфинге. Настройка network.proxy.socks_remote_dns определяет, где будут выполняться DNS-запросы при использовании SOCKS5. Значение «true» устанавливает, что они будут выполняться через SOCKS-прокси, а не на самом клиенте. Так мы защитимся от DNS-leaks.

Подробнее о каждой настройке из about:config Firefox можно почитать тут. А по этой ссылке часть их расписана по-русски.

Часть 4. Tor&VPN. Whonix

49ea24835969e47be3d690f30a269d8f

Вот мы и дошли до более интересных вещей. В этой статье мы рассмотрим варианты комбинирования Tor с VPN/SSH/Proxy.

Для краткости далее я буду писать везде VPN, ведь вы все — молодцы и уже знаете плюсы и минусы VPN, SSH, Proxy, которые мы изучили ранее.

Мы рассмотрим два варианта подключений:

  • сначала VPN, потом Tor;
  • сначала Tor, а потом VPN.

Также я расскажу про дистрибутив ОС Whonix, реализующий самые передовые достижения в области сетевой анонимности, ведь в нём, помимо всего прочего, настроены и работают обе анализируемые схемы.

Для начала давайте определимся с некоторыми постулатами:

1. Сеть Tor обеспечивает высокий уровень анонимности клиента при соблюдении всех обязательных правил её использования. Это факт: реальных атак в паблике на саму сеть, ещё не было.

2. Доверенный VPN-(SSH)-сервер обеспечивает конфиденциальность передаваемых данных между собой и клиентом.
Таким образом, для удобства в рамках данной статьи мы подразумеваем, что Tor обеспечивает анонимность клиента, а VPN — конфиденциальность передаваемых данных.

Tor через VPN. Сначала VPN, потом Tor

VPN-сервер при такой схеме является постоянным входным узлом, после него шифрованный траффик отправляется уже в сеть Tor. На практике схема реализуется просто: сначала производится подключение к VPN-серверу, далее запускается Tor-браузер, который автоматически настроит нужную маршрутизацию через VPN-тоннель.

b5bc9d6913e23792b87a0ebefbac0960.jpg

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

Использование вместо VPN прокси-сервера, лишено смысла: без шифрования, обеспечиваемого VPN, мы не получим каких-либо значимых плюсов в такой схеме.

Стоит отметить, что специально для обхода запрета Tor интернет-провайдерами придумали так называемые bridges (мосты).

Мосты – это такие узлы сети Tor, которые не занесены в центральный каталог Tor, то есть не видны, например, здесь или здесь, а, следовательно, труднее обнаруживаются.

Как настроить мосты, подробно написано здесь.

Несколько мостов может дать нам сам сайт Tor по адресу.

Можно также получить адреса мостов по почте, отправив на адрес bridges@torproject.org или bridges@bridges.torproject.org письмо с текстом: «get bridges». Обязательно отправлять это письмо с почты от gmail.com или yahoo.com

В ответ мы получим письмо с их адресами:
«Here are your bridge relays:
bridge 60.16.182.53:9001
bridge 87.237.118.139:444
bridge 60.63.97.221:443
»

Эти адреса нужно будет указать в настройках Vidalia – прокси-сервера Tor.

Иногда происходит так, что и мосты блокируются. Для обхода этого в Tor введены так называемые «obfuscated bridges». Не вдаваясь в подробности, их труднее обнаружить. Чтобы к ним подключиться, надо, например, скачать, Pluggable Transports Tor Browser Bundle.

Плюсы схемы:

  • мы скроем от Интернет-провайдера сам факт использования Tor (или подключимся к Tor, если его блокирует провайдер). Однако, для этого существуют специальные мосты;
  • скроем от входного узла Tor свой ip-адрес, заменив его адресом VPN-сервера, однако это не самое эффективное повышение анонимности;
  • в случае теоретической компрометации Tor, останемся за VPN-сервером.

Минусы схемы:

  • мы должны доверять VPN-серверу при отсутствии каких-либо значимых плюсов такого подхода.

VPN через Tor. Сначала Tor, потом VPN

В таком случае VPN-сервер является постоянным выходным узлом в сеть Интернет.

7d4332730f59fd4cdc782c28ae4854b6.jpg

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

Существует немало технических сложностей в установлении такого подключения, например, вы же помните, что цепочка Tor обновляется раз в 10 минут или то, что Tor не пропускает UDP? Самый жизнеспособный вариант практической реализации это использование двух виртуальных машин (об этом чуть ниже).

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

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

Плюсы схемы:

  • защита от прослушивания траффика на выходном узле Tor, однако сами разработчики Tor рекомендуют использовать шифрование на прикладном уровне, например, https;
  • защита от блокирования адресов Tor внешними ресурсами.

Минусы схемы:

  • сложная реализация схемы;
  • мы должны доверять выходному VPN-серверу.

Концепция Whonix

Существует множество дистрибутивов ОС, основной целью которых является обеспечение анонимности и защиты клиента в Интернете, например, Tails и Liberte и другие. Однако наиболее технологичным, постоянно развивающимся и эффективным решением, реализующим самые передовые техники по обеспечению безопасности и анонимности, является дистрибутив ОС Whonix.

Дистрибутив состоит из двух виртуальных машин Debian на VirtualBox, одна из которых является шлюзом, отправляющим весь траффик в сеть Tor, а другая – изолированной рабочей станцией, подключающейся только к шлюзу. Whonix реализует в себе механизм так называемого изолирующего прокси-сервера.

Существует также вариант физического разделения шлюза и рабочей станции.

Так как рабочая станция не знает свой внешний ip-адрес в Интернете, это позволяет нейтрализовать множество уязвимостей, например, если вредоносное ПО получит root-доступ к рабочей станции, у него не будет возможности узнать реальный ip-адрес. Вот схема работы Whonix, взятая с его официального сайта.

f8ed02dd28c8c39ac8af7e6b3072fe49.png

ОС Whonix, как утверждают разработчики, успешно прошла все возможные тесты на утечки. Даже такие приложения как Skype, BitTorrent, Flash, Java, известные своими особенностями выходить в открытый Интернет в обход Tor, также были успешно протестированы на предмет отсутствия утечек деанонимизирующих данных.
ОС Whonix реализует много полезных механизмов анонимности, я укажу наиболее важные:

  • весь траффик любых приложений идёт через сеть Tor;
  • для защиты от профилирования траффика ОС Whonix реализует концепцию изоляции потоков. Предустановленные в Whonix приложения настроены на использование отдельного Socks-порта, а так как каждый Socks-порт использует отдельную цепочку узлов в сети Tor, то профилирование невозможно;
  • обеспечивается безопасный хостинг сервисов «Tor Hidden services». Даже, если злоумышленник взломает web-сервер, то он не сможет украсть закрытый ключ «Hidden»-сервиса, так как ключ хранится на Whonix-шлюзе;
  • Whonix защищен от DNS-утечек, так как в своей архитектуре использует принцип изолированного прокси. Все DNS-запросы перенаправляются на DnsPort Tor’а;
  • Whonix поддерживает «obfuscated bridges», рассмотренные ранее;
  • применяется технология «Protocol-Leak-Protection and Fingerprinting-Protection». Это снижает риск идентификации клиента через создание цифрового отпечатка браузера или системы путем использования наиболее часто применяемых значений, например, имя пользователя – «user», временная зона – UTC и т.д.;
  • есть возможность туннелировать другие анонимные сети: Freenet, I2P, JAP, Retroshare через Tor, или работать с каждой такой сетью напрямую. Более подробные данные об особенностях таких подключений находятся по ссылке;
  • важно отметить, что в Whonix протестированы, документированы и, главное, работают (!) все схемы комбинирования VPN/SSH/Proxy с Tor. Более подробную информацию об этом можно получить по ссылке;
  • ОС Whonix – это полностью открытый проект, использующий свободное ПО.

Однако стоит отметить, что ОС Whonix имеет и свои недостатки:

  • более сложная настройка, чем Tails или Liberte;
  • требуются две виртуальные машины или отдельное физическое оборудование;
  • требует повышенного внимания к обслуживанию. Надо следить за тремя ОС вместо одной, хранить пароли, и обновлять ОС;
  • в Whonix кнопка «New Identity» в Tor не работает. Дело в том, что Tor-браузер и сам Tor изолированы по разным машинам, следовательно, кнопка «New Identity» не имеет доступа к управлению Tor. Чтобы использовать новую цепочку узлов, нужно закрыть браузер, изменить цепочку с помощью Arm, панели управления Тор, аналога Vidalia в Tor Browser, и запустить браузер снова.

Проект Whonix развивается отдельно от проекта Tor и иных приложений, входящих в его состав, следовательно Whonix не защитит от уязвимостей в самой сети Tor или, например, 0-day-уязвимости в межсетевом экране, Iptables.

Безопасность работы Whonix можно описать цитатой из его wiki: «And no, Whonix does not claim to protect from very powerful adversaries, to be a perfectly secure system, to provide strong anonymity, or to provide protection from three-letter agencies or government surveillance and such».

Если вас ищут ведомства «их трёх букв», вас найдут :)

Вопрос дружбы Tor и VPN — неоднозначный. Споры на форумах по этой теме не утихают. Я приведу некоторые наиболее интересные из них:

  1. раздел о Tor и VPN с официальной страницы проекта Tor;
  2. раздел форума дистрибутива Tails по проблеме VPN/Tor с мнениями разработчиков Tails. Сам форум сейчас уже закрыт, но Гугл сохранил кеш обсуждения;
  3. раздел форума дистрибутива Liberte по проблеме VPN/Tor с мнениями разработчиков Liberte.

Спасибо за внимание!

Источник: Хабрахабр: Часть 1, Часть 2, Часть 3, Часть 4



Социальные комментарии Cackle