Учебник хакера

ПОДДЕЛКА АДРЕСОВ


В локальных сетях типа Ethernet пакеты IPX обычно передаются с использованием кадров Ethernet_802.2 или Ethernet_802.3, в заголовках которых основной информацией являются MAC-адреса станций получателя и отправителя. Адрес отправителя после посылки никем не проверяется, так как это непростая задача. Даже в том случае, если адрес отправителя кем-либо анализируется (например, коммутатором), подставить чужой MAC-адрес не составит труда. Почти все сетевые платы позволяют сделать это как с помощью программных средств Novell (в net.cfg), так и на низком уровне. А ODI-драйвер ODIPKT позволяет самостоятельно сформировать весь пакет и послать его как есть.

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

К примеру, если был послан пакет с полем получателя FF,FF,FF,FF,FF,FF (всем станциям в текущем сегменте сети) в кадре Ethernet, то независимо от адреса отправителя его обязательно получит адресат, который указывается в поле "Адрес станции назначения" заголовка IPX-пакета. Более того, если некто (злоумышленник) самостоятельно заполнит IPX-пакет, то он может указать чужой адрес отправителя (администратора сети); такой пакет обязательно дойдет до адресата (сервера) и будет им обработан тем же образом, что и все остальные пакеты администратора. Такой процесс называется по-английски spoofing, а по-русски "подделка адресов".

На уровень выше IPX находится протокол NCP (NetWare Core Protocol), он использует IPX в качестве транспортного протокола, но предусматривает, в отличие от IPX, некоторую степень защиты. NCP используется практически при всех сетевых операциях в сети NetWare; с его помощью передаются файлы и реплики между серверами, осуществляется администрирование системы и т.
д. На Рисунке 2 изображена структура заголовка пакета NCP.



Рисунок 2.

Структура заголовка пакета запроса NCP.

Пакеты на уровне NCP неосведомленному человеку подделать несколько сложнее, поскольку необходимо знать номер соединения администратора с сервером. Однако проблема эта вполне решаема благодаря таким программам, как userlist (в NetWare 3.x) и nlist (в NetWare 4.x) или системным функциям оболочки рабочей станции. Остальная информация может быть получена из других источников, к примеру из программы LANalyzer for Windows (фирмы Novell), которая позволяет перехватывать все проходящие мимо рабочей станции пакеты и затем расшифровывает каждое их поле (см. Рисунок 3). Так же можно использовать программу NetXRay (компании Cinco Networks), но, поскольку она написана не Novell, полной гарантии расшифровки пакетов нет. Правда, для использования этих двух программ необходимо иметь сетевую плату, поддерживающую режим приема всех пакетов (promiscuous mode). Большинство новых сетевых плат могут работать в этом режиме, например все сетевые платы компании 3Com.



Рисунок 3.

Novell LANalyzer for Windows.

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


Содержание раздела