Подделка записей кэша ARP
Протокол разрешения адресов (Address Resolution Protocol, ARP) преобразует адреса на канальном (MAC-адреса) и сетевом (IP-адреса) уровнях. Атака путем поделки записей кэша ARP позволяет злоумышленникам перехватывать обмен данными между сетевыми устройствами за счет повреждения таблиц ARP сети (сопоставлений MAC- и IP-адресов устройств).
На используемый по умолчанию сетевой шлюз злоумышленник отправляет фальшивое ответное сообщение ARP, которое информирует, что MAC-адрес связан с IP-адресом другого целевого объекта. Когда используемый по умолчанию шлюз получает это сообщение и транслирует данное изменение на все другие устройства в сети, весь трафик целевого объекта на любое другое сетевое устройство начинает проходить через компьютер злоумышленника. Это действие позволяет злоумышленнику проверять или изменять трафик перед его перенаправлением в надлежащее место назначения.
ARP-spoofing
ARP-spoofing (ARP-poisoning) — техника сетевой атаки, применяемая преимущественно в Ethernet, но возможная и в других, использующих протокол ARP сетях, основанная на использовании недостатков протокола ARP и позволяющая перехватывать трафик между узлами, которые расположены в пределах одного широковещательного домена. Относится к числу spoofing-атак.
В статье детально описана техника атаки ARP-spoofing, на примере атаки, выполненной с помощью программы ettercap; рассмотрены такие методы обнаружения и предотвращения ARP-атак, как слежение за ARP-активностью с помощью arpwatch, наложение специальных патчей для придания иммунитета системам, использование VLAN и PPPoE. Показано как решать имеющие непосредственное отношение к протоколу ARP задачи: поиск компьютеров по известному MAC-адресу и обнаружение новых компьютеров в сети.
Содержание
Протокол ARP и атаки с его использованием
Что такое и для чего нужен ARP
Протокол ARP предназначен для преобразования IP-адресов в MAC-адреса. Чаще всего речь идёт преобразовании в адреса Ethernet, но ARP используется и в сетях других технологий: Token Ring, FDDI и других.
- Address Resolution Protocol — страница в Wikipedia
- RFC 826 — описание стандарта ARP
Алгоритм работы ARP
Протокол может использоваться в следующих случаях:
- Хост A хочет передать IP-пакет узлу B, находящемуся с ним в одной сети;
- Хост A хочет передать IP-пакет узлу B, находящемуся с ним в разных сетях, и пользуется для этого услугами маршрутизатора R.
В любом из этих случае узлом A будет использоваться протокол ARP, только в первом случае для определения MAC-адреса узла B, а во втором — для определения MAC-адреса маршрутизатора R. В последнем случае пакет будет передан маршрутизатору для дальнейшей ретрансляции.
Далее для простоты рассматривается первый случай, когда информацией обмениваются узлы, находящиеся непосредственном в одной сети. (Случай когда пакет адресован узлу находящемуся за маршрутизатором отличается только тем, что в пакетах передаваемых после того как ARP-преобразование завершено, используется IP-адрес получателя, но MAC-адрес маршрутизатора, а не получателя.)
Проблемы ARP
Протокол ARP является абсолютно незащищённым. Он не обладает никакими способами проверки подлинности пакетов: как запросов, так и ответов. Ситуация становится ещё более сложной, когда может использоваться самопроизвольный ARP (gratuitous ARP).
Самопроизвольный ARP — такое поведение ARP, когда ARP-ответ присылается, когда в этом (с точки зрения получателя) нет особой необходимости. Самопроизвольный ARP-ответ это пакет-ответ ARP, присланный без запроса. Он применяется для определения конфликтов IP-адресов в сети: как только станция получает адрес по DHCP или адрес присваивается вручную, рассылается ARP-ответ gratuitous ARP.
Самопроизвольный ARP может быть полезен в следующих случаях:
- Обновление ARP-таблиц, в частности, в кластерных системах;
- Информирование коммутаторов;
- Извещение о включении сетевого интерфейса.
Несмотря на эффективность самопроизвольного ARP, он является особенно небезопасным, поскольку с его помощью можно уверить удалённый узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети, изменился и указать, какой адрес используется теперь.
- Gratuitous_ARP на wiki.wireshark.org
ARP-spoofing
![]()
До выполнения ARP-spoofing’а в ARP-таблице узлов A и B существуют записи с IP- и MAC-адресами друг друга. Обмен информацией производится непосредственно между узлами A и B. (зелёная стрелка)
В ходе выполнения ARP-spoofing’а компьютер C, выполняющий атаку, отправляет ARP-ответы (без получения запросов):
- узлу A: с IP-адресом узла B и MAC-адресом узла C;
- узлу B: с IP-адресом узла A и MAC-адресом узла C.
В силу того что компьютеры поддерживают самопроизвольный ARP (gratuitous ARP), они модифицируют собственные ARP-таблицы и помещают туда записи, где вместо настоящих MAC-адресов компьютеров A и B стоит MAC-адрес компьютера C. (красные стрелки)
После того как атака выполнена, когда компьютер A хочет передать пакет компьютеру B, он находит в ARP-таблице запись (она соответствует компьютеру C) и определяет из неё MAC-адрес получателя. Отправленный по этому MAC-адресу пакет приходит компьютеру C вместо получателя. Компьютер C затем ретранслирует пакет тому, кому он действительно адресован — т.е. компьютеру B. (синие стрелки)
Инструменты для выполнения ARP-spoofing’а
В настоящее время существует несколько инструментов для выполнения ARP-spoofing’а, работающие как в ОС Linux, так и в ОС Windows.
- Ettercap
- Cain & Abel
- dsniff
- arp-sk
Все названные программы распространяются свободно.
Выполнение ARP-spoofing’а c помощью ettercap
[Пример выполнения атаки с помощью ettercap.] Рассмотрим как выполнить вышеописанную атаку с помощью ettercap.
- Что происходит на машине A.
- Что происходит на машине B.
- Что происходит на машине C.
Детально рассмотрим как выполняется ARP-spoofing. В качестве инструмента будем использовать программу ettercap, однако другие инструменты для выполнения ARP-spoofing’а работают аналогичным образом.
- Машина A — hostA — 192.168.15.201 — 00:04:75:75:46:B1
- Машина B — hostB — 192.168.15.254 — 00:0A:01:D4:D1:39
- Машина C — hostC — 192.168.15.200 — 00:0A:01:D4:D1:E3
Атаку выполняет hostC против узлов hostA и hostB.
Установить ettercap принятым в системе способом:
Выполнить атаку против узлов hostA и hostB:
- -T — использовать текстовый (консольный) интерфейс;
- -M arp — использовать модуль ARP-spoofing’а для выполнения атаки;
- -L log — записывать журнал перехвата в файлы с именем log.*;
В качестве аргументов указываются IP-адреса машин, против которых нужно выполнять атаку ARP-spoofing.
Пусть, например, в это время узел A обращается к узлу B по протоколу POP3, классическому примеру незащищённого, но очень распространённого протокола — проверяет почту.
Данные передающиеся между клиентом hostA и сервером hostB проходят через узел C. Они выводятся на экран и записываются в файлы.
После того как атака завершена для выхода из ettercap необходимо нажать q. Программа отсылает ARP-пакеты для восстановления старых записей в кэше ARP узлов, чтобы они общались друг с другом напрямую.
В текущем каталоге должны появиться два файла, начинающиеся словом, указанным после ключа -L при вызове ettercap:
Просмотреть их содержимое можно с помощью программы etterlog, входящей в пакет ettercap:
Как видно, пароль был успешно перехвачен.
Посмотрим как на узле hostA (атакуемом) меняется ARP-таблица
Во время атаки.
После атаки.
Если смотреть, что происходит на интерфейсе eth0 компьютера hostA (через который выполняется атака), можно увидеть, что как только начинается атака, на интерфейс поступают ARP-пакеты, которые указывают, что MAC-адрес машины 192.168.15.254 изменился. Пакеты приходят постоянно. Когда атака завершена, MAC-адрес в пакета внезапно меняется на другой. А потом они вообще перестают приходить.
Точно также можно перехватить и прослушать телефонный звонок — VoIP-sniffing.
Такая техника гарантирует, что таблица ARP на жертвах будет восстановлена и никто не заметит атаки.
Методы обнаружения
arpwatch
Программа arpwatch отслеживает всю ARP-активность на указанных интерфейсах. Когда она замечает аномалии, например, изменение MAC-адреса при сохранении IP-адреса, или наоборот, она сообщает об этом в syslog.
Инсталляция и конфигурирование arpwatch
Процедуру инсталляции и конфигурирования arpwatch рассмотрим на примере системы Debian GNU/Linux.
Установка arpwatch выполняется традиционным для дистрибутива способом:
После того как демон проинсталлирован, он автоматически запускается. (в других системах его, возможно, нужно будет запускать вручную.)
Демон не имеет никаких конфигурационных файлов. Конфигурация arpwatch полностью определяется набором передаваемых ему ключей. В Debian GNU/Linux ключи указываются в конфигурационном файле /etc/default/arpwatch (в FreeBSD — в файле /etc/rc.conf).
При необходимости изменить конфигурацию arpwatch (в частности, заставить его прослушивать другие интерфейсы), нужно править указанный файл:
Если конфигурация была изменена, демон должен быть перезапущен:
Когда демон запускается, он обнаруживает новые станции. Не выполняется никаких активных действий — просто прослушивается ARP-трафик. Обнаруженные узлы запоминаются; о том, что обнаружен новый узел arpwatch сообщает в syslog.
Обо всех зафиксированных им аномалиях в работе протокола ARP демон также сообщает в syslog:
Обратите внимание на строку
которая сообщает о том, что узел 192.168.15.254 изменил MAC-адрес.
Возможно, это означает, что против узла, на котором запущен arpwatch выполняется ARP-spoofing с целью перехвата трафика, которым он обменивается с узлом 192.168.15.254.
Дополнительная информация
- LBNL’s Network Research Group — домашняя страница arpwatch
Обнаружение узла, выполняющего ARP-spoofing
Если коммутатор управляемый, можно определить, на каком из его портов работает узел, имеющий определённый MAC-адрес.
Например, это можно сделать с помощью скрипта mac2port. Скрипт связывается с коммутатором по SNMP и опрашивает его таблицу соответствия MAC-адресов портам. Полученная информация выдаётся в удобном для поиска виде на стандартный поток вывода. Для упрощения использования скрипт выводит MAC-адреса в таком же формате, как это делает arpwatch.
Условия для использования скрипта:
- скрипт должен быть размещён в каталоге /usr/local/bin, или другом каталоге указанном в PATH;
- скрипт должен быть исполняемым (chmod +x mac2port) или вызываться с интерпретатором perl;
- в теле скрипта должен быть указан IP-адрес коммутатора и его SNMP RO community;
- коммутатор должен поддерживать SNMP версии 2; поддержка должна быть включена (не сложно переписать скрипт на более безопасный протокол SNMPv3, но эта версия работает именно с SNMPv2).
Пример использования скрипта:
Если ранее с помощью arpwatch была зафиксирована атака:
можно воспользоваться скриптом, и определить с какого порта коммутатора она производилась (при этом не имеет значения, истинный ли это MAC-адрес сетевой карты атакующего или он был изменён):
Важно чтобы определение выполнялось быстро, пока информация об атакующем ещё хранится в памяти коммутатора.
Для этого имеет смысл вызывать скрипт поиска автоматически при обнаружении соответствующей записи в системном журнале. Анализ журнала можно выполнять, например, такими средствами как swatch или syslog-ng.
Например, если используется syslog-ng.
можно создать скрипт, выполняющий анализ:
/usr/local/bin/syslog-ng-arpwatch <sh/>
- !/bin/sh
while read line do mac=»$(echo $line | grep ‘changed ethernet address’ | awk ‘
и подключить его к syslog-ng.
Для этого нужно в конфигурационном файле syslog-ng.conf указать следующие строки:
можно и не указывать, но на нагруженных системах, она существенно снижает нагрузку.
В этом случае при выполнении arp-spoofing’а происходит следующее:

- Демон arpwatch кидает информацию в syslog (через стандартный сокет /dev/log или /var/run/log);
- В том случае, если в качестве syslog-сервера используется Syslog-NG, он обнаруживает сигнатуру сообщения и передаёт обнаруженную строку скрипту syslog-ng-arpwatch;
- Скрипт syslog-ng-arpwatch, если видит, что проблема действительная связана с ARP-spoofing’ом, вызывает скрипт поиска порта по MAC-адресу;
- Скрипт mac2port обращается к коммутатору по SNMP;
- Коммутатор отвечает — передаёт таблицы содержащую информацию о соответствии MAC-адресов портам вызвавшему его скрипту;
- Скрипт mac2port возвращает таблицу соответствия MAC-адресов портам коммутатора скрипту syslog-ng-arpwatch;
- Скрипт syslog-ng-arpwatch находит интересующий порт и пишет сообщение в syslog;
- Демон syslog-ng записыват сообщение с информацией о порте коммутатора в файл, а также может передать его по SMS или почте администратору или вызвать внешнюю программу (которая, например, после дополнительных проверок может заблокировать порт коммутатора);
- Администратор читает об обнаруженной атаке в файле.
Вот как это выглядит в файле:
Текст скрипта mac2port
Другие средства обнаружения
- XArp — аналог arpwatch для Windows
- remarp — аналог arpwatch, работающий через SNMP
- ArpStar — система автоматического обнаружения и предотвращения ARP-spoofing’a; возможно восстановление ARP-таблицы заражённых узлов
Методы предотвращения
Одностороняя атака
Если нужно перехватить трафик, который уходит с какого-то узла в сети во внешнюю сеть, атаковать нужно узел и шлюз сети. Однако на шлюзе средство обнаружения ARP-spoofing’а может присутствовать с намного более высокой вероятностью, чем на узле. Поскольку нас интересует трафик, который узел отправляет в сеть, достаточно модифицировать ARP-таблицу только узла и не рисковать быть замеченным шлюзом. Данные, которые шлюз отправляет узлу будут проходить напрямую, а данные, которые узел отправляет шлюзу будут проходить через систему злоумышленника.
(как на шлюзе, так и на узле можно было бы отследить, что на пакетах приходящих от узла MAC-адреса отличаются от тех, что записаны у него в ARP-таблице, т.е. что пакеты отправляются на один MAC-адрес, а приходят с другого. Но вот какие системы это делают?)
Борьба с ARP-spoofing’ом с помощью arpwatch и подобных инструментов оказывается хотя и очень простой, но далеко не эффективной.
- Во-первых, для того чтобы зафиксировать атаку, на защищаемых узлах должна работать программа arpwatch (или аналогичная). В том случае если она запущена только на одном из двух узлов, подвергающихся ARP-spoofing’у, существует возможность незамеченной односторонней атаки.
- Во-вторых, и это более важно, arpwatch позволяет только зафиксировать атаку, но он не в состоянии её предотвратить.
Для предотвращения последствий атаки необходимо вмешательство администратора или внешней системы. В первом случае между обнаружением и реакцией администратора может пройти слишком много времени. Во втором вмешательство не требуется, реакция выполняется автоматически: как только ARP-аномалия зафиксирована, определяется порт коммутатора, к которому подключён источник аномалии, и порт блокируется до выяснения. Однако, такой подход имеет большой недостаток — он может быть использован для выполнения DOS-атаки: достаточно только узнать MAC-адрес компьютера, который надо отключит от сети, и сымитировать атаку с этого компьютера. Дальше наша система обнаружения и предотвращения ARP-spoofing’а все сделает сама.
В основе рассматриваемых способов противодействия ARP-атакам лежат два совершенно различных принципа, каждый из которых обладает как достоинствами, так и недостатками.
Оба способа, помимо того что они надёжно защищают от ARP-spoofing’а имеют ещё то преимущество, что позволяют полностью контролировать трафик — не только тот, что проходит через шлюз, но и тот, который циркулирует между машинами (В случае использования PPPoE машины могут по взаимному согласию обмениваться данными между собой напрямую. В случае использования VLAN такой возможности они лишены напрочь.)
Статический ARP
Можно бороться со слабостями протокола ARP кардинально — просто не использовать его. ARP-таблицу можно сформировать вручную, при этом она становится неуязвимой к ARP-атакам. Для этого нужно добавить необходимые MAC-адреса в таблицу.
Если при этом отключить использование ARP на сетевых интерфейсах, то доступны будут только те системы, (1) MAC-адреса которых добавлены в ARP-таблицу нашего узла и (2) наш MAC-адрес добавлен в ARP-таблицы узлов, с которыми производится обмен трафиком.
Если не отключать использование ARP на сетевых интерфейсах, MAC-адрес заданный статически имеет приоритет. Если MAC-адрес для какого-то IP-адреса не задан, используется ARP-запрос.
Статическую ARP-таблицу можно получить на основе существующей ARP-таблицы маршрутизатора:
Если написать так:
она запишется в файл /etc/ethers
Нужно чтобы в таблице было максимальное количество машин сети. Нужно или строить таблицу в момент пика сетевой активности или предварительно пройдясь по всему диапазону адресов пингами: <sh/> for i in `seq 1 255` do
done (здесь 192.168.15.0/24 — сеть, для которой выполняется сканирование).
После того как файл /etc/ethers создан, его можно загружать с помощью команды:
Дальше можно вообще отключить ARP на интерфейсе, и те кто не прописан в /etc/ethers, вообще не смогут пользоваться маршрутизатором.
Преимущества и недостатки
Метод ручного формирования ARP-таблиц имеет следующие недостатки:
- добавляется много рутинной работы, связанной с добавлением и модификацией MAC-адресов. Каждое изменение в сети, связанное с заменой или перестановкой сетевых карт, должно сопровождаться редактирование ARP-таблиц в файлах.
- клиентские узлы остаются по-прежнему уязвимыми к ARP-spoofing’у.
Патчи ядра системы
Существует патч (предложенные buggzy) для ядер Linux/FreeBSD, который позволяет свести к минимуму опасность успешного выполнения атаки ARP-spoofing против пропатченных систем.
Суть метода состоит в следующем. При приеме ARP-ответа производится сравнение старого и нового MAC-адресов, и при обнаружении его изменения запускается процедура верификации. Посылается ARP-запрос, требующий всем хозяевам IP-адреса сообщить свои MAC-адреса.
Если выполняется атака настоящая система, имеющая этот IP-адрес, ответит на запрос, и, таким образом, атака будет распознана. Если же изменение MAC-адреса было связано не с атакой, а со стандартными ситуациями, ответа, содержащего «старый» MAC-адрес, не будет, и по прошествию определенного таймаута система обновит запись в кеше.
При обнаружении подозрительной ситуации («двойника») ядро выводит сообщение: «ARP_ANTIDOTE: Possible MITM attempt!», и не обновляет запись ARP-кеша, а наоборот, прописывает старую запись как статическую. После того как источник атаки выявлен и обезврежен, статическую запись можно удалить.
Патчи, реализующие этот метод борьбы:
- arp_antidote для Linux
- arp_antidote 2 для Linux
- Arp Poison patch для FreeBSD
Патчи работают только с ядром серии 2.4.
Другие методы борьбы с ARP-spoofing’ом
К сожалению, этот метод не применим к Windows-системам, и другим системам, работающим под управлением ОС, исходный код которых недоступен.
Необходимо решить проблему кардинально: нужно так построить сеть, чтобы выполнение ARP-spoofing’а в ней было принципиально невозможно. А если возможным, то бесполезным.
Это можно сделать двумя способами:
- Ограничить для каждого узла широковещательный домен до уровня двух узлов: самого узла и ближайшего шлюза. подробнее. Почему атаку невозможно выполнить в этом случае. Тогда атаку просто некому выполнять — нужен третий. А его нет.
- Сделать так чтобы все, абсолютно все, передаваемые в сети данные были зашифрованы и прослушивание этих данных, ни к чему бы не привело. Любое же изменение данных, в случае возникновения, сразу же обнаружено. То есть, фактически сеть должна быть такой же и безопасной при использовании вместо коммутатора концентратора.
Первый способ делается с помощью VLAN’ов и/или packet filtering на коммутаторах. Второй — с помощью PPPoE.
Использование VLAN
Компьютер C может использовать ARP-spoofing против компьютера A только в том случае, если они находятся в одной сети канального уровня. В том случае, если они разделены маршрутизатором, атака невозможна (возможна атака на маршрутизатор, но это совсем другое дело).
VLAN’ы помогают сегментировать сеть — превратить одну сеть в множество изолированных на канальном уровне фрагментов, которые соединены между собой маршрутизатором. Атака ARP-spoofing возможна только между компьютерами находящимися в одном VLAN’е. В наиболее крайнем случае, когда в каждом VLAN’е находится только два компьютера: собственно компьютер и маршрутизатор, атака ARP-spoofing становится невозможной в принципе. К сожалению, такая организация сети являются очень требовательной к ресурсам маршрутизатора и используется редко.
Преимущества
- От клиента ничего не требуется. Он работает, как и работал. Если IP-адрес задан статически, необходима смена IP-адреса и сетевой маски.
- Данные не шифруются, и производительность не теряется. Малые потери на дополнительные поля в заголовке.
- Нельзя организовать обмен данными в обход шлюза между узлами в разных VLAN’ах. Если каждый узел находится в собственном VLAN’е такой обмен невозможен вообще.
Недостатки
- Необходима поддержка VLAN’ов коммутатором.
- Необходимо потратить время на настройку VLAN’ов, дополнительную настройку DHCP-сервера.
- Данные не шифруются. Если их прослушивание каким-то образом удастся, то они могут быть прочтены и/или модифицированы.
Существует мнение, что некоторые коммутаторы позволяют пересылать трафик из одного VLAN’а напрямую в другой в обход запрета прямой пересылки кадров между VLAN’ами. Об одном из способов подробнее можно почитать на странице [1]
Использование packet filtering ACL на коммутаторах
Современные коммутаторы Dlink и Cisco поддерживают продвинутые инструменты анализа пакетов и фильтрацию по их параметрам. Существуют два направления фильтрации:
- Фильтрация всех ARP-пакетов на всех пользовательских портах, у которых в Sender protocol address (SPA) содержится IP-адрес шлюза. Тем самым защищаются от подмены адреса шлюза.
- Фильтрация всех ARP-пакетов на каждом из пользовательских портов, у которых Sender hardware address (SHA) и Sender protocol address (SPA) не совпадают с известными заранее MAC и IP-адресами пользователя этого порта. Тем самым защищаются от всех arp-атак, то есть не только адреса шлюза, но и адреса другого пользователя.
Настройку ACL для предотвращения ARP-spoofing’а зачастую увязывают в один комплекс с выдачей ip по DHCP с использованием опции 82, позволяющей выдавать ip по порту устройства и IP-Mac-Port binding, запрещающего подмены IP/MAC на третьем уровне.
Настройка коммутаторов Dlink описана в FAQ(1, 2, 3) и на форуме dlink.ru (1, 2), настройка коммутаторов ProCurve в этом wiki.
Преимущества
- От клиента ничего не требуется. Он работает, как и работал.
- Данные не шифруются, и производительность не теряется.
Недостатки
- Необходимость приобретения достаточно «умного» оборудования на access-уровень
- Необходим инструмент по автоматизации привязок и выдачи новых ip в случае легальной смены оборудования пользователем.
- Packet filtering запрещает подмены без какого-бы то ни было уведомления в логи.
Использование PPPoE
Преимущества
- Данные шифруются
- Нет никаких требований к железу. Даже не обязательно чтобы сеть была коммутируемой
Недостатки
- На клиенте требуется настройка доступа по PPPoE. На некоторых системах требуется инсталляция специального клиентского программного обеспечения.
- За счёт потерь на инкапсуляцию, снижается производительность сети. Если выполняется шифрование данных, то временные потери увеличиваются.
- При взаимном согласии сторон можно организовать обмен данными между узлами в обход шлюза.
- При большом количестве соединений PPPoE (>200) возрастает нагрузка на центральный процессор сервера. Иногда, приходится жертвовать шифрованием данных.
- Если будет большая нагрузка на сервер легче использовать PPTPd или IPsec
Мифы и заблуждения, касающиеся ARP-spoofing
- ARP-spoofing можно предотвратить с помощью функции port-security коммутаторов
Функция port-security коммутатора позволяет защититься от смены MAC-адреса на порту коммутатора. В том случае если компьютер, подключенный к порту коммутатора меняет MAC-адрес или если меняется компьютер, коммутатор замечает подмену и перестаёт передавать пакеты отправленные с новым обратным адресом. Кроме этого, могут выполняться другие действия: отсылка SNMP-трапа, запись в syslog и тому подобное.
При ARP-spoofing’е MAC-адрес отправителя (атакующего) не меняется и поэтому с точки зрения port-security никаких аномалий нет. Функция port-security никак не отвечает за соответствие IP-адресов и MAC-адресов, а атака ARP-spoofing построена именно на этом.-
Что такое ARP-спуфинг и как от него защититься?
Подмена протокола разрешения адресов (ARP) или ARP-спуфинг – это сетевая атака, которую хакеры используют для перехвата данных. Проведя эту атаку, злоумышленник обманывает устройство и перехватывает сообщения. Как защититься от такой атаки? Давайте разбираться!
Немного про протокол ARP и его подмену
Чтобы понимать метод работы ARP-спуфинга, нам понадобятся базовые знания о протоколе ARP.
ARP – протокол связи, соединяющий динамический IP-адрес с MAC-адресом устройства и поток данных в локальной сети. Например, хост A в компьютерной сети хочет соединить свой IP-адрес с MAC-адресом хоста B. Для этого он посылает ARP-запрос всем другим хостам в локальной сети. После этого запроса он получает ARP-ответ от хоста B с его MAC-адресом. Затем запрашивающий хост сохраняет этот адрес в своем ARP-кэше, похожем на список контактов.
Именно здесь и вступают в дело злоумышленники. Выдавая себя за хост B, они отправляют сообщения на хост A. В итоге адрес хакера сохраняется в ARP-кэше как адрес хоста B и будет получать предназначенные для хоста сообщения.
Для чего же используется ARP-спуфинг?
Для шпионажа, проведения MITM и DoS-атак. Кратко разберем каждую из задач:
- Шпионаж – хакеры просто просматривают поток данных между хостами A и B, не меняя его;
- MITM-атака или атака посредника – злоумышленники меняют информацию перед ее отправкой на целевой узел;
- DoS-атака – киберпреступники блокируют передачу данных между двумя и более узлами.
Врага нужно знать в лицо: кто пользуется ARP-спуфингом?
Методом подмены ARP пользуются не только хакеры. Он помогает разработчикам отлаживать сетевой трафик, а также используется пентестерами для имитации отравления ARP-кэша.
Последствия атак с использованием ARP-спуфинга
Если злоумышленники шпионят за жертвой, проводят MITM-атаку или планируют другие атаки в будущем, то жертва может даже и не заметить каких-либо последствий от подмены ARP. Но как только конечная цель хакеров будет достигнута, они могут попробовать перегрузить компьютер с помощью вредоносного ПО или заразить систему программой-вымогателем.
Почему ARP-спуфинг опасен?
С помощью ARP-спуфинга хакеры получают доступ к личным данным жертв. К тому же, эти атаки могут быть использованы для внедрения вредоносного ПО.
А как определить подмену ARP?
Чтобы проверить, подвергся ли ваш ARP спуфингу, найдите кэш ARP-протокола. Для этого подойдет любая программа для управления конфигурацией устройства. Если в вашем ARP-кэше будут два IP-адреса с одинаковыми MAC-адресами, то вы могли стать жертвой атаки. Хакеры обычно используют поддельное программное обеспечение, которое отправляет сообщения о том, что его адрес является адресом шлюза по умолчанию.
Еще можно просмотреть ARP-трафик на предмет незапрашиваемых сообщений, претендующих на владение IP или MAC-адресом вашего маршрутизатора. Такие сообщения почти всегда являются сигналом об атаке с подменой ARP.
Как защититься от ARP-спуфинга?
Для защиты от ARP-спуфинга существуют несколько инструментов:
- Статические ARP-записи – самый простой способ защиты от ARP-спуфинга. Такая запись вводится вручную, не давая устройству автоматически изменить ARP-кэш. Помните, этот метод можно использовать только для некоторых записей (например, стандартных адресов шлюзов), а клиентские узлы все так же остаются уязвимы к атаке.
- ПО для проверки ARP-запросов. Оно сертифицирует IP/MAC адреса и блокирует несертифицированные ответы. Есть другая версия такого ПО, сообщающая хосту об изменениях в ARP-кэше.
- Брандмауэры с фильтрацией пакетов. Они определяют попытки маскировки хакеров под другой хост, отмечая пакеты, отправленные с повторяющихся адресов.
- Шифрование. Это самый важный способ защиты от ARP-атаки. Оно значительно усложняет взлом ARP и не дает хакеру прочитать сообщения после их перехвата.
- VPN. При подключении к VPN все ваши данные будут проходить через зашифрованный туннель, гарантированно защищающий от любых хакерских атак.
Лучшая защита – нападение?
В конце хотелось бы упомянуть необычный способ защиты – имитацию ARP-спуфинга в своей сети для нахождения брешей в системах безопасности. Инструменты для пентеста широко доступны и просты в использовании, поэтому такая стратегия защиты от ARP-атак имеет полное право на существование.
ARP отравление / подделка: как обнаружить и предотвратить

Отравление протокола разрешения адресов (ARP) — это атака, которая включает в себя отправку поддельных сообщений ARP по локальной сети. Это также известно как ARP-спуфинг, ARP-маршрутизация и ARP-кеш.
Эти атаки пытаются перенаправить трафик с первоначально запланированного хоста на злоумышленника. ARP отравление делает это, связывая адрес Media Access Control (MAC) злоумышленника с IP-адресом цели. Это работает только против сетей, которые используют ARP.
ARP отравление — это тип атаки «человек посередине», который можно использовать для остановить сетевой трафик, изменить его или перехватить. Техника часто используется, чтобы начать дальнейшие наступления, такие как угон сеанса или отказ в обслуживании.
Что такое протокол разрешения адресов (ARP)?
ARP — это протокол, который связывает данный IP-адрес с адресом канального уровня соответствующей физической машины. Поскольку IPv4 по-прежнему является наиболее часто используемым интернет-протоколом, ARP обычно устраняет разрыв между 32-битными адресами IPv4 и 48-битными MAC-адресами.. Работает в обоих направлениях.
Связь между данным MAC-адресом и его IP-адресом хранится в таблице, известной как кэш ARP. Когда пакет, направляющийся к хосту в локальной сети, попадает в шлюз, шлюз использует ARP, чтобы связать MAC-адрес или физический адрес хоста с соответствующим IP-адресом..
Затем хост выполняет поиск в своем кэше ARP. Если он находит соответствующий адрес, адрес используется для преобразования формата и длины пакета. Если правильный адрес не найден, ARP отправит пакет запроса, который запрашивает другие машины в локальной сети, знают ли они правильный адрес. Если машина отвечает с адресом, кэш ARP обновляется в случае возникновения каких-либо будущих запросов из того же источника..
Что такое отравление ARP?
Теперь, когда вы понимаете больше о базовом протоколе, мы можем более подробно рассмотреть отравление ARP. Протокол ARP был разработан, чтобы быть эффективным, что привело к серьезному отсутствие безопасности в своем дизайне. Это позволяет относительно легко монтировать эти атаки, если они могут получить доступ к локальной сети своей цели..
ARP отравление включает в себя отправку поддельные ARP-пакеты ответа на шлюз по локальной сети. Злоумышленники обычно используют инструменты спуфинга, такие как Arpspoof или Arppoison, чтобы упростить работу. Они устанавливают IP-адрес инструмента в соответствии с адресом своей цели. Затем инструмент сканирует целевую локальную сеть на предмет IP и MAC-адресов своих хостов..
Как только злоумышленник получает адреса хостов, он начинает отправлять поддельные пакеты ARP по локальной сети на хосты.. Мошеннические сообщения говорят получателям, что MAC-адрес злоумышленника должен быть подключен к IP-адресу компьютера, на который они нацелены.
Это приводит к тому, что получатели обновляют свой кэш ARP с помощью адреса атакующего. Когда получатели общаются с целью в будущем, вместо этого их сообщения будут отправлены злоумышленнику.
На этом этапе злоумышленник втайне находится в центре связи и может использовать это положение для чтения трафика и кражи данных. Злоумышленник также может изменить сообщения, прежде чем они достигнут цели, или даже полностью прекратить связь..
Злоумышленники могут использовать эту информацию для организации дальнейших атак, таких как отказ в обслуживании или перехват сеанса:
- Отказ в обслуживании — Эти атаки могут связать несколько отдельных IP-адресов с MAC-адресом цели. Если достаточное количество адресов отправляет запросы получателю, он может быть перегружен трафиком, что нарушает его обслуживание и делает его непригодным для использования..
- Session Hijacking — Подделка ARP может быть использована для кражи идентификаторов сеансов, которые хакеры используют для получения доступа к системам и учетным записям. Как только они получат доступ, они могут нанести ущерб своим целям..
Как обнаружить отравление ARP
Отравление ARP может быть обнаружено несколькими различными способами. Вы можете использовать командную строку Windows, анализатор пакетов с открытым исходным кодом, такой как Wireshark, или проприетарные опции, такие как XArp..
Командная строка
Если вы подозреваете, что можете страдать от отравления ARP, вы можете проверить это в командной строке. Сначала откройте командную строку от имени администратора. Самый простой способ — нажать Ключ Windows открыть меню «Пуск». Печатать «CMD”, Затем нажмите Crtl, сдвиг и Войти в то же время.
Это вызовет командную строку, хотя вам, возможно, придется нажать да дать приложению разрешение вносить изменения. В командной строке введите:
Это даст вам таблицу ARP:

* Адреса на изображении выше были частично затемнены из соображений конфиденциальности.*
В таблице показаны IP-адреса в левом столбце и MAC-адреса в середине.. Если таблица содержит два разных IP-адреса, которые имеют один и тот же MAC-адрес, то вы, вероятно, подвергаетесь атаке отравления ARP.
Например, допустим, что ваша таблица ARP содержит несколько разных адресов. Когда вы сканируете его, вы можете заметить, что два IP-адреса имеют одинаковый физический адрес. Вы можете увидеть что-то подобное в своей таблице ARP, если вы на самом деле отравлены:
Интернет-адрес Физический адрес
Как видите, совпадают как первый, так и третий MAC-адреса. Это указывает на то, что владелец IP-адреса 192.168.0.106, скорее всего, злоумышленник.
Другие опции
Wireshark можно использовать для обнаружения отравления ARP путем анализа пакетов, хотя эти шаги выходят за рамки данного руководства и, вероятно, лучше оставить тем, кто имеет опыт работы с программой..
Коммерческие ARP-детекторы отравления, такие как XArp, облегчают процесс. Они могут дать вам предупреждение, когда начинается отравление ARP, что означает, что атаки обнаружены ранее, и ущерб может быть сведен к минимуму.
Как предотвратить отравление ARP
Вы можете использовать несколько методов для предотвращения отравления ARP, каждый из которых имеет свои положительные и отрицательные стороны. К ним относятся статические записи ARP, шифрование, VPN и анализ пакетов..
Статические записи ARP
Это решение связано с большими административными затратами и рекомендуется только для небольших сетей. Это включает добавление записи ARP для каждой машины в сети на каждый отдельный компьютер.
Сопоставление компьютеров с наборами статических IP-адресов и MAC-адресов помогает предотвратить спуфинговые атаки, поскольку компьютеры могут игнорировать ответы ARP. К сожалению, это решение может защитить только от простых атак.
шифрование
Такие протоколы, как HTTPS и SSH, также могут помочь снизить вероятность успешной атаки отравления ARP. Когда трафик зашифрован, злоумышленнику придется перейти на дополнительный шаг, чтобы обмануть браузер цели и принять незаконный сертификат. тем не мение, любые данные, передаваемые за пределами этих протоколов, по-прежнему будут уязвимы.
Виртуальные частные сети
VPN может быть разумной защитой для частных лиц, но они обычно не подходят для крупных организаций. Если только один человек устанавливает потенциально опасное соединение, например, пользуется общедоступным Wi-Fi в аэропорту, тогда VPN зашифрует все данные, которые передаются между клиентом и сервером выхода. Это помогает сохранить их в безопасности, потому что злоумышленник сможет увидеть только зашифрованный текст.
Это менее осуществимое решение на организационном уровне, поскольку между каждым компьютером и каждым сервером должны быть установлены VPN-соединения. Это будет не только сложно настроить и поддерживать, но шифрование и дешифрование в таких масштабах также снизит производительность сети..
Пакетные фильтры
Эти фильтры анализируют каждый пакет, отправляемый по сети. Они могут отфильтровывать и блокировать вредоносные пакеты, а также тех, чьи IP-адреса являются подозрительными. Фильтры пакетов также могут сообщать о том, что пакет утверждает, что он поступил из внутренней сети, когда он фактически исходит извне, что помогает снизить шансы на успех атаки..
Защита вашей сети от отравления ARP
Если вы хотите, чтобы ваша сеть была защищена от угрозы отравления ARP, лучший план — это комбинация вышеупомянутых инструментов предотвращения и обнаружения.. Методы профилактики, как правило, имеют недостатки в определенных ситуациях, так что даже самая безопасная среда может оказаться под угрозой.
Если также имеются активные средства обнаружения, вы узнаете об отравлении ARP, как только оно начнется. Пока ваш сетевой администратор действует быстро после получения оповещения, вы обычно можете прекратить эти атаки, прежде чем будет нанесен большой ущерб.
Дизайн изображения на основе ARP Spoofing 0x55534C под CC3.0