ARP-spoofing
ARP-spoofing (отравление ARP-кэша, отравляющая маршрутизация ARP) — это метод атаки в компьютерных сетях, заключающийся в отправке злоумышленником поддельных сообщений ARP (Address Resolution Protocol) в локальной сети. Обычно целью атаки является ассоциация MAC-адреса злоумышленника с IP-адресом другого хоста, например, шлюза по умолчанию, в результате чего весь сетевой трафик, предназначавшийся этому IP-адресу, перенаправляется злоумышленнику.
ARP-spoofing может позволить злоумышленнику перехватывать кадры данных в сети, изменять их или блокировать весь сетевой трафик. Часто эта атака используется как первый этап для проведения других атак, таких как отказ в обслуживании, атаки типа «человек посередине» или захват сессии[1].
Атака применима только к сетям, использующим ARP, и для её осуществления злоумышленник должен иметь прямой доступ к локальному сегменту атакуемой сети[2].
Уязвимости ARP
Протокол разрешения адресов (ARP) — широко используемый сетевой протокол для преобразования адрес на сетевом уровне в адрес на канальный уровень.
Когда IP-датаграмма отправляется от одного хоста другому в локальной сети, IP-адрес получателя должен быть преобразован в MAC-адрес для передачи по канальному уровню. Если известен только IP-адрес, ПК на сетевом уровне отправляет широковещательный пакет — ARP-запрос, запрашивая соответствующий MAC-адрес. Хост с этим IP-адресом отвечает ARP-ответом, содержащим свой MAC-адрес[2].
ARP — протокол без состояния: сетевые узлы автоматически кэшируют любые ARP-ответы, которые они получают, вне зависимости от того, запрашивали ли они их. Даже если срок существования (TTL) записи не истёк, она будет перезаписана новым ARP-ответом. При этом в протоколе ARP отсутствуют механизмы аутентификации источника пакета, что и создаёт уязвимость, позволяющую производить ARP-spoofing[1][2][3].
Механизм атаки
Суть ARP-spoofing заключается в эксплуатации отсутствия аутентификации в ARP. Поддельные ARP-сообщения рассылаются по локальной сети злоумышленником с целью введения других хостов сети в заблуждение[4]. Атаку можно выполнить как с скомпрометированного хоста ЛВС, так и с компьютера злоумышленника, напрямую подключённого к сети жертвы.
Основная цель — привязать MAC-адрес злоумышленника к IP-адресу целевого хоста, чтобы весь трафик, предназначенный для него, направлялся взломщику. Злоумышленник может анализировать пакеты (шпионить), пересылать трафик к реальному получателю (чтобы атака осталась незамеченной), модифицировать передаваемые данные (реализация атаки «человек посередине») либо создавать отказ в обслуживании, обрывая соединения путём блокирования пакетов.
Защита
Самый простой способ повысить безопасность — добавление статических, доступных только для чтения записей для критичных сервисов в локальный кэш ARP. Связь IP-адреса и MAC-адреса может быть прописана вручную и не требует ARP-запросов[5]. Однако этот подход требует ручного обновления для всех систем в сети и плохо масштабируется: число статических ARP-записей на каждом из n хостов составляет n-1, а всего n²-n записей, что затрудняет администрирование в больших сетях.
Программы для обнаружения ARP-spoofing, как правило, используют методы сертификации или скрещивания-валидации ARP-ответов: неподтверждённые ответы блокируются. Такие решения могут интегрироваться с DHCP-сервером для автоматической сертификации как динамических, так и статических IP-адресов. Обнаружение может выполняться как на отдельных хостах, так и непосредственно на Ethernet-коммутаторах или другом сетевом оборудовании. Если один MAC-адрес связан с несколькими IP-адресами, это может свидетельствовать об атаке ARP-spoofing (хотя иногда такая конфигурация допустима легитимно). При пассивном подходе устройство просто слушает ARP-ответы в сети и отправляет уведомление (например, по email) в случае изменений[6].
AntiARP[7] реализует защиту в Windows на уровне ядра. ArpStar — модуль под Linux для ядра 2.6 и роутеров Linksys, который блокирует некорректные пакеты, нарушающие сопоставление, и содержит режим восстановления.
В некоторых виртуализированных средах, например KVM, реализованы механизмы защиты от подмены MAC-адресов между виртуальными машинами, работающими на одном хосте[8].
Ряд сетевых карт поддерживают антиспуфинг MAC- или VLAN-адресов на аппаратном уровне[9].
OpenBSD пассивно отслеживает попытки подмены локального хоста и уведомляет администратора при попытке перезаписать статическую запись[10].
Операционные системы реагируют на ARP-ответы по-разному. Linux игнорирует неподписанные (неожиданные) ответы, но при этом обновляет кэш на основе ответов других машин. Solaris принимает обновления только по истечении таймаута записи. В Microsoft Windows поведение кэша ARP можно настроить через параметры реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters: ArpCacheLife, ArpCacheMinReferenceLife, ArpUseEtherSNAP, ArpTRSingleRoute, ArpAlwaysSourceRoute, ArpRetryCount[11].
Легитимное использование
Техники, аналогичные используемым в ARP-spoofing, могут применяться для построения избыточных сетевых сервисов. Например, некоторые программы позволяют резервному серверу отправить беззапросный ARP-запрос для взятия на себя адреса отключившегося основного сервера и предоставления прозрачной надёжности[12][13]. Circle[14] и CUJO предлагают коммерческие продукты на базе таких методов.
ARP-spoofing иногда используется разработчиками для отладки IP-трафика между двумя хостами в сетях с использованием коммутатора: если хосты A и B обмениваются данными через Ethernet-коммутатор, сетевая активность остаётся невидимой для хоста M. Разработчик прописывает для хоста A MAC-адрес M для B, и наоборот — для B MAC-адрес M для A; M перенаправляет пакеты по назначению. Таким образом, M может просматривать трафик («человек посередине»).
Инструменты
| Название | ОС | Графический интерфейс | Бесплатное ПО | Защита | По интерфейсам | Активный/Пассивный режим | Особенности |
|---|---|---|---|---|---|---|---|
| Agnitum Outpost Firewall | Windows | да | нет | да | нет | пассивный | |
| AntiARP | Windows | да | нет | да | нет | активный+пассивный | |
| Antidote[15] | Linux | нет | да | нет | ? | пассивный | Демон для Linux, мониторит соответствие, реагирует на аномально большой поток ARP-пакетов. |
| Arp_Antidote[16] | Linux | нет | да | нет | ? | пассивный | Патч ядра Linux 2.4.18-2.4.20, отслеживает изменения, пользователь может определить действие при выявлении. |
| Arpalert | Linux | нет | да | нет | да | пассивный | Список разрешённых MAC-адресов, сигнализация при появлении чужих адресов. |
| ArpON | Linux | нет | да | да | да | активный + пассивный | Демон для проверки достоверности ARP, защищает кэш от подмены и отравления в статических, динамических и гибридных сетях. |
| ArpGuard | Mac | да | нет | да | да | активный+пассивный | |
| ArpStar | Linux | нет | да | да | ? | пассивный | |
| Arpwatch | Linux | нет | да | нет | да | пассивный | Отслеживание пар IP-MAC-адресов, сообщения об изменениях через Syslog и Email. |
| ArpwatchNG | Linux | нет | да | нет | нет | пассивный | То же, что и Arpwatch, без функции оповещения по интерфейсам. |
| Colasoft Capsa | Windows | да | нет | нет | да | анализ без автоматического обнаружения | |
| cSploit[17] | Android (root) | да | да | нет | да | пассивный | |
| elmoCut[18] | Windows | да | да | нет | ? | пассивный | EyeCandy-ARP-спуфер для Windows |
| Prelude IDS | ? | ? | ? | ? | ? | ? | Плагин ArpSpoof, проверка адресов. |
| Panda Security | Windows | ? | ? | да | ? | активный | Базовая проверка адресов. |
| remarp | Linux | нет | да | нет | нет | пассивный | |
| Snort | Windows/Linux | нет | да | нет | да | пассивный | Препроцессор Arpspoof, базовая проверка ARP-адресов. |
| Winarpwatch | Windows | нет | да | нет | нет | пассивный | Отслеживание соответствия IP-MAC, оповещения через Syslog и Email. |
| XArp[19] | Windows, Linux | да | да (+pro версия) | да (Linux, Pro) | да | активный + пассивный | Продвинутое обнаружение spoofing, активная и пассивная проверка, две панели для настройки модулей и проверки на разных интерфейсах. |
| Seconfig XP | Windows 2000/XP/2003 | да | да | да | нет | только активирует штатную защиту Windows | |
| zANTI | Android (root) | да | да | нет | ? | пассивный | |
| NetSec Framework | Linux | нет | да | нет | нет | активный | |
| anti-arpspoof[20] | Windows | да | да | ? | ? | ? | |
| DefendARP:[21] | ? | ? | ? | ? | ? | ? | Хостовое мониторинг и защита ARP-таблицы (WIFI): определяет атаку, исправляет отравленные записи, указывает MAC и IP злоумышленника. |
| NetCutDefender:[22] | Windows | ? | ? | ? | ? | ? | Графический интерфейс для защиты от ARP-атак. |
Примечания
Литература
- Ramachandran, Vivek; Nandi, Sukumar. Detecting ARP Spoofing: An Active Technique // Information Systems Security: First international conference, ICISS 2005, Kolkata, India, December 19-21, 2005 : proceedings. — Birkhauser, 2005. — С. 239. ISBN 978-3-540-30706-8.
Ссылки
- Stephanie Reigns. Очистка кэша ARP в Linux (англ.). Coders Eye (7 октября 2014). Дата обращения: 5 марта 2018. Архивировано 8 апреля 2019 года.