• XSS.stack #1 – первый литературный журнал от юзеров форума

Разбираю канвас фингерпринт Facebook'а

gcc

RAM
Пользователь
Регистрация
01.07.2019
Сообщения
124
Реакции
39
Потребовалось разобрать как facebook фингерпринтит браузер.
На текущий момент ковыряю их canvas фингерпринт.
Честно говоря видел различные реализации canvas фингерпринта, но все они сводились к одному:
- Отрисовать картинку
- Применить некоторые платформозависимые преобразования
- Получить хэш картинки
Этап отрисовки картинки никогда не включал никаких рандомизаций в своем алгоритме.
Т.е. на выходе мы получали визуально одинаковую картинку всегда.
Хотя в зависимости от видео карты (ОС, дров и тп) хэш картинки получался разный.

У facebook'а же алгоритм отрисовки картинки включает в себя очень много рандомизаций.
Вот на пример отрисовка эмодзи.
this.rng() - это генератор случайных чисел на основе библиотеки Alea - https://github.com/davidbau/seedrandom
Генератор инициализируется постоянным seed: 90ee0806e50c1be9e29d7e6ac7a078fb
JavaScript:
canvasClass.drawEmoji = function () {
    var a = Math.floor(this.rng() * 50 + 100);
    this.ctx.font = a + "px Arial";
    var b = "\ud83d\ude03"
    , c = Math.floor(this.rng() * this.width / 2);
    a = this.rngRange(a * 2, this.height - a);
    this.ctx.fillStyle = this.makeRadialGradient();
    this.applyShadow();
    this.ctx.fillText(b, c, a)
}

Подобных отрисовок различных примитивов довольно много
- text
- bezier
- circle
- emoji

И везде обильно используются рандомизированные значения.
Упрощенно говоря далее после отрисовки просто получают хэш картинки и его вероятно отправляют.
До момента отправки еще не дошел.

Был очень рад любой инфе на тему canvas фингерпринта в facebook.
Если кто то ковырялся в этом направлении стукните в жабу, ПМ или прям сюда.
 
Ох ;) Вероятно поспешил с вопросом ;)
Все дело в статическом seed которым инициализируется генератор случайных чисел.
Теперь все встало на свои места.
 
АНБ позапрещала своим вассалам юзать полностью рандомные генераторы чисел.

Тут немного из другой оперы.
ФБ немного накрутили алгоритм канвас фингерпринта, но суть осталась той же.
Один и тот же код на одной и той же машине должен давать ВСЕГДА один и тот же результат.
Этот же код на другой машине будет давать другой результат.
Т.к. код зависит от железа (вернее будет сказать от дров видео карточки).

То что код напичкан рандомизацией это ни как на результат не влияет.
Т.к. рандом генератор инициируется всегда одним и тем же seed.
В общем последовательность генерируемых чисел известна всем ;)

Практически разобрал весь их код отвечающий за канвас фингерпринт.
Врядли АНБ тут как то замешано, скорее индийские батаны отрабатывают ЗП ;)
 
Все;)
- Распотрошил
- Восстановил имена переменных, методов и классов
- Собрал в кучу
- Завелось ;)))

В ближайшие несколько дней добавлю в антидетект кастомизацию для facebook'а
Будем им выдавать оригинальные данные собранные с реальных браузеров.
Интересно посмотреть, что они на это скажут.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Все;)
- Распотрошил
- Восстановил имена переменных, методов и классов
- Собрал в кучу
- Завелось ;)))

В ближайшие несколько дней добавлю в антидетект кастомизацию для facebook'а
Будем им выдавать оригинальные данные собранные с реальных браузеров.
Интересно посмотреть, что они на это скажут.
Отпиши пожалуйста когда антидетект будет готов
 
Отпиши пожалуйста когда антидетект будет готов
Стучи в жабу gcc@bombolenath.site
Идет открытое бета-тестирование
В данный момент правлю баги, которые скидывают ребята и добиваю кастомизации.
По фб кастомизация будет готова в течении пары дней.
 
с такими навыками по реверсу фингерпринтов ты не пытался писать бруты под разные конторы ?
Честно говоря нет. Думаю в бруте и без меня имеются рукастые специалисты ;)
 
Честно говоря нет. Думаю в бруте и без меня имеются рукастые специалисты ;)
не поверишь, на эксплойте пара десятков тем с поиском кодера для брута. вся заковыка в фингерпринтах.
 
