ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Статьи (https://forum.antichat.xyz/forumdisplay.php?f=30)
-   -   Деанонимизация по DNS (https://forum.antichat.xyz/showthread.php?t=409154)

Unknown 24.03.2014 15:37

Наткнулся я на сайт http://whoer.net/

http://i056.radikal.ru/1403/f1/f71f027b5b34.png

Зашел я с VPN, у меня поднят pptp на впс, все секюрно все дела. И что же я вижу в поле DNS? IP своего провайдера. Как это возможно получить?

Первое что приходит на ум, это по IP выполнить обратный DNS запрос, получить домен, и его днс. Но у меня впн. Соответственно я получу совсем не своего провайдера.

Начал смотреть скрипты, так как я подумал что они как-то детектят DNS по средствам JS. Что же я увидел.

Код:

function flash_ajax_request(c, d, f) {
    var g = false;
    var h = f ? '' : '';
    var i = '*';
    $x(c).innerHTML = h;
    d = encodeURI(d);
    if (window.XMLHttpRequest) {
        try {
            g = new XMLHttpRequest()
        } catch (e) {
            g = false
        }
    } else if (window.ActiveXObject) {
        try {
            g = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
            try {
                g = new ActiveXObject("Microsoft.XMLHTTP")
            } catch (e) {
                g = false
            }
        }
    } else {
        g = false
    }
    if (g) {
        g.open("GET", d, true);
        g.onreadystatechange = function() {
            if (g.readyState == 4) {
                var a = d.replace(/\?.*$/, '');
                if ((g.responseText.indexOf(a) >= 0 && a.indexOf('/whois') = 0 && a.indexOf('/whois') >= 0 && g.responseText.indexOf('viawhoer') ' + iloc("Anonymizer detected") + ''
                } else {
                    var b = NAS;
                    if (g.responseText == NA || g.responseText == '') {
                        b = NAS
                    } else {
                        b = g.responseText
                    }
                    $x(c).innerHTML = b
                }
            } else {
                $x(c).innerHTML = h
            }
        };
        g.send(null)
    } else {
        $x(c).innerHTML = i
    }
}
этот код отрисовывает наш DNS, а самое главное выполняет GET запрос

flash_ajax_request( "dns_unique_domain", "/dns?domain=spvbz1395603.br" );

и правда выполнив whoer.net/dns?domain=spvbz1395603.br я увидел свой DNS.

http://i053.radikal.ru/1403/2e/5c988732128f.png

Стало понятно что JS тут не причем в определении DNS, ничего он не детектит. А DNS нам сообщает какой то непонятный запрос с параметром domain, я конечно понимал что у меня такого домена быть не может spvbz1395603.br, но все же я подставил туда google.com. В ответ я конечно получил пустую страничку.

посмотрев на код страницы я увидел ещё такой код

Резолв какой то херни http://spvbz1395603.br.whoer.net/, которая даже не пингуется И заметил закономерность, если выполнять запросы к http://whoer.net/ но каждый раз меняется spvbz1395603.br этот странный домен. И тут меня осенило как это работает.

И так по порядку.

whoer.net имеет свой DNS, на который собственно и запаркован домен. И логирует запросы поддоменов, вида spvbz1395603.br.whoer.net

при заходе на сайт whoer.net, вам присваивается id в данном случае spvbz1395603.br

происходит попытка загрузить со страницы link по ссылке spvbz1395603.br.whoer.net/css/null.css, т.е. происходит резолв, и DNS сервер логирует этот резолв и соответственно ip адрес dnsа вашего провайдера

выполняется запрос whoer.net/dns?domain=spvbz1395603.br, который собственно сопоставляет ваш id(spvbz1395603.br) c данными из лога DNS сервера и отдает вам IP

В принципе об этой схеме я знал и раньше, но не видел реализаций.

Кроме того можно заюзать сервис, не морочась со своим DNS.

Для этого нужно:

получить страницу, без исполнения JS скриптов, например wget http://whoer.net/

извлечь из неё сгенерированный id spvbz1395603.br

дать ссылку spvbz1395603.br.whoer.net у кого вы хотите узнать DNS, он должен перейти в браузере или просто пингануть её

выполнить http://whoer.net/dns?domain=spvbz1395603.br который покажет DNS

Для того что бы не палить свои DNS используйте сторонние, их просто можно указать вручную.

Например гугловые:

8.8.8.8

8.8.4.4

Скриптец с сайта, много разных полезных детектов, например времени (можно определить часовой пояс) и т.д.

https://www.dropbox.com/s/0dg5zh0gcm4q01g/whoer.packed.js.txt

http://cxx.cx:81/qodiyaxofo.coffee


Время: 03:30