November 20, 2018

Как работают антифрод системы.

Часть 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 является ужесточение правил для мошенников, при этом не затрагивается деятельность реальных пользователей.

Часть 2. Самый совершенный отпечаток.

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

На данный момент наиболее продвинутой является пара 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/...dikkbkakbjipijipejfojanppbfg?sid=RVVt2H&hl=ru

3. Открываем сайт facebook.com

4. На клавиатуре нажимаем F12

5. В строке инструментов видим кнопки "Элементы, Консоль, Ресурсы, Сеть" и открываем выпадающий список >> в нем выбираем DFPM

6. Обновляем страницу facebook.com

7. Видим запрос отпечатка Canvas

8. Производим логин

9. Видим запрос отпечатка WebGL.

Часть 3. Как формируются отпечатки браузера?

Отпечатки нашего браузера, это не какая-то функция, заложенная разработчиками, и это не скрытая возможность или что-то в этом роде, отпечатков браузера в браузере НЕ СУЩЕСТВУЕТ!

Все что мы привыкли видеть на сайтах чекерах и воспринимаем это как отпечатки на самом деле всего лишь плод фантазии разработчика и ничего более. Давайте рассмотрим более детально:

У каждого браузера есть основа, фундамент – это ОС и железо, по сути просто наш ПК.

Для того чтобы пользователю было удобно работать – браузер передает сайтам информацию о себе и о ПК и даже не только для того, чтобы удобнее было пользоваться, а для того чтобы защититься от «Ебланов». Ведь по сути 90% пользователей полные ебланы.

Например:

1. UserAgent

Вы ищите себе программу, любую какую угодно программу и переходите на сайт. Перед вами 4 ссылки – Windows7x32 / Windows 10x64 / MacOS / FreeBsd

И хоть для всех, кто читает эту статью выбор очевиден, но большинство пользователей не смогут решить эту задачу самостоятельно и будут пытаться ставить .dmg в Windows и т.д. Им нужна помощь, поэтому браузер видит вашу ОС и передаст данные о ней сайту – который автоматом выдаст необходимую ссылку и все будут счастливы. Делает ли браузер что то плохое в данном случае? Нет…

2. Canvas

Технология Canvas применяется для отрисовки визуальных элементов веб-страниц. До 2006 года при веб серфинге для отображения веб-страницы сервер должен был передать на наш ПК визуальные элементы сайта – графику, таблицы и т.д., что сильно загружало канал связи (вспомните скорости того времени) или мы должны были пользоваться Macromedia Flash, чтобы просмотреть видео, или поиграть в простейшие игры. Но потом пришел Canvas, который основан на JavaScript и теперь сайт не передает готовые элементы, а просто показывает нам текст скрипта, который выполняется не на сервере, а НА НАШЕМ ПК с помощью нашего браузера и нашего железа. Скорость повысилась, нагрузка на сервера снизилась, возможности расширились. Делает ли браузер что то плохое в данном случае? Нет…

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

Ну и где тут наши отпечатки тогда? А отпечатки являются всего лишь производными, иными словами побочным продуктом обработки события.

Пример отпечатка Canvas:

1. Пользователь посещает сайт

2. Сайт передает на ПК пользователя javascript по которому браузер пользователя автоматически отрисовывает картинку с заданными элементами, накладывает эффекты и тени (эта картинка может быть даже скрытой от глаз пользователя). Формат картинки – PNG и для формирования картинки PNG используется библиотека нашей операционной системы под названием libpng, которая представляет изображение в тех уровнях – IHDR, IDAT, IEND (кстати в IHDR можно прямым текстом подписать кто и на каком ПК это изображение обработал).

3. Вся картинка состоит из пикселей, а внутри пикселя есть цветность и прозрачность, поэтому картинка сериализуется в байтовый массив.

4. Байтовый массив кодируется в формат base64 и передаётся на сайт

5. Сайт применяет технологию хэширования или не применяет (зависит от разработчика) и получает наш псевдоуникальный отпечаток Canvas – вот он, наш отпечаток!

Что же такое уникальность отпечатка и чем она так важна?

Многие знают сайт: https://browserleaks.com/canvas

И наверняка всех интересует – почему с реального ПК сайт определяет мою операционную систему, а с антидетекта – нет и показывает 100% уникальности.

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

Ресурсы с миллионами посещений в день могут простейшим образом собирать внутреннюю статистику и сопоставить, что ваш уникальный отпечаток не использовался никем из 100 000 000 пользователей за последний год. К чему это вас приведет? А приведет это вас к эффекту страуса – когда голова в песке (я же чекал все на браузерликсе у меня все огонь!), но задница ваша будет снаружи и выделит вас из толпы всех остальных страусов, потому что польза 100% уникальности отпечатка - такой же миф как и миф про голову страуса в песке.

Но помимо того, что отпечаток выделит вас из толпы остальных пользователей, он еще и навредит остальным вашим отпечаткам…

Знаете почему антидетекты умирают?

Давайте представим себе девственно чистую платежную систему и кардера.

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

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

UserAgent valid check:

1. HTTP Header – Chrome

2. Browser signature – Chrome

3. DynamicCompressor – Chrome

4. Mime Types – Chrome

5. ClientRect – Chrome

6. Canvas – UNKNOWN

И разобрав кражи которые происходили, система сделает вывод что при использовании уникального канваса и не возможности сопоставить его с версией ОС – необходимо всем юзерам с такими данными вводить ограничение SECURITY MEASURE.

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

Примеры самостоятельного внедрения алгоритмов защиты основываются только на анализе произошедших действий и лишь потом внедряются как механизмы фронтальной защиты в системах основанных на архитектуре DGA - Dedicated Group Analysis (о ней говорилось в первой части).

Однако системы антифрода имеют еще несколько тузов в рукаве, один из них называется Fuzzy Hash или фази хэширование.

Приведу пример:

Иванов Иван Иванович 1950 Москва ул.Нахимовцев 29, кв. 31 +79260014589

преобразуется в хэш:

ICAgMTk1MCAgLiAyOSwgLiAzMSArNzkyNjAwMTQ1ODk=

Вот точно так-же и преобразуются наши отпечатки – в один единый хэш. А что произойдет если Иванов Иван Иванович сменит номер телефона?

Например:

Иванов Иван Иванович 1950 Москва ул.Нахимовцев 29, кв. 31 +79260014588

преобразуется в хэш:

ICAgMTk1MCAgLiAyOSwgLiAzMSArNzkyNjAwMTQ1ODkKCg==

Поменяв всего 1 цифру в номере телефона мы имеем уже новый хэш и новую личность, но изменилась ли суть Иванова Иван Ивановича? Нет, не изменилась. Как быть в таком случае?

Для решения этой задачи и применяется технология фазихэширования, которая позволяет игнорировать установленный % изменений до приведения собранных данных в хэш.

Простым языком – если Иванов Иван Иванович сменит телефон или город, улицу или квартиру - мы все равно его узнаем. Точно так-же и поступают антифрод системы, собрав о вас информацию и сравнив ее с уже имеющейся. Это является прекрасным механизмом вычисления кардеров, мошенников и т.д., которые используя антидетект, могут «обойти» разве что защиту сайта Browserleaks.

Простыми словами, если ваш антидетект выдает уникальные отпечатки, например, Canvas - выбросите его. Это говно.