Наверное, знают, что такое DNS и для чего нужна эта служба. Но на всякий случай давайте еще раз напомним об этом. DNS устанавливает соответствие между числовыми IP-адресами и строковыми урлами, удобными для человеческого восприятия. Таким образом, эта служба является одной из основополагающих в Интернете, нормальная работа без нее невозможна. И действительно, перед тем как открыть человеку нужный ему сайт, система устанавливает соединение с сервером DNS и получает от него требуемый для установки соединения адрес веб-сервера. К сожалению, на защиту этого обмена данными создатели Глобальной сети не обратили особого внимания. А это позволяет злоумышленникам проводить атаки на службу DNS. Целью таких воздействий может быть отправка человека или людей не на запрошенный ими веб-проект, а на другой, установленный хакером, сайт.
Ну а начать нужно с того, что все удаленные атаки на DNS делятся на две большие категории. К первой относятся, так сказать, целенаправленные воздействия. Такое название у них не случайно. Дело в том, что эти атаки нацелены на одного-единственного пользователя, то есть могут использоваться для обмана одного человека. Ко второй категории воздействий на службу DNS относятся те из них, которые можно описать словом “общая”. Целью этих атак является массовое перенаправление пользователей с одного веб-проекта на другой. К счастью, речь идет о пользователях только одного DNS-сервера. В противном случае злоумышленники могли бы полностью блокировать любые сайты, фактически запрещая к ним доступ. Но об этом мы поговорим в другой раз. Сегодня же нас будут интересовать исключительно целенаправленные атаки.
Ну а для начала необходимо немного разобраться в том, как работают DNS-серверы. Оказывается, большинство из них для общения с клиентами используют протокол UDP. Между тем в этой технологии не предусмотрено каких-либо надежных средств идентификации. Для защиты от вторжения в нем используются два специальных поля запросов и ответов — идентификатор и номер порта. Первый из них имеет постоянное начальное значение, равное единице, а второе — 1023. После этого при каждом новом запросе к DNS-серверу значение обоих полей увеличивается на единицу. Причем в некоторых операционных системах (Windows 9x, многие версии Linux) идентификатор вообще не изменяется, оставаясь всегда равным первоначальному значению.
Подмена сервера путем перехвата DNS-запросов
Эту атаку часто называют “тепличным” или “лабораторным” воздействием. Дело в том, что она основана на перехвате злоумышленником DNS-запросов жертвы, а это возможно только в том случае, если компьютер хакера находится на пути основного трафика или размещен в сегменте DNS-сервера. Как вы сами понимаете, добиться этого достаточно сложно. Тем не менее эта атака иногда используется на практике, а кроме того, позволяет прекрасно проиллюстрировать беззащитность службы DNS.
Атака начинается с отправкой системой пользователя первого DNS-запроса. Злоумышленник перехватывает этот пакет и отвечает жертве, представляясь сервером. В принципе этот почти ответ ничем не отличается от настоящего, вот только вместо реального IP-адреса в нем указаны данные компьютера злоумышленника. Ну а дальше все очень просто. Теперь ПК жертвы будет отправлять все DNS-запросы хакеру. Последнему же нужно только заменить в этих запросах IP-адрес на собственный, переслать их настоящему серверу и получить от него ответ. В этом ответе адрес DNS-сервера меняется на адрес хакера, после чего информация отправляется жертве.
Все, система для атаки готова. Теперь компьютер жертвы считает ПК хакера DNS-сервером и отправляет все запросы ему. Ну а для настоящего сервера машина злоумышленника является обычным клиентом, работа с которым идет в плановом режиме. То есть компьютер хакера становится своеобразным посредником. И если он будет просто передавать пакеты, меняя лишь IP-адреса отправителя и получателя, то пользователь ничего не заметит. Проблемы начнутся тогда, когда хакер перейдет к активным действиям. Для этого ему нужно сделать только одно — заменить в ответе DNS-сервера IP-адрес какого-либо сайта на любой другой. Причем он может делать это во всех запросах, а может только в избранных, запрещая пользователю доступ к каким-либо веб-проектам.
Ну а теперь давайте посмотрим, как все это выглядит со стороны атакуемого пользователя. Он вводит адрес нужного ему сайта, но попадает при этом на совершенно другую страницу. Причем в строке браузера будет стоять именно тот адрес, который он вводил. Человек может сколько угодно перенабирать его или обновлять страницу — все равно ничего не изменится. И наверняка 99 человек из 100 решат, что либо по введенному адресу размещается теперь другой сайт, либо просто веб-проект был атакован и изменен хакерами. И практически никто из них не подумает, что атаке могли подвергнуться они сами, в то время как все остальные пользователи работают с веб-проектом в обычном режиме. В этом и заключается одна из самых главных опасностей хакерских воздействий на службу DNS.
Подмена сервера путем создания шторма ложных ответов
Атаки этого типа реализуются на практике чаще, чем перехват запросов. Дело в том, что они могут организовываться из любой точки Глобальной сети без каких-либо дополнительных условий. Естественно, это привлекает к себе внимание хакеров. Но давайте подробно разберемся, что означает шторм ложных ответов.
Вообще-то, ничего сложного в этой атаке нет, суть ее очень проста. Хакер не перехватывает никакие запросы, он просто постоянно отправляет на компьютер жертвы ложные пакеты, имитирующие ответы DNS-сервера. В подавляющем большинстве случаев они просто игнорируются. Но если пользователь отправит запрос на DNS-сервер, то один из ложных ответов, которые он постоянно получает, воспримется как верный. А это значит, что интернетчик попадет не на тот сайт, который ему был нужен.
Для того чтобы система приняла ложный ответ в качестве настоящего, необходимо выполнение четырех условий. Во-первых, IP-адрес отправителя информации должен совпадать с IP-адресом сервера. Впрочем, выполнить это условие проще простого. Во-вторых, в запросе и ответе должны совпадать имена запрашиваемого сайта. Выполнить это немного сложнее. Впрочем, злоумышленник может перед атакой немного понаблюдать за жертвой и выяснить, какие сайты она чаще всего посещает. Или можно сделать так: воспользоваться адресом поисковой системы “Яндекс”, которую, если верить статистике, посещают более половины всех российских интернетчиков. В общем, выполнение первых двух условий не составит для грамотного злоумышленника никакого труда.
Третье условие заключается в необходимости совпадения идентификаторов запроса и ответа. Ну а поскольку злоумышленник ничего не перехватывает, то знать этот параметр он не может. И это действительно так. Вот только мы с вами, уважаемые читатели, уже говорили, что значение идентификатора изменяется в достаточно узких пределах (первоначальное значение равно единице, а потом оно увеличивается на один с каждым новым запросом). Таким образом, злоумышленнику достаточно отправить не более нескольких десятков ложных ответов, чтобы хоть один из них обладал нужным идентификатором. Похожим образом обстоят дела и с четвертым условием. Им является необходимость совпадения портов отправления запроса и получения ответов. Хакер не может знать эту информацию. Но она опять же изменяется в небольших пределах (начинает с 1023 и увеличивается на единицу с каждым запросом). То есть получается, что рассмотренная атака на службу DNS выполняется с помощью обычного перебора. Именно поэтому и используется шторм ложных ответов, каждый из которых содержит отличный от других набор значений идентификатора и порта. Кроме того, постоянная бомбардировка компьютера жертвы гарантирует, что последний получит ложный ответ раньше настоящего, присланного реальным DNS-сервером.
Дыры в программном обеспечении
Когда речь заходит об атаках через Интернет, то большинство людей тут же вспоминают различные сложные технологии, с помощью которых хакеры могут воздействовать на компьютеры жертвы. Между тем самыми, пожалуй, распространенными возможностями, используемыми злоумышленниками, являются дыры в программном обеспечении. Причем это верно как для пользовательских компьютеров, так и для всевозможных серверов. Не являются исключением из этого правила и DNS-серверы. Впрочем, используемое на них программное обеспечение весьма специфично, так что информация о его уязвимостях доступна далеко не всем. Тем не менее, хорошо покопавшись в Интернете, любой человек сможет найти описание этих дыр.
Причем за примерами использования уязвимостей в программном обеспечении DNS-серверов далеко ходить не нужно. В 1996 году неизвестный хакер смог немного “подправить” базу данных московского провайдера “Роснет”. Эта история получила широкую огласку и привлекла к себе внимание журналистов. Провайдеру даже пришлось устраивать специальную пресс-конференцию, посвященную данному инциденту. Кстати, пострадавшей стороной тогда оказался крупный информационный проект (его адрес так и не был озвучен), все посетители которого были перенаправлены на другой сайт. Так что атаки, использующие дыры в программном обеспечении, являются, во-первых, весьма опасными, а во-вторых, простыми в исполнении.
Обман сервера путем создания шторма ложных ответов
Наверняка внимательные читатели обратили внимание на сходство названия этой атаки и наименования одного из целенаправленных воздействий. И они правы. Похожи не только названия, но и принцип действия этих атак. Впрочем, есть между ними и некоторые отличия. Какие? Чтобы разобраться в этом вопросе, необходимо рассмотреть принцип работы DNS-серверов.
Итак, клиент отправляет DNS-серверу запрос на получение информации. В том случае если последний найдет подходящую запись в своей базе, он отправит обратно ответ с данными. Иначе же DNS-серверу придется обращаться к вышестоящему (служба DNS имеет иерархическую структуру) серверу. И так повторяется до тех пор, пока затребованный пользователем адрес не будет обнаружен или пока система не решит, что его вообще нет ни в одном списке. Причем в первом случае информация будет спущена по цепочке до конечного пользователя. А каждый DNS-сервер на ее пути добавит соответствующую запись в собственную базу данных. То есть такой сложный процесс поиска данного адреса повторяться уже не будет. Просто при всех будущих обращениях DNS-серверы будут брать данные из своей базы.
Если внимательно приглядеться к описанной схеме работы, то становится видна одна возможность создания в базе данных DNS-сервера ложной записи. Речь идет вот о чем. Если в ответ на запрос сервера (к своему вышестоящему серверу) послать ответ с ложной информацией, причем сделать это раньше, чем придут настоящие данные, то в базу будет занесен неверный адрес. Вот только как это можно реализовать на практике? А вот для этого необходимо разобраться в протоколе, согласно которому DNS-серверы взаимодействуют между собой. Собственно говоря, мы о нем уже говорили в первой части статьи. Да-да, уважаемые читатели, DNS-серверы тоже общаются между собой по протоколу UDP. Впрочем, есть у этого взаимодействия одна особенность. Оказывается, DNS-серверы всегда передают информацию через фиксированный порт 53.
В общем, получается, что DNS-серверы обмениваются информацией практически так же, как конечный DNS-сервер и его пользователь. Впрочем, это не значит, что они подвержены тем же самым атакам. По крайне мере, одного воздействия можно не опасаться: речь идет о перехвате DNS-запросов. И действительно, для осуществления этой атаки нужно, чтобы компьютер хакера находился на пути основного трафика или размещался в сегменте вышестоящего сервера. Как вы сами понимаете, добиться этого практически нереально. Так что на долю злоумышленников остается только одна атака, основанная на бомбардировке жертвы множеством ложных ответов. Давайте разберем ее реализацию немного подробнее.
Сначала хакер отправляет DNS-серверу запрос с каким-либо редким адресом, которого нет в базе данных сервера. После этого он тут же начинает бомбардировать его ложными ответами. При этом злоумышленнику должны быть известны следующие вещи: IP-адрес* вышестоящего сервера (узнать его несложно), адрес запрашиваемого сайта (он и так известен), номер порта (это значение всегда равно 53) и идентификатор. Как вы сами видите, проблемы возникают только с последним параметром. Дело в том, что первоначально он равен единице, а при каждом запросе увеличивается еще на один. То есть хакер не может даже приблизительно знать, какое значение имеет идентификатор. Впрочем, это и не нужно. Дело в том, что поле, отведенное под идентификатор, имеет длину два байта. То есть его значение может изменяться только в ограниченных пределах. И злоумышленнику остается сразу же после запроса отправить на сервер шторм ложных ответов с разными идентификаторами.
Последствия удачной атаки очевидны. В базе данных DNS-сервера появится ложная запись, из-за которой все, кто запросит у него IP-адрес взломанного сайта, будут перенаправлены на другую страницу. Впрочем, не все так плохо. Дело в том, что ложные записи могут быть внесены только для тех сайтов, информации о которых еще не было в базе данных DNS-сервера. А это значит, что ни один часто посещаемый веб-проект не может быть подменен злоумышленниками.
Подводим итоги
Наверное, никому не стоит объяснять, что DNS является основополагающей службой Интернета. И атаки на нее могут привести к весьма и весьма неприятным последствиям. Между тем защищена она чрезвычайно слабо. Большинство уязвимостей появились из-за использования протокола UDP. В плане защиты гораздо привлекательней другая технология, TCP. В ней реализованы механизмы идентификации и создания виртуальных каналов, которые могут серьезно осложнить жизнь хакерам. Именно поэтому сегодня наблюдается тенденция перевода DNS-серверов на работу по протоколу TCP (а это вполне возможно). К сожалению, этот процесс идет очень медленно и, скорее всего, в ближайшее время вряд ли ускорится.
Автор: Марат Давлетханов
Взято с .hostinfo
One Comment