Вирішуємо проблему перехоплення і підміни DNS-запитів. DNSCrypt в Яндекс.Браузері

Коли мова заходить про захист веб-трафіку від перехоплення і підміни, то на думку в першу чергу приходять протокол HTTPS або навіть власний VPN-сервер. На жаль, багато хто забуває про ще однієї незахищеною стороні, а саме про DNS-запити. Сьогодні я ще раз приверну увагу до цієї проблеми і розповім про те, як ми вирішуємо її в Яндекс.Браузері за допомогою технології DNSCrypt.



Архітектура системи доменних імен (DNS) за рідкісним винятком залишається незмінною з 1983 року. Кожен раз, коли ви хочете відкрити сайт, браузер відправляє запит із зазначенням домену DNS-сервер, який у відповідь відправляє необхідний IP-адресу. Запит і відповідь на нього передаються у відкритому вигляді, без будь-яких шифрування. Це означає, що ваш провайдер, адміністратор мережі або зловмисник c MITM можуть не тільки зберігати історію всіх запитаних вами сайтів, але і підміняти відповіді на ці запити. Звучить неприємно, чи не правда?

Пропоную згадати кілька реальних історій перехоплення і підміни DNS-запитів.

DNS hijacking

Перехоплення DNS-запитів DNS hijacking) це не якась рідкісна страшилка, а цілком поширена практика. Наприклад, серед провайдерів. Зазвичай це працює наступним чином. Якщо користувач намагається перейти на неіснуючий сайт, то провайдер перенаправляє його на свою сторінку з рекламою. А може і не на свою.

Американський провайдер Earthlink в 2006 році став перенаправляти користувачів та інформацію про їх запитах рекламному партнеру Barefruit. Особливо погано це виглядало в тому випадку, якщо користувач запитував неіснуючий домен відомого сайту, наприклад, webmale.google.com. Користувач бачив рекламу і контент, які не мали нічого спільного з google.com в адресному рядку.

Подібна практика явно порушує стандарт RFC DNS-відповідей і робить користувачів уразливими для XSS-атак. Наприклад, дослідник Ден Камінські продемонструвала уразливість, яка дозволяла вбудовувати в Facebook або PayPal шахрайські фрейми.



Ви, звичайно ж, можете відмовитися від використання DNS-сервера провайдера і переключитися на сторонні рішення (наприклад, Google Public DNS або Яндекс.DNS). Але при відсутності шифрування це ніяк не вирішить проблему. Провайдер цілком може втрутитися і тут, підмінивши відповідь на свій.

Якщо провайдери вже навчилися заробляти на підміні DNS-відповідей, то що говорити про шахраїв. У 2007 році група підприємливих людей з Естонії створила троян DNSChanger, який за кілька років заразив 4 млн комп'ютерів по всьому світу. Троян зраджував системні налаштування DNS, що призводило до появи реклами на веб-сторінках. Це принесло творцям $14 млн і тюремний термін. Причому найдивніше в цій історії те, що за рішенням суду довелося протягом 7 місяців підтримувати тимчасові DNS-сервера за тими адресами, де розташовувалися сервера шахраїв. Якщо б вони це не зробили, то користувачі заражених пристроїв одномоментно позбулися доступу в мережу.

Масштаби трояна DNSChanger вражають, але бразильці його переплюнули. 4,5 млн DSL-модемів було взломано в одній тільки Бразилії в 2011-2012 роках. Для цього було досить розіслати спам з посиланням на шкідливу сторінку, яка зламувала модем і прописувала новий адресу DNS-сервера. Причому цього разу шахраї не стали церемонитися з рекламою. На своїх підставних DNS-серверах вони підміняли адреси для всіх найбільших банків Бразилії.

З домашніми та офісними Wi-fi-роутерами справа йде так само сумно, як і з бразильськими модемами. Користувачі нерідко залишають заводські логін і пароль на адмінку, так і за виходом свіжих прошивок з виправленими уразливими не стежить майже ніхто (крім читачів Хабра, звичайно ж). У минулому році дослідники з Sentrant у своєму докладе розповіли про нові випадки злому роутерів. Шахраї перехоплювали звернення до Google Analytics і завдяки цьому вбудовували на сайти рекламу.



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

DNSCrypt

Розробники популярного сервісу OpenDNS запропонували вирішення проблеми ще кілька років тому. Вони створили опенсорсную утиліту DNSCrypt і однойменний протокол, який грає для DNS-запитів таку ж роль, як і SSL для HTTP.

По-перше, DNSCrypt зашифрує з допомогою стійкою еліптичної криптографії повідомлення між вашим комп'ютером і DNS-сервером. Це захистить їх від прослушки і MITM.

По-друге, ви більше не прив'язані до сервера провайдера або налаштування свого роутера. DNSCrypt звертається за адресами безпосередньо на вказаний вами сервер.

Досі для застосування DNSCrypt користувачам було необхідно встановити на комп'ютер окрему утиліту. Це не складно, але без широкого поширення знань про загрозу і способи її вирішення навряд чи варто розраховувати на масове застосування технології.

Підтримка DNSCrypt в Яндекс.Браузері

Наша команда вважає шифрування DNS не менш важливим, ніж перехід на HTTPS, тому ми вирішили підтримати DNSCrypt на рівні Яндекс.Браузера. І сьогодні ми починаємо тестування нової бета-версії Яндекс.Браузера 16.4, користувачі якої можуть включити в налаштуваннях захист DNS-запитів.



При цьому всі запити в зашифрованому вигляді будуть відправлятися на швидкий DNS-сервер Яндекса, який також отримав підтримку протоколу DNSCrypt. Обмежувати користувачів тільки одним сервером ми не хочемо, тому вже найближчим часом додамо в цьому місці можливість вибрати альтернативний DNS-сервер (наприклад, той же OpenDNS).



І ще дещо. Підмінити IP-адресу на фішинговий можна не тільки через перехоплення запиту, але і через самий звичайний системний host-файл. Тому ми зараз експериментуємо з забороною використовувати системний резолвер у разі недоступності DNS-сервера. Ми розуміємо, що включення цієї опції за умовчанням може нашкодити користувачам корпоративних і локальних ресурсів, тому поки тільки спостерігаємо і збираємо відгуки.

Встановити бету ви можете browser.yandex.ru/beta. Нам було б цікаво дізнатися думку спільноти.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.