не поверишь, на эксплойте пара десятков тем с поиском кодера для брута. вся заковыка в фингерпринтах.
Не поверишь, но из этих искателей, за такую работу никто не заплатит реальную стоимость. Привыкли брать за копейки у розничных продавцов шлак который быстро убивают толпы "успешных кроберов", а когда дело приняло новый оборот и защита начала усложняться, остались ребята понимающие, что их труд любит тишину. Такие кодеры работают с 2-3 платежеспособными заказчиками и хер ложили на армию выпускников ввх-школы. Такие заказчики отрабатывают материал сами, а не продают как обычные торгаши, поэтому могут себе позволить цены в 1,5-4к$ за софт.

По сабжу - молодец. У меня только один вопрос - этот хэш обратимый в полезные данные на стороне фб? Если нет, то смысла в такой работе тоже нет (кроме как самообразования).
 
Не поверишь, но из этих искателей, за такую работу никто не заплатит реальную стоимость. Привыкли брать за копейки у розничных продавцов шлак который быстро убивают толпы "успешных кроберов", а когда дело приняло новый оборот и защита начала усложняться, остались ребята понимающие, что их труд любит тишину. Такие кодеры работают с 2-3 платежеспособными заказчиками и хер ложили на армию выпускников ввх-школы. Такие заказчики отрабатывают материал сами, а не продают как обычные торгаши, поэтому могут себе позволить цены в 1,5-4к$ за софт.

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

Они собирают не один хэш, а целых 6
С разными статическими seed (нашел два сид при помощи которых инициализируют генератор случайных чисел)
Тип хэша : md5 , т.е. он не обратим.

Про facebook пока говорить ничего не буду, т.к. еще ковыряюсь с ним.
Но на примере канвас фингерпринта paypal'а могу сказать однозначно, что если подпихивать paypal'у генереные данные (подмешивать в канвас статический шум), то paypal сразу же палит это и начинает выдавать капчу.
Если же отдавать заранее собранные данные, то paypal'у это нравится.
Правда paypal собирает еще и название видео карты через webgl.
И очень похоже на то, что есть некая корреляция между OS, графической картой, драйверами графической карты и браузер.
Т.е. на схожем железе, ОС и браузере канвас хэш у paypal'а будет одинаковый.

В случае facebook тут нужно поковыряться еще, метод канвас фингерпринта очень похож на классический, но немного модернизирован.
Соберу данные с реальных браузеров и проведу анализ.
О результатах отпишу.
 
Окей. Как ты считаешь, для чего им (ФБ, палка, и т.д.) нужны такие хеши? Как они ими пользуются для вычисления фрода и прочих вредных действий?
Я не работал никогда в этих конторах и не имею инсайда в нутри.
По этой причине не хочу придумывать "охуительных историй", как они пользуются этими хэшами для выявления фрода.
Позвольте немного капитанства :)
Очевидно что на базе этих данных проводится некий анализ.
С очень большой долей вероятности, по совокупности собранных данных (разными методиками фингерпринта), можно сказать, что Ваш браузер это именно Ваш браузер, а не чей то другой.
Да же если Вы почистили куки и зашли под другим аккаунтом с VPN, сменили таймзону,...

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

Как анализируется вся эта гора инфы можно только предполагать.

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

Тема очень благодатная для спекуляций, а я как то не очень хочу этим заниматься.
Я приветствую цыфры, факты, статистику. В общем пруфы.
Все что выше это всего навсего мои скромные мысли по теме вашего вопроса.
Совершенно не претендую на истину.
 
Замечательно ;)
seed которым инициализируется рандом генератор сегодня поменялся.
Позавчера были эти значения:
seed: "de237c489221ca5c138713d3628233ce"
seed2: "abd5ae9d035391d5300d0e7d669d66df"

Сегодня стали вот этими:
seed: "c3d2da92181cccc6f581b28500ccb277"
seed2: "07e661e1e5d18b9589375862c2217117"


Друзья, если вам не сложно, могли бы Вы сделать следущее:
- Зайти на главную страницу facebook
- Открыть исходный код страницы ctrl+u
- Найти строку ["Sketch","solveAndUpdateForm",[]
- Таких строки будет две
- Скопировать до вхождения "login_form"]],

На выходе получится подобная строка:
["Sketch","solveAndUpdateForm",[],["c3d2da92181cccc6f581b28500ccb277","07e661e1e5d18b9589375862c2217117",5,"login_form"]]

Очень интересно какие seed будут у вас
 
Снимок экрана от 2019-07-04 11-26-54.pngСнимок экрана от 2019-07-04 11-26-49.png
Вот такие картинки отрисовываются.
Один и тот же код в хроме и в фф.
seed один и тот же.

Интересно вот что:
- Расположение элементов
- Цвета
- Тени
- Размеры шрифтов
и еще масса элементов генерятся основываясь на генераторе случайных чисел со статическим seed
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх