Глава 13. Безопасность DNS

В своей предыдущей главе мы изучили различные протоколы маршрутизации, поток сетевого обмена и распространённые атаки. Данная глава обсуждает иной, но очень интересный и важный сетевой протокол - DNS (Domain Name System), очень знакомый термин для команд IT (Information Technology ), поскольку они имеют дело с задачами DNS в своей повседневной жизни.

Технология DNS возникла в начале 80-х, когда пользователям стало очень сложно запоминать адреса IP (Internet Protocol ). В те времена сопоставление доменных имён со всяким IP адресом добавлялось в файл hosts, но сопровождать все записи в этом файле было очень сложно , так как он рос с каждым днём. Таким образом, был выявлен централизованный динамический подход, носящий название DNS, о котором мы и узнаем в данной главе.

Данная глава начинается с объяснения самого протокола DNS, того как работает протокол DNS, различных лазеек и мер противодействия, которые могут реализовываться для создания безопасности самого протокола DNS от различных атак.

В этой главе мы рассмотрим следующие основные темы:

  • Собственно протокол DNS, его поведение и структуру данных

  • Выявление атак на DNS - средства и анализ

  • Ресурсы атак на DNS - затопление DNS, записи NX и подчинённые домены

  • Атаки на службу - прослушивание домена и его угон, либо отравление кэша

  • Применение DNS для обхода сетевого контроля - туннелирование DNS

  • Защиту DNS

Протокол, поведение и структура данных DNS

В данном разделе мы глубоко обсудим архитектуру DNS, собственно функционирование протокола DNS, различные типы серверов и служб DNS, а также общедоступные и частные серверы DNS. Итак, давайте разберёмся с тем что представляет из себя DNS и как он работает.

Протокол DNS

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

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

Далее, нам известно, что Интернет гигантский, а следовательно централизованная поддержка практически нереальна. Таким образом, эти записи и далее подразделяются на пространства имён меньшего размера с названием зон DNS, которые сопровождаются и управляются организациями.

Итак, давайте разберёмся как работает DNS.

Давайте запросим соответствующую запись DNS для google.com, воспользовавшись утилитой nslookup, как это показано на следующем снимке экрана:

 

Рисунок 13.1


Записи DNS

Теперь, раз наш пользователь выполнил запрос для искомой записи DNS, DNS resolver в нашей системе отыщет эту запись DNS чтобы выполнить выборку IP адреса из имеющегося в его системе локального кэша; когда её там нет, он запросит свой сервер DNS, обычно предоставляемый его ISP (Internet Service Provider, поставщиком интернет услуг) выполнить проверку для любого элемента записи DNS.

Если тот всё ещё не отыщет искомый IP адрес, он в цикле пройдётся по множеству серверов DNS в поиске такого IP адреса и как только обнаружит соответствующее этому доменному имени значение IP адреса, вернётся к своему пользователю со значением этого IP адреса и создаст в локальном кэше запись с неким значением TTL (Time to Live, времени жизни). Весь этот процесс носит название рекурсивного поиска DNS.

Приводимый ниже снимок экрана при помощи Wireshark отображает как выглядят запросы DNS в сетевой среде:

 

Рисунок 13.2


Протокол DNS в Wireshark

На нашем предыдущем рисунке возвращаются две различные записи, A и AAAA, причём A возвращается для IPv4, а AAAA возвращается для IPv6.

Теперь мы разобрались с тем что представляет собой протокол DNS и как он выглядит в своём формате пакетов. Давайте теперь поймём собственно структуру и поведение протокола DNS, как он применяет рекурсивные или итеративные методы для разрешения DNS и чем представлены его основные компоненты и структура.

Поведение и структура данных DNS

Теперь, как мы понимаем по своему предыдущему разделу, для разрешения значений доменных имён осуществляется рекурсивный метод поиска DNS, однако как всё это происходит на уровне Интернета? Что представляют собой ключевые компоненты, которые включены в весь этот поиск? Для ответа на эти вопросы, давайте сначала разберёмся со структурой DNS.

DNS работает основываясь на принципе распределённых ответственностей для различных серверов имён, которые играют ключевую роль в разрешении доменных имён. Далее, мы осознаём что Интернет гигантский и сопровождение списка доменов практически не реально для одного сервера. Следовательно, мы следуем подобной дереву иерархической структуре, в которой необходимые ответственности распределены для каждого узла, а сама структура представлена в виде растущего сверху вниз дерева. Сам протокол DNS обычно работает со службой UDP (User Datagram Protocol) и портом 53.

Такая растущая сверху вниз древовидная иерархическая структура представлена корневым сервером имён (root nameserver) в своей вершине, множеством таких компонентов как сервер имён домена верхнего уровня и авторизованными серверами имён в промежутке, а внизу сами листья представляют законченные доменные имена. Однако перед этим, давайте вначале поделим свой домен чтобы разобраться с общей структурой DNS.

Домен составляется из множества параметров; давайте осознаем это на неком образце. Допустим, существует полное доменное имя с названием test.domain.com, в котором test это один логический элемент, значение domain это другая отдельная запись, а com иной логический элемент. Все вместе они составляют общее доменное имя.

Итак, на текущий момент мы разобрались со структурой DNS и давайте поймём как всё это составляется откликается на соответствующие запросы DNS:

 

Рисунок 13.3


Работа протокола DNS

Как показано на Рисунке 13.3, весь протокол DNS составлен из этих четырёх ключевых компонентов, которые помогают вычислительным системам разрешать доменные мена в IP адреса. Итак, для начала, давайте разберёмся с этими ключевыми составляющими:

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

  • Корневой сервер имён (Root nameserver): Это головной элемент всего растущего сверху вниз дерева, показанного на Рисунке 13.3, и он отвечает за получаемые от своих преобразователей DNS запросов DNS и отсылает их обратно этим преобразователям DNS. Основное задание корневых серверов имён состоит не в разрешении доменных имён, а вместо этого откликаться перечнем авторизованных серверов имён, подключённых к самим корневым серверам имён. Когда он получает значение IP адреса, он откликается соответствующему преобразователю DNS. В общей сложности имеются представленными во всём мире 13 корневых серверов имён. Для получения дополнительных сведений относительно корневых серверов имён, пожалуйста, обратитесь к этой ссылке.

  • Сервер имён домена верхнего уровня: Это второй сверху уровень сервеов домена, который отслеживает значения записей всех суффиксов вебсайтов, таких как .com, edu, .in и .org. После того как получен некий запрос от корневого сервера имён, он проверяется на значение суффикса и передаётся соответствующий запрос на поиск значения записи доменного имени для соответствующих авторизованных серверов имён. Как только он получает необходимый отклик от своего авторизованного сервера имён, он отправляет этот запрос обратно корневому серверу имён.

  • Авторизованный сервер имён: Это окончательная остановка для всех получаемых запросов DNS, поскольку они содержат значения IP адреса соответствующего доменного имени. Все имеющиеся записи DNS хранятся при помощи соответствующего авторизованного сервера имён или таких соединённых во множество серверов имён, если значение IP адреса для запрошенного домена отсутствует в его кэше. Как только он получает значение IP адреса, он отправляет этот запрос обратно в сервер имён верхнего уровня.

Теперь давайте разберёмся со всеми этими компонентами DNS при помощи примера. Допустим, пользователь желает открыть test.xyz.in; потребуется преодолеть такой процесс:

  1. Данный запрос DNS стартует когда пользователь набирает значение домена (test.xyz.in) в адресной строке своего браузера.

  2. Имеющийся преобразователь DNS сначала проверяет на наличие соответствующей записи DNS в своём локальном кэше DNS. Если он не обнаруживает ей в своём локальном кэше DNS, он переправляет данный запрос своему поставщику интернет услуг (ISP).

  3. Когда такой ISP получает данный запрос, он проверяет такой запрос DNS на присутствие необходимой доменной записи в своём кэше, а если она отсутствует там, он отправляет данный запрос корневому серверу имён.

  4. Когда корневой сервер имён получает запрос для значения DNS, он выполняет проверку и отправляет такой запрос серверу имён домена верхнего уровня.

  5. Как только сервер имён домена верхнего уровня получает этот запрос DNS, он проверяет значение суффикса (в данном случае, .in) и отправляет его соответствующему Индийскому авторизованному серверу имён.

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

  7. Раз преобразователь DNS получает значение IP адреса, он создаёт запись DNS в своём локальном кэше DNS, а потому, когда тот же самый DNS запрошен снова, этот преобразователь DNS автоматически загрузит его значением IP адреса и данная веб страница будет быстро открыта.

Весь это процесс носит название рекурсивного поиска DNS. Поэтому давайте изучим основное отличие между общедоступным DNS и частным DNS:

  • Общедоступный DNS: Это означает, что конкретный DNS доступен всем пользователям Интернета, например, https://www.google.com

  • Частный DNS: Подразумевает, что специфический DNS доступен только для частной организации, скажем, https://www.private-org.com. Это домен не доступен для всех пользователей в Интернете - а лишь для пользователей в этой организации. Следовательно, его запись DNS будет представлена только в кэше DNS самой организации.

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

Обнаружение атак DNS - инструменты и анализ

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

Для изучения ВТЫ мы будем следовать тем же самым подходом тестирования проникновения:

  • Перечисление DNS

  • Сканирование уязвимостей

Перебор DNS

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

Теперь нам известно что DNS работает по порту 53; следовательно, мы в основном сосредоточимся только на этом порту.

 

Выявление записей имён

Давайте с помощью утилит nslookup или dig отыщем все имеющиеся записи доменныз имён, как это отражено на снимке экрана ниже:

 

Рисунок 13.4


Записи DNS

Наш предыдущий рисунок выставляет полные сведения сервера имён о домене google.com. Выставление всех сведений целиком здесь не представляется возможным; следовательно, оставляем вам это для ваших практических лабораторных занятий.

 

Захват баннера

Для получения баннера DNS в diag доступен запрос version.bind, а в инструменте NMAP (Network Mapper) --script=dns.nsid, как это показано на следующем снимке экрана:

 

Рисунок 13.5


Захват баннера DNS

Теперь, когда мы успешно захватили заголовок, давайте окунёмся глубже и получим все подчинённые домены.

 

Выявление записей имён серверов и соответствующих поддоменов

Очень важно глубоко выявлять все имеющиеся записи подчинённых доменов и серверов имён. Этого можно достичь при помощи присутствующей в Kali Linux утилиты fierce, как это показано на следующем снимке экрана:

 

Рисунок 13.6


Записи имён серверов и подчинённых доменов

[Замечание]Замечание

Существуют и две другие важные утилиты, dnsrecon и dnsemum, которые мы применяем в соей повседневной активности тестирования проникновения и их мы также рекомендуем в практике использования.

Теперь мы успешно перечислили весь необходимый объём сведений для выполнения сканирования имеющихся уязвимостей.

Сканирование уязвимостей

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

 

Рисунок 13.7


Запуск всех сценариев DNS

Как показано на Рисунке 13.7, включены все имеющиеся сценарии DNS и весь необходимый объём относящихся к уязвимостям сведений в этом сервере DNS будут выведены дампом на экран. Итак, давайте обсудим все уязвимости по одной.

 

DNSSEC

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

 

Рисунок 13.8


NSEC3 DNSSEC не поддерживается

Как видно из Рисунка 13.8, очевидно что наша текущая архитектура не поддерживает DNSSEC NSEC3. Давайте проследуем к следующей очень занимательной уязвимости с названием вынюхивания кэша DNS.

 

Вынюхивание кэша DNS

Прослушивание кэша DNS это атака, которая запрашивает имеются ли кэшированными в серверах DNS определённые домена или нет. Эта атака обычно выявляется в нижней категории раскрытия сведений, однако в промышленных средах такой запрос может оказаться очень полезным, ибо он определяет какие сайты посещаются чаще всего. На идущем далее снимке экрана отражены кэшированные в сервере имён Google сайты:

 

Рисунок 13.9


Кэшированные домены DNS

Теперь, когда мы выявили все кэшированные домены, мы можем вручную снабдить своими идентичными поддельными сайтами для выполнения отравления кэша DNS, что мы и обсудим далее в главе.

 

Простой перебор

Атака простым перебором (brute-force) осуществляется для раскрытия скрытых доменов, которые не обнаружены в непосредственном поиске механизмами поиска, однако доступны через непосредственный URL доступ. Данная атака оказывается очень удобной в процессе упражнений красной команды. Приводимый ниже снимок экрана отображает такой обнаруженный домен:

 

Рисунок 13.10


Кэшированные домены DNS

Как мы видим ни Рисунке 13.10, может оказаться, что некоторые домены могут оказываться недоступными потому как мы выполняем поиск простым перечислением DNS и их записи могли бы присутствовать в данном кэше DNS ранее. Таким образом, нам необходимо отфильтровать такие домена на этапе атаки.

В настоящее время мы лишь выявили такие уязвимости через утилиту NMAP, однако поощряем вас изучать это вопрос также и далее при помощи сканирования уязвимостей при помощи Nessus.

 

Передача зоны DNS

Серверы DNS содержат некий файл зоны, который обладает поставленными в соответствие записями DNS для репликации того же самого во всём домене. В качестве рекомендации безопасности, эти серверы DNS настроены таким образом, чтобы можно было реплицировать только необходимые ресурсы записей этого файла зоны.

Однако зачастую в организациях серверы DNS не настроены должным образом, оставляя открытыми злоумышленникам потайные ходы для считывания и доступа ко всем записям файла зоны. Таким образом, для того чтобы осуществить это, существует доступными великое множество средств, например, dig, host, dnsrecon и dnsenum, тем не менее, для демонстрационных целей мы оставим всё по- простому и воспользуемся утилитой host, из Kali Linux. Приводимый следом снимок экрана отображает присутствующие в нашем целевом домене серверы имён:

 

Рисунок 13.11


Серверы имён

Как мы наблюдаем на Рисунке 13.11, в нашем целевом домене имеются в наличии два сервера имён. Давайте закрепимся на одном из этих двух серверов и снова воспользуемся средством host для выделения записей его файла зоны, как это показано на снимке экрана ниже:

 

Рисунок 13.12


Сведения файла зоны DNS

Как видно из Рисунке 13.12, наш сервер DNS не настроен должным образом, а следовательно злоумышленник обладает возможностью полностью выделить записи файла зоны и затем воспользоваться ими для формирования атак в данной сетевой среде.

На данный момент мы успешно собрали правильный объём сведений и приступили к выявлению уязвимостей при помощи разнообразных средств, давайте теперь перейдём к следующему разделу и проверим как мы можем компрометировать конечных пользователей или серверы DNS с применением таких лазеек.

Атаки на ресурсы DNS - наводнение DNS, записи NX и подчинённые домены

В данном разделе мы попробуем продемонстрировать различные атаки DoS (Denial of Service) и DDoS (Distributed Denial of Service), при которых злоумышленник отправляет запросы DNS для увеличения загруженности сервера или вызывает более поздний отклик службы, а то и вовсе отсутствие оного для подключённых к домену пользователей. Этого можно достигать при помощи множества уровней атак DNS, таких как наводнение DNS или при помощи атак роста DNS.

Атаки записи NX

При данной атаке злоумышленник начинает отправлять поддельные (задаваемый случайном образом) запросы домена, указывая значения доменов- жертв, а следовательно преобразователь DNS начнёт разрешение такого запроса путём выработки запросов DNS в сторону нашего сервера- жертвы DNS.

Давайте попытаемся разобраться с этим при помощи небольшой схемы, которая показана ниже:

 

Рисунок 13.13


Атака DoS на записи NX

Итак, теперь мы разобрались с атакой DoS на имеющиеся записи NX. Сейчас давайте взглянем на DoS атаку DNS на практике, как это отражено на идущем следом снимке экрана:

 

Рисунок 13.14


Демонстрация атаки на записи NX

Как показано на Рисунке 13.14, наш злоумышленник отправляет поддельные и случайные записи подчинённых доменов жертв, а преобразователь DNS запрашивает свои авторизованные серверы, которые пытаются осуществить со своей стороны разрешение, что задерживает соответствующий отклик и вызывает отказ данной службы DNS.

[Замечание]Замечание

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

Далее давайте перейдём к следующей категории атак, носящих название затопления DNS или атак усиления DNS, которые более опасны и активны в наши дни. Большинство глобальных организаций сталкиваются с этой атакой на повседневной основе.

Наводнение DNS

Атака наводнения DNS это симметричная DDoS атака, при которой злоумышленник истощает ресурсы машины сервера DNS, такие как загруженность ЦПУ, через отправку гигантского числа запросов UDP по множеству каналов, именуемых ботнетами. Значения числа и размера запросов настолько интенсивные, что средства авторизованного сервера DNS прекращают работу, а если какие- то прочие пользователи пробуют разрешить какой бы то ни было домен, они никогда не получат отклик. Следующий снимок экрана демонстрирует атаку затопления DNS:

 

Рисунок 13.15


Атака наводнением DNS

Как отражено на на предыдущем рисунке, после того как злоумышленник приступает к отправке числа N запросов DNS, вскорости наш авторизованный сервер имён перестаёт откликаться.

Ускорение DNS (DNS amplification) это асимметричная атака, при которой целью выступает её жертва. Злоумышленник подделывает IP адрес жертвы и приступает к запросам открытых серверов DNS, а как только преобразователь DNS получает такие запросы, он начинает отвечать на IP адрес поддельной жертвы. Такие запросы DNS настолько велики и интенсивны, что имеющаяся сетевая инфраструктура жертвы вскоре перестаёт отвечать на запросы и переходит в режим DoS. Следующий снимок экрана показывает атаку усиления DNS.

 

Рисунок 13.16


Атака усиления DNS

Как видно из предыдущего рисунка, для осуществления атаки ускорения DNS имеются доступными в Интернете разнообразные инструменты и сценарии. Для целей демонстрации мы воспользуемся написанном на Python сценарием Bash Scapy, который свободно доступен для целей тестирования на GitHub. Следующий снимок экрана демонстрирует атаку усилением DNS:

 

Рисунок 13.17


Демонстрация атаки увеличением DNS

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

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

Атаки на службу - перехват и угон домена или отравление кэша

Подмена домена (Domain spoofing), обычно именуемая подменой DNS, а также носящая название отправления кэша DNS, это методика, при которой злоумышленник заменяет записи DNS для перенаправления сетевого обмена к вредоносному вебсайту фишинга, который выглядит как первоначальный вебсайт, с целью сбора учётных данных, конфиденциальных сведений и тому подобного.

Итак, как же работает атака подмены DNS в среде реальной практики? Давайте разберёмся с основами данной атаки при помощи простой схемы, которая отображена на следующем рисунке:

 

Рисунок 13.18


Имитация DNS

Давайте тщательно рассмотрим свой предыдущий рисунок следующим образом:

  1. Злоумышленник внедряет запись DNS поддельного вредоносного вебсайта в атакуемый сервер DNS.

  2. Наша жертва открывает свой первоначальный вебсайт (домен).

  3. Имеющийся преобразователь DNS проверяет значение доменного имени в своём кэше и разрешает его такой фальшивой записью DNS.

  4. Раз этот домен получил разрешение, наша жертва будет перенаправлена в соответствующий поддельный домен.

