Атака на dns або нічний кошмар мережевого адміністратора

Атака на DNS
або
Нічний кошмар мережного адміністратора

Будучи одним з основних елементів інфраструктури IP-мереж, служба доменних імен (DNS) в той же час далеко неідеальна з точки зору інформаційної безпеки. Застосування транспортного протоколу без встановлення віртуального каналу (UDP), відсутність вбудованих засобів ідентифікації, аутентифікації і розмежування доступу роблять її вразливою для віддалених атак різних типів.

У даній статті розглядається міжсегментного віддалена атака на DNS-сервер, що не вимагає виконання будь-яких жорстких умов і допускає ефективну практичну реалізацію.

1. DNS з висоти пташиного польоту

Первинним джерелом інформації про кожен домені є відповідальний за даний домен DNS-сервер (насправді їх може бути кілька). Відповідальність за частину доменної інформації (піддомени) може бути делегована іншим серверам

Клієнтська частина DNS називається Резолвер (resolver), доступ до якого прикладні програми отримують через API операційної системи. При взаємодії Резолвер з сервером в якості транспортного протоколу використовується UDP, що не передбачає формування віртуального каналу. Запити, які генеруються Резолвер, є рекурсивними, тобто як відповідь на такий запит повертається або шукана інформація, або повідомлення про її відсутність.

Отримавши запит від Резолвер, сервер або відразу ж повертає відповідь (за умови наявності шуканої інформації в локальній базі), або формує запит до іншого сервера. Цей запит зазвичай є ітеративним і, на відміну від рекурсивного, допускає відповідь у вигляді посилання на інший сервер, який краще обізнаний про місце розташування шуканої інформації.

У загальному випадку пошук починається з кореневого сервера, який повертає інформацію про серверах, відповідальних за домени верхнього рівня, після чого формується новий ітеративний запит до одного з цих серверів і т.д. Результатом такого ланцюжка питань-відповідей є або отримання шуканої інформації, або висновок про її відсутності, після чого отриману відповідь повертається Резолвер. Вся накопичена сервером в процесі роботи інформація кешируєтся з метою прискорення обслуговування наступних запитів і мінімізації мережевого трафіку.

2. міжсегментного віддалена атака на DNS-сервер

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

Значно більш загальним випадком є ​​міжсегментного атака, яка не потребує для своєї реалізації таких жорстких умов. З цієї причини ми зупинимося на розгляді саме цього класу віддалених атак, які представляють як академічний, так і практичний інтерес.

Очевидно, що виконання першого і четвертого умов не представляє для атакуючого особливих труднощів. З другим і третім умовами ситуація набагато складніше, оскільки в разі межсегментной атаки у атакуючого немає можливості перехопити вихідний запит і "підглянути" необхідні параметри.

Більшість використовуваних в даний час реалізацій DNS-сервера (BIND4, MS DNS) використовують для вихідних запитів 53 порт, так що можна "на удачу" послати помилковий відповідь на цей порт. Однак даний метод буде спрацьовувати не завжди, оскільки, наприклад, BIND8 може використовувати для вихідних запитів будь випадково обраний непривілейований порт.

Ідентифікатор (id) запиту є двухбайтовое число, визначене сервером в запиті з метою однозначної ідентифікації відповіді на цей запит. Це число инкрементируется з кожним новим запитом. Незнання поточного значення ідентифікатора призводить до необхідності посилки безлічі помилкових відповідей з різними значеннями id.

Саме ця обставина робить практичну реалізацію даної атаки дуже важкоздійсненним. Дійсно, помилковий відповідь має бути отриманий цільовим сервером в проміжок часу з моменту посилки запиту і до моменту приходу відповіді від справжнього сервера, що на практиці не перевищує декількох секунд. За цей інтервал часу атакуючому необхідно надіслати 216 хибні відповіді з усіма можливими значеннями id, а в разі незнання порту ця цифра збільшується ще в кілька десятків разів. Оскільки розмір IP-пакета, що містить помилковий відповідь, становить близько 100 байт, то перед атакуючим ставиться завдання пересилання декількох мегабайт інформації за кілька секунд, що в переважній більшості випадків нездійсненно.

