Вопрос о WebRTC

Doc

New member
01.10.2018
5
2
3
#1
WebRTC был создан что бы дать возможность двум людям иметь прямое соединение между браузерами, например для видео звонков. Как я был воодушевлен когда первый раз услышал о нем, знал бы я сколько сейчас горя эта технология принесет мне в будущем. На смену дырявого Flash пришел дырявый WebRTC.

Немного технической информации:
WebRTC использует два протокола STUN, TURN.

STUN используется для того что бы клиент мог узнать свой публичный IP зная который можно сделать подключение с другого компьютера. Технически это реализовано так: где то в интернете поднимается сервер, к которому конектится наш браузер по этому протоколу, при коннекте браузер говорит - скажи ка мне сервер с какого IP я сейчас к тебе обратился. Сервер видит IP, и отправляет ответ назад клиенту, где его может прочитать уже код сайта, который и выдерет эти данные и будет использовать их для фингепринта. Коннект происходит по UDP протоколу! (это важно)

TURN немного посложнее, он используется для того что бы передавать данные между двумя браузерами пользователей, если прямая связь с ними (по публичному IP) не может быть установлена, например потому что оба клиента находятся за NAT. TURN включает в себя STUN протокол. Коннект происходит как по UDP так и по TCP. При коннекте клиент должен указать свой логин и пароль, по которому сервер сможет идентифицировать пользователя.

К чему я все это пишу...
Я не вижу технического способа обойти корректно проверку WebRTC. Конкретно сейчас я работаю с сайтом который поднимает свой личный сервер и коннектится к нему по двум протоколам TURN UDP и TURN TCP передавая уникальный логин при коннекте. В работе я использую HTTP прокси. Я думаю проблема актуальная и для STUN UDP, так как вам не удастся послать запрос на UDP используя HTTP протокол. То есть если сайт который снимает с вас отпечаток имеет свой север, он физически видит кто к нему с какого IP подключался, плюс передавая индетификатор он может явно сказать кто именно это был.
Насколько я понимаю на данный момент сфера просто подделывает ответ который возвращает STUN(TURN) сервер, что на самом деле ничего не решает, просто в браузере у себя Вы увидите произвольные данные.

Отключать WebRTC это сразу выдать себя с патрохами. Все современные браузеры поддерживают его без исключений. Да и еще не понимаю какого черта они не спрашивают меня хочу ли я позволить этому сайту использовать вот такую вот дырявую технологию, почему то разработчики браузеров не поленились спросить пользователя разрешает ли он выдавать сайту его геопозицию, или присылать уведомления.

Вопрос к разработчикам сферы?
Подскажите как обходит WebRTC фингепринтинг сфера?
Может в моих знаниях и понимании где то есть проблема?
Есть ли вообще смысл в сфере, если есть такая глобальная проблема?


А вот код выдранный из сайта который и занимается отправкой данных на свой сервер.
JavaScript:
td_3j = "eu-aa.online-metrix.net";
...
this.setup = function() {
        if (!Object || !Object.create) {
            td_YW = true;
            return;
        }
        var td_Ia = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
        if (!td_Ia) {
            td_YW = true;
            return;
        }
        this.startWaitTime = td_g();

        function td_V7(td_nY) {
            var td_Vm = td_nY.substr(td_nY.indexOf("candidate:") + 10).split(" ");
            if (td_Vm !== null && td_Vm.length > 7 && td_Vm[4] !== null) {
                var td_Jf = td_Vm[4];
                var td_ZT = td_Vm[7];
                if (td_Jf.match(/^[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}$/)) {
                    td_M7[td_Jf] = true;
                } else {
                    if (td_ZT === "host") {
                        td_bM[td_Jf] = true;
                    } else {
                        td_f2[td_Jf] = true;
                    }
                }
            }
        }
        try {
            var td_fl = {
                optional: [{
                    RtpDataChannels: true
                }]
            };
            var td_fz = "    `" + td_3j + "?transport=";
            var td_Wp = {
                iceServers: [{
                    urls: td_fz + "tcp",
                    username: td_Ex,
                    credential: td_fL
                }, {
                    urls: td_fz + "udp",
                    username: td_Ex,
                    credential: td_fL
                }]
            };
            td_nh = new td_Ia(td_Wp, td_fl);
            td_nh.onicecandidate = function(td_F1) {
                if (td_F1.candidate) {
                    td_V7(td_F1.candidate.candidate);
                } else {
                    td_Jr = true;
                }
            };
            td_nh.onicegatheringstatechange = function() {
                if (td_nh !== null) {
                    if (td_nh.iceGatheringState === "complete") {
                        td_Jr = true;
                    }
                }
            };
            td_nh.createDataChannel("");
            td_nh.createOffer(function(td_Jf) {
                td_nh.setLocalDescription(td_Jf, function() {}, function() {});
            }, function() {});
        } catch (td_f4) {
            return;
        }
    };
 

xanter

Anti-fraud
30.08.2018
47
48
18
#2
аналогичный чек стоит в https://fp-check.me только не metrix, метрикс стоит в нетеллер конторке , сфера нетеллер норм обходит
 

Doc

New member
01.10.2018
5
2
3
#3
аналогичный чек стоит в https://fp-check.me только не metrix, метрикс стоит в нетеллер конторке , сфера нетеллер норм обходит
ну насколько я понимаю это обойти невозможно...ну или я ошибаюсь где то...может через socks прокси и возможно соединиться по UDP с WebRTC сервером, но я сомневаюсь что разработчики заморачивались над этим. Но через http прокси мы точно не сможем связаться по UDP. И потому контора может нас спалить.

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

Doc

New member
01.10.2018
5
2
3
#6
да я видел эту страничку. там и по turn есть чек...
я так понимаю что мне нужно самому написать пруф оф коцепт этой атаки... что бы показать суть проблемы..ну или убедиться в обратном... просто было бы проще если разработчики дали ответ..каким образом они его обходят...так как я уверен что подмена идет лишь на стороне клиента ответа..а сам север к которому обращаются видит и логирует реальный айпи...или на сервер вообще ничего не отправляется...
 
Симпатии: Понравилось xanter

xanter

Anti-fraud
30.08.2018
47
48
18
#7
ну да нужны пруфы и с ними обратится к dev, нужен детект который используется в антифродах , к примеру замутил на своем сайте чек metrix, и указал на детект
 

О нас

  • Данный форум посвящен разработкам команды Tenebris, а также связанным с их использованием направлениями в деятельности пользователей. Мы рады приветствовать Вас на форуме и искренне надеемся, что отзывчивое сообщество позволит значительно повысить качество вашей и нашей работы. Присоединяйтесь!

Быстрая навигация

Меню пользователя