Изучение протокола ARP. Получение навыков работы с генераторами пакетов
Рассмотреть принципы работы протокола ARP. Получить практические навыки в анализе кадров ARP и их составлении. Получение базовых навыков по работе с генератором пакетов packit .
3.2. Задачи
Просмотреть изменение ARP-таблицы компьютера. Провести разрешение адресов, используя механизм протокола ARP и генератор пакетов packit . Провести сетевую атаку вида ARP-спуфинг.
3.3. Теоретический материал
3.3.1. Протокол ARP ARP (Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MACадреса сетевого устройства по известному IP-адресу. Наибольшее распространение ARP получил благодаря повсеместности сетей IP, построенных поверх Ethernet, поскольку в подавляющем большинстве случаев при таком сочетании используется ARP. В семействе протоколов IPv6 протокола ARP не существует, его функции возложены на ICMPv6. Описание протокола было опубликовано в ноябре 1982 г. в RFC 826. ARP был спроектирован для случая передачи IP-пакетов через сегмент Ethernet. При этом общий принцип, предложенный для ARP, был использован и для сетей других типов. Существуют следующие типы сообщений ARP: запрос ARP (ARP-re- quest) и ответ ARP (ARP-reply). Система-отправитель при помощи запроса ARP запрашивает физический адрес системы-получателя. Ответ (физический адрес узла-получателя) приходит в виде ответа ARP. Принцип работы протокола: узел (хост А), которому нужно выполнить отображение IP-адреса на MAC-адрес, формирует ARP-запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IPадрес (хост В), и рассылает запрос широковещательно (в поле MAC-адрес назначения заголовка Ethernet указывается широковещательный MAC-адрес FF:FF:FF:FF:FF:FF). Все узлы локальной сети получают ARP-запрос и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел (хост В) формирует ARP-ответ, в котором указывает свой IP-адрес и свой
локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель (хост А) указывает свой локальный адрес. Схема работы показана на рис. 3.1 . ЛВС ARPзапрос- ARPответ- запросARP
ARPзапрос- | |||
ARPответ- | |||
ХостA | запрос | запрос | ХостB |
ARP | |||
— | ARP- |
Рис. 3.1. Схема работы протокола ARP При получении ARP-ответа хост А записывает в кэш ARP запись с соответствием IP-адреса хоста В и MAC-адреса хоста В, полученного из ARPответа. Время хранения такой записи ограничено. По истечении времени хранения хост А посылает повторный запрос, теперь уже адресно, на известный MAC-адрес хоста В. В случае, если ответ не получен, снова посылается широковещательный запрос. Структура кадра ARP с учетом заголовка Ethernet показана на рис. 3.2 .
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
Destination MAC | Source MAC | ETH TYPE | HTYPE | ||||||||||||
PTYPE | HLEN | PLEN | OP CODE | Sender MAC | Sender IP | ||||||||||
Target MAC | Target IP |
Рис. 3.2. Кадр протокола ARP Значения полей заголовка кадра ARP приведены в табл. 3.1 .
Таблица 3.1 | |
Значения полей заголовка кадра ARP | |
Поле | Значение |
HTYPE | Номер протокола передачи канального уровня ( 0x0001 для протокола |
Ethernet) | |
PTYPE | Код протокола сетевого уровня ( 0x0800 для протокола IPv4) |
HLEN | Длина физического адреса в байтах. Адреса Ethernet имеют длину 6 |
байт | |
PLEN | Длина логического адреса в байтах. IPv4 адреса имеют длину 4 байта |
OP CODE | Код операции: 0x01 в случае ARP-запроса и 0x02 в случае ARP-ответа |
Sender MAC | Физический адрес отправителя |
Sender IP | Сетевой адрес отправителя |
Target MAC | Физический адрес получателя. При запросе поле заполняется нулями |
Target IP | Сетевой адрес получателя |
Самопроизвольный ARP (gratuitous ARP) — такое поведение ARP, когда ARP-ответ присылается, когда в этом (с точки зрения получателя) нет особой необходимости. Самопроизвольный ARP-ответ это пакет-ответ ARP, присланный без запроса. Он применяется для определения конфликтов IPадресов в сети: как только станция получает адрес по DHCP или адрес присваивается вручную, рассылается ARP-ответ gratuitous ARP. Самопроизвольный ARP может быть полезен в следующих случаях: обновление ARP-таблиц, в частности, в кластерных системах; информирование коммутаторов; извещение о включении сетевого интерфейса. Несмотря на эффективность самопроизвольного ARP, он является особенно небезопасным, поскольку с его помощью можно уверить удаленный узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети, изменился, и указать, какой адрес используется теперь. 3.3.2. Утилита arp Утилита предназначена для работы с кэшем ARP (ARP таблицей). Основными ее возможностями являются просмотр кэша, удаление записи и добавление записи вручную. Для операций удаления и добавления записей требуются права суперпользователя. Просмотр кэша возможен от лица обычного непривилегированного пользователя. От лица обычного пользователя утилита arp запускается следующим образом: user@host :[~] $ / usr / sbin / arp При таком запуске утилиты arp без параметров на экран будет выведено содержимое кэша ARP.
Более подробную информацию об использовании утилиты можно узнать из официальной man-страницы. Команда: user@host [~] $ man arp 3.3.3. Генератор пакетов packit Утилита packit объединяет в себе возможности генератора пакетов и анализатора трафика. Она позволяет перехватывать и отправлять в сеть кадры Ethernet, IP- и TCP-пакеты. В рамках лабораторной работы будет использоваться только режим генератора пакетов. Утилита packit запускается в терминале от имени суперпользователя. Формат запуска команды: user@host :[~] $ sudo packit [ options ] Поскольку в лабораторной предполагается работа только с протоколом ARP, рассмотрим соответствующую команду запуска:
user@host :[~] $ | sudo | packit -t arp -A packet — type -y target — IP \ | ||
> | -Y | target — MAC | -x | sender — IP -X sender — MAC \ |
> | -e | source — MAC | -E | destination — MAC -i interface |
Параметр packet-type для ARP-запроса должен быть равен 1, а для ARP-ответа — 2. Параметр interface определяет сетевой интерфейс, который необходимо использовать. Как правило, в ОС Debian Linux это eth0 для проводного интерфейса и wlan0 для беспроводного. Точное имя сетевого интерфейса можно посмотреть командой ifconfig . Параметры source-MAC и destination-MAC , задаваемые флагами -e и -E соответственно, относятся к заголовку кадра Ethernet. IP-адреса указываются в десятичном виде. Более подробную информацию об использовании утилиты можно узнать из официальной man-страницы. Команда: user@host :[~] $ man packit 3.3.4. Сетевая атака ARP-спуфинг Сетевая атака ARP-спуфинг (ARP-spoofing) основана на использовании самопроизвольного ARP. Чтобы перехватить сетевые пакеты, которые атакуемый хост (А) отправляет на хост В, атакующий хост (С) формирует ARP-ответ, в котором
ARP: определение MAC адресов в локальной сети
ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по IP-адресу другого компьютера. Существуют следующие типы сообщений ARP: запрос ARP (ARP request) и ответ ARP (ARP reply). Система-отправитель при помощи запроса ARP запрашивает физический адрес системы-получателя. Ответ (физический адрес узла-получателя) приходит в виде ответа ARP.
Компьютер А (IP-адрес 192.168.1.1) и компьютер Б (IP-адрес 192.168.1.2) соединены сетью Ethernet. Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Компьютеру А для осуществления передачи через Ethernet требуется узнать MAC-адрес компьютера Б в сети Ethernet. Для этой задачи и используется протокол ARP.
Компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене. Суть запроса: «компьютер с IP-адресом 192.168.1.2, сообщите свой MAC-адрес компьютеру с МАС-адресом . ». Этот запрос доставляется всем устройствам в том же сегменте Ethernet. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес.
Протокол имеет буферную память (ARP-таблицу), в которой хранятся пары адресов (IP-адрес, MAC-адрес) с целью уменьшения количества посылаемых запросов, следовательно, экономии трафика и ресурсов. Записи ARP-таблицы бывают двух вид видов: статические и динамические. Статические добавляются самим пользователем, динамические же — создаются и удаляются автоматически. При этом в ARP-таблице всегда хранится широковещательный физический адрес FF:FF:FF:FF:FF:FF.
Команда arp в Windows
Позволяет просмотреть ARP-таблицу, добавить в нее новую запись или удалить существующую:
> arp Отображение и изменение таблиц преобразования IP-адресов в физические, используемые протоколом разрешения адресов (ARP). ARP -s inet_addr eth_addr [if_addr] ARP -d inet_addr [if_addr] ARP -a [inet_addr] [-N if_addr] [-v] -a Отображает текущие ARP-записи, опрашивая текущие данные протокола. Если задан inet_addr, то будут отображены IP и физический адреса только для заданного компьютера. Если ARP используют более одного сетевого интерфейса, то будут отображаться записи для каждой таблицы. -g То же, что и параметр -a. -v Отображает текущие ARP-записи в режиме подробного протоколирования. Все недопустимые записи и записи в интерфейсе обратной связи будут отображаться. inet_addr Определяет IP-адрес. -N if_addr Отображает ARP-записи для заданного в if_addr сетевого интерфейса. -d Удаляет узел, задаваемый inet_addr. Параметр inet_addr может содержать знак шаблона * для удаления всех узлов. -s Добавляет узел и связывает адрес в Интернете inet_addr с физическим адресом eth_addr. Физический адрес задается 6 байтами (в шестнадцатеричном виде), разделенных дефисом. Эта связь является постоянной eth_addr Определяет физический адрес. if_addr Если параметр задан, он определяет адрес интерфейса в Интернете, чья таблица преобразования адресов должна измениться. Если параметр не задан, будет использован первый доступный интерфейс. Пример: > arp -s 157.55.85.212 00-aa-00-62-c6-09 .. Добавляет статическую запись. > arp -a
Создать запись в ARP-таблице:
Вывести записи ARP-таблицы:
> arp -a Интерфейс: 192.168.53.1 --- 0x5 адрес в Интернете Физический адрес Тип 192.168.53.255 ff-ff-ff-ff-ff-ff статический 224.0.0.22 01-00-5e-00-00-16 статический 224.0.0.251 01-00-5e-00-00-fb статический 224.0.0.252 01-00-5e-00-00-fc статический 239.255.255.250 01-00-5e-7f-ff-fa статический Интерфейс: 192.168.110.2 --- 0x14 адрес в Интернете Физический адрес Тип 192.168.110.1 04-bf-6d-9a-c7-a8 динамический 192.168.110.3 08-00-27-92-ce-01 динамический 192.168.110.255 ff-ff-ff-ff-ff-ff статический 224.0.0.22 01-00-5e-00-00-16 статический 224.0.0.251 01-00-5e-00-00-fb статический 224.0.0.252 01-00-5e-00-00-fc статический 239.255.255.250 01-00-5e-7f-ff-fa статический 255.255.255.255 ff-ff-ff-ff-ff-ff статический Интерфейс: 172.28.128.1 --- 0x15 адрес в Интернете Физический адрес Тип 172.28.128.255 ff-ff-ff-ff-ff-ff статический 224.0.0.22 01-00-5e-00-00-16 статический 224.0.0.251 01-00-5e-00-00-fb статический 224.0.0.252 01-00-5e-00-00-fc статический 239.255.255.250 01-00-5e-7f-ff-fa статический
Команда arp в Linux
Позволяет просмотреть ARP-таблицу, добавить в нее новую запись или удалить существующую:
$ arp --help Использование: arp [-vn] [] [-i ] [-a] [] ] -d [pub] <- Удалить элемент ARP arp [-vnD] [] [-i ] -f [] <- Добавить запись в arp из файла arp [-v] [] [-i ] -s [temp] <- Добавить элемент arp [-v] [] [-i ] -Ds [netmask ] pub -a показать (все) хосты в альтернативном (BSD) стиле -e display (all) hosts in default (Linux) style -s, --set установить новую запись ARP -d, --delete удалить определенную запись -v, --verbose более детальный вывод -n, --numeric не преобразовывать адреса в имена -i, --device указание сетевого интерфейса (например, eth0) -D, --use-device прочитать из заданного устройства -A, -p, --protocol указание семейства протоколов -f, --file считать новые записи из файла или из /etc/ethers =Используйте '-H ' для указания типа аппаратного адреса. По умолчанию: ether Список всех возможных типов HW (которые поддерживают ARP) ash (Ash) ether (Ethernet) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet) dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI) irda (IrLAP) x25 (универсальный X.25) eui64 (Универсальный EUI-64)
Создать запись в ARP-таблице:
> sudo arp -s IP-адрес MAC-адрес
Вывести записи ARP-таблицы:
$ arp Адрес HW-тип HW-адрес Флаги Маска Интерфейс 192.168.110.13 ether 08:00:27:78:7a:c2 C enp0s3 192.168.110.2 ether 1c:1b:0d:e6:14:bd C enp0s3 _gateway ether 04:bf:6d:9a:c7:a8 C enp0s3
Альтернативный способ просмотра записей таблицы — команда
$ ip neigh 192.168.110.3 dev enp0s3 lladdr 08:00:27:78:7a:c2 REACHABLE 192.168.110.2 dev enp0s3 lladdr 1c:1b:0d:e6:14:bd STALE 192.168.110.1 dev enp0s3 lladdr 04:bf:6d:9a:c7:a8 STALE
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- 1С:Предприятие (31)
- API (29)
- Bash (43)
- CLI (99)
- CMS (139)
- CSS (50)
- Frontend (75)
- HTML (66)
- JavaScript (150)
- Laravel (72)
- Linux (143)
- MySQL (76)
- PHP (125)
- React.js (66)
- SSH (27)
- Ubuntu (66)
- Web-разработка (509)
- WordPress (73)
- Yii2 (69)
- БазаДанных (95)
- Битрикс (66)
- Блог (29)
- Верстка (43)
- ИнтернетМагаз… (84)
- КаталогТоваров (87)
- Класс (30)
- Клиент (27)
- Ключ (28)
- Команда (68)
- Компонент (60)
- Конфигурация (59)
- Корзина (32)
- ЛокальнаяСеть (28)
- Модуль (34)
- Навигация (31)
- Настройка (137)
- ПанельУправле… (29)
- Плагин (33)
- Пользователь (26)
- Практика (99)
- Сервер (74)
- Событие (27)
- Теория (104)
- Установка (65)
- Файл (47)
- Форма (58)
- Фреймворк (192)
- Функция (36)
- ШаблонСайта (68)