ARP-спуфинг (ARP spoofing — «подмена ARP», также ARP poisoning — «отравление ARP») — атака, эксплуатирующая уязвимости протокола ARP (Address Resolution Protocol, протокола разрешения адресов), который используется для определения MAC-адресов (физических сетевых адресов) устройств по их IP-адресам. Злоумышленники отправляют жертвам ARP-пакеты, устанавливающие соответствие между IP-адресами одних устройств в сети и MAC-адресами других устройств, например подконтрольных атакующим. В дальнейшем, если устройство жертвы отправляет данные на эти IP-адреса, злоумышленники могут перехватывать, модифицировать или перенаправлять сообщения.
Как работает протокол ARP
Для обмена данными устройствам в сети необходимо знать не только IP-, но и MAC-адрес получателя. ARP предполагает два основных способа определить MAC-адрес устройства, если известен его IP-адрес: найти запись о соответствии в локальном ARP-кэше или отправить широковещательный ARP-запрос, который получат все устройства в сети. В ответ на этот запрос устройство с нужным IP отправляет ARP-пакет, в котором указывает свой MAC-адрес. После этого соответствие IP-адреса указанному MAC-адресу сохраняется в кэше на устройстве-отправителе.
В некоторых случаях ARP-ответ рассылается без запроса на все устройства в сети. Этот механизм называется gratuitous ARP и используется, например, для оповещения о смене IP- или MAC-адреса устройства или о том, что новое устройство подключилось к сети.
Механизм ARP-спуфинга
В протоколе ARP нет механизмов аутентификации, поэтому любое устройство в сети может отправить ARP-пакет с соответствием некоего IP-адреса некоему MAC-адресу, и устройства-получатели примут эту информацию как истинную. Злоумышленники могут использовать эту особенность для проведения атак следующих видов:
- Man-in-the-middle (MitM, атака «человек посередине»). Злоумышленник назначает свой MAC-адрес IP-адресу легитимного устройства в сети (например, сетевого шлюза), отправив поддельный пакет gratuitous ARP или поддельный ответ на ARP-запрос. Устройства жертвы, записавшие в кэш данные, предоставленные атакующими, начинают отправлять сетевые пакеты на их устройство. В результате злоумышленники могут просматривать и изменять содержимое этих пакетов, сбрасывать их или перенаправлять настоящему получателю. Целью MitM-атаки может быть шпионаж, распространение вредоносного ПО и т. д.
- DoS (атака «отказ в обслуживании»). Отправляя ARP-пакеты, назначающие множеству IP-адресов MAC-адрес одного устройства, злоумышленники могут добиться перегрузки этого устройства.
Записи ARP сохраняются в кэше в течение недолгого времени — от нескольких минут на устройствах пользователей до нескольких часов на маршрутизаторах. Поэтому ARP-спуфинг имеет кратковременный эффект, и нормальный поток трафика восстанавливается вскоре после завершения атаки. Однако ARP-спуфинг может быть лишь звеном в цепочке многоэтапной атаки.
Защита от ARP-спуфинга
Существуют различные технологии и методы защиты от ARP-спуфинга. К ним относятся:
- Статические ARP-таблицы. Назначение фиксированных связей между IP- и MAC-адресами с последующим ручным обновлением достаточно трудоемко, но может быть оправдано, например, для защиты критически важных подсетей.
- Динамическая проверка ARP (dynamic ARP inspection, DAI). DAI автоматически оценивает достоверность ARP-пакетов и сбрасывает их, если они выглядят подозрительно. Такая функциональность есть на большинстве управляемых коммутаторов, которые используются в локальных сетях.
- Сегментация сети. ARP-пакеты могут рассылаться только внутри локальной сети. Если разделить эту сеть на множество подсетей (например, посредством VLAN), ARP-пакеты будут рассылаться только внутри подсети. Чем меньше сегменты, тем сложнее злоумышленникам провести атаку типа ARP-спуфинг, поскольку для этого нужен доступ к устройству внутри подсети. Кроме того, в сегментированной сети такая атака будет иметь меньше смысла.