Как отправить ARP запрос?
Как отправить самый простой ARP запрос на сервер через Ethernet канал при помощи Golang ? В документации про ARP ничего не нашел. Как быть?
Отслеживать
задан 3 янв 2018 в 20:51
Jack Anderson Jack Anderson
305 3 3 серебряных знака 16 16 бронзовых знаков
github.com/mdlayher/arp не смотрели?
3 янв 2018 в 21:00
@VladimirGamalyan я то видел, только вот документации нету.
3 янв 2018 в 21:09
там ссылка на godoc внизу
3 янв 2018 в 21:27
@VladimirGamalyan трудная документация)
3 янв 2018 в 21:49
0
Сортировка: Сброс на вариант по умолчанию
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Re: Как написать ARP запрос вручную?
сделай ping на этот IP, он в ARP-таблице и появится. или это чем-то не устраивает ?
sasha999 ★★★★
( 31.01.02 12:50:32 MSK )
Ответ на: Re: Как написать ARP запрос вручную? от sasha999 31.01.02 12:50:32 MSK
Re: Re: Как написать ARP запрос вручную?
Все это в скрипте работать будет.. В циклах. Лишний трафик. Хочется что нибудь системное. еще машина может на пинг не отвечать.
asus ★
( 31.01.02 13:20:58 MSK ) автор топика
Re: Как написать ARP запрос вручную?
А получить один раз и занести в АРП таблицу как статическую запись нельзя ?
> В циклах.
А что, МАК адрес часто меняться будет ?
RTFM ★
( 01.02.02 00:09:56 MSK )

Re: Как написать ARP запрос вручную?
# ping -c 1 -s 9 192.168.159.13 >/dev/null 2>&1 ; /sbin/arp |grep 192.168.159.13 | tr -s ' ' | cut -f 3 -d ' ' выдает 00:F0:1E:65:83:94 Это как по твоему одна команда или четыре?
ansky ★★★★★
( 01.02.02 04:11:27 MSK )

Re: Как написать ARP запрос вручную?
кстати на пинг она может и не ответить, а на 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 -s IP-адрес MAC-адрес
Вывести записи 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
- Таблица IP-маршрутизации
- Linux. Утилита mtr
- Linux. Утилита ss
- Linux. Утилита netstat
- Linux. Команда ip
- Windows. Выбрать подключение для интернета
- Настройка сети в Ubuntu 18.04 LTS
Каталог оборудования
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 (124)
- CMS (139)
- CSS (50)
- Frontend (75)
- HTML (66)
- JavaScript (150)
- Laravel (72)
- Linux (171)
- MySQL (76)
- PHP (125)
- React.js (66)
- SSH (27)
- Ubuntu (69)
- Web-разработка (509)
- WordPress (73)
- Yii2 (69)
- БазаДанных (95)
- Битрикс (66)
- Блог (29)
- Верстка (43)
- ИнтернетМагаз… (84)
- КаталогТоваров (87)
- Класс (30)
- Клиент (28)
- Ключ (28)
- Команда (88)
- Компонент (60)
- Конфигурация (66)
- Корзина (32)
- ЛокальнаяСеть (32)
- Модуль (34)
- Навигация (31)
- Настройка (143)
- ПанельУправле… (29)
- Плагин (33)
- Пользователь (26)
- Практика (101)
- Сервер (77)
- Событие (28)
- Теория (106)
- Установка (67)
- Файл (51)
- Форма (58)
- Фреймворк (192)
- Функция (36)
- ШаблонСайта (68)
Изучаем инструменты для работы с ARP протоколом

Статья расскажет об очень простом протоколе, который может быть использован для атак на сети. Рассмотрим из чего состоит протокол и какие инструменты есть для работы с ним.
ARP основные данные
Address Resolution Protocol (ARP) - протокол, который позволяет определить MAC адрес устройства по известному IP адресу, хотя можно используя протокол просто собрать все данные о подсети.
Протокол уже известен почти 40 лет! (Рассматриваем IPv4 версию) Описание протокола находится в RFC 826. У RFC было несколько апдейтов, которые касались различных частей протокола, вот некоторые их них:
- RFC 5227 - рекомендации по устранению проблем с конфликтами адресов, если несколько устройств используют один и тот же IP адрес,
- RFC 5494 - описание расширений, которые можно использовать для работы с различными протоколами. Среди них: HYPERChannel, DHCP options, ATM ARP, HARP, Dual Mac FDDI, MAPOS, FC, DNS DHCID,
Всю работу протокола можно условно разделить на 3 шага, которые он должен обрабатывать всякий раз как операционные системы или устройства в сети стараются собрать информацию о подсети. Ниже приведем список шагов:
- Устройство, которое используется для сбора данных собирает специальный запрос, который будет рассылаться для всей подсети.
- Все хосты подсети получив запрос должны ответить, если запрашиваемые данные совпадают с их характеристиками (MAC или IP адрес).
- Если данные запроса совпали с данными того, кто принял запрос, то он должен ответить парой значений MAC адрес и IP адрес.
Полученные данные должны быть сохранены в структуре - ARP таблице . В зависимости от имплементации эта таблица может обновляться, а может быть заполнена один раз и использоваться постоянно, пока устройство подключено к сети. Кстати, таблицу ARP во всех популярных операционных системах можно вывести командами:
arp -a
ip neigh
Структура пакета, который используется для работы с протоколом:

Инструменты для взаимодействия и проведения атак
Разобьём набор инструментов для работы с протоколом на несколько классов:
- Исследование данных
- Создание и манипуляция параметрами пакетов
- Инструменты для проведения атак
Исследование данных
Собрать данные с RFC и теоритически представлять из чего состоит пакет это только половина дела, теперь нужно посмотреть на имплементацию, так как она иногда отличается. Для этого можно использовать инструменты, которые называют снифферами. Самые популярные из них:
Инструменты представляют собой интерфейс, который позволяет посмотреть конкретные данные, которые заполняют участники сети. Ниже приведен вариант разобранного пакета ARP, открытого в WireShark:

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

Попробуем сделать кастомный пакет и отправить в сеть, в качестве теста используется сеть 192.168.0.1/24, запрос будем отправлять для несуществующего устройства по адресу 192.168.0.111. Листинг мини приложения будет таким:
packet = ARP(pdst='192.168.0.111') send(packet)

Для примера именно готового инструмента приведем nping - инструмент, который позволяет работать с различными протоколами, среди них есть ARP. Чтобы повторить запрос, который делали из Scapy, можно использовать вот такую команду:
sudo nping --arp --arp-target-ip='192.168.0.111' 192.168.0.1
Результат работы команды:

Инструменты для проведения атак
Как ни странно, хоть ARP один из самых простых протоколов, он является очень важным в проведении MiTM атак. Причем с помощью этого протокола происходит 90% задачи по перехвату трафика в сети, а уже оставшиеся 10% доделывают остальные инструменты и обработчики более высокоуровневых протоколов.
То есть для проведения ниже перечисленных атак, нужно, чтобы была произведена атака на протокол ARP, а уже далее отправлялись данные, которые приносят пользу от проведенной атаки. К атакам, которые используют ARP в качестве основы можно отнести:
- ARPSpoofing
- DNSSpoofing (в локальной сети)
Механизм атак достаточно прост, для успеха нужно чтобы трафик сети проходил через точку, которую контролирует злоумышленник. Для этого он может генерировать большое количество однотипных ARP пакетов, которые имеют определенные значения внутри.
В ARP протоколе существует всего 2 вида запросов, это запрос, который ищет соответствие MAC и IP адреса и ответ на этот запрос.
Если в неограниченном количестве продолжать генерировать ответы, которые содержат информацию о разных IP адресах и одном MAC адресе, то таким образом можно добиться обновления данных о маршруте у всех систем сети и заставить отправлять данные через тот MAC+IP, который постоянно мелькает в сети.
Практически атака может быть реализована с помощью следующих инструментов:
В списке представлены только те инструменты, которые имеют достаточно хорошую документацию и были протестированы на работоспособность. Ниже приведем способы проведения атак.
(ПЕРЕД ТЕМ КАК НАЧАТЬ ТЕСТИРОВАТЬ РЕАЛЬНЫЕ СЕТИ: сразу пытаться обрабатывать большие сети больше /24 маски может быть проблематично). Чтобы подготовить машину, рекомендуется сделать небольшую настройку:
sudo sysctl -w net.ipv4.ip_forward=1 sudo ip link set eth0 promisc on sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo modprobe nf_conntrack echo "1" > /proc/sys/net/netfilter/nf_conntrack_helper
Команды выше обычно используются для настройки NAT обработки, в таком виде можно будет обрабатывать трафик от большого количества хостов и не нарушать хотя бы первое время работу тестируемой сети. Все настройки выше нужно производить самостоятельно, ни один из перечисленных инструментов для проведения атак их не ставят.
Как запускать инструменты для тестирования:
Scapy - пример скрипта, который может проводить атаки на DNS и ARP можно найти тут
arpspoof -r ip ip.vi.c.tim ip.dest.i.na.tion
set arp.spoof.targets ip.of.subnet.ot.victim arp.spoof on
Механизмы защиты
Защита от перенаправления трафика может быть реализована за счет нескольких инструментов:
- Само оборудование, которое используется для построения сети. На сегодняшний день практически все устройства позволяют обнаруживать аномалии протокола ARP. Поэтому может быть проблематично редиректить трафик так как устройство просто отключит порт.
- Использование стороннего софта, который мониторит трафик сети. Небольшой список таких инструментов можно найти в сети в огромном количестве. К примеру вот такой.
Иногда настройкой и установкой даже одного из перечисленных способов пренебрегают и у злоумышленников появляется шанс перехватывать и модифицировать трафик.
Статья подготовлена в рамках старта курса Network Security. Узнать о курсе подробнее и зарегистрироваться на бесплатный урок можно по ссылке ниже.
- arp
- сети
- информационная безопасность