Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #134, ФЕВРАЛЬ 2010 г.

Как обеспечить анонимность при работе в интернет

Евгений Зобнин (zobnin@gmail.com)


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

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

Прокси-серверы и anonymouse.org

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

Задачу поиска реального IP-адреса можно усложнить, организовав туннель в виде цепочки прокси-серверов, проходя через который, пакеты будут множество раз менять адрес источника. Это даст некоторое преимущество, однако выследить тебя опять же будет не сложно. Обратившись к владельцам первого прокси-сервера, твои преследователи выяснят адрес второго, а затем и третьего, и всех последующих прокси. Есть, конечно, немалая вероятность, что владельцем одного из них окажется настоящий человек-тень, затирающий все логи, но уверенным в этом быть нельзя (а чтобы быть уверенным, придется заплатить).

Для ведения анонимной переписки по e-mail можно использовать различные емейлеры, то есть SMTP-сервера, уничтожающие все заголовки, указывающие на реального отправителя, в процессе пересылки. С помощью баунсеров (bouncer, bnc) ты можешь легко скрыть свой реальный IP-адрес в сети IRC. Но, опять же, эти средства страдают от проблем прокси-серверов: при должном терпении твой адрес будет не так трудно вычислить. Гораздо больший выигрыш дает использование специализированного ПО, созданного с целью повысить приватность пользователей Сети.

Луковый маршрутизатор

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

Принцип работы Tor основан на идее так называемой "Луковой Маршрутизации" (Onion Routing), которая была предложена еще в середине 90-х годов и запатентована Военно-морскими силами США. Весь смысл в том, что если клиент будет общаться с сервером не напрямую, а через цепочку посредников, каждому из которых известны только следующее и предыдущее звенья цепочки - отследить истинный источник и приемник данных (одновременно) будет невозможно в любом звене цепи.

Работает это так: клиент, пожелавший установить соединение с сервером, делает запрос к одному из трех Tor-каталогов, хранящих списки всех активных в данный момент Tor-серверов. Из этого списка он случайным образом выбирает определенное число серверов (не меньше трех), каждому из которых отправляет собственный симметричный ключ. Затем клиент берет исходное сообщение и шифрует ключом последнего в цепочке Tor-сервера, затем он добавляет к получившемуся пакету еще одно сообщение, содержащее адрес последнего в цепочке Tor-сервера, и шифрует его ключом предпоследнего сервера. Так клиент обволакивает сообщение во множество шифрованных слоев, которые будут сниматься по мере прохождения пакета через Tor-сервера.

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

Чтобы раскрыть всю информацию о соединении пользователя сети Tor, злоумышленнику придется завладеть сразу всеми узлами, участвующими в цепочке (или шантажировать их владельцев). Учитывая то, что в сеть Tor вовлечены тысячи серверов по всему миру, а также то, что выбираются они случайным образом и для каждого соединения, можно сказать, что вероятность компрометации сразу всей цепочки серверов стремится к нулю. Завладев же только одним узлом цепочки, злоумышленник не сможет получить достаточной информации. Опасность может представлять только захват так называемых "выходных Tor-серверов", выступающих в роли последних звеньев цепочки. В этом случае злоумышленник получит доступ к оригинальному сообщению и сможет прочитать передаваемую в нем информацию. Именно поэтому для лучшей сохранности данные следует передавать по зашифрованным каналам.

Кроме утечки данных с выходных Tor-серверов, существует также и опасность DNS-утечки, ведь даже несмотря на то, что сообщение будет направлено сквозь "Tor-туннель", DNS-запрос, раскрывающий адрес получателя сообщения, может пойти "обходным путем". Чтобы избежать этого, следует использовать Tor в связке с Privoxy, либо воспользоваться сторонними DNS-серверами, такими как OpenDNS или TorDNS.
Другая опасность - это возможность выдачи клиентом раскрывающей его информации по запросу сервера. Так, например, может поступить клиентское JavaScript-приложение, загруженное в браузер. Поэтому я бы порекомендовал отключить JavaScript в браузере, либо воспользоваться прокси-сервером Privoxy или Firefox-расширением Torbutton.

