Исследование

ДеанонимизаTOR: где заканчивается анонимность в даркнете

В отличие от традиционных технологий World Wide Web, технологии «луковой маршрутизации» даркнета Tor дают пользователям реальный шанс остаться анонимными. Этим шансом воспользовались многие, но одни сделали это для самозащиты или из любопытства, тогда как другие ощутили ложное чувство безнаказанности и увидели возможность анонимно вести дела – торговать запрещенными товарами, распространять запрещенный контент и т.д. Однако дальнейшие события, например, арест создателя сайта Silk Road, убедительно доказали, что анонимный бизнес на самом деле не такой уж анонимный.

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

Как вычисляют пользователей?

История развития даркнета Tor знает много теоретических способов и практических попыток деанонимизации пользователя. Все они условно делятся на две группы: атаки на клиентскую сторону (браузер) и атаки на соединение.

Проблемы браузеров

Из утекших документов NSA можно узнать, что спецслужбы не брезгуют использовать эксплойты к браузеру Firefox, на базе которого построен Tor Browser. Однако использование средств эксплуатации уязвимостей, как пишут в своей же презентации NSA, не позволяет осуществлять постоянную слежку за пользователями даркнета, так как жизненный цикл эксплойтов очень короткий, и существование разных версий браузера (содержащих конкретную уязвимость и не содержащих ее) ставит под удар очень узкий круг пользователей.

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Утекшие материалы NSA с обзором различных вариантов деанонимизации пользователей Tor (Источник: www.theguardian.com)

