Создайте друга: подмена IP-адресов
Подмена IP-адресов сродни волшебству. Вы можете часто слышать, - "Как мы можем знать, настоящий ли этот IP-адрес? Что, если он подменил его?" На самом деле, подменить IP-адрес не так-то легко.
Возможно, следует перефразировать сказанное. Подмена IP-адресов - дело простое. Брандмауэры, которые осуществляют маскировку или трансляцию сетевых адресов (NAT), подменяют IP-адреса на постоянной основе. Эти устройства могут получать пакты от внутренних IP-адресов, заменять исходные IP-адреса в пакетах на свой собственный адрес, посылать их вовне и отменять модификацию, когда получают данные назад извне. Таким образом менять содержание исходных IP-адресов в IP-пакетах достаточно просто. Что на самом деле сложно, так это иметь возможность получать ответ, посланный на подменный IP-адрес.
В Netcat есть опция -s, позволяющая определить тот IP-адрес, который нужно. Некто имеет возможность начать сканирование портов и использовать опцию -s, подстроив дело так, будто сканирование ведет компания Microsoft или Федеральное Бюро Расследований. Проблема возникает, однако, если вы в действительности хотите получить ответ от сканируемых портов на реальный IP-адрес. Поскольку исследуемый хост получает запросы от фирмы Microsoft, к примеру, он будет посылать уведомления о получении на тот же IP-адрес Microsoft. IP, конечно, не имеет представления, о чем сообщает ему исследуемый хост и пошлет ему отказ в соединении. Как добиться возврата информации на реальный IP-адрес, не опасаясь попасться?
Помочь взломать машину может также опция, определяющая порядок маршрутизации. Порядок маршрутизации позволяет сетевым приложениям определить маршрут, по которому вы хотели бы достичь конечной точки.
Порядку маршрутизации присущи две вещи: строгость и неопределенность. Строгость порядка маршрутизации означает, что в пакете должны определяться все закоулки определенного маршрута до конечного хоста. Некоторые маршрутизаторы и сетевые устройства пока позволяют строгий порядок маршрутизации, а некоторые должны позволять неопределенный порядок маршрутизации.
Неопределенный порядок маршрутизации сообщает маршрутизаторам и сетевым устройствам, что они могут определять маршрут до конечной точки самостоятельно, но при этом пакеты обязательно должны пройти через определенный набор маршрутизаторов на пути к конечной точке. Это представляет определенную опасность, поскольку позволяет взломщику пересылать пакеты через машину, которую он контролирует (возможно, это машина изменяет IP-адреса входящих пакетов на что-нибудь еще). Когда ответ возвращается, он проходит по тому же самому нестрогому маршруту и приходит обратно через ту же машину (которая восстанавливает истинный IP-адрес). Благодаря этому способу задания порядка маршрутизации, возникает возможность атакующему подменить IP-адрес и при этом получить ответ от атакуемой машины. Большинство маршрутизаторов игнорируют параметры порядка маршрутизации, но не все. Опция -g Netcat позволяет определить до 8 точек, которые должен пройти пакет до того момента, как попадет в конечную точку. К примеру, команда
nc -g 10.10.4.5 -g 10.10.5.8 -g 10.10.7.4 -g 10.10.9.9 10.10.9.50 23
определяет telnet соединение по 23 порту с адресом 10.10.9.50, но если опция порядка маршрутизации включена на промежуточных маршрутизаторах, то трафик будет принудительно маршрутизироваться через четыре указанных адреса, прежде чем достигнет конечной точки. Если мы попытаемся выполнить команду
nc -g 10.10.4.5 -g 10.10.5.8 -g 10.10.7.4 -g 10.10.9.9 -G 12 10.10.9.50 23
, то определим точку для прохода трафика с использованием параметра -G. Параметр -G устанавливает значение в n байт (в данном случае двенадцать), и поскольку IP-адреса занимают каждый по 4 байта, точка входа устанавливается на адрес 10.10.7.4. Таким образом, на пути к машине 10.10.9.50, трафик должен пройти только через последние две машины (так как в соответствии с установками мы уже пропустили первые две). Тем не менее, на обратном пути пакет должен пройти через все четыре машины.
Если ваши маршрутизаторы и сетевые устройства не могут быть настроены так, чтобы игнорировать заданный порядок маршрутизации, следует надеяться, что ваша система обнаружения вторжений (IDS) сохранит вас от них (коротко IDS мы рассмотрим в лекции "Анализаторы сетевых потоков (Sniffer)").Любой, кто может запустить анализатор трафика вроде Ethereal, может легко обнаружить факт использования задания порядка маршрутизации, поскольку раздел параметров в IP-заголовке будет больше обычного, и IP-адреса в списке маршрутизации будут хорошо видны, если воспользоваться ASCII-декодером. Если это важно для системного администратора, он может проследить хозяина каждого IP-адреса в списке, чтобы найти преступника.