Установить и начать использовать Tor достаточно просто. Для этого необходимо установить Tor-клиент и HTTP-прокси Privoxy, который мы будем использовать для перенаправления HTTP-трафика в Tor. В последних версиях Ubuntu Tor-клиент недоступен, поэтому мы установим его из репозитория авторов программы. Для этого добавляем в файл /etc/apt/sources.list следующую строку:

deb http://deb.torproject.org/torproject.org karmic main

Запрашиваем ключи у сервера сертификации:

$ gpg --keyserver keys.gnupg.net --recv 886DDD89
$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

Обновляем apt-кэш и устанавливаем необходимые компоненты:

$ sudo apt-get update
$ sudo apt-get install tor tor-geoipdb privoxy

После окончания установки открываем конфигурационный файл Privoxy и пишем в него следующую строку:

forward-socks4a / 127.0.0.1:9050 .

Запускаем Privoxy:

$ sudo /etc/init.d/privoxy start

Устанавливаем плагин Torbutton для Firefox. Его можно взять со страницы https://addons.mozilla.org/firefox/2275/ или же установить средствами apt:

$ sudo apt-get install torbutton-extension

Перезапускаем браузер, активируем режим работы через Tor с помощью нажатия кнопки внизу справа. Переходим на страничку https://check.torproject.org для проверки работоспособности Tor. На экране должна появиться зеленая луковица.

Остальные приложения легко перевести на использование Tor с помощью указания адреса Privoxy (localhost:8118) или SOCKS-сервера Tor (localhost:9050) в настройках. Чтобы научить консольные приложения, такие как wget, lynx, apt и другие, использовать Tor, добавь в свой ~/.bashrc следующие строки:

export http_proxy=http://127.0.0.1:8118/
export HTTP_PROXY=$http_proxy

Стандартная поддержка SOCKS в SSH не подходит для Tor, поэтому придется изловчиться и воспользоваться socat:

$ sudo apt-get install socat

Далее открой конфиг SSH (~/.ssh/config) и пропиши в него две строки:

Host *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050

