Защита и нападение посредством протокола TCP
Страница 3

Для того чтобы ложный ответ был воспринят сервером ns.victim.com как истинный, достаточно выполнения четырех условий:

IP адрес отправителя ответа должен соответствовать IP-адресу запрашиваемого сервера (в нашем случае ns.coolsite.com);

UDP-порт, на который направляется ответ, должен совпадать с портом, с которого был послан запрос;

идентификатор ответа должен совпадать с идентификатором запроса;

ответ должен содержать запрашиваемую информацию (в данном случае IP-адрес web-сервера www.coolsite.com).

Очевидно, что выполнение первого и четвертого условий не представляет для атакующего особых трудностей. Со вторым и третьим условиями ситуация намного сложнее, поскольку в случае межсегментной атаки у атакующего нет возможности перехватить исходный запрос и «подсмотреть» необходимые параметры.

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

Идентификатор (id) запроса представляет собой двухбайтовое число, указываемое сервером в запросе с целью однозначной идентификации ответа на данный запрос. Это число инкрементируется с каждым новым запросом. Незнание текущего значения идентификатора приводит к необходимости посылки множества ложных ответов с различными значениями id.

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

Правда, есть метод для определения номера порта, по которому происходит соединение и текущего идентификатора запроса.

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

При наличии контролируемого сервера описанная атака может быть модифицирована следующим образом. Предположим, что атакующий контролирует сервер ns.hacker.com, ответственный за домен hacker.com. В первой фазе атаки мы провоцируем сервер ns.victim.com на обращение к ns.hacker.com путем посылки рекурсивного запроса на поиск информации о любом имени (не обязательно реальном) в домене hacker.com. Поскольку ns.hacker.com находится под контролем атакующего, он может перехватить этот запрос и извлечь из него информацию о номере порта и текущем id.

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13