How test DNS

Система доменних імен (DNS) часто називається «хребтом інтернету», оскільки вона забезпечує перетворення доменних імен, зрозумілих людині (наприклад, example.com), у машинозчитувані IP-адреси (192.168.1.1). Але ця важлива система має значення не лише для функціонування інтернету – вона також є критично важливою для тестування безпеки.

TOOLS FOR FIND VULNERABILITY

Логин Свят

2/5/20252 min read

Система доменних імен (DNS)

Система доменних імен (DNS) часто називається «хребтом інтернету», оскільки вона забезпечує перетворення доменних імен, зрозумілих людині (наприклад, example.com), у машинозчитувані IP-адреси (192.168.1.1). Але ця важлива система має значення не лише для функціонування інтернету – вона також є критично важливою для тестування безпеки.

Що ви дізнаєтесь сьогодні:

Як працює DNS (основи).

Критична роль DNS у кібербезпеці.

Практичні методи та команди для тестування безпеки DNS, які допомагають виявляти неправильно налаштовані записи та вразливості.

Ілюстрація DNS-процесу запиту:

1. Користувач відправляє DNS-запит.

2. Локальний резолвер звертається до кореневого DNS-сервера.

3. Запит пересилається на сервери домену верхнього рівня (TLD).

4. Далі відбувається звернення до авторитетного сервера імен.

5. Резолвер отримує IP-адресу та повертає її користувачу.

Як працює DNS

Система доменних імен (DNS) діє як телефонна книга для інтернету. Вона забезпечує, щоб коли ви вводите адресу на зразок www.google.com, ваш браузер знав, до якого сервера звертатися. Розгляньмо цей процес крок за кроком:

Процес DNS-запиту

1. Крок 1: Браузер звертається до резолвера

Коли ви вводите доменне ім’я (наприклад, example.com), ваш браузер запитує локальний DNS-резолвер, зазвичай наданий вашим інтернет-провайдером.

2. Крок 2: Резолвер перевіряє свій кеш

Якщо IP-адреса збережена в кеші резолвера, вона одразу повертається. Якщо ні, резолвер продовжує запит до наступного рівня.

3. Крок 3: Рекурсивний запит до авторитетних серверів

Резолвер звертається до кореневих серверів, серверів доменів верхнього рівня (TLD), а потім до авторитетного сервера домену.

4. Крок 4: Відповідь клієнту

Після отримання IP-адреси резолвер надсилає її браузеру, який з’єднується з цільовим сервером.

Основні типи DNS-записів

DNS-енумерація

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

Інструмент host

Команда host використовується для запитів до DNS-серверів з метою отримання інформації про домен, такої як його IP-адреси, поштові сервери (MX-записи) та інші DNS-записи.

host html.com

Можливий Результат:

• IPv4-адреси: 104.21.64.114, 172.67.183.132

• IPv6-адреси: 2606:4700:3034::6815:4072, 2606:4700:3032::ac43:b784

• Поштовий сервер: 10 mail.html.com

Використання опції -t у команді host

Опція -t дозволяє вказати тип запису DNS для запиту. Наприклад:

1. Запит NS-записів:

host -t ns html.com

Можлива Відповідь:

• Сервери імен: sky.ns.cloudflare.com, martin.ns.cloudflare.com

Ці сервери містять інформацію про DNS-зону домену, включаючи інші записи, такі як A, MX тощо.

2. Запит MX-записів:

host -t mx html.com

Можлива відповідь:

• Поштовий сервер: 10 mail.html.com

Використання команди dig для розширених запитів

1. Запит всіх записів DNS:

Для отримання всіх доступних DNS-записів використовуйте команду:

dig asdcybersecurity.in ANY

Приклад відповіді на запит містить такі записи:

A-запис: IPv4-адреса (107.180.118.157)

NS-записи: Сервери імен (ns21.domaincontrol.com, ns22.domaincontrol.com)

SOA-запис: Адміністративна інформація про домен

MX-записи: Поштові сервери (mailstore1.secureserver.net, smtp.secureserver.net)

TXT-записи: Додаткові текстові дані, як-от верифікація Google і налаштування SPF.

Час відповіді у прикладі: 252 мс, використаний сервер: 192.168.101.1.

2. Запит авторитетних серверів імен:

Щоб знайти авторитетні сервери імен домену, скористайтеся командою:

dig asdcybersecurity.in NS

У відповіді наведено наступні дані:

NS-записи: ns21.domaincontrol.com, ns22.domaincontrol.com

Додаткова інформація: IP-адреси серверів імен (наприклад, 97.74.100.11 і 173.201.68.11)

Час відповіді: 212 мс, використаний сервер: 192.168.101.1.

Пояснення роботи з командою dig і типом запиту ANY

1. NS-запис: Вказує на авторитетні сервери імен для домену.

2. SOA-запис: Містить адміністративну інформацію про домен, включаючи сервер-джерело і серійний номер оновлення зони.

Чому використовувати тип запиту ANY?

• Це швидкий спосіб отримати всі доступні записи DNS для домену, якщо сервер дозволяє такі запити.

• Проте, багато серверів DNS обмежують запити типу ANY з міркувань безпеки. Якщо відповідь неповна, можливо, доведеться виконати окремі запити для записів типів A, MX або NS.

Приклад виконання запиту

dig @8.8.8.8 asdcybersecurity.in ANY

У відповіді наведено наступні дані:

Сервер: 8.8.8.8 (публічний сервер DNS від Google)

IPv4-адреса: 107.180.118.157

Сервери імен: ns21.domaincontrol.com, ns22.domaincontrol.com

TXT-записи: Текстова інформація, така як налаштування SPF і верифікація Google

Розуміння відповіді

Non-authoritative answer: Означає, що відповідь була отримана не безпосередньо від авторитетного сервера домену, а з кешу DNS-сервера Google.

A-запис: Містить IP-адресу сервера, до якого прив’язаний домен.

Тестування безпеки DNS: Техніки та команди

DNS може бути неправильно налаштованим, що створює можливості для атак. Тестування на проникнення допомагає виявити ці слабкі місця.

DNS-розвідка з використанням інструменту nslookup

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

1. Вказівка публічного DNS-сервера:

nslookup

> server 8.8.8.8

• Використовується публічний DNS-сервер Google (8.8.8.8).

2. Запит усіх доступних записів:

> set type=any

• Цей запит витягує всі можливі записи DNS для зазначеного домену, якщо сервер дозволяє такі запити.

Типи записів, які можуть бути отримані у відповіді:

A-запис: Вказує IPv4-адресу домену.

AAAA-запис: Вказує IPv6-адресу домену.

MX-запис: Визначає поштові сервери для домену.

TXT-запис: Містить текстові дані, такі як налаштування SPF або DKIM для електронної пошти.

Записи серверів імен (NS Records)

Записи NS вказують на авторитетні сервери імен для домену.

Приклад для asdcybersecurity.in:

ns21.domaincontrol.com

ns22.domaincontrol.com

Ці сервери належать компанії DomainControl.com (ймовірно, GoDaddy) і відповідають за управління DNS-записами домену.

SOA-запис (Start of Authority)

SOA-запис містить адміністративну інформацію про домен. Його структура виглядає наступним чином:

Origin: Основний сервер імен (ns21.domaincontrol.com).

Mail addr: Контактна адреса для питань DNS (dns.jomax.net).

Serial: Унікальний номер оновлення зони, що змінюється після кожної модифікації (2024101408).

Refresh: Час оновлення записів з основного сервера на вторинний (28800 секунд або 8 годин).

Retry: Інтервал повторної спроби у разі збою передачі зони (7200 секунд або 2 години).

Expire: Час, після якого сервер припиняє відповідати, якщо немає оновлень (604800 секунд або 7 днів).

Minimum TTL: Мінімальний час кешування записів (600 секунд або 10 хвилин).

MX-записи (Mail Exchangers)

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

Приклад для asdcybersecurity.in:

1. smtp.secureserver.net (пріоритет 0) – основний поштовий сервер.

2. mailstore1.secureserver.net (пріоритет 10) – резервний поштовий сервер.

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

TXT-записи

TXT-записи містять текстову інформацію, наприклад:

“D9954934”: Ймовірно, внутрішній ідентифікатор або токен верифікації.

“v=spf1 include:secureserver.net -all”: Це запис SPF (Sender Policy Framework), який визначає, які сервери пошти мають право надсилати електронні листи від імені цього домену. -all означає, що лише сервери з secureserver.net дозволені для надсилання листів, а інші сервери будуть відхилені.

“google-site-verification=R6PKZTOM4unab08nGWr…”: Використовується для підтвердження володіння доменом через сервіси Google (наприклад, Google Search Console).

Аналіз для тестування на проникнення

Різні записи DNS можуть надати важливу інформацію під час тестування на проникнення:

A-запис: IP-адреса може бути використана для розвідки, щоб визначити провайдера хостингу чи пов’язані сервіси.

NS-записи: Якщо сервери імен налаштовані неправильно, можна спробувати отримати всі DNS-записи через передачу зони.

SOA-запис: Електронна адреса та серійний номер можуть дати підказки щодо адміністрування DNS.

MX-записи: Можуть розкрити вразливості поштових серверів, які потенційно можна використати для фішингу чи спуфінгу.

TXT-записи: Аналіз SPF, DKIM або DMARC налаштувань допомагає ідентифікувати ризики підробки електронних листів.

Ця інформація може допомогти виявити потенційні вразливості у системі безпеки DNS.

Атака на DNS – передача зони (Zone Transfer)

Передача зони – це тип атаки, який використовує неправильно налаштовані DNS-сервери для отримання всіх записів зони домену. Це може розкрити субдомени, IP-адреси, поштові сервери та інші важливі дані.

Практичний приклад:

Як ми вже обговорювали раніше, можна використовувати команду dig для перевірки серверів імен.

Для атаки на передачу зони використовується команда:

dig axfr html.com sky.ns.cloudflare.com

• Якщо у відповіді з’являються всі записи домену, то домен є вразливим.

• Якщо передача зони не вдалася (як на скріншоті), це означає, що сервери налаштовані правильно і атака не спрацювала.

Очікуйте більше інформації!

Дякуємо за ознайомлення з темою “DNS Penetration Testing: Understanding How DNS Works and Testing Its Security”. У наступному матеріалі буде детально розглянуто різні види атак на DNS, зокрема:

1. DNS Tunneling

2. DNS Amplification

3. DNS Hijacking

4. DNS Flood Attack

5. NXDomain Attack

6. Subdomain Attack

7. DNS Cache Poisoning

8. DNS Spoofing

9. DNS Rebinding