Пришла пора нам разобраться, как выглядит ARP-трафик под микроскопом, имя которому Wireshark. Будучи пакетным сниффером и фильтром, Шарк предоставляет огромные возможности для изучения сетевых протоколов и всего, что происходит “по ту сторону”. Понемногу мы и ликвидируем белые пятна и начинаем лучше разбираться в сетях.
Несмотря на то, что Wireshark можно использовать в различных целях, не всегда благочестивых, мы будем закрывать глаза на “тёмную” сторону, используя этот инструмент только в образовательных целях.
Итак, ARP-протокол. Иначе говоря Adress Resolution Protocol – протокол разрешения адреса.
Немного расскажу о том, для чего предназначен этот протокол.
Передавать фреймы в сети Ethernet можно используя аппаратные (далее MAC) адреса. То есть это не сетевой (IP) адрес вида 192.168.0.1, а нечто более сложное, вида 00:00:00:c1:d9:26.
Существует так же соглашение, по которому первые три байта отводятся под производителя сетевого оборудования, а следующие три байта – под уникальный идентификатор устройства. Такой адрес имеют все сетевые устройства, разработанные для сети Ethernet.
Кстати, загадка. Что имеет порт RJ45, но не имеет MAC-адреса?
ответ: обжимка (патч-панель)
Принцип работы такой. Компьютер, которому требуется передать данные в сети имеет IP адрес (свой, собственный), а так же IP адрес получателя. Но передавать данные можно только имея MAC-адреса. Поэтому компьютер, инициирующий соединение посылает широковещательный ARP запрос вида:
Who has <IP-addr>? Tell <Self IP-addr>
где спрашивает, “Эй, парни! У кого IP такой-то? Сообщите мне”, и этот пакет посылается на ff:ff:ff:ff:ff:ff (широковещательно), то есть всем узлам в сети. Каждый компьютер в сети получает этот пакет и смотрит, принадлежит ли указанный IP какому-либо из его интерфейсов. Если принадлежит, то на MAC адрес отправителя (он известен из заголовка пакета), отправляется пакет с ответом (reply).
Компьютер, получивший ответ, для передачи на целевой IP будет посылать данные на MAC адрес отправителя пакета ответа.
Очень распространена, кстати, атака вида MITM (Man in the Middle), когда компьютер злоумышленника отвечает вместо целевого компьютера (раньше его) и обмен между двумя узлами происходит через посредника, прослушивающего весь трафик. Реализацию такой атаки я демонстрировал в ранней статье ARP-Spoofing.
Как видите, протокол весьма прост, базируется на процедуре “Вопрос-Ответ”. Существуют также различные “надстройки” над протоколом, позволяющие предотвращать использование повторяющихся адресов в сети:
В этом случае, система при запуске посылает ARP запрос со своим же IP адресом, но не отвечает на него. Если кто-то в сети ответит на этот ARP (не считая глюков), то считается, что такой IP адрес в сети уже используется и время подумать об APIPA.
P.S. В одной из предыдущих статей я писал про Android-эмулятор приложений.
Comments: