Работа антифрода ч.1
Мир глазами антифрода. Часть 1
Сегодня расскажу, почему с некоторых пор антифрод смотрит на нас не через розовые очки, а в прицел.
До последнего времени самой популярной архитектурой антифрод систем являлась архитектура Fraud score. Архитектура Fraud score получала с помощью браузера пользователя единичные параметры и отпечатки, после чего с помощью логических выражений и статистической базы присваивала каждому полученному параметру или группе параметров удельный вес в рейтинге Risc Score, например:
1. Отличие DNS от страны IP = +7% к Risc Score
2. Отличие DNS от подсети IP = +2% к Risc Score
3. Уникальный отпечаток Canvas = +10% к Risc Score
4. Уникальные параметры шейдеров = +5% к Risc Score
и т.д.
В результате такого анализа пользователь набирал своеобразный "Рейтинг вероятности мошенничества” и, если этот рейтинг был ниже 35%, системы защиты считали все действия пользователя легитимными, при небольшом повышении рейтинга система защиты ограничивала пользователя в правах, а при сильном повышение рейтинга полностью его блокировала. Были свои исключения и особенности, но в целом все работало именно так.
Архитектура Fraud score являлась эффективной до появления продвинутых механизмов антидетекта и позволяла пользователю игнорировать изменения некоторых отпечатков, поэтому очень часто можно было встретить высказывания типа "та я с обычного браузера работаю, чищу куки, вот тот плагин использую и у меня все заходит". Со временем архитектура Fraud score потеряла эффективность и ей на смену приходит более продвинутая архитектура DGA - Dedicated Group Analysis. На основе данной архитектуры создано большинство современных антифрод систем.
Архитектура DGA использует те же статистические элементы, что и архитектура Fraud score, но логика их обработки кардинально изменена.
Приведем пример:
Представим себе школу в которой есть три класса - 1А, 1Б и 1В.
Мы являемся поваром в данной школе и нам необходимо понять какую пищу и в каком размере готовить для каждого из классов. Для решения этой задачи мы воспользуемся данными которые нам предоставили - это будут имена.
1 А класс. Учащиеся:
Игорь, Антон, Саша, Вова, Гена.
1 Б класс. Учащиеся:
Марина, Олег, Аристарх, Сергей, Ольга.
1 В класс. Учащиеся:
Сайфуддин, Юрий, Павел, Илья, Максим.
Для того чтобы понять что готовить каждому классу мы присвоим каждому учащемуся рейтинг от 1 до 9, где 1 самое "русское" имя а 9 самое «иностранное», и в результате получим:
1 А класс. Учащиеся:
Игорь(1), Антон(1), Саша(1), Вова(1), Гена(1)
1 Б класс. Учащиеся:
Марина(1), Олег(1), Евлампий(5), Сергей(1), Ольга(1)
1 В класс. Учащиеся:
Сайфуддин(9), Юрий(1), Павел(1), Илья(1), Максим(1)
После того, как мы присвоили каждому имени рейтинг уникальности, мы составим общую уникальность класса путем стандартной функции среднего арифметического:
1 А класс. Рейтинг:
(1+1+1+1+1) / 5 = 1
1 Б класс. Рейтинг:
(1+1+5+1+1) / 5 = 1.8
1 В класс. Рейтинг:
(1+1+9+1+1) / 5 = 2.6
Соответственно рейтингу класса мы приготовим:
Для 1 А класса - Пирожки и чай
Для 1 Б класса - Пирог и чай
Для 1 В класса - Эчпочмаки и кумыс
Соответственно делаем вывод, что из-за одного уникального ученика Сайфуддина все остальные учащиеся 1В класса будут страдать, в то время, как Сайфуддин будет сидеть с довольной мордой и пить кумыс.
Далее для каждого класса мы определим размер порции по гендерному признаку, но тут логика понятна и в 1Б классе порции будут меньше всего из-за двух девочек.
Переведя данный пример в разрез антифрод систем мы делаем вывод, что даже когда все наши параметры и отпечатки изменены, но какой-нибудь 1 остается уникальным (например Canvas), наш общий рейтинг Risc Score возрастет до 26% в системах архитектуры DGA, в то время как в системах архитектуры Fraud score он вырос бы всего на 10%.
Ключевой особенностью архитектуры DGA является ужесточение правил для мошенников, при этом не затрагивается деятельность реальных пользователей.
Самый совершенный отпечаток. На сегодняшний день существует масса различных технологий, с помощью которых можно идентифицировать пользователя. Некоторые из них старые, некоторые новые, но наилучшим вариантом идентификации пользователя является комбинированные отпечатки. Комбинированные отпечатки - это методика, при которой логическое выражение применяется для анализа ни одного, а двух и более параметров ПК пользователя, и эти отпечатки могут раскрывать информацию друг о друге.
На данный момент наиболее продвинутой является пара Canvas-WebGl. Многие из вас знают или хотя бы слышали об этих параметрах, но о методике их подмены не известно почти ничего, в то же время именно методика подмены данных отпечатков и скрывает в себе наиболее интересные механизмы идентификации.
Расскажу вам простым языком про Canvas. Современные антидетекты для подмены отпечатков Canvas используют простую технологию подмены цветности пикселей, то есть, когда происходит отрисовка 2D картинки технологии Canvas, выбирается пиксель – 1-й, или 5-й или 125-й – (любой какой посчитает разработчик антидетекта) и в выбранном пикселе меняется цветовое соотношение/гамма/прозрачность. Это может быть не 1, а 2 пикселя, например, или 7-й или 500-й и изменение цветности даже 1 пикселя приведет к изменению хэша отпечатка.
****************************************************************
Что такое хэш?
Хэш – это преобразование массива данных в единую битовую строку. Например:
Иванов Иван Иванович 1950 Москва ул.Нахимовцев 29, кв. 31 +79260014589
преобразуется в хэш:
ICAgMTk1MCAgLiAyOSwgLiAzMSArNzkyNjAwMTQ1ODk=
*****************************************************************
Соответственно изменение цветности пикселей изображения приводит к изменению хэша отпечатка Canvas – это и является основой изменения отпечатка Canvas. Остаётся вопрос, почему при использовании некоторых антидетектов уникальность отпечатка составляет 100%, например, на сайте browserleaks. Получаеться, что антидетекты вместо маскировки вас, выделяют вас из толпы остальных пользователей.
Расскажу вам простым языком про WebGL. WebGL - это 3D изображение, сначала мы формируем скелет из вершин и линий, а потом мы заполняем пространство между вершинами и линиями 2D изображением. Важно понять, при построении 3D изображения используется 2D изображение. Если упростить, мы придем к тому, что из Canvas'а состоит WebGL.
Для тех кто хочет почитать более глубоко:
https://webglfundamentals.org/webgl/lessons/ru/webgl-how-it-works.html
https://www.khronos.org/registry/webgl/specs/latest/1.0/
Как работает подмена WebGL в современных анидетектах Самый простой метод подмены – то же самое изменение цветности пиксельных шейдеров. Точно так же как и при подмене Canvas, но в другом месте (иногда встречается подмена координат вершин, но это исключение). Снова меняются цвета и снова новый хэш, результат достигнут и пользователи видят изменение отпечатка, но если бы существовал публичный сервис проверки отпечатка WebGL – он так же показал бы уникальность отпечатка WebGL равную 100%. Но не это самое страшное...
А что будет если сравнить процесс рендеринга этих отпечатков? А при сравнении процесса рендеринга данных отпечатков можно увидеть различия в формировании цвета и соответственно выявить использование системы антидетекта со 100% точностью.
Процесс, когда разные отпечатки производят проверку друг друга и является технологией комбинированного отпечатка браузера.
Приведу пример:
1. Запускаем браузер Chrome
2. В магазине хром устанавливаем средство разработчика DontFingerprintMe:
https://chrome.google.com/webstore/detail/dont-fingerprint-me/nhbedikkbkakbjipijipejfojanppbfg?sid=RVVt2H&hl=ru
3. Открываем сайт facebook.com
4. На клавиатуре нажимаем F12
5. В строке инструментов видим кнопки "Элементы, Консоль, Ресурсы, Сеть" и открываем выпадающий список >> в нем выбираем DFPM
6. Обновляем страницу facebook.com
7. Видим запрос отпечатка Canvas
8. Производим логин
9. Видим запрос отпечатка WebGL