Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
493.doc
Скачиваний:
18
Добавлен:
30.04.2022
Размер:
8.68 Mб
Скачать

4.2 Внедрение ложного объекта путем использования недостатков алгоритмов удаленного поиска

4.2.1 ARP-spoofing

4.2.1.1 Протокол arp и алгоритм его работы

Для определения локального адреса по IP-адресу используется протокол ARP - Address Resolution Protocol. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring) с возможностью широковещательного доступа одновременно ко всем узлам сети, или протокол глобальной сети (X.25, frame relay), как правило, не поддерживающий широковещательный доступ. Существует протокол, выполняющий обратную задачу - определение IP-адреса по известному локальному адресу (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера. В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом [6].

Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно (рисунок 4.2).

Рисунок 4.1 - Место расположения протокола ARP среди других протоколов

Рисунок 4.2 - Широковещательный ARP-запрос

Все узлы локальной сети получают ARP запрос [24] и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный (Ethernet) адрес затем отправляет его уже направленно хосту, который отправил широковещательный ARP-запрос, так как в ARP запросе отправитель указывает свой локальный адрес (рисунок 4.3).

Рисунок 4.3 - ARP-ответ на широковещательный ARP-запрос

ARP-запросы и ответы используют один и тот же формат пакета. Так как локальные адреса могут в различных типах сетей иметь различную длину, то формат пакета протокола ARP зависит от типа сети. Преимущественно протокол ARP используется в локальных сетях. Отображение адресов осуществляется путем поиска в ARP-таблице. Упрощенно, ARP-таблица состоит из двух столбцов (таблица 4.1). В первом столбце содержится IP-адрес, а во втором Ethernet-адрес. Таблица соответствия необходима, так как адреса выбираются произвольно и нет какого-либо алгоритма для их вычисления. Если машина перемещается в другой сегмент сети, то ее ARP-таблица должна быть изменена.

Таблица 4.1. ARP-таблица

IP-адрес

Ethernet-адрес

10.137.0.2

08:00:39:00:2F:C3

10.137.0.3

08:00:5A:21:A7:22

10.137.0.4

08:00:10:99:AC:54

В первом столбце содержится IP-адрес, а во втором Ethernet-адрес. Таблица соответствия необходима, так как адреса выбираются произвольно и нет какого-либо алгоритма для их вычисления. Если машина перемещается в другой сегмент сети, то ее ARP-таблица должна быть изменена.

Таблицу ARP можно посмотреть, используя команду arp в командной строке: >arp -a

ARP-таблица заполняется автоматически. Перед тем, как создать подключение к какому-либо устройству в сети, IP-протокол проверяет свою ARP-таблицу, чтобы выяснить, не зарегистрирована ли в нём уже нужная для подключения информация о хосте-получателе. Если такой записи в ARP-таблице нет, то выполняется широковещательный ARP-запрос (рисунок 4.2). Все сетевые интерфейсы получают этот запрос, но отвечает только владелец адреса (рисунок 4.3). При этом существует два способа отправки IP-пакета, для которого ищется адрес: пакет ставится в очередь на отправку или уничтожается. В первом случае за отправку отвечает модуль ARP, а во втором случае модуль IP, который повторяет посылку через некоторое время [6].

Если искомого IP-адреса нет в локальной сети и сеть не соединена с другой сетью шлюзом, то разрешить запрос не удается. IP-модуль будет уничтожать такие пакеты, обычно по time-out (превышен лимит времени на разрешение запроса).

Записи в ARP-кеше могут быть статическими и динамическими. Пример, данный выше, описывает динамическую запись кеша. Хост-отправитель автоматически послал запрос получателю, не уведомляя при этом пользователя. Записи в ARP-кеш можно добавлять вручную, создавая статические записи кеша. Это можно сделать при помощи команды: arp -s <IP адрес> <MAC адрес>

Например:

Интерфейс: 10.137.0.30 --- 0x10003

Адрес IP Физический адрес Тип

10.137.0.120 00-0f-ea-65-f9-c8 статический

10.137.0.177 00-80-48-45-a8-ba динамический

Структура пакета. В сетях Ethernet пакеты используют EtherType 0x0806, и рассылаются широковещательно MAC-адрес - FF:FF:FF:FF:FF:FF. Отметим, что в структуре пакета, показанной ниже (таблица 4.2) в качестве SHA, SPA, THA, & TPA условно используются 32-битные слова — реальная длина определяется физическим устройством и протоколом.

Таблица 4.2. Структура ARP-пакета

+

Bits 0 - 7

8 - 15

16 - 31

0

Hardware type (HTYPE)

Protocol type (PTYPE)

32

Hardware length (HLEN)

Protocol length (PLEN)

Operation (OPER)

64

Sender hardware address (SHA)

 ?

Sender protocol address (SPA)

 ?

Target hardware address (THA)

 ?

Target protocol address (TPA)

Hardware type (HTYPE) - каждый транспортный протокол передачи данных имеет свой номер, который хранится в этом поле. Например, Ethernet имеет номер 1.

Protocol type (PTYPE) - код протокола. Например, для IPv4 будет записано 0x0800.

Hardware length (HLEN) - длина физического адреса в байтах. Ethernet адреса имеют длину 6 байт.

Protocol length (PLEN) - длина логического адреса в байтах. IPv4 адреса имеют длину 4 байта.

Operation - код операции отправителя: 1 в случае запроса и 2 в случае ответа.

Sender hardware address (SHA) - физический адрес отправителя.

Sender protocol address (SPA) - логический адрес отправителя.

Target hardware address (THA) - физический адрес получателя. Поле пусто при запросе.

Target protocol address (TPA) - логический адрес получателя.

Пример запроса. Если хост с IPv4 адресом 10.137.0.123 и MAC адресом 00:09:58:D8:11:22 хочет послать пакет другому хосту с адресом 10.137.0.140, но не знает его MAC адрес, то он должен послать ARP запрос для разрешения адреса.

Пакет, изображенный ниже (таблица 4.3), изображает широковещательный запрос. Если хост с IP 10.137.0.140 присутствует в сети и доступен, то он получает этот ARP-запрос и возвращает ответ.

Таблица 4.3. ARP-запрос

+

Bits 0 - 7

8 - 15

16 - 31

0

Hardware type = 1

Protocol type = 0x0800

32

Hardware length = 6

Protocol length = 4

Operation = 1

64

SHA (first 32 bits) = 0x000958D8

96

SHA (last 16 bits) = 0x1122

SPA (first 16 bits) = x0A0A

128

SPA (last 16 bits) =0x0A7B

THA (first 16 bits) =0x0000

160

THA (last 32 bits) = 0x00000000

192

TPA = 0x0A0A0A8C

Пример ответа. По сценарию, описанному выше, если хост с адресом 10.137.0.140 имеет MAC адрес 00:09:58:D8:33:AA, то он пошлет в ответ пакет, проиллюстрированный ниже (таблица 4.4). Заметим, что блоки адресов отправителя и получателя теперь поменяли значения (отправитель ответа теперь получатель запроса; получатель ответа - отправитель запроса). Кроме того, хост 10.137.0.140 заполнил свой MAC адрес в поле физического адреса отправителя.

Любой хост в той же сети, что и отправитель с получателем, тоже получат запрос (т.к. он широковещательный) и таким образом добавят в свой кеш информацию об отправителе. ARP-ответ направлен только источнику ARP-запроса, поэтому ARP-ответ не доступен другим хостам в сети.

Таблица 4.4. ARP-ответ

+

Bits 0 - 7

8 - 15

16 - 31

0

Hardware type = 1

Protocol type = 0x0800

32

Hardware length = 6

Protocol length = 4

Operation = 2

64

SHA (first 32 bits) = 0x000958D8

96

SHA (last 16 bits) = 0x33AA

SPA (first 16 bits) = 0x0A0A

128

SPA (last 16 bits) = 0x0A8C

THA (first 16 bits) = 0x0009

160

THA (last 32 bits) = 0x58D81122

192

TPA = 0x0A0A0A7B

ARP оповещение. ARP Announcement - это пакет (обычно ARP запрос) содержащий корректную SHA и SPA хоста-отправителя, с TPA равной SPA. Это не разрешающий запрос, а запрос на обновление ARP-кеша других хостов, получающих пакет.

Большинство операционных систем посылают такой пакет при включении хоста в сеть, это позволяет предотвратить ряд проблем. Например, при смене сетевой карты (когда необходимо обновить связь между IP и MAC адресами), такой запрос исправит записи в ARP-кеше других хостов в сети.

Протокол ARP является абсолютно незащищённым. Он не обладает никакими способами проверки подлинности пакетов: как запросов, так и ответов. Ситуация становится ещё более сложной, когда может использоваться самопроизвольный ARP (gratuitous ARP).

Самопроизвольный ARP - такое поведение ARP, когда ARP-ответ присылается, когда в этом (с точки зрения получателя) нет особой необходимости. Самопроизвольный ARP-ответ это пакет-ответ ARP, присланный без запроса. Он применяется для определения конфликтов IP-адресов в сети: как только станция получает адрес по DHCP или адрес присваивается вручную, рассылается ARP-ответ gratuitous ARP.

Самопроизвольный ARP может быть полезен в следующих случаях:

  • обновление ARP-таблиц, в частности, в кластерных системах;

  • информирование коммутаторов;

  • извещение о включении сетевого интерфейса.

Несмотря на эффективность самопроизвольного ARP [35], он является особенно небезопасным, поскольку с его помощью можно уверить удалённый узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети, изменился и указать, какой адрес используется теперь.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]