Статья расскажет об очень простом протоколе, который может быть использован для атак на сети. Рассмотрим из чего состоит протокол и какие инструменты есть для работы с ним.

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 шага, которые он должен обрабатывать всякий раз как операционные системы или устройства в сети стараются собрать информацию о подсети. Ниже приведем список шагов:

  1. Устройство, которое используется для сбора данных собирает специальный запрос, который будет рассылаться для всей подсети.

  2. Все хосты подсети получив запрос должны ответить, если запрашиваемые данные совпадают с их характеристиками (MAC или IP адрес).

  3. Если данные запроса совпали с данными того, кто принял запрос, то он должен ответить парой значений MAC адрес и IP адрес.

Полученные данные должны быть сохранены в структуре - ARP таблице. В зависимости от имплементации эта таблица может обновляться, а может быть заполнена один раз и использоваться постоянно, пока устройство подключено к сети. Кстати, таблицу ARP во всех популярных операционных системах можно вывести командами:

arp -a

Или

ip neigh

Структура пакета, который используется для работы с протоколом:

Инструменты для взаимодействия и проведения атак

Разобьём набор инструментов для работы с протоколом на несколько классов:

  1. Исследование данных

  2. Создание и манипуляция параметрами пакетов

  3. Инструменты для проведения атак

Исследование данных

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

  • WireShark

  • tcpdump

Инструменты представляют собой интерфейс, который позволяет посмотреть конкретные данные, которые заполняют участники сети. Ниже приведен вариант разобранного пакета 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:

arpspoof -r ip ip.vi.c.tim ip.dest.i.na.tion

bettercap:

set arp.spoof.targets ip.of.subnet.ot.victim
arp.spoof on

Механизмы защиты

Защита от перенаправления трафика может быть реализована за счет нескольких инструментов:

  1. Само оборудование, которое используется для построения сети. На сегодняшний день практически все устройства позволяют обнаруживать аномалии протокола ARP. Поэтому может быть проблематично редиректить трафик так как устройство просто отключит порт.

  2. Использование стороннего софта, который мониторит трафик сети. Небольшой список таких инструментов можно найти в сети в огромном количестве. К примеру вот такой.

Иногда настройкой и установкой даже одного из перечисленных способов пренебрегают и у злоумышленников появляется шанс перехватывать и модифицировать трафик.

Статья подготовлена в рамках старта курса Network Security. Узнать о курсе подробнее и зарегистрироваться на бесплатный урок можно по ссылке ниже.

Комментарии (1)


  1. Akina
    31.10.2022 21:28

    1. Устройство, которое используется для сбора данных собирает специальный запрос, который будет рассылаться для всей подсети.

    Надо ли понимать эту фразу так, что узлы из других подсетей, находящиеся в том же L2-сегменте, не будут участвовать в процессе? Впрочем, не вижу иной трактовки сказанного.

    2. Все хосты подсети получив запрос должны ответить, если запрашиваемые данные совпадают с их характеристиками (MAC или IP адрес).

    А если ни МАС, ни IP не совпадают - то, судя по этой фразе, не должны. А если учесть, что МАС-ов мы никаких ещё не знаем, IP тоже, кроме адреса шлюза по умолчанию - то шансов на ответ у нас чуть ли не ноль?

    3. Если данные запроса совпали с данными того, кто принял запрос, то он должен ответить парой значений MAC адрес и IP адрес.

    С учётом предыдущего пункта - ничего мы, кроме MAC шлюза по умолчанию, не узнаем, получается...

    ----------------------------

    Что не так?