Особливості резолвера DNS в Windows 10 і DNS Leak

image

TL;DR: DNS-резолвер в Windows 10 відправляє запити на всі відомі системі адреси DNS-серверів паралельно, прив'язуючи запит інтерфейсу, і використовує той відповідь, який прийшов швидше. У разі, якщо ви використовуєте DNS-сервер з локального сегменту, така поведінка дозволяє вашому провайдеру або зловмисникові з Wi-Fi точкою підміняти записи DNS, навіть якщо ви використовуєте VPN.

Сучасні версії Windows додають головні болі активним користувачам VPN. DNS-резолвер до Windows 7 включно мав передбачувану поведінку, здійснюючи запити до DNS-серверів в порядку черги і пріоритету DNS-серверів, в общем-то, як і всі інші ОС. Це створювало так званий DNS Leak (витік DNS-запиту через зовнішній інтерфейс при підключеному VPN) тільки в тому випадку, якщо DNS-сервер всередині VPN-тунелю не відповів вчасно, або відповів помилкою, і, в цілому, не була такою вже кричущою проблемою.

Windows 8З виходом Windows 8, Microsoft додала вельми цікаву функцію в DNS-резолвер, яка, як я можу судити з Google, залишилася абсолютно непоміченою: Smart Multi-Homed Name Resolution. Якщо ця функція включена (а вона включена за замовчуванням), ОС відправляє запити на всі відомі їй DNS-сервери на всіх мережеві інтерфейси паралельно, прив'язуючи запит інтерфейсу. Зроблено це було, ймовірно, для того, щоб зменшити час очікування відповіді від бажаного DNS-сервера у разі, якщо він з якихось причин не може відповісти у відведений йому таймаут (1 секунда за умовчанням), і одразу, після таймауту, віддати відповідь від наступного за пріоритетом сервера. Таким чином, в Windows 8 і 8.1 всі ваші DNS-запити «витікають» через інтернет-інтерфейс, дозволяючи вашому провайдеру або власнику Wi-Fi-точки переглядати, на які сайти ви відвідуєте, за умови, що ваша таблиця маршрутизації дозволяє запити до DNS-сервера через інтернет-інтерфейс. Найчастіше така ситуація виникає, якщо використовувати DNS-сервер в межах локального сегмента, такі DNS піднімають 99% домашніх роутерів.

Дану функціональність можна відключити, додавши в гілку реєстру:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient

Параметр DWORD з назвою:
DisableSmartNameResolution

і будь-яким значенням, відмінним від нуля, що повертало старе поведінка резолвера.

Windows 10Хоч Windows 8 і 8.1 відправляли всі ваші запити без вашого відома через публічний інтерфейс, здійснити підміну DNS-відповіді таким чином, щоб перенаправити вас на підроблений сайт, було проблематично для зловмисника, т. к. ОС б використовувала підмінений відповідь тільки в тому випадку, якщо не вдалося отримати правильну відповідь від потрібного DNS-сервера, яким є сервер всередині шифрованого тунелю.
Все змінилося з приходом Windows 10. Тепер ОС не тільки посилає запит через всі інтерфейси, але і використовує той відповідь, який швидше прийшов, що дозволяє практично завжди вашому провайдеру перенаправити вас на заглушку про забороненому сайті або зловмисникові на підроблений сайт. Більше того, спосіб відключення Smart Multi-Homed Name Resolution, який працював у Windows 8.1, не працює на новій версії.
Єдиний прийнятний (хоч і не самий надійний) спосіб вирішення проблеми — встановити DNS на інтернет-інтерфейсі поза локального сегмента, наприклад, всім відомі 8.8.8.8. Якщо ви використовуєте OpenVPN, переконайтеся, що він замінює маршрут за замовчуванням, а не додає два маршрути 0.0.0.0/1 та 128.0.0.0/1 (параметр
redirect-gateway
має бути без
def1
), оскільки в цьому випадку Windows зможе прив'язати запит до інтерфейсу і успішно відправити його в незашифрованому вигляді.

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

0 коментарів

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