Антон Bo0oM Лопаницын
Tracking
Основные параметры браузера
• Время
• Язык
• Расширение экрана и его ориентация
• Конечно же User-agent
Окружение браузера
• Platform
• Vendor
• Тип оборудования
PFFF
Окружение браузера
• Battery Status API
• Web Audio API
• Network Information API
• Network Information API
• bluetooth, usb, и др.
Battery Status API
• Тип питания
• Процент остатка заряда батареи
• Оставшееся время до разрядки
Web Audio API
• Количество каналов
• Частота звука
Прочие параметры
• Возможность вибрации
• Акселерометр
• Поддержка multi-touch
• Работа с медиа
• Поддержка геймпада/bluetooth/usb
• Возможность интеграции стороннего поиска
• Поддержка уведомлений
Куча их
Плагины браузера
• Название
• Версия
• Список поддерживаемых типов мультимедиа
Canvas
• Разные шрифты
• Разные алгоритмы сглаживания
• Настройка теней
• Процессор, видеокарта
WebGL
• Поддержка технологий
• Тип рендера
• Глубина цвета
• Параметры шейдеров
• Максимальные текстуры
• Размер буфера
• webgl_debug_renderer_info
WebRTC
• Его параметры
• Локальный IP
Использование сторонних приложений
• Silverlight
• Java
• Flash
Хранилища
• Session Storage
• Local Storage
• Global Storage
• Database Storage via SQLite
• IndexedDB
Механизмы кэширования
• ETags
• window.name caching
• CSS History Knocking
HSTS
• Специальный заголовок, в котором браузер
запоминает, что заходить на этот ресурс нужно
только по https
• Делается это передачей специального заголовка
сайту - Strict-Transport-Security
• Strict-Transport-Security ставится на время, которое
указано в заголовке
Пользователь Вася – посетитель сайта.
Он уже зашел в наше веб-приложение, у него есть
идентификатор сессии.
Этот идентификатор можно дополнительно
«прошить» в браузере
Устанавливаем ключ
Пользователю присваивается уникальный ключ
(для примера af90), и его перенаправляет на
поддомен.
Устанавливаем ключ
В это время браузер сам запрашивает favicon,
ответ которого перенаправляет на поддомены, с
каждым запросом убирая по одному байту
ключа.
Устанавливаем ключ
При посещении каждого из поддоменов
устанавливается заголовок HSTS
Strict-Transport-Security: max-age=300 (5 минут)
Если пользователь посещает сайт в инкогнито
Логика простая
• Если пользователь посещает домен hsts.pro его
перенаправляет на поддомен без https [0-f].hsts.pro
• Если пользователь заходит по https, к поддомену
добавляется новая буква.
Восстанавливаем ключ
0.hsts.pro – https, добавляем новый байт
00.hsts.pro – http
10.hsts.pro - http
20.hsts.pro - http
...
80.hsts.pro - http
90.hsts.pro – https, добавляем новый байт
090.hsts.pro – http
190.hsts.pro – http
…
e90.hsts.pro – http
f90.hsts.pro – https, добавляем новый байт
Восстанавливаем ключ
HSTS Super Cookie
HSTS Super Cookie
Why not?
• Сканирование открытых портов
• Сканирование внутренней инфраструктуры (например
детектирование роутера)
Why not?
• Проверка, на каких сайтах авторизован пользователь
Бот или не бот?
• Классическая JS нагрузка
• Использование SSL библиотеки и ее настроек для
установки SSL соединения*
• Используемая версия протокола HTTP
Бот или не бот?
• Порядок заголовков и вообще какие заголовки есть*
• Особенности разбора html в браузерах**
**(например <svg><script xlink:href="data:,alert(1)"/></svg> -
выполнится в firefox, а в других браузерах – нет)
p0f
http://lcamtuf.coredump.cx/p0f3/
Используется ли VPN?
http://witch.valdikss.org.ru/
LINKS
• https://github.com/samyk/evercookie
• https://github.com/Valve/fingerprintjs2
• https://github.com/p0f/p0f
• https://github.com/ValdikSS/p0f-mtu
• https://github.com/RobinLinus/socialmedia-leak
СПАСИБО
ЗА ВНИМАНИЕ!
https://t.me/webpwn
https://youtu.be/dQw4w9WgXcQ
https://twitter.com/i_bo0om

KazHackStan 2017 | Tracking