Теперь, когда мы разобрались с подменой DNS, давайте осуществим подделку DNS при помощи инструментария Ettercap:

  1. Откройте файл etter.dns и введите необходимые поддельные записи домена, как это показано на снимке экрана ниже:

     

    Рисунок 13.19


    Поддельные записи DNS в файле etter.dns

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

  2. Откройте средство Ettercap и выберите подключаемый модуль dns_spoof, как это далее показано на снимке экрана:

     

    Рисунок 13.20


    Подключаемый модуль dns_spoof

    Как мы видим из предыдущего рисунка, наш подключаемый модуль dns_spoof включён и теперь все наши домены и подчинённые домены с google.com перенаправляются на поддельный вебсайт нашего злоумышленника.

  3. Выполните эту атаку. Идущий следом снимок экрана показывает, что наш подключаемый модуль dns_spoof запустился и пользователь перенаправлен к поддельному вебсайту:

     

    Рисунок 13.21


    Активированная имитация DNS

Мы можем наблюдать, что искомый вебсайт (www.google.com) не подменён нашим вебсайтом, а жертва перенаправлена на фальшивый вебсайт, размещённый по портам 80 и 443:

 

Рисунок 13.22


Перенаправляемый на поддельную страницу google.com

[Замечание]Замечание

Согласно моей практике работы в красной команде, такие площадки как facebook.com защищены от подобных атак, однако во внутренних сетевых средах, при размещении фальшивого домена, подмена возможна.

Теперь, когда мы разобрались с подменой и угоном DNS, давайте перейдём к другой весьма увлекательной атаке, имеющей название туннелирования DNS, которая во все времена была фаворитом злоумышленников и оказывается очень полезной при эксфильтрации, поскольку позволяет избегать SOC (Security Operations Centers, центров управления безопасностью) и мониторинга межсетевых экранов.

Применение DNS для обхода сетевого контроля - туннелирование DNS

Зачастую в организациях не разрешён исходящий доступ или же он допускается исключительно через HTTPS сквозь серверы посредников (прокси). Однако вне зависимости от того насколько строго настроены правила межсетевого экрана и ACL (Access Control Lists, списки контроля доступа), запросы DNS обычно допускаются через установленные межсетевые экраны. Злоумышленники могут злоупотреблять такими неверно настроенными правилами службы DNS создавая туннель непосредственно через скомпрометированные рабочие станции или серверы для эксфильтрации конфиденциальных сведений в свои серверы, размещаемые вовне в Интернете.

Данный подход аналогичен иным туннелируемым протоколам, таким как HTTP, HTTPS, TCP и тому подобным, однако в данной ситуации таким протоколом выступает DNS, а устанавливаемый канал это UDP.

Для создания туннеля нам требуется некий обработчик и сервер DNS для взаимодействия из внутренней сети организации, а также эксфильтрация доброй порции данных, причём без утраты единичных пакетов по причине перегрузок или разрывов соединений между ними и при этом без своего обнаружения. Для этого имеется доступными большое число средств, но мы обычно пользуемся в своей деятельности тестирования на проникновение DNSCAT.

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

 

Рисунок 13.23


Туннель DNS

Как мы видим из своего предыдущего рисунка, для создания DNS туннеля были выполнены следующие шаги:

  1. Злоумышленник открывает извне или внутренним образом имеющийся сервер DNS.

  2. Контролирующий внутри данной организации машину злоумышленник открывает необходимый туннель из этой машины, соединяясь с сервером DNS вне данной организации, тем самым обходя контроль имеющегося межсетевого экрана.