Кроме псевдоофициальных документов Tor-сообщество знает о других, более интересных и хитрых атаках на клиентскую сторону. Так, например, исследователями из Массачусетского Технологического Института было установлено, что Flash создает выделенный канал коммуникации между специальным сервером злоумышленника, который фиксирует реальный IP-адрес клиента, и жертвой, что полностью ее дискредитирует. Однако разработчики Tor Browser оперативно отреагировали на данную проблему, исключив обработчики Flash-контента из своего детища.

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Flash как способ узнать настоящий IP-адрес жертвы (Источник: http://web.mit.edu)

Для реализации другого, более свежего способа компрометации браузера используется библиотека WebRTC. Она предназначена для организации канала передачи видеопотока между браузерами с поддержкой HTML5, и по аналогии с вышеописанным Flash ранее позволяла установить реальный IP-адрес жертвы. Так называемые STUN-запросы WebRTC идут в незашифрованном виде в обход Tor со всеми вытекающими последствиями. Однако и это «недоразумение» также было оперативно исправлено разработчиками Tor Browser, который теперь по умолчанию блокирует WebRTC.

Атаки на канал

В отличие от атак на браузер, атаки на канал между Tor-клиентом и сервером внутри или вне даркнета выглядят не так убедительно – большинство концепций, представленных учеными в лабораторных условиях, пока еще не нашли своего PoC «в полях».

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

  • Номер версии протокола;
  • Номер записи;
  • Входящий и исходящий сетевой интерфейс;
  • Время начала и конца потока;
  • Количество байт и пакетов в потоке;
  • Адрес источника и назначения;
  • Порт источника и назначения;
  • Номер протокола IP;
  • Значение Type of Service;
  • Для TCP-соединений — все наблюдаемые в течение соединения флаги;
  • Адрес шлюза;
  • Маски подсети источника и назначения.

Все это практически деанонимизирует клиента.

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Деанонимизация Tor-клиента на основе анализа трафика (Источник: https://mice.cs.columbia.edu)

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

Пассивная система мониторинга

Каждый резидент сети может предоставить свои вычислительные ресурсы для организации Node-сервера – узлового элемента сети Tor, который выполняет роль посредника в информационном обмене клиента сети. Exit node являются последним звеном в операции расшифровки трафика, а значит, представляют собой точку, в которой информация проходит в открытом виде и может быть перехвачена.

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

Однако пассивная система мониторинга не позволяет провести деанонимизацию пользователя в полном смысле этого слова, потому что исследователь довольствуется только теми данными (сетевыми пакетами), с которыми юзер расстается самостоятельно «по доброй воле».

Активная система мониторинга

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

Ярким примером активной системы мониторинга, развернутой в полевых условиях, является множество выходных узлов, которые были обнаружены экспертом компании Leviathan Security. Эти узлы отличались от прочих выходных узлов тем, что осуществляли инжект вредоносного кода в «пролетающие» бинарные файлы. Пока клиент скачивал какой-либо файл из интернета, используя Tor в качестве средства обеспечения анонимности, вредоносный exit node осуществлял MitM-атаку и внедрял вредоносный код в скачиваемый бинарный файл.

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

Начнем с «чистого листа»

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

  • различные графические драйвера и аппаратная составляющая на стороне клиентов;
  • различный набор программного обеспечения в операционной системе и различная конфигурация программной среды.

Параметры отрисованных изображений могут уникально идентифицировать браузер и его программно-аппаратное окружение. На данной особенности можно создать так называемый фингерпринт. Несмотря на то, что эта техника не нова и используется, например, некоторыми рекламными агентствами в интернете для отслеживания интересов пользователей, не все его методы реализуемы в Тоr Browser. Например, в TBB нельзя эксплуатировать supercookie, использование Flash и Java отключено по умолчанию, введено ограничение в использовании шрифтов, а при использовании некоторых других техник выводится нотификация, которая может насторожить пользователя.

Так, первые попытки canvas-фингерпринтинга с помощью функции getImageData(), которая получает данные о пикселях, были заблокированы Тоr Browser:

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Однако в настоящий момент все еще остаются «лазейки» для фингерпринтинга в Тоr без нотификаций.

Я узнаю тебя по шрифтам

Для идентификации Тоr Browser можно воспользоваться функцией measureText(), которая измеряет ширину отрисованного в canvas текста:

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Используем measureText() для получения размера шрифта, уникального для данной ОС

Если ширина получившихся шрифтов представляет собой уникальное значение (а иногда оно еще и с плавающей точкой), то мы можем идентифицировать браузер, в том числе Тоr Browser. Мы допускаем, что в некоторых случаях полученные значения ширины шрифтов могут совпадать у разных пользователей.

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

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

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Официальный ответ разработчиков Tor на проблему рендеринга шрифтов

Выходим в «поле»

Данный подход был реализован исследователем с никнеймом «KOLANICH». Используя обе функции – measureText() и getBoundingClientRect(), – он написал скрипт, протестировал его локально в различных браузерах и получил уникальные идентификаторы.

Используя ту же методику, мы организовали тестовый стенд. Задача стенда: осуществить фингерпринтинг Tor Browser в различном программно-аппаратном окружении.

Для решения данной задачи мы взяли блог одного из авторов и на его главную страницу внедрили JavaScript, который использует функции measureText() и getBoundingClientRect() для измерения полученных в результате рендеринга шрифтов в браузере посетителя веб-страницы. Скрипт отправляет полученные значения в виде POST-запроса веб-серверу, который, в свою очередь, сохраняет этот запрос в своих логах.

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Фрагмент лога веб-сервера, в котором виден фингерпринт Tor Browser

В настоящее время мы собираем результаты работы данного скрипта. Пока все полученные значения уникальны. Мы сообщим о полученных результатах.

Чем это грозит на практике

Каким образом данная концепция может быть использована в реальных условиях для идентификации пользователей Tor Browser? Вышеописанный JS-код может быть установлен на нескольких объектах — участниках информационного обмена в даркнете:

  • Exit node. Реализация MitM-атаки, в ходе которой JS-код внедряется во все веб-страницы, которые посещает во внешней Сети резидент даркнета.
  • Внутренние onion-ресурсы и внешние веб-сайты, контролируемые атакующими. Например, атакующий поднимает свой «дорвей» – специально подготовленную веб-страницу под конкретную целевую аудиторию и осуществляет фингерпринт всех посетителей.
  • Уязвимые к XSS (предпочтительно к «хранимым», но не обязательно) внутренние и внешние веб-сайты.

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Объекты, которые могут фингерпринтить Tor-пользователя

Последний пункт является особенно интересным. Просканировав на веб-уязвимости примерно 100 onion-ресурсов (которые оказались в логах пассивной системы мониторинга) и отсеяв «false positive», мы выяснили, что примерно 30% всех проанализированных ресурсов даркнета подвержены атакам «межсайтового скриптинга».

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

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Процесс денонимизации Tor-юзера

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

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

Вместо заключения

На официальном сайте проекта Tor размещен ответ разработчиков на вопрос о включенном по умолчанию JavaScript в Tor Browser:

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Официальный ответ разработчиков Tor Browser на вопрос о JavaScript

Судя по этому ответу, отключения разработчиками JS-кода в Tor Browser ожидать не приходится.

Данное исследование является чисто теоретическим. Мы не устанавливали какие-либо сервера в инфраструктуру Tor. Все исследования были проведены в собственной инфраструктуре, имитирующей «даркнет» и отключенной от интернета

ДеанонимизаTOR: где заканчивается анонимность в даркнете

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

  1. Viktor

    Спасибо за интересный обзор!

  2. Павел

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

    Есть только одно НО. Спец. службы использовали методы социальной инженерии, когда ловили Silk Road, а не ломали Tor. Там вся соль была в том, что сам создатель идиот, а не в уязвимостях Tor-а. Посему Tor дос сих пор небезопасен только теоретически.

    1. Алексей

      Если он небезопасен только теоретически, то его не патчили бы вообще (а может в теории патчат?)… 🙂 А с учётом потока уязвимостей (нет, по другому скажу — не замеченных вовремя фич) нужные люди уже сидят на проводах там, где им удобнее следить…. Лажа всё, и ваш TOR, в том числе…

  3. Алексей

    >мы взяли блог одного из авторов и на его главную страницу внедрили JavaScript, который использует функции >measureText() и getBoundingClientRect() для измерения полученных в результате рендеринга шрифтов в браузере >посетителя веб-страницы.

    Интересно, а различия в результатах проявятся, если попробовать по очереди аппаратный/программный рендеринг?

  4. Radik Tazetdinov

    2 Павел…целиком поодерживаю Вас,НО только в части onion,луковица бы позволила сразу представить структуру сети.А фингерпринт,ВКЛ.в свой словарь ,как очень уж удобное для произношения и написания…не надо переключаться.

Отчеты

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Азиатские APT-группировки: тактики, техники и процедуры

Делимся с сообществом подходами, которые используют азиатские APT-группировки при взломе инфраструктуры, и подробной информацией о тактиках, техниках и процедурах (TTPs) злоумышленников, основанной на методологии MITRE ATT&CK.

Как поймать «Триангуляцию»

Эксперты «Лаборатории Касперского» смогли получить все этапы «Операции Триангуляция»: эксплойты нулевого дня для iOS, валидаторы, имплант TriangleDB и дополнительные модули.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике