Антифрод системы как неотъемлемая часть сектора ИБ постоянно развиваются и точно так-же как и в ИБ для эффективной работы необходимо ежедневно, ежечасно, а иногда даже ежеминутно поддерживать актуальность информации т.к. уязвимости появляются каждый день. Но что будет, если мы поверим в волшебство волшебного софта?
Как работает WebGL?
WebGL это технология построения 3D графики (мы же помним, что например Canvas это 2D) и основана эта технология на ускорителе OpenGL, а если быть более точным, то на OpenGL ES.
Работает WebGL так - Веб-сайт передает на наш ПК javascript код, который обрабатывается нашим браузером в двух режимах:
1. Программное ускорение
2. Аппаратное ускорение
Поскольку javascript выполняется только на ПК пользователя, то указанные выше ускорители будут использоваться не с сервера, а с нашего обычного рабочего или домашнего ПК.
Алгоритм следующий:
1. Формируются вершины
2. Формируются вершинные шейдеры (Vertex shader)
3. Между вершинами рисуются линии и появляется форма изображения
4. Добавляется геометрия
5. Формируются пиксели
6. Пиксели заполняются цветом (Pixel shader)
7. Добавляются эффекты (сглаживание, прозрачность и т.д.)
И все – картинка готова. Для пользователя это займет мгновение, но количество операций которое будет выполнено просто колоссально и во всем этом принимают участие сотни различных графических параметров. Думаете, сайт Browserleaks покажет вам их все? Нет, сайт browserleaks как и другие сайты чекеры знаете откуда взяли свой код? Они его тупо скопировали у Валентина Васильева: https://github.com/Valve/fingerprintjs.
Но данный код является лишь вариантом данного разработчика и количество параметров, от которых он отталкивается в формировании отпечатка может быть очень сильно увеличено.
Вот реальное количество параметров участвующих в обработке графики:
https://developer.mozilla.org/en-US/..._API/Constants
Где хранятся эти параметры?
Хранятся параметры обработки графики не в браузере – в браузере хранятся лишь их адреса в ячейках памяти, а вот реальное их местоположение - это графический ускоритель.
Чуть выше мы с вами уже изучили, что ускорителей может быть два:
1. Программный (например SwiftShader)
2. Аппаратный (OpenGL ES (Angle transfer for Win) -> Direct3D. Или просто – наша видеокарта.
Как антидетекты подменяют их?
Все известные мне браузерные антидетекты нацелены только лишь на подмену значений сайта browserleaks и не более – зачем подменять то, что пользователь не видит, отпечаток меняется - и так сойдет.
На данный момент преимущественно используется программное ускорение (например в Chrome это SwiftShader) и используют его т.к. есть возможность редактировать его параметры и тупо для большей совместимости.
Как вы думаете это хорошо?
Давайте подумаем, мы используем антидетект, который например подменил название нашей карты на GeForce GTX 1080 – все сайты должны видеть что у нас карта GTX 1080, верно?
На самом деле нет и антидетекты меняют всего навсего строковый параметр – тупо текст.
Хотите пруфы?
Исходный код хрома - https://github.com/chromium/chromium...ersion_info.cc
Строка 52 (условие программного ускорения)
И вы туда можете написать все что хотите, хоть – “GeForce Mega****ec 100500”
И после этого вы думаете у вас в вашем ПК она вырастет? Отпочкуется от основной видеокарты?
Нет, у вас как были параметры программного ускорителя, так они и остались, а поменялся тупо текст.
Как же поменять параметры графики? Может быть это уже сделали?
Да, подменить константное значение действительно можно и все параметры (которые мы видим например на https://browserleaks.com/webgl под нашими отпечатками действительно будут меняться и мы даже вручную их можем выбрать – правда классно?
Есть только два подводных камня:
1. При аппаратном реальном графическом ускорении эти параметры являются комплексом и не могут меняться по отдельности.
2. Иногда полезно заглянуть в статистику уникальности параметров которые мы устанавливаем:
https://webglstats.com/webgl/paramet...NIFORM_VECTORS
А теперь давайте подведем итог:
1. Реального ускорения нет
2. Параметры не зависят ни от видеокарты, ни от друг друга
3. Комбинации параметров не защищают, а уникализируют пользователя
4. Из нескольких сотен параметров меняем всего 20
Все? Еще не все, дело в том что основа этого программного ускорения – SwiftShader может еще и тупо слить о нас инфу т.к. имеет ряд уязвимостей:
https://www.cisecurity.org/advisory/...tion_2018-084/
Ну и напоследок о программном ускорении:
У WebGL используются небольшие макросы, которые более известны как extensions. Вот их лист:
https://www.khronos.org/registry/webgl/extensions/
Эти макросы отвечают за множественные графические операции и их работа напрямую зависит от ускорителя и ВСЕГДА ОТЛИЧАЕТСЯ между программным и аппаратным ускорением. И вы, поменяв название своей видеокарты, тупо спалитесь на этом, ибо определить использование программного ускорителя можно и по этим макросам.

А что если ваш антидетект использует Аппаратное ускорение и все данные берет с реальной видеокарты?
Если в вашем браузерном антидетекте используется аппаратное ускорение – тогда у вас все круто, все за исключением того, что обработка графики принудительно может быть проведена не в браузере с привлечением ресурсов видеокарты, а внутри самой видеокарты и не просто внутри а еще и в режиме ядра.
Для подкрепления фактами, рекомендую ознакомиться с исследованиями одной из топовых компаний в сфере ИБ:
https://www.contextis.com/en/blog/we...r-exploitation
Ну и любители техники Apple должны понимать угрозу:
https://nvd.nist.gov/vuln/detail/CVE-2018-12152
Подробно:
http://www.cs.ucr.edu/~zhiyunq/pub/c...de_channel.pdf
Ну и немного уязвимостей прямо из ГосДепа США:
https://www.us-cert.gov/ncas/bulletins/SB18-323
https://nvd.nist.gov/vuln/search/res...earch_type=all
А знаете к чему это приведет?
А приведет это к тому, что все ваши псевдоизменения отпечатков будут видны как на ладони и РЕАЛЬНЫЕ параметры вашей видеокарты могут быть прочитаны и скомпрометированы, а соответственно БУДУТ ВИДНЫ ваши РЕАЛЬНЫЕ ОТПЕЧАТКИ.
А если видны ваши реальные отпечатки, это значит что системы антифрода вас видят, а спецслужбы могут отследить вашу активность.
Может быть выпустят обновления антидетектов и все будет ок?
Шансы что так произойдет стремятся к нулю т.к. уязвимости описанные выше затрагивают не только браузер, но и технологию WebGL/OpenGL ES ну и конечно драйвера вашей реальной видеокарты и фиксить это никто не будет и, скорее всего, разработчики по напишут следующее: «Вектор нагоняет жути» подразумевая «***и платите бабло и не гавкайте».
Использование браузерных антидетектов создает не только трудности с эмуляцией реальной личности, но и тупо опасно для людей, чья деятельность может идти в размер с местным законодательством (если вы постите вконтакте мемчики).
Отдельный привет хотелось бы передать кардерам, наркоторговцам, ботоводам и напомнить что Интерпол может вести расследование годами и всего через год-два сменив род деятельности и уезжая с семьей на море в Турцию к вам подойдут несколько человек в штатском и попросят вас отложить все дела на ближайшие лет так 10.
Как работает WebGL?
WebGL это технология построения 3D графики (мы же помним, что например Canvas это 2D) и основана эта технология на ускорителе OpenGL, а если быть более точным, то на OpenGL ES.
Работает WebGL так - Веб-сайт передает на наш ПК javascript код, который обрабатывается нашим браузером в двух режимах:
1. Программное ускорение
2. Аппаратное ускорение
Поскольку javascript выполняется только на ПК пользователя, то указанные выше ускорители будут использоваться не с сервера, а с нашего обычного рабочего или домашнего ПК.
Алгоритм следующий:
1. Формируются вершины
2. Формируются вершинные шейдеры (Vertex shader)
3. Между вершинами рисуются линии и появляется форма изображения
4. Добавляется геометрия
5. Формируются пиксели
6. Пиксели заполняются цветом (Pixel shader)
7. Добавляются эффекты (сглаживание, прозрачность и т.д.)
И все – картинка готова. Для пользователя это займет мгновение, но количество операций которое будет выполнено просто колоссально и во всем этом принимают участие сотни различных графических параметров. Думаете, сайт Browserleaks покажет вам их все? Нет, сайт browserleaks как и другие сайты чекеры знаете откуда взяли свой код? Они его тупо скопировали у Валентина Васильева: https://github.com/Valve/fingerprintjs.
Но данный код является лишь вариантом данного разработчика и количество параметров, от которых он отталкивается в формировании отпечатка может быть очень сильно увеличено.
Вот реальное количество параметров участвующих в обработке графики:
https://developer.mozilla.org/en-US/..._API/Constants
Где хранятся эти параметры?
Хранятся параметры обработки графики не в браузере – в браузере хранятся лишь их адреса в ячейках памяти, а вот реальное их местоположение - это графический ускоритель.
Чуть выше мы с вами уже изучили, что ускорителей может быть два:
1. Программный (например SwiftShader)
2. Аппаратный (OpenGL ES (Angle transfer for Win) -> Direct3D. Или просто – наша видеокарта.
Как антидетекты подменяют их?
Все известные мне браузерные антидетекты нацелены только лишь на подмену значений сайта browserleaks и не более – зачем подменять то, что пользователь не видит, отпечаток меняется - и так сойдет.
На данный момент преимущественно используется программное ускорение (например в Chrome это SwiftShader) и используют его т.к. есть возможность редактировать его параметры и тупо для большей совместимости.
Как вы думаете это хорошо?
Давайте подумаем, мы используем антидетект, который например подменил название нашей карты на GeForce GTX 1080 – все сайты должны видеть что у нас карта GTX 1080, верно?
На самом деле нет и антидетекты меняют всего навсего строковый параметр – тупо текст.
Хотите пруфы?
Исходный код хрома - https://github.com/chromium/chromium...ersion_info.cc
Строка 52 (условие программного ускорения)
И вы туда можете написать все что хотите, хоть – “GeForce Mega****ec 100500”
И после этого вы думаете у вас в вашем ПК она вырастет? Отпочкуется от основной видеокарты?
Нет, у вас как были параметры программного ускорителя, так они и остались, а поменялся тупо текст.
Как же поменять параметры графики? Может быть это уже сделали?
Да, подменить константное значение действительно можно и все параметры (которые мы видим например на https://browserleaks.com/webgl под нашими отпечатками действительно будут меняться и мы даже вручную их можем выбрать – правда классно?
Есть только два подводных камня:
1. При аппаратном реальном графическом ускорении эти параметры являются комплексом и не могут меняться по отдельности.
2. Иногда полезно заглянуть в статистику уникальности параметров которые мы устанавливаем:
https://webglstats.com/webgl/paramet...NIFORM_VECTORS
А теперь давайте подведем итог:
1. Реального ускорения нет
2. Параметры не зависят ни от видеокарты, ни от друг друга
3. Комбинации параметров не защищают, а уникализируют пользователя
4. Из нескольких сотен параметров меняем всего 20
Все? Еще не все, дело в том что основа этого программного ускорения – SwiftShader может еще и тупо слить о нас инфу т.к. имеет ряд уязвимостей:
https://www.cisecurity.org/advisory/...tion_2018-084/
Ну и напоследок о программном ускорении:
У WebGL используются небольшие макросы, которые более известны как extensions. Вот их лист:
https://www.khronos.org/registry/webgl/extensions/
Эти макросы отвечают за множественные графические операции и их работа напрямую зависит от ускорителя и ВСЕГДА ОТЛИЧАЕТСЯ между программным и аппаратным ускорением. И вы, поменяв название своей видеокарты, тупо спалитесь на этом, ибо определить использование программного ускорителя можно и по этим макросам.

А что если ваш антидетект использует Аппаратное ускорение и все данные берет с реальной видеокарты?
Если в вашем браузерном антидетекте используется аппаратное ускорение – тогда у вас все круто, все за исключением того, что обработка графики принудительно может быть проведена не в браузере с привлечением ресурсов видеокарты, а внутри самой видеокарты и не просто внутри а еще и в режиме ядра.
Для подкрепления фактами, рекомендую ознакомиться с исследованиями одной из топовых компаний в сфере ИБ:
https://www.contextis.com/en/blog/we...r-exploitation
Ну и любители техники Apple должны понимать угрозу:
https://nvd.nist.gov/vuln/detail/CVE-2018-12152
Подробно:
http://www.cs.ucr.edu/~zhiyunq/pub/c...de_channel.pdf
Ну и немного уязвимостей прямо из ГосДепа США:
https://www.us-cert.gov/ncas/bulletins/SB18-323
https://nvd.nist.gov/vuln/search/res...earch_type=all
А знаете к чему это приведет?
А приведет это к тому, что все ваши псевдоизменения отпечатков будут видны как на ладони и РЕАЛЬНЫЕ параметры вашей видеокарты могут быть прочитаны и скомпрометированы, а соответственно БУДУТ ВИДНЫ ваши РЕАЛЬНЫЕ ОТПЕЧАТКИ.
А если видны ваши реальные отпечатки, это значит что системы антифрода вас видят, а спецслужбы могут отследить вашу активность.
Может быть выпустят обновления антидетектов и все будет ок?
Шансы что так произойдет стремятся к нулю т.к. уязвимости описанные выше затрагивают не только браузер, но и технологию WebGL/OpenGL ES ну и конечно драйвера вашей реальной видеокарты и фиксить это никто не будет и, скорее всего, разработчики по напишут следующее: «Вектор нагоняет жути» подразумевая «***и платите бабло и не гавкайте».
Использование браузерных антидетектов создает не только трудности с эмуляцией реальной личности, но и тупо опасно для людей, чья деятельность может идти в размер с местным законодательством (если вы постите вконтакте мемчики).
Отдельный привет хотелось бы передать кардерам, наркоторговцам, ботоводам и напомнить что Интерпол может вести расследование годами и всего через год-два сменив род деятельности и уезжая с семьей на море в Турцию к вам подойдут несколько человек в штатском и попросят вас отложить все дела на ближайшие лет так 10.
Комментарий