Источник: https://github.com/AnaktaCTF/CTF/blob/main — WEB/web-fingerprinting.md
Это метод, используемый сайтами и сервисами для отслеживания посетителей. Пользователям присваивается уникальный идентификатор (отпечаток). Он содержит много информации о настройках и возможностях браузера пользователей, что используется для их идентификации. Кроме того, отпечаток браузера позволяет сайтам отслеживать поведенческие паттерны, чтобы впоследствии еще точнее идентифицировать пользователей.
Точность такой идентификации может составлять вплоть до 99,24%.
Какие данные собирает отпечаток браузера?
Отпечаток браузера включает в себя:
- DNT-заголовок;
- настройки куки;
- системные шрифты;
- плагины к браузеру и их версии;
- разрешение экрана;
- особенности работы с мышью и клавиатурой (к примеру, скорость ввода);
- особенности отрисовки при помощи WebGL и Canvas;
и пр.
В этой статье будут разобраны основные методы сбора информации о пользователе и то, как защититься от веб-фингерпринтинга.
Начнём с разбора всех методов сбора информации.
DNT-заголовок (Do Not Track)
DNT (Do Not Track) — это HTTP-заголовок, который пользователь может активировать в своем браузере, чтобы указать веб-сайтам, что он не желает быть отслеживаемым. Когда эта функция включена, браузер отправляет заголовок "DNT: 1" на сервер каждого посещаемого сайта. Однако:
DNT является добровольной системой, и веб-сайты не обязаны соблюдать этот сигнал. На практике многие сайты игнорируют его.
Хотя DNT может сигнализировать о пожеланиях пользователя, он не защищает от методов фингерпринтинга, так как эти методы используют данные устройства и браузера для идентификации, а не файлы cookie или другие традиционные методы отслеживания.
Парадоксально, настройка DNT сама по себе может быть использована как часть фингерпринта, поскольку не все пользователи включают эту опцию. Таким образом, наличие или отсутствие DNT, фактически, становится уникальной характеристикой браузера.
Разрешение экрана
Разрешение экрана — это характеристика дисплея устройства, которая включает количество пикселей на экране (ширина × высота) и глубину цвета (например, 24-битная или 32-битная палитра).
Эта информация передается браузером и может быть использована для создания уникального профиля пользователя. Например, различные устройства имеют разные разрешения экрана, что делает эту характеристику полезной для идентификации.
Даже если два устройства имеют одинаковое разрешение экрана, размер окна браузера (viewport) может отличаться из-за наличия элементов интерфейса (к примеру, панели инструментов).
Список поддерживаемых MIME-типов
MIME-типы (Multipurpose Internet Mail Extensions) указывают на типы данных, которые браузер может обрабатывать. Это могут быть текстовые форматы (html, css), изображения (jpeg, png), видео и аудио (webm, mp4) и скрипты (javascript).
Список поддерживаемых MIME-типов зависит от браузера и его версии, установленных плагинов и расширений, операционной системы.
Этот список используется для определения особенностей конфигурации устройства. Например, браузеры могут поддерживать разные наборы форматов в зависимости от платформы или настроек пользователя.
Специфичные параметры в заголовках (HTTP/2 и HTTPS)
Заголовки HTTP/2 и HTTPS предоставляют множество данных, которые могут быть использованы для фингерпринтинга:
HTTP/2
Порядок псевдо-заголовков: Разные браузеры используют уникальный порядок отправки псевдо-заголовков (например, Chrome — masp, Firefox — mpas, Safari — mspa), что позволяет их различать.
Настройки HTTP/2: Такие параметры, как размер таблицы заголовков (SETTINGS_HEADER_TABLE_SIZE), начальный размер окна (SETTINGS_INITIAL_WINDOW_SIZE) и максимальный размер кадра (SETTINGS_MAX_FRAME_SIZE), варьируются между клиентами и могут быть использованы для идентификации.
Сжатие заголовков (HPACK): Различия в реализации сжатия заголовков или обработке ошибок также могут быть индикатором конкретного клиента.
HTTPS
Заголовки TLS, такие как Sec-Fetch-Mode, Sec-Fetch-Dest и Accept-Encoding, могут варьироваться между браузерами. Хотя их можно подделать, они все же предоставляют данные о предпочтениях клиента.
Установленные плагины
Установленные плагины браузера (например, Flash, Java) могут быть определены через JavaScript или другие методы:
Плагины предоставляют информацию о своих версиях и наличии, что добавляет уникальности фингерпринту пользователя. Современные браузеры постепенно отказываются от поддержки плагинов, но их наличие все еще может быть обнаружено на старых системах или специфических конфигурациях.
Некоторые плагины предоставляют доступные ресурсы (например, изображения или скрипты), которые сайты могут использовать для проверки их установки.
Шрифты
Шрифты являются одним из самых мощных источников информации для фингерпринтинга. Сайты могут использовать JavaScript для определения установленных шрифтов с помощью интерфейсов вроде FontFaceSet или через скрытые элементы
Доступность некоторых Web API
Некоторые Web API могут предоставить дополнительную информацию о системе пользователя. Например, поддержка API для NFC, Bluetooth или Canvas может варьироваться между браузерами. Наличие или отсутствие этих API может быть использовано для фингерпринтинга.
Некоторые браузеры специально ограничивают доступ к мощным API из соображений конфиденциальности. Однако даже это ограничение может стать частью фингерпринта устройства.
Специфичные особенности отрисовки при помощи WebGL и Canvas
WebGL
WebGL (Web Graphics Library) — это API для рендеринга 2D и 3D графики в браузере с использованием GPU. Он предоставляет доступ к графическим возможностям устройства и может быть использован для создания уникального фингерпринта.
WebGL позволяет извлекать такие данные, как Unmasked Vendor и Unmasked Renderer, которые указывают на производителя видеокарты и конкретную модель (например, "NVIDIA GeForce RTX 2080 Ti"). Эти параметры могут использоваться для идентификации устройства.
Также он может выполнять операции рендеринга, результаты которых затем используются для создания отпечатка. Различия в рендеринге графики между устройствами могут привести к уникальным изображениям, которые также могут быть использованы для фингерпринтинга.
Canvas
Canvas в основном предназначен для 2D-графики, однако его также можно использовать для создания 3D-эффектов с помощью дополнительных библиотек.
В отличие от WebGL, Canvas использует CPU для обработки графики, что делает его менее эффективным при рендеринге сложных 3D-сцен. Однако он хорошо подходит для простых 2D-анимаций и графиков.
Различия в реализации Canvas между браузерами и устройствами могут приводить к уникальным результатам, которые можно использовать для идентификации пользователей.
Возможности CSS
CSS также может быть использован для фингерпринтинга.
Разные браузеры поддерживают разные наборы свойств CSS. Сайты могут собирать информацию о поддерживаемых свойствах, чтобы создать уникальный фингерпринт.
Использование сложных CSS-селекторов может позволить сайтам извлекать информацию о конфигурации устройства пользователя. Это может включать данные о разрешении экрана и других характеристиках.
Особенности работы с мышью и клавиатурой
Работа с мышью и клавиатурой также предоставляет уникальные данные для фингерпринтинга, такие как:
Отслеживание движений мыши: Движения мыши могут использоваться как уникальный идентификатор пользователя. Исследования показывают, что временные интервалы между движениями курсора и кликами могут быть уникальными для каждого человека.
Клавиатурный ввод: Тайминги нажатий клавиш также могут быть проанализированы. Уникальные паттерны ввода могут использоваться для точной идентификации пользователей, что делает этот метод очень эффективным.
Но как же защититься от создания вашего фингерпринта?
Для защиты от веб-фингерпринтинга следует:
- использовать antidetect-браузеры (DICloak, Linken Sphere), которые специально разработаны для защиты от фингерпринтинга, скрывая и изменяя ваш онлайн-отпечаток;
- настроить браузер так, чтобы он передавал как можно меньше информации, отключить JavaScript, использовать режим инкогнито (который не сохраняет историю посещений и куки после закрытия сессии);
- проводить смену IP-адресов;
- использовать обычные языковые предпочтения (загружать сайты на английском);
- регулярно проводить очистку кэша и куки;
- использовать виртуальные машины (для сокрытия информации о железе);
- снизить уникальность браузера, т. е. не использовать уникальные браузеры;
- удалить лишние расширения;
- изменять User-Agent;
- использовать расширения для блокировки отслеживания (к примеру Trace, Noscript и Privacy Badger);
- проводить тест на уникальность фингерпринта.
Заключение
Веб-фингерпринтинг представляет собой одну из самых современных и серьезных угроз для конфиденциальности в интернете.
С помощью достаточного объема данных веб-сайты могут создать ваш уникальный отпечаток и идентифицировать вас без вашего согласия, даже при использовании различных браузеров.
Хотя на сегодняшний день не существует полностью надежного решения проблемы фингерпринтинга в браузерах, это не означает, что она не поддается решению.
В будущем могут быть разработаны более эффективные методы борьбы с этой угрозой. На данный момент использование antidetect-браузеров, снижение уникальности и ротация IP-адресов являются наиболее действенными инструментами, которые, вероятно, останутся актуальными и в будущем.
Источники:
https://dicloak.com/blog-detail/how-antidetect-browsers-can-defend-against-canvas-fingerprinting-and-tracking
https://habr.com/ru/companies/selectel/articles/521550/
https://yinzhicao.org/TrackingFree/crossbrowsertracking_NDSS17.pdf
https://coveryourtracks.eff.org/static/browser-uniqueness.pdf
https://carrierproxy.com/what-is-browser-fingerprinting