Tor обеспечивает интерфейс для доступа к своей функциональности из других приложений, поэтому существует несколько проектов, которые позволяют использовать его возможности для ведения какой-либо анонимной деятельности в сети интернет. Одним из таких приложений является Torchat (https://code.google.com/p/torchat/), специальный чат-клиент для сети Tor, полностью скрывающий личности его участников.

Torchat написан на Python и не требует какой-либо настройки, поэтому для начала его использования достаточно установить пакеты python2.5, python-wxgtk2.8 и запустить torchat.py, находящийся внутри архива с программой.

Смешивающий любимец

На тех же принципах Onion Routing (а точнее более ранней концепции - Mix network) построена разработанная в Беркли система анонимной почтовой переписки Mixminion (http://mixminion.net). Первые две версии системы ничем не отличались от стандартных ремейлеров, режущих заголовки, однако третья версия ушла далеко вперед и обеспечила не только удаление заголовков, но и способ пересылки писем, основанный на идее "смешанной сети".

Клиент mixminion разбивает оригинальное email-сообщение на фрагменты постоянной длины, для каждого из которых выбирается своя цепочка серверов. При этом срок жизни одного ключа ограничен, а отправитель получает ответ с помощью закрепленного за ним зашифрованного псевдонима. В качестве средств против анализа трафика присутствуют: разбивка сообщения на блоки постоянного размера в 28 Кб, случайная задержка во время отправки каждого блока, а также перемешивание последовательности блоков ремейлером.

Сводная сеть

Идея полностью свободной анонимной сети Freenet (http://freenetproject.org) принадлежит Яну Кларку (Ian Clarke), который в 1999 году защитил работу "A Distributed, Decentralised Information Storage and Retrieval System" в Эдинбургском университете и вскоре после этого собрал команду разработчиков, чтобы превратить свою идею в реальность с открытыми исходными кодами.

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

Абстрактно Freenet представляется огромным хранилищем информации, все данные которого размазаны по узлам, входящим в анонимную сеть. Узел, поместивший данные в это хранилище, получает ключ, адресующий их. Когда данные понадобятся вновь, узел предъявляет ключ и получает данные обратно.

На более низком уровне это выглядит так: каждый узел, вовлеченный во Freenet, выделяет некоторый объем дискового пространства и резервирует часть пропускной способности интернет-соединений для нужд сети. Когда один из узлов обращается к Freenet и делает запрос на запись файла, клиентское ПО генерирует хэш-ключ этого файла (на основе SHA-1) и отдает его вместе с файлом нескольким соседям - ближайшим узлам Freenet, которые сохраняют их в своем локальном хранилище и отдают своим друзьям, они в свою очередь поступают таким же образом. Количество перебросов файла между узлами может быть любым, поэтому, когда файл закончит свои путешествия, определить его источник без прохождения всей цепочки от начала до конца будет практически невозможно.

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

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

Freenet - это не только файлообменная сеть и защищенное хранилище информации. На его базе реализовано несколько приложений для работы в анонимной сети, среди которых:

  • Frost - своего рода клиент форумов, а также файлообменник, позволяющий заливать файлы во Freenet, получая в ответ ключ доступа.
  • jSite - программа для создания собственных "фрисайтов", то есть сайтов, размещенных внутри Freenet-сети.
  • Thaw - программа для работы с группами файлов.
  • freemulet - файлообменник, обеспечивает шаринг файлов с "загрузкой по требованию".
  • Плагин Freemail - анонимная электронная почта.

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

Клиент Freenet написан на Java, поэтому перед скачиванием программы ты должен обзавестись соответствующей виртуальной машиной:

$ sudo apt-get install sun-java6-jre
$ sudo update-java-alternatives -s java-6-sun

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

$ wget http://downloads.freenetproject.org/alpha/installer/new_installer.jar
$ java -jar new_installer.jar

Следуй инструкциям. После окончания установки инсталлятор запустит клиент Freenet (если этого не произошло, перейди в каталог с установленной программой и запусти скрипт run.sh) и откроет браузер, в котором появится Web-интерфейс, предназначенный для настройки твоего узла.

После окончания настройки ты получишь доступ к страничке http://127.0.0.1:8888. Это страница FProxy, Freenet-приложения для проксирования запросов браузера во Freenet-сеть. На странице будут перечислены ссылки на популярные Freenet-сайты. Для конфигурирования Freenet-клиента предназначена страничка http://127.0.0.1:8888/config/. Все возможные опции прокомментированы, поэтому нет нужды отдельно упоминать о них.

Невидимый интернет

Freenet обеспечивает очень высокий уровень анонимности в рамках своей сети, но создает существенные задержки при работе и не позволяет использовать стандартные TCP/IP-приложения внутри своей сети. Проект I2P (Invisible Internet Project/Protocol) решает эти проблемы, создавая более удобную в использовании внутреннюю сеть, совсем в немногих аспектах уступающую Freenet по уровню анонимности.

В отличие от Freenet, I2P не является файлообменной сетью. Принцип ее работы больше напоминает Tor, а потому I2P гораздо быстрее Freenet. Кроме того, I2P позволяет использовать протокол TCP/IP в своих сетях, а также имеет "выходные узлы", которые можно использовать для выхода во внешнюю сеть (эта особенность превращает I2P в конкурента Tor).

Основа работы I2P - "луковые маршрутизаторы", роль которых выполняет каждый узел сети. Отправляемое узлом сообщение проходит две цепочки (туннеля в терминологии I2P), первый из которых строится узлом-отправителем, а второй - узлом-получателем сообщения. Во время передачи сообщение подвергается многоуровневому шифрованию (сквозное, туннельное и транспортного уровня), конечные узлы, представленные идентификаторами, не имеющими связи с реальными IP-адресами, проходят криптографическую аутентификацию. Туннели перестраиваются каждые 10 минут.

I2P допускает выход за пределы своей сети с помощью специальных "выходных серверов", которые могут использоваться для анонимного веб-серфинга. Кроме того, существуют шлюзы для выхода во Freenet-сеть.
Арсенал приложений, доступных для работы в сети I2P, включает в себя:

  • I2PSnark - стандартный торрент-клиент для сетей I2P. Устанавливается по умолчанию.
  • I2P-BT - модификация BitTorrent 3.4.2 для I2P.
  • I2PRufus - клиент Rufus для I2P.
  • I2Phex - gnutella-клиент Phex для I2P.
  • iMule - модификация eMule для I2P.
  • Susimail - свободный анонимный почтовый сервис для I2P.
  • Syndie - приложение для блоггеров.

Некоторые открытые программы, например Azureus, включают в себя плагины для работы в сети I2P. Как и клиент сети Freenet, клиент I2P написан на Java и снабжен инсталлятором. Поэтому для установки необходимо выполнить два простых шага:

$ wget http://mirror.i2p2.de/i2pinstall-0.7.7.exe
$ java -jar ./i2p_install-0.7.7.exe

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

$ ./i2prouter start

Панель управления приложением находится по адресу: http://127.0.0.1:7657/index.jsp. Адрес HTTP-прокси: 127.0.0.1:4444. Внутренние сайты I2P находятся в домене .i2p, их список доступен на сайте orion.i2p, внутренние поисковики: search.i2p и eepsites.i2p.

Для разрешения имен используется текстовый файл, по умолчанию его содержимое весьма скудно. Чтобы пополнить его, добавь строку http://orion.i2p/hosts.txt в раздел управления подписками (http://localhost:7657/susidns/subscriptions.jsp).

Карманная анонимность

LiveCD Incognito (www.anonymityanywhere.com/incognito/) предназначен специально для параноидальных пользователей сети. Он включает в себя множество самых разнообразных инструментов, обеспечивающих полную анонимность при работе в интернет. Ключевую роль среди них занимает клиент Tor, который интегрирован с Firefox с помощью Torbutton. Все остальные приложения, способные использовать SOCKS- или HTTP-прокси, настроены на его использование. Среди других инструментов доступны:

  • Firefox + Tor + Torbutton - анонимный WWW.
  • TrueCrypt - шифрование файлов и разделов.
  • Enigmail - Thunderbird-расширение для шифрования писем.
  • FireGPG - плагин Firefox, предназначенный для использования шифрования совместно с почтовыми клиентами, расположенными в Web.
  • GnuPG - реализация OpenPGP.
  • KeePassX - менеджер паролей.
  • Miminion - клиент анонимной почтовой системы.

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

Атаки на анонимные сети

Как и любые другие виды сетей, анонимные сети также подвержены различного рода атакам. Здесь можно выделить:

  • Тайминг-атаки
  • Bruteforce-атаки
  • Атака пресечения

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

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

Вообще говоря, безопасность анонимной сети напрямую зависит от количества ее участников. Чем больше узлов вовлечено в сеть, тем труднее отследить потоки информации и их отправителей. Это справедливо для сетей Freenet и I2P, в которых любой клиент также выступает в роли маршрутизатора трафика. Сеть Tor, напротив, делает различия между клиентами и серверами (маршрутизаторами), снимая нагрузку с клиентов, но существенно сокращая свои масштабы (не каждый пользователь клиента установит на свой узел сервер).

DVD

На прилагаемом к журналу диске ты найдешь последнюю версию LiveCD Incognito.

INFO

  • Tor был представлен Роджером Динглдайном, Ником Мэтьюсоном и Паулом Сиверсоном на 13-м USENIX симпозиуме по безопасности, прошедшем 13 Августа 2004 года. Его исходный код опубликован под лицензией BSD.
  • Vidalia и TorK - приложения для настройки Tor, написанные с использованием библиотеки Qt4.
  • Tor может быть использован не только в качестве прокси для доступа к интернет-серверам. Внутри сети Tor также существуют ресурсы (домен .onion), которые гарантируют анонимность как клиента, так и сервера.
Содержание