Анонимность DNS-запросов (кэширование+шифрование)

Discussion in 'Безопасность и Анонимность' started by Link34, 4 Jun 2015.

  1. Link34

    Link34 Member

    Joined:
    22 May 2015
    Messages:
    30
    Likes Received:
    17
    Reputations:
    40
    На написание данной статьи меня сподвигли результаты собственных экспериментов, аналогов которым, я не нашёл. Этими результатами я бы хотел поделиться с читателями проекта Античат.ру.



    Анонимность DNS-запросов (кэширование+шифрование)


    Любой человек, который задумывается об анонимности в интернете знает отличный способ скрыть свой IP-адрес в интернете – это VPN-сервис. Однако даже при VPN-соединении зачастую запросы к DNS-серверу остаются незащищенными, и можно запросто отследить куда идут ваши DNS-запросы. По другому это называется “DNSleaks” или «утечка DNS».

    Давайте рассмотрим поподробнее что такое DNS и какие существуют проблемы.

    Как известно, каждый компьютер в сети Интернет имеет свой IP-адрес, не зная IP-адреса компьютера, невозможно отправить ему информацию или запрос. IP-адрес имеет вид 4-х байтового числа, разделенного точками (например, 162.234.12.110 или 78.31.54.226).

    Для простого человека запомнить большое количество IP-адресов не легко, поэтому в начале развития сети Интернет возникла необходимость в средстве, которое должно было бы облегчить жизнь пользователям Интернета. Таким средством стала ДНС - система доменных имен. ДНС сервер - это средство, которое позволяет определить IP-адрес по доменному имени.

    К примеру вы ввели в строке браузера адрес сайта, браузер послал запрос на DNS-сервер, который указан в настройках вашего интернет-подключения. Сервер отправляет обратно пакет с ответом, в котором содержится IP-адрес нужного сайта.

    С одной стороны всё сделано удобно – вы просто воткнули кабель в сетевую карту, вам автоматически присвоили DNS-сервер провайдера с быстрым откликом и всё работает. Но с другой стороны есть две проблемы при такой схеме:

    1) Отсутствует шифрование соединения. Это значит что любой злоумышленник сможет перехватить ваш трафик и сделать подмену IP-адреса. Например, показать вам поддельную страницу интернет-банка. Также желательно скрыть этот трафик от провайдера или от правоохранительных органов (мало ли что J).

    2) DNS-сервера провайдеров по закону обязаны сохранять логи (с какого IP, на какие сайты заходили, и время соединения), а также по запросу от правоохранительных органов предоставлять эти логи (я надеюсь, все знали это? J). Скажу даже больше, 99% DNS-серверов мира пишут логи и не скрывают этого.

    Если вдруг вы не хотите чтобы ваши данные кто то перехватывал или читал логи ваших посещений есть надёжный вариант. Что нужно сделать:

    1) Нужно зашифровать соединение. Для этого существует программа DNSproxy. Она соединяется к DNS-серверу не напрямую, а зашифровано через DNS-резольвер (он просто редиректит запросы на DNS-сервер). В свою очередь резольвер передаёт данные DNS-серверу тоже по зашифрованному соединению. То есть таким образом с помощью снифферов (например WIreshark) можно лишь узнать IP-адрес резольвера. Но поскольку пакеты зашифрованы с помощью «Elliptic curve cryptography» (эллиптическая криптография), то с каким конкретно DNS-сервером мы обмениваемся данными определить невозможно.

    2) Нужно использовать DNS-сервера, которые не ведут логов. Как Вы сами понимаете, сервера провайдера сразу отпадают. Также для анонимности нельзя использовать DNS-сервера Гугла или Яндекса, поскольку они честно признаются в хранении информации (почитайте их Соглашения о Конфиденциальности). Но есть DNS-сервера, которые нам помогут. Это www.opennicproject.org. На сайте написано, что сервера не пишут никаких логов (ну что ж, поверим). Но, к сожалению, эти сервера нестабильны и иногда отваливаются. Для решения этой проблемы можно использовать программу "Acrylic DNS Proxy". Она позволяет делать запросы не на один DNS-сервер, а на 10 сразу. И пакет с того сервера, который придёт быстрее всех будет принят программой. Следовательно мы решим сразу две задачи – минимизируем потерю скорости запросов (потому что наиболее быстрый обмен данными как правило происходит с DNS-серверами провайдера), и нивелируем нестабильность каких либо серверов.

    Итак, нам нужно зашифровать соединение на безопасные DNS сервера. Это пригодится не только для тех, кто не использует VPN (как можно решить проблему утечки DNS будет написано позднее). Начнём:

    1) Качаем AcrylicDNSProxy отсюда: http://mayakron.altervista.org/wikibase/show.php?id=AcrylicHome

    Устанавливаем. Меняем файл конфигурации в папке с установленной программой на уже настроенный на сервера www.opennicproject.org. Уже настроенный мной конфигурационный файл тут: https://www.sendspace.com/file/u51lus

    2) В настройках вашего сетевого подключения нужно прописать вручную DNS-адрес. Заходим «Центр управление сетями и общим доступом» -> «Подключение по локальной сети» -> «Свойства» -> «Протокол интернета версии 4 TCP/IPv4». Там ставим 127.0.0.1. Вторую строчку нужно оставить пустой.

    [​IMG]
    Рис. 1

    3) Чтобы запустить AcrylicDNSProxy заходим через Пуск и нажимаем «Start Acrylic Service».Должно появиться сообщение об удачном запуске.

    4) Теперь проверяем наши DNS-сервера на сайте www.perfect-privacy.com/dns-leaktest . Должно быть примерно так как на скрине:

    [​IMG]
    Рис. 2

    Можете добавить файл AcrylicController.exe в автозагрузку.

    5) Теперь шифруем наши запросы к DNS-серверам с помощью программы DNScrypt.

    Качаем уже готовую сборку: https://www.sendspace.com/file/o1pe2q

    6) Распаковываем и запускаем dnscrypt-winclient.exe. Там выбираем свою сетевую карту и нажимаем Install. Теперь соединение с DNS-серверами зашифровано.

    7) Проверим что же теперь покажут нам наши сервисы проверки. Заходим на www.perfect-privacy.com/dns-leaktest . Ни один наш сервер не должен определиться.

    А если зайти на http://whoer.net, то единственное что он может показать – это адрес DNS-резольвера, через которые проходят DNS-запросы. Сами же сервера «неизвестны».

    [​IMG]
    Рис. 3


    VPN + DNS-шифрование

    На рисунке указана типичная схема вашего соединения, при подключении к VPN-серверам.

    [​IMG]
    Рис 4.

    Как видите, есть уязвимость – DNS-запросы могут отправляться одновременно и через VPN-сервер, и напрямую к указанному DNS-серверу вашего сетевого подключения.

    Казалось бы, можно просто вручную прописать DNS-сервер в настройках соединения как 127.0.0.1, чтобы не было никаких лишних запросов к DNS провайдера. Но, очевидно, что при отключении от VPN интернет работать не будет, поскольку при подключении к VPN используются их собственные DNS-сервера. Если же просто вписать два сервера проекта www.opennicproject.org, то это снизит скорость серфинга в интернете, когда VPNбудет отключен. В этом случае так же рекомендуется установить программу AcrylicDNSProxy, которая не позволит упасть скорости серфинга. Но раз установили AcrylicDNSProxy, то почему бы и не установить и DNScrypt? ;)

    Если же вы 100% времени пользуетесь VPN-сервисами, то можете просто прописать один IP-адрес в настройках DNS: 127.0.0.1. Этого будет достаточно.


    Таким образом, была найдена интересная схема, позволяющая анонимизировать и скрыть DNS-запросы, что немного поможет если столкнётесь с «органами», и если местный злой хакер решит перенаправить DNS-запросы и показывать вашим детям сайты вместо «Ну погоди» - сайты для взрослых.


    Примечание: если же вам всё это ни к чему, просто установите AcrylicDNSProxy с указанием серверов вашего провайдера, Яндекса, Гугла и т.д., что даст вам ощутимое ускорение интернет-серфинга.

    Спасибо за внимание.
     
    nynenado, 4Fun, Piligrim740 and 10 others like this.
    1. GoodGoogle

      GoodGoogle Moderator

      Joined:
      5 Aug 2011
      Messages:
      1,160
      Likes Received:
      366
      Reputations:
      226
      Хорошая статья, принята к участию в конкурсе.
       
      1. Gle

        Gle Member

        Joined:
        4 Jan 2013
        Messages:
        4
        Likes Received:
        5
        Reputations:
        0
        Как в этой винде 7 разрешить доступ к реестру при запуске dnscrypt-winclient.exe и после нажатия
        install?

        [​IMG]

        А так-же при смене «Протокол интернета версии 4 TCP/IPv4». Там ставим 127.0.0.1. - вообще в интернет не выходит, ставлю от гугла 8.8.8.8 - выходит.
         
        #3 Gle, 5 Jun 2015
        Last edited by a moderator: 5 Jun 2015
        1. Link34

          Link34 Member

          Joined:
          22 May 2015
          Messages:
          30
          Likes Received:
          17
          Reputations:
          40
          У меня таких проблем не возникало на двух машинах, на которых я устанавливал. Возможно учётная запись имеет не административных прав. Либо можно попробовать в свойствах файла указать "Запуск программы от имени администратора".
          В самом реестре создаётся ли такой раздел? Если создаётся, то нужно нажать правой кнопкой на название раздела и выбрать "разрешения". Там нужно выставить полный доступ для нужного пользователя. Проверил у себя - для администратора доступ к ветке "полный", для простых пользователей - "только чтение".

          Значит не работает корректно Acrylic DNS Proxy.

          - В файле AcrylicConfiguration.ini какие DNS-сервера установлены? Я уже дал настроенный конфиг-файл, который сам использую. После замены файла можно запустить команду "Purge Acrylic Cache Data" (перезапуск процесса).
          - При запуске через Пуск "Start Acrylic Service" должно появиться сообщение об успешном запуске.
          - AcrylicService.exe - должен находиться в памяти.
          - В AcrylicHosts.txt должен быть указан параметр: "127.0.0.1 localhost"
          - Файерволл возможно блокирует траффик через программу, нужно добавить в исключения: AcrylicService.exe и AcrylicConsole.exe. (У меня специального файерволла нет)
           
          1. Link34

            Link34 Member

            Joined:
            22 May 2015
            Messages:
            30
            Likes Received:
            17
            Reputations:
            40
            Только что за пару минут сделал тоже самое на ноутбуке с чистой Windows 7 32bit через 3G-связь (без антивирусов), используя только предоставленные ссылки. Проблем не было никаких.
            Последовательность запуска Acrylic вкратце такова:
            1) Устанавливаем, но не запускаем.
            2) Заменяем конфигурационный файл.
            3) Устанавливаем адрес DNS 127.0.0.1 в настройках подключения.
            4) Запускаем Acrylic ярлыком Start Service (через меню Пуск)

            В DNSCrypt всё элементарно - ставим галочку и нажимаем Install.

            Подтверждение:
            [​IMG]
             
            1. Veil

              Veil Banned

              Joined:
              21 May 2015
              Messages:
              2,020
              Likes Received:
              3,349
              Reputations:
              72
              Шикарная и нужная статья.Спасибо автору - все работает!
               
              1. 5maks5

                5maks5 Elder - Старейшина

                Joined:
                29 Aug 2010
                Messages:
                451
                Likes Received:
                264
                Reputations:
                40
                8.8.8.8
                4.4.4.4
                что я делаю не так?)
                 
                ShpillyWilly likes this.
                1. grimnir

                  grimnir Members of Antichat

                  Joined:
                  23 Apr 2012
                  Messages:
                  1,114
                  Likes Received:
                  830
                  Reputations:
                  231
                  http://habrahabr.ru/post/273523/
                   
                  _________________________
                  ZodiaX likes this.
                  1. ZodiaX

                    ZodiaX Reservists Of Antichat

                    Joined:
                    7 May 2009
                    Messages:
                    533
                    Likes Received:
                    308
                    Reputations:
                    51
                    Ну для пользователей это в меньшей степени актуально (ибо как правило провайдерский NAT), а вот узловые ноды с завернутым в VPN трафиком...
                    Code:
                    Компания-тролль массово отправляет UDP-пакеты BitTorrent-клиентам на все IP-адреса в интернете
                    Реализация конечно веселая:)
                     
                    1. GCRaistlin

                      GCRaistlin New Member

                      Joined:
                      31 Jan 2016
                      Messages:
                      6
                      Likes Received:
                      0
                      Reputations:
                      0
                      Установил AcrylicDNSProxy и DNSCrypt на свой интернет-шлюз. Используется постоянное VPN-соединение, через которое идут запросы на определенные сайты. И на WAN-адаптере, и на VPN-адаптере в качестве DNS-сервера указан "127.0.0.1".
                      DNS Leak Test отображает в качестве DNS-сервера мой собственный IP-адрес (что с DNSCrypt, что без). whoer.net на странице Advanced все 4 пункта в разделе DNS показывает как "N/A". Все сделано правильно?
                       
                      1. grimnir

                        grimnir Members of Antichat

                        Joined:
                        23 Apr 2012
                        Messages:
                        1,114
                        Likes Received:
                        830
                        Reputations:
                        231
                        нет конечно,если айпи реальный светит
                        Винда 10?
                         
                        _________________________
                        1. GCRaistlin

                          GCRaistlin New Member

                          Joined:
                          31 Jan 2016
                          Messages:
                          6
                          Likes Received:
                          0
                          Reputations:
                          0
                          А что секретного в моем реальном IP? Оно и так известно, что он мой. Ну видно, что я использую в качестве DNS собственную машину - и что?
                          whoer'у в моей конфигурации нравится все, кроме включенного Flash и Java.
                          Win2k3 R2 SP2 (сервер, где стоят DNSCrypt и AcrylicDNSProxy), WinXP SP3 (клиент)
                           
                          #12 GCRaistlin, 1 Feb 2016
                          Last edited: 2 Feb 2016
                          1. GCRaistlin

                            GCRaistlin New Member

                            Joined:
                            31 Jan 2016
                            Messages:
                            6
                            Likes Received:
                            0
                            Reputations:
                            0
                            И вот что еще я не пойму. Для работы AcrylicDNSProxy мы указываем адрес DNS-сервера 127.0.0.1, в его конфиге указываем, какие реальные серверы используем (кстати, серверы www.opennicproject.org - жутко тормозные). Для работы DNSCrypt тоже указываем 127.0.0.1. Они друг другу не мешают?
                             
                            1. grimnir

                              grimnir Members of Antichat

                              Joined:
                              23 Apr 2012
                              Messages:
                              1,114
                              Likes Received:
                              830
                              Reputations:
                              231
                              Используется постоянное VPN-соединение
                              Должен же быть айпи VPN
                               
                              _________________________
                              1. GCRaistlin

                                GCRaistlin New Member

                                Joined:
                                31 Jan 2016
                                Messages:
                                6
                                Likes Received:
                                0
                                Reputations:
                                0
                                Я могу перенаправлять и DNS-запросы через VPN, это не проблема, просто я не вижу, какие это имеет плюсы.
                                 
                                1. GCRaistlin

                                  GCRaistlin New Member

                                  Joined:
                                  31 Jan 2016
                                  Messages:
                                  6
                                  Likes Received:
                                  0
                                  Reputations:
                                  0
                                  Разумеется, мешают. Отключаем обе службы, запускаем Acrylic, затем DNSCrypt - последний не запускается: "process terminated unexpectedly". Если сначала запустить DNSCrypt, а потом Acrylic, то вроде запускается, однако если потом остановить и запустить DNSCrypt еще раз, ошибок нет - из чего напрашивается вывод, что Acrylic, будучи запущен вторым, просто тихо не работает.
                                   
                                  1. GCRaistlin

                                    GCRaistlin New Member

                                    Joined:
                                    31 Jan 2016
                                    Messages:
                                    6
                                    Likes Received:
                                    0
                                    Reputations:
                                    0
                                    На сайте DNSCrypt сказано:
                                    Из чего следует, что Acrylic не при делах, когда работает DNSCrypt.
                                     
                                    1. darkcrime500

                                      darkcrime500 Member

                                      Joined:
                                      17 Feb 2016
                                      Messages:
                                      46
                                      Likes Received:
                                      10
                                      Reputations:
                                      1
                                      Ребят статья хорошая под linux что нибуть есть?
                                       
                                      1. Anklav

                                        Anklav Active Member

                                        Joined:
                                        14 Aug 2016
                                        Messages:
                                        165
                                        Likes Received:
                                        113
                                        Reputations:
                                        4
                                        Который может вести (и скорее всего ведёт) логи ваших запросов. В чём смысл доверять резольверу больше чем DNS-серверу собственного провайдера? Откуда знать что резольвер не предоставит логи "куда следует" по запросу, либо не продаст их кому угодно?!
                                        Что значит "ну что ж, поверим"???!!!
                                        Нет, не поверим!
                                        Уже неоднократно объяснялось для самых недалёких пользователей - нельзя верить тому, что написано. Написать можно что угодно. Если есть принципиальная возможность хранить логи - сегодня это обязательно будет реализовано. Тем более на серверах/юрлицах в США. Более того, в штатах существует практика вручения "писем национальной безопасности", которые обязывают скрывать от пользователей факт сотрудничества со спецслужбами.

                                        В общем, как по мне - использовать DNS провайдера это конечно палево, для того кто юзает VPN. Но ваша методика может оказаться двойным палевом.
                                        Для чего она действительно годится - обходить блокировки на сайтах. Баны и тому подобное. Защититься от хакеров. Но не более.
                                        К слову, если в данному случае произойдёт подмена ip адреса - вы так и не поймёте кто это сделал. Резольвер или DNS-сервер. Оба узла должны иметь беспрецедентный уровень доверия.
                                         
                                        1. Veil

                                          Veil Banned

                                          Joined:
                                          21 May 2015
                                          Messages:
                                          2,020
                                          Likes Received:
                                          3,349
                                          Reputations:
                                          72
                                          Если твой провайдер тут же выложит все логи пришедшим ментам,даже без всяких на то запросов.Что бы не портить отношений с ними.То хозяину резольвера DNS надо делать запрос за границу,да и еще и не факт ,что он его удовлетворит.А то что это будет долго,это ясно и ежу.
                                          Но ты можешь доверять своему провайдеру.