Целью данной атаки является узурпировать IP-адрес определенной машины. Это позволяет злоумышленнику либо скрыть источник атаки (используется в атаках типа "отказ в обслуживании"), либо извлечь какую-либо пользу из доверительных связей двух машин. Здесь мы рассмотрим второй вариант использования атаки IP Spoofing.
Для злоумышленника, базовый принцип атаки заключается в фальсификации собственных IP-пакетов (например, с помощью таких программ, как hping2 или nemesis) в которых изменяется, среди прочего, IP-адрес источника. Атака IP Spoofing часто называется "слепой подменой" (Blind Spoofing). Это связано с тем, что ответы на фальсифицированные пакеты не могут прийти машине кракера (сленговое название "любителя" сетевых взломов -- прим.ред.), ведь был изменен исходящий адрес. Следовательно, они отправляются машине, адрес которой использовал кракер для подмены. Однако, все-таки существуют два метода получения ответов:
Маршрутизация от источника (Source Routing): в протокол IP существует возможность маршрутизации от источника, которая позволяет задавать маршрут для ответных пакетов. Этот маршрут представляет собой набор IP-адресов маршрутизаторов, через которые должен проследовать пакет. Для кракера достаточно предоставить маршрут для пакетов до маршрутизатора, им контролируемого. В наше время, большинство реализаций стека TCP/IP отбраковывают пакеты с маршрутизацией от источника;
Перемаршрутизация (Re-routing): если маршрутизатор использует протокол RIP, то его таблицы можно изменить присылая ему RIP-пакеты с новой информацией о маршрутах. С помощью этого, кракер добивается направления пакетов на подконтрольный ему маршрутизатор.
Эти технологии трудноприменимы: атака выполняется без получения ответных пакетов целевого сервера.
Слепая подмена используется против таких сервисов, как rlogin и rsh. Их механизмы аутентификации основаны лишь на исходных IP-адресах клиентских машин. Это широко известная атака (Кевин Митник [Kevin Mitnick] применил ее против машины Цутому Шимомура [Tsutomu Shimomura] в1994) требует некоторых шагов:
обнаружение IP-адреса доверенной машины, например, при помощи команды showmount -e, которая выводит список хостов для которых экспортируются файловые системы, или команды rpcinfo, выдающей больше информации;
выполнение атаки "отказ в обслуживании" против доверенной машины, используя, например, SYN-наводнение (SYN Flooding, детальнее об атаках такого типа смотрите ниже). Это необходимо для предотвращения возможности ответа доверенной машины на пакеты от целевого сервера. В противном случае, машина пошлет серверу пакеты TCP RST, которые оборвут попытку соединения;
предугадывание последовательного номера TCP: каждому TCP-пакету присваивается начальный номер последовательности. Стек TCP/IP операционной системы генерирует его линейно, в зависимости от времени, случайным или псевдослучайным методом. Кракер может атаковать только те системы, которые пользуются прогнозируемыми методами (линейным или основанном на времени) для вычисления номера последовательности;
атака заключается в открытии TCP-соединения с желаемым портом (например rsh). Для лучшего понимания, мы напомним вам как работает механизм установления TCP-соединения. Он происходит в три шага (механизм тройного квитирования):
клиент шлет серверу пакет с выставленным флагом TCP SYN и номером последовательности x ;
сервер отвечает пакетом с выставленными флагами TCP SYN и ACK (с номером подтверждения x+1). Номер последовательности данного пакеты равен y;
клиент шлет пакет с флагом TCP ACK (и номером подтверждения y+1) серверу.
Во время атаки, кракер не получает от сервера пакет с выставленными флагами SYN-ACK. Для того, чтобы установить соединение он прогнозирует номер последовательности y и посылает пакет с предполагаемым номером подтверждения (y+1). После этого соединение установлено. Кракер теперь может послать команду сервису rsh, такую как echo ++ >> /.rhosts и получить дополнительные права доступа. Чтобы сделать это, он шлет пакет с выставленным флагом TCP PSH (Push): полученные данные немедленно передаются протоколу более высокого уровня (в нашем случае сервису rsh). После чего, кракер может подключаться к серверу по rlogin или rsh без подмены адреса источника.
Рисунок 7 демонстрирует шаги по реализации атаки IP Spoofing:
Рис.7: Атака IP Spoofing направленная на сервис rsh
Кракер использует машину A, машина C -- это доверенная система. Обозначение A(C) символизирует пакет, отправленный машиной А с адресом машины C в качестве адреса источника.
Примечание: существует программа mendax, реализующая механизмы атаки IP Spoofing.