3. Метод визначення номера порту і поточного ідентифікатора запиту

При наявності контрольованого сервера описана атака може бути модифікована таким чином. Припустимо для визначеності, що атакуючий контролює сервер ns.hacker.com. відповідальний за домен hacker.com. У першій фазі атаки ми провокуємо сервер ns.victim.com на звернення до ns.hacker.com шляхом посилки рекурсивного запиту на пошук інформації про будь-якому імені (не обов'язково реальному) в домені hacker.com. Оскільки ns.hacker.com знаходиться під контролем атакуючого, він може перехопити цей запит і отримати від нього інформацію про номер порту і поточному id.

Наступні дві фази атаки не відрізняються від описаних, з тією лише різницею, що тепер атакуючому досить послати всього кілька помилкових відповідей, оскільки він точно знає номер порту і може з високим ступенем точності передбачити значення ідентифікатора запиту до ns.coolsite.com.

4. Метод непрямої провокації

Очевидно, що необхідною умовою успішності описаної атаки є можливість посилки рекурсивних запитів цільового сервера, що провокують його на звернення до інших серверів з метою пошуку інформації, яка запитується. В принципі, існує можливість налаштувати DNS-сервер таким чином, що він буде приймати рекурсивні запити тільки від "своїх" клієнтів (хостів, Резолвер яких налаштовані на використання даного сервера). В цьому випадку здійснення атаки стає неможливим.

З метою обходу цього обмеження можна запропонувати простий метод, який умовно назвемо "непрямої провокацією". Основна ідея цього методу полягає у використанні будь-якого загальнодоступного сервісу, що є клієнтом цільового DNS-сервера, для формування необхідного провокуючого запиту. Найбільш підходящим кандидатом представляється загальнодоступний сервер електронної пошти, який за визначенням повинен приймати з'єднання з будь-якого комп'ютера Internet. Припустимо, що Резолвер комп'ютера mail.victim.com налаштований на використання сервера ns.victim.com. причому останній приймає рекурсивні запити тільки від домену victim.com. Наведений нижче SMTP-діалог провокує ns.victim.com на пошук інформації про імені any-name.any-domain.com:

Таким чином, застосування методу "непрямої провокації" дозволяє здійснити атаку без прямої посилки запитів цільовим DNS-сервера.

5. Як виникають епідемії

У звичайних умови успішна атака призводить до "зараження" кеша конкретного сервера і область поширення неправдивої інформації обмежується тільки його клієнтами. Однак при наявності ситуації "некоректного делегування" (lame delegation), що виникає через помилки адміністрування, можливе поширення неправдивої інформації на інші сервера, що призведе до глобального "зараження".

Під некоректним делегуванням розуміється ситуація, коли відповідальність за домен делегується сервера, що не володіє локальною копією доменної інформації. Це призводить до того, що у відповідь на ітеративні запити інших серверів замість шуканої інформації він повертає посилання на інші сервера (іноді і на себе), які, з точки зору даного сервера, мають у своєму розпорядженні потрібними відомостями.

Неприємною особливістю даного сценарію є неможливість швидкої ліквідації наслідків атаки, оскільки помилкова інформація буде знаходитися в кешах тисяч серверів до закінчення часу життя, яке атакуючий може вибрати дуже великим.

6. Реалізація і польові випробування

7. Погляд з іншого боку барикади

На жаль, бажаний результат може дати тільки широкомасштабне впровадження нових протоколів, яке пов'язане зі значними організаційними труднощами і не може бути проведено за короткий час.

При використанні даного методу не слід забувати, що подібний захист може бути досить легко подолана використанням описаного методу непрямої провокації.

У той же час за характером і масштабністю результатів дана атака цілком може бути зарахована до інформаційного зброї масового ураження. Відсутність адекватних засобів захисту, дуже слабо виражені сліди і труднощі усунення наслідків атаки ще більше погіршують ситуацію.