Анонимность 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.
  2. GoodGoogle

    GoodGoogle Moderator

    Joined:
    5 Aug 2011
    Messages:
    1,160
    Likes Received:
    366
    Reputations:
    226
    Хорошая статья, принята к участию в конкурсе.
     
  3. 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
  4. 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. (У меня специального файерволла нет)
     
  5. 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]
     
  6. Veil

    Veil Banned

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

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

    Joined:
    29 Aug 2010
    Messages:
    452
    Likes Received:
    265
    Reputations:
    40
    8.8.8.8
    4.4.4.4
    что я делаю не так?)
     
    ShpillyWilly likes this.
  8. 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.
  9. ZodiaX

    ZodiaX Reservists Of Antichat

    Joined:
    7 May 2009
    Messages:
    533
    Likes Received:
    308
    Reputations:
    51
    Ну для пользователей это в меньшей степени актуально (ибо как правило провайдерский NAT), а вот узловые ноды с завернутым в VPN трафиком...
    Code:
    Компания-тролль массово отправляет UDP-пакеты BitTorrent-клиентам на все IP-адреса в интернете
    Реализация конечно веселая:)
     
  10. 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". Все сделано правильно?
     
  11. grimnir

    grimnir Members of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,114
    Likes Received:
    830
    Reputations:
    231
    нет конечно,если айпи реальный светит
    Винда 10?
     
    _________________________
  12. 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
  13. 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. Они друг другу не мешают?
     
  14. grimnir

    grimnir Members of Antichat

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

    GCRaistlin New Member

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

    GCRaistlin New Member

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

    GCRaistlin New Member

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

    darkcrime500 Member

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

    Anklav Active Member

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

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

    Veil Banned

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