- Отправка ARP-ответа с сообщением о соответствии IP-адреса злоумышленника
- некоторому МАС-адресу
- Злоумышленник получает все пакеты, предназначенные использованному МАС-
- адресу
- Противодействие – запрет ARP-ответов без ARP-запросов, создание статических
- записей
Любой узел, даже тот, который отключен от сети имеет ip-адрес. Это ip-адрес интерфейса локальной петли, т.е. «замыкания на себя». Нужен он, чтобы сетевые программы могли работать (программы построенные по технологии клиент-сервер).
Хотя в локальных сетях достаточно протокола Ethernet, которые работает на втором уровне. Вот например есть такой класс устройств как принтсерверы (это устройства, которые с одной стороны подключаются к принтеру, с другой к локальной сети и позволяют принтеру становиться сетевым, т.е. организовывать сетевой доступ к несетевому принтеру). Так вот есть утилита, которая позволяет обнаружить эти принтсерверы не зная о них ничего. Более того этим принт серверам ip-адрес нужен только для того, чтобы взаимодействовать с другими устройствами. А эта утилита хорошо взаимодействует с этими устройствами даже не зная ip-адрес.
Т.е. с помощью широковещательного запроса эта утилита обнаруживает устройство, после этого она направляет кадры не пользуясь протоколом ip, а пользуясь Ethernet.
Точно так же есть утилита для управления коммутаторами построенных на чипсете Realtec. Есть коммутаторы которые не являются управляемыми, которые однако можно управлять. Коммутатор — это устройство которое работает на втором уровне, поэтому оно вообще ничего не знает про IP, про адреса. Утилита, которая работает с этими чипсетами также работает с применением только протокола Ethernet. Т.е. в рамках локальной сети Вам достаточно только протокола Ethernet. Чтобы взаимодействовать между локальными сетями Вам нужен протокол IP.
Но большинство приложений ориентированно на использование протокола IP, то этому узлу необходимо иметь IP-адрес даже в локальной сети.
Отсюда появляется проблема мы знаем IP-адрес узла, но для того чтобы доставить ему кадр, нужно сообщить коммутатору на какой адрес канального уровня (мы его не знаем) мы хотим передать этот кадр.
Соответственно нужно какое-то средство, для того чтобы этот адрес узнать. Таким средством является протокол ARP.
Протокол ARP
Протокол ARP позволяет узнать MAC-адрес устройства зная его IP-адрес. В этом протоколе есть две основные сущности это запрос и ответ. Запрос позволяет инициировать процедуру узнавания MAC-адреса по IP-адресу. (запрос является широковещательным, распространяется в рамках локальной сети, для того чтобы каждое устройство проанализировало «а не его ли спрашивают») и этот запрос содержит IP-адрес цели. Ответ уже однонаправленные (направляется тому узлу, который спрашивал) и в ответе указывается MAC-адрес, который был запрошен.
Атака
А вот теперь у нас появляется возможность нарушить работу сети с помощью этого протокола.
Чтобы направить данные к некому известному серверу предварительно вы узнаете его MAC-адрес с помощью протокола ARP. А теперь допустим, что вам вдруг приходит ответ (пакет) в которм указано, что данный IP-адрес теперь соответствует некоторому другому MAC-адресу. По случайности этот MAC-адрес оказывается MAC-адрес злоумышленника. И теперь все пакеты (в том числе пароли, данные...) достаточно просто.
Чтобы создать иллюзию нормальной работы пользователя злоумыщленник может выступить в качестве перенаправляющего звена, и перенаправлять пакеты пользователя на сервер.
А теперь мпедставьте, что мы подделываем ARP-запись маршрутизатора, мы получаем не просто данные, которые идут на один сервер, а все данные которые идут в другой широковещательный домен в частности в интернет (пароли, логины, почтовые ящики, номера ICQ) всё это оказывается в руках злоумышленника.
Противодействие
Однако т.к. это атака приметивна, противодействие ей тоже приметивно.
Почему вообще стала возможна эта атака: потому что узел обработал ARP ответ, не отправив ARP-запрос (это же глупо. Поэтому можно запретить обрабатывать ARP ответы на которые не было ARP запроса. Это самый простой вариант.
Более сложный вариант — это создание статических записей на коммутаторе, для тех сервисов, которым это необходимо (маршрутизаторов, серверов) которые никий узел шлет серверу отправляются злоумышленнику.