Давайте продемонстрируем туннелирование DNS при помощи DNSCAT:

  1. При помощи DNSCAT создаём сервер DNS, как это показано ниже на снимке экрана:

     

    Рисунок 13.24


    Поднятый и исполняемый сервер DNS

    Теперь, раз необходимый сервер DNS запущен, давайте откроем клиента DNS с портом 53 и создадим туннель.

  2. Открываем оболочку DNS в другой машине, как это отображено на снимке экрана далее:

     

    Рисунок 13.25


    Открытая и подключённая к серверу DNS оболочка DNS

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

  3. Когда необходимый сеанс установлен, давайте сбросим оболочку и эксфильтрацию данных в туннелированной скомпрометированной машине, как показано на нашем следующем снимке экрана:

     

    Рисунок 13.26


    Эксфильтрация данных

    Все показанные на предыдущем рисунке данные успешно выгружены и записаны в файл на стороне нашего сервера:

     

    Рисунок 13.27


    Успешная эксфильтрация данных

Как отчётливо видно из предыдущего рисунка, все данные были успешно записаны в обычном текстовом формате.

[Замечание]Замечание

Согласно моему опыту работы в красной команде, туннелирование DNS это один из наиболее точных и самых сложных для обнаружения методов эксфильтрации данных во внешние серверы. Однажды моя команда работала над тестированием на проникновение в беспроводную сетевую среду и выявила открытую сеть Wi-Fi, но без соединения с Интернетом. После ряда попыток мы определили, что наши запросы к серверу имён каким- то образом разрешаются; следовательно, мы немедленно открыли свой сервер DNS, создали туннель из неверно настроенного DNS и продемонстрировали эксфильтрацию. В Интернете доступны и прочие средства; мы предлагаем попробовать их и попрактиковаться с ними.

На данный момент мы рассмотрели наихудшие эффекты неверных настроек служб DNS и давайте сосредоточимся на том как защищать наш сервер DNS от атак.

Защита DNS

В наши дни очень важна защита DNS, ибо атаки на серверы DNS очень распространены. Даже NSA (National Security Agency, Национальное агентство безопасности) осознало, что неверно настроенная служба DNS очень опасна и может оставлять для злоумышленников открытую дверь, вызывая потенциальную утрату конфиденциальных сведений. Таким образом, ниже мы приводим некоторые реализации, которые способны защищать от атак сервер DNS:

  • Реализуйте надлежащим образом DNSSEC, который поможет администраторам защищать серверы DNS от атак кэширования и отравления. За дополнительными сведениями по его реализации, пожалуйста, проследуйте на следующую ссылку.

  • Ограничивайте взаимодействия своего сервера DNS во избежание туннелирования DNS из машины жертвы во внешнюю сетевую среду.

  • Регистрируйте и отслеживайте неверные запросы и отклики DNS, в особенности в случае вновь создаваемого повсеместного соединения DNS.

  • Укрепляйте рекурсивные серверы DNS, в особенности в отношении кэширования домена.

Выводы

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

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

Вопросы

  1. Как правильно определяется DNS?

    1. Domain Name Server

    2. Domain Name System

    3. Domain Name Service

    4. Ни одно из перечисленных

  2. Как ещё именуется подмена DNS?

    1. Туннелирование DNS

    2. Отравление кэша DNS

    3. Фантомная атака

    4. Всё перечисленное

  3. Как называется атака, аналогичная имеющим категорию записей NX?

    1. Угон DNS

    2. Атака удушения DNS

    3. Фантомная атака

    4. Атака туннелирования DNS

  4. Для защиты от чего применяется DNSSEC?

    1. Угона DNS

    2. Отравления кэша

    3. Подделки DNS

    4. Всего предыдущего

  5. Какой инструмент применяется для туннелирования DNS?

    1. DNSCAT2

    2. Metasploit

    3. NMAP

    4. Ни один из перечисленных

  6. Что содержит файл зоны?

    1. Записи хостов

    2. Записи DNS

    3. Записи www

    4. Записи пользователей