Деанонимизация по DNS

Spread the love

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

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

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

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

Code:

function flash_ajax_request(c, d, f) {
    var g = false;
    var h = f ? '<img align="middle" src="' + f + '" border="0"/>' : '<img align="middle" src="' + preloader_default + '" border="0"/>';
    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) || (g.responseText.indexOf(a) >= 0 && a.indexOf('/whois') >= 0 && g.responseText.indexOf('viawhoer') < 0)) {
                    $x(c).innerHTML = '<span class="ipa_alarm">' + iloc("Anonymizer detected") + '</span>'
                } 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 запрос

<script language="javascript">
flash_ajax_request( "dns_unique_domain", "/dns?domain=spvbz1395603.br" );
</script>

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

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

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

<link rel=”stylesheet” type=”text/css” media=”all” href=”HTTP://spvbz1395603.br.whoer.net/css/null.css”>

Резолв какой то херни 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.

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

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

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

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

4) выполнить 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

Добавить комментарий

WP2Social Auto Publish Powered By : XYZScripts.com