Что такое arp спуфинг
ARP-spoofing: старая песня на новый лад
В этой статье мы рассмотрим атаку типа arp-spoofing как со стороны атакующего, так и со стороны жертвы и методы противодействия.
Автор: Агиевич Игорь (aka Shanker)
Об arp-спуфинге известно уже давно. С момента публикации первых материалов по этой проблеме прошло много лет. Было написано много программ как реализующих данный тип атак, так и призванных защитить от этих самых атак. А с недавних пор такую защиту стали внедрять и в персональные межсетевые экраны. Казалось бы: тема исчерпала себя. Однако полигон для работы мозгов всё же остаётся…
В этой статье мы рассмотрим атаку типа arp-spoofing как со стороны атакующего, так и со стороны жертвы (того пользователя, против которого направлена атака).
Итак, исходные данные:
Анализ работы персонального брэндмауэра
В последнее время внедрение защиты от arp-спуфинга стало популярной идеей среди разработчиков персональных межсетевых экранов. Я точно не знаю какой производитель первым реализовал данный механизм. Однако, первый продукт попавший мне на глаза с такой функцией был Agnitum Outpost Firewall. Потом компания Агава объявила о выходе своего Agava Firewall с поддержкой аналогичной защиты. И, на сколько мне известно, лаборатория Касперского тоже вдохновилась идеей реализации подобной функции в будущую версию Kaspersky Internet Security 8.0
Рис №1: параметры Agnitum Outpost Firewall 2008 по пресечению arp-poisoning
Некоторые персональные брэндмауэры (к примеру Outpost, см. рис №1) принимают только самый первый ответ на arp-запрос, считая остальные запросы фиктивными. Выходит, если атакующему удастся ответить на запрос раньше, чем придёт легитимный ответ – брэндмауэр примет его ответ, а легитимный ответ будет отброшен. То есть произойдёт подмена записи в arp-таблице жертвы. Но этот путь очень тернист: послать свой ответ раньше, чем придёт легитимный ответ не так-то просто. Есть более лёгкий способ провести атаку. Действительно: существует же возможность модифицирования ARP-таблицы путём посылки фиктивных ARP-запросов. Такие ответы брэндмауэры с лёгкостью пропускают.
Кроме того, внесение компьютера в список атакующих в том случае, если от него пришёл arp-ответ, когда система не посылала запроса не всегда является правильным решением. Пример (см. рис №2): компьютер А посылает arp-запрос компьютеру В от имени компьютера С. В итоге компьютер В пошлёт arp-ответ компьютеру С. Но компьютер С запроса не посылал. Соответственно брэндмауэр, находящийся на компьютере С, сочтёт компьютер В атакующей системой. Какой практический толк от такой атаки? Если брэндмауэр сконфигурирован на внесение в «чёрный список» системы, которая, по его мнению, производила попытку атаки получим DoS-атаку. Ведь в итоге связь легитимного компьютера с жертвой нарушится.
Рис №2: ложная тревога файерволла
Вывод: современные персональные межсетевые экраны не могут эффективно предотвращать атаки, направленные на изменение записей ARP-таблицы.
Анализ работы программ, реализующих атаку типа arp-poisoning
Современные программы такого типа предоставляют два вида атаки:
Особенностью arp-reply пакетов является их направленность: заранее известно на какие физические и IP адреса нужно отправлять ответ. У arp-request пакетов заранее неизвестно какой именно станции их отправлять. Поэтому поля получателя (в Ethernet-кадре) заполняются как Broadcast. Такой пакет получат все станции подсети, которой принадлежит компьютер, отправляющий arp-запрос. В случае, если физический адрес компьютера принимающего запрос совпадает с адресом, указанном в поле ARP-протокола arp-request пакета – компьютер отвечает на такой запрос arp-reply пакетом. В противном случае такой пакет отбрасывается.
Рассмотрим реализации этих двух типов атак на примере утилиты Cain&Able.
Атака arp-reply пакетами обычно выглядит так: сначала жертве единожды посылается arp-request пакет, а потом уже посылаются arp-reply пакеты через заданный промежуток времени. Это делается для того, чтобы у жертвы в arp-таблице наверняка появилась запись об адресах подменяемого узла. Если в данный момент времени такой записи не будет, то жертва, принимая пакет arp-reply, никаких данных в свою таблицу не внесёт. Значит, никакой подмены не произойдёт.
Атака arp-request пакетами имеет следующий вид: посылаются пакеты arp-request через заданный промежуток времени. При чём обычно адреса получателя указываются не как Broadcast, а как истинный адрес получателя. То есть такой пакет будет послан только жертве. Другие станции подсети такой пакет не получат. Это разумно: исключается особенность arp-request пакета и атака становится направленной. Зачем другим станциям получать такой пакет? Их таблицу он не отравит. А вот если на какой-то станции стоит ПО для поиска аномалий в сети – это раскроет сам факт атаки. А аномалия здесь налицо: пойман пакет, в котором физический адрес не соответствует легитимному IP-адресу.
Некоторые снифферы (например, ettercap) отравляют arp-таблицу только arp-reply пакетами. Атака выглядит так (см. рис №3): компьютеру B сначала посылается какой-нибудь фиктивный пакет от компьютера A. Ettercap создаёт ICMP-echo пакет от IP-адреса компьютера C. После этого посылаются arp-reply пакеты с IP-адресом компьютера C, но МАС-адресом компьютера атакующего. В том случае, если у компьютера B в arp-таблице нет данных о компьютере C – он отправит arp-request пакет, на что получит фиктивный arp-reply. А если в arp-таблице компьютера B присутствует запись о компьютере C, то приходящие фиктивные пакеты arp-reply также отравят таблицу.
Рис№3: схема работы ettercap
В случае с ettercap, такая атака будет полностью пресечена, например, Аутпостом: по-умолчанию, этот брэндмауэр сконфигурирован на запрет приёма ICMP-echo пакетов. Значит, никакого arp-request компьютер жертвы не отправит. Следовательно, ни один arp-reply не пройдёт через Аутпост и не отравит arp-таблицу.
После того, как в arp-таблицах появятся фиктивные записи, трафик от атакованных компьютеров будет проходить через компьютер атакующего. Такой тип атак называется «Man in the Middle» (Человек посередине, MitM). Чтоб связь не разрывалась между компьютерами, компьютер атакующего должен модифицировать проходящий трафик. Модификация заключается в изменении физических (MAC) адресов в полях Ethernet-пакетов: меняется адрес отправителя с легитимного адреса на адрес атакующего.
ARP-poisoning и port-security
Теперь представим ту же ситуацию, но теперь сеть построена на управляемых коммутаторах, на которых настроена привязка физических адресов к портам коммутатора. Обсуждение создания VLAN-ов и других мер противодействия выходит за рамки данной статьи.
Рис №5: arp-poisining через коммутатор с включенной опцией port-security
Из описанных выше пунктов можно сделать несколько выводов о том, как более эффективно бороться с arp-poisoning атаками как на уровне персональных брэндмауэров, так и силами сетевого оборудования:
Конечно, эти меры полностью не искоренят проблему атаки arp-poisoning: ведь остаётся возможность отправить arp-request с фиктивным физическим адресом отправителя на broadcast. Или ждать arp-request от жертвы и попытаться отправить arp-reply до того, как то же самое сделает легитимный компьютер, которому предназначался arp-request. Однако поле действия злоумышленника значительно сузится.
Кроме того, существует один универсальный метод борьбы с атакой MitM, основанной на атаке arp-poisoning. Суть этого метода (см. рис №6): периодически посылать пакеты, в которых будет передаваться информация о MAC-адресе отправителя не только в поле Ethernet, но и в теле самого пакета. Когда такой пакет пройдёт через атакующего, его компьютер подменит MAC-адрес отправителя, а данные пакета останутся как есть. На принимающей стороне компьютер увидит, что адреса отправителя различаются в поле Ethernet и в данных, в которые отправитель вставил свой адрес.
Конечно, в этом способе есть свои минусы: требуется дополнительное ПО на всех компьютерах подсети. Кроме того, если есть необходимость совместной работы с компьютерами, в которых нет такого ПО, надо выбрать какой-то протокол, куда можно вставлять свои данные. Например, можно выбрать пакет ICMP-echo. А вот выбор arp-request/arp-reply будет плохой идеей: сниффер атакующего может не пропустить такие пакеты через себя дальше. Ведь эти пакеты могут восстановить легитимные записи в arp-таблице жертвы.
Рис №6: обнаружение атаки MitM
Несмотря на то, что описанный мною метод не встречался мне лично нигде – приписывать себе его авторство не стану: наверняка кто-то до меня додумался о том же самом. Просто мне не попадалась эта публикация 🙂 Если кто-то из читателей сталкивался с описанием подобного метода ранее – буду благодарен, если поделитесь ссылкой на него.
Для проведения тестов с arp-пакетами мне потребовалась утилита, которая может конструировать такие пакеты с разными параметрами. К сожалению, все найденные мною утилиты либо не работали под Windows XP, либо не предлагали визуально простого создания пакетов. Поэтому пришлось создать свою. Выкладываю её на обозрение читателей. Утилита будет полезна для проверки настроек персональных файерволлов и сетевого оборудования. А сомневающиеся могут воспользоваться ею для проверки фактов, изложенных мною в этой статье 🙂
Рис №7: внешний вид программы ARP Builder
В данной статье были рассмотрены методы реализации атаки типа arp-poisining и методы противодействия. Надеюсь, в ближайшем будущем производители персональных сетевых экранов внесут соответствующие корректировки в следующие выпуски своих продуктов, а администраторы локальных сетей ещё раз подумают о том, насколько правильно настроено сетевое оборудование.
HOW-TO: Как защитить локальную сеть от ARP-спуфинга
Если хакер запустит снифер (к примеру, Wireshark) в локальной сети, то ничего интересного, кроме своих бродкастов и прочей служебной информации, он не увидит. Поэтому для перехвата трафика обычно используются слабости самого протокола ARP. Разберемся, как можно компенсировать их.
ARP spoofing attack
Xakep #214. Приручаем WAF’ы
Протокол ARP используется для преобразования IP-адреса в MAC-адрес. Исторически ARP не имеет никакой защиты или хотя бы проверки подлинности запросов. Повторю: совсем никакой! А еще возможна отправка ARP-ответов без ARP-запросов — это так называемый gratuitous ARP. Он-то нас и интересует. Чтобы провернуть подобную схему, можно воспользоваться тулзой Cain & Abel. Думаю, ты о ней знаешь.
С помощью Cain & Abel злоумышленник может вклиниться и перехватить трафик в одном широковещательном домене. Защититься от этой напасти можно при помощи механизма Dynamic ARP Inspection (Protection).
Для корректной работы Dynamic ARP Inspection необходимо указывать, какие порты коммутатора будут доверенными, а какие — нет. Под ненадежным портом подразумевается тот порт, к которому подключены клиенты. Для ненадежных портов выполняется ряд проверок сообщений ARP. А к доверенным портам коммутатора относятся те порты, к которым подключен другой коммутатор. Сообщения протокола ARP, полученные с доверенных портов, не отбрасываются.
Коммутатор перехватывает все ARP-запросы и ARP-ответы на ненадежных портах, прежде чем перенаправлять их. Также на ненадежных портах коммутатор проверяет соответствие MAC-адреса IP-адресу.
Проверка соответствия MAC-адреса IP-адресу может выполняться на основании статических записей или базы данных привязки DHCP.
На коммутаторах Cisco этот механизм во VLAN включается командой
А вот как выглядит настройка доверенного порта:
Если у тебя нет коммутатора, способного защитить от атак подобного типа, можешь установить arpwatch: это демон, который отслеживает соответствие между IP- и MAC-адресами и при обнаружении аномалий фиксирует это в системном логе. Документацию можно глянуть вот здесь.
Как сам понимаешь, главный недостаток arpwatch, как и, в принципе, всех программ подобного рода, в том, что он должен работать на хостах, которые он защищает, или хотя бы на маршрутизаторе, ведущем в защищаемую сеть. Однако маршрутизатор не всегда работает под управлением UNIX или Linux. Чаще всего это специализированный аппаратный маршрутизатор или коммутатор третьего уровня.
Чтобы защитить такой маршрутизатор, нужно получать от него ARP-таблицу по SNMP и анализировать ее на другой машине. Так, к примеру, действует программа remarp.
Войны в песочнице – Часть 3. ARP-Spoofing, бесполезность фильтрации по MAC-адресу и опасность установки неподписанного ПО
Прошло чуть более года с момента публикации предыдущих статей (1, 2), и только недавно обстоятельства сложились так, что у меня появился повод для проведения новой атаки.
В этот раз физического доступа к сетевой инфраструктуре нет. Есть лишь ноутбук с доступом в интернет по Wi-Fi. Жертва – сосед по общежитию — подключена к другой точке доступа (DIR-320) по Ethernet, но пароль для подключения к точке известен почти всем, т.к. её хозяин предпочитает использовать в качестве средства разграничения доступа фильтрацию по MAC-адресам, добавляя и удаляя адреса из базы по мере необходимости. Моего MAC-адреса в списке разрешенных нет.
Единственное что точка доступа отказывается делать, так это взаимодействовать с чужаком на сетевом уровне, то есть IP-адрес она мне через DHCP не выдаёт, пропинговать её нельзя и в интернет через неё тоже не выйти.
ARP-Spoofing
Для тех кто не знает что такое ARP и ARP-Spoofing – небольшой ликбез. Сетевой уровень, на котором используются IP-адреса, используется поверх канального уровня (на нём используются MAC-адреса, задающиеся производителями сетевой карты). Отправляя IP-пакет, компьютер должен обернуть его в Ethernet-фрейм, указав MAC-адрес получателя (или шлюза). Чтобы узнать MAC-адрес получателя, компьютер делает широковещательный ARP-запрос вида «Компьютер с ip a.b.c.d, отзовись!». Компьютер a.b.c.d отвечает ARP-ответом вида «a.b.c.d – это я, мой MAC-адрес следующий: 00:11:22:33:44:55». Причем ответ можно посылать даже если не было запроса и он будет обработан. Все компьютеры поддерживают кэш соответствий IP → MAC и при каждом удобном случае (получен ARP-запрос/ответ) его обновляют.
Никакой аутентификации на уровне ARP нет, на чем и основана атака ARP-spoofing. Достаточно представиться (отправить ARP-ответ) роутеру жертвой, а жертве роутером, чтобы проксировать через себя их трафик.
Но, раз в интернет точка доступа меня не пускает, то классический вариант ARP-спуфинга – встать между жертвой и роутером – не пройдёт. Раз так, можно встать не между жертвой и роутером, а вместо роутера. Идём на рынок, покупаем USB-WiFi адаптер, подключаемся встроенным адаптером (отключив на нём IP-протокол) к целевой сети, а вторым – к своей, чтобы иметь канал в интернет. Создаём в VirtualBox виртуальную машину с двумя адаптерами, первый соединяем мостом с целевой сетью, на втором делаем NAT. Настраиваем NAT внутри виртуальной машины-роутера, запускаем на ней же arpspoof с целью убедить компьютер жертвы, что MAC-адрес роутера сменился на наш.
В результате жертва будет отправлять пакеты не настоящему роутеру, а нашему, который сможет маршрутизировать их в интернет, просматривая и модифицируя. Практически стандартная схема ARP-спуфинга. Лишь с одним небольшим недостатком – она не работает. Точнее работает, но с такими перебоями, что жертва не может не заметить проблем с сетью.
Посмотрев на трафик в сети, можно понять почему. Да, мы уведомляем раз в секунду роутер жертвы о том что адрес 192.168.0.105 принадлежит нам, и жертву о том, что ip адрес 192.168.0.1 принадлежит нам. Однако в сети есть и другая ARP-активность. Например роутер периодически вещает в сеть «192.168.0.109, где ты?», причем такого адреса в сети нет. Причины этой активности не очень ясны – возможно на роутере прокинут порт с внешнего ip на этот адрес. Но ни к чему хорошему такая общительность со стороны роутера не приводит. Компьютер жертвы видит этот широковещательный запрос, и, хоть запрос и не относится к нему, обновляет у себя в кэше информацию о MAC-адресе роутера. В итоге получается race condition, и жертва отправляет исходящие пакеты то на наш адрес, то на адрес настоящего роутера.
После добавления такой функциональности в виде скрипта на python, парсящего вывод tcpdump arp и рассылающего ARP-запросы и ответы, сбоев связи стало гораздо меньше. Когда какой-либо компьютер подключается к сети, он обычно начинает свою деятельность с ARP запроса своего IP и IP роутера, вследствие чего мы видим что он появился и перестаем выдавать себя за него. Когда компьютер отключается, мы видим что он отключился и занимаем его место. В итоге у роутера теперь нет поводов посылать широковещательные ARP-запросы и сбивать компьютер жертвы с толку.
Получение контроля над машиной
Прослушивание http-трафика, или использование sslstrip, с целью прослушать трафик ssl-enabled сайтов нас сейчас не интересует – во-первых это старо, во-вторых в трафике ничего интересного мы не найдём. Хочется получить полный контроль над целевой машиной.
Бэкдор
Для максимальных привилегий наша программа-бэкдор должна запускаться от имени LocalSystem. Для этого пишем Windows Service (на C# это пара десятков строк, которые к тому же генерирует IDE). Для управления будем использовать протокол Jabber (agsXMPP). Сервис будет при запуске коннектиться к Jabber-серверу, и ожидать команд. Управлять им можно будет с помощью любого Jabber-клиента, посылая команды через чат. Что касается команд – cmd.exe почему-то с точки зрения Windows считается программой с UI, а системным службам взаимодействовать с пользователем нельзя. Запустить cmd.exe из службы так и не удалось. В итоге было решено вместо команд оболочки cmd передавать боту код на C#, который он будет интепретировать и возвращать результат, получается достаточно универсальный «шелл».
Инсталлятор
Установка
Теперь нужно как-то заставить клиента запустить наш инсталлятор.
Посмотрим на автоматические обновления, может быть удастся подменить их. По HTTP-заголовкам выясняем, что на машине в качестве браузера стоит Opera, но, как оказалось, её обновления идут по https, так что нам они не по зубам. Обновления от Microsoft идут по plain-http, но там, наверняка, каждый файл обновления имеет цифровую подпись, которая проверяется перед запуском, всё-таки в MS не школьники работают.
Ок, с автоматическими обновлениями ничего поделать не удается, остаётся надеяться на невнимательность пользователя. Попробуем внедрить инсталлятор в первый попавшийся скачиваемый исполняемый файл.
Запускаем этот прокси-сервер на роутере-виртуалке и перенаправляем с помощью iptables весь HTTP трафик на него.
Запустив всё, ждём. И, спустя пару дней, видим в логах сервера инъекций:
и в логах прокси-сервера:
Теперь можно идти к соседу и порадовать его, показав фокусы, которые мы можем делать с его компом (перезагрузить, выдать страшные звуки из аудиосистемы и т.п).
Отравление ARP: что это такое и как предотвратить ARP-спуфинг
«Отравление» ARP (ARP Poisoning) — это тип кибератаки, которая использует слабые места широко распространенного протокола разрешения адресов (Address Resolution Protocol, ARP) для нарушения или перенаправления сетевого трафика или слежения за ним. В этой статье мы вкратце рассмотрим, зачем нужен ARP, проанализируем его слабые места, которые делают возможным отравление ARP, а также меры, которые можно принять для обеспечения безопасности организации.
Что такое ARP?
ARP предназначен для определения MAC-адреса по IP-адресу другого компьютера. ARP позволяет подключенным к сети устройствам запрашивать, какому устройству в настоящее время назначен конкретный IP-адрес. Устройства также могут сообщать об этом назначении остальной части сети без запроса. В целях эффективности устройства обычно кэшируют эти ответы и создают список текущих назначений MAC-IP.
Что такое отравление ARP?
«Отравление» (подмена) ARP заключается в использовании слабых сторон ARP для нарушения назначений MAC-IP для других устройств в сети. В 1982 году, когда был представлен протокол ARP, обеспечение безопасности не было первостепенной задачей, поэтому разработчики протокола никогда не использовали механизмы аутентификации для проверки сообщений ARP. Любое устройство в сети может ответить на запрос ARP, независимо от того, является ли оно адресатом данного запроса. Например, если компьютер A запрашивает MAC-адрес компьютера B, ответить может злоумышленник на компьютере C, и компьютер A примет этот ответ как достоверный. За счет этой уязвимости было проведено огромное количество атак. Используя легкодоступные инструменты, злоумышленник может «отравить» кэш ARP других хостов в локальной сети, заполнив его неверными данными.
Этапы отравления ARP
Этапы отравления ARP могут различаться, но обычно их минимальный перечень таков:
Типы атак ARP Poisoning
Имеется два основных способа отравления ARP: злоумышленник может либо дождаться запроса ARP в отношении конкретной цели и дать на него ответ, либо использовать самообращённые запросы (gratuitous ARP). Первый вариант ответа будет менее заметен в сети, но его потенциальное влияние также будет меньшим. Cамообращенные запросы ARP могут быть более эффективными и затронуть большее количество жертв, но они имеют обратную сторону — генерирование большого объема сетевого трафика. При любом подходе поврежденный кэш ARP на устройствах-жертвах может быть использован для дальнейших целей:
Атаки Man-in-the-Middle
Атаки MiTM, вероятно, являются наиболее распространенной и потенциально наиболее опасной целью отравления ARP. Злоумышленник отправляет ложные ответы ARP по заданному IP-адресу (обычно это шлюз по умолчанию для конкретной подсети). Это заставляет устройства-жертвы заполнять свой кэш ARP MAC-адресом машины злоумышленника вместо MAC-адреса локального маршрутизатора. Затем устройства-жертвы некорректно пересылают сетевой трафик злоумышленнику. Такие инструменты, как Ettercap, позволяют злоумышленнику выступать в роли прокси-сервера, просматривая или изменяя информацию перед отправкой трафика по назначению. Жертва при этом может не заметить каких-либо изменений в работе.
Одновременное отравление ARP и отравление DNSможет значительно повысить эффективность атаки MiTM. В этом сценарии пользователь-жертва может ввести адрес легитимного сайта (например, google.com) и получить IP-адрес машины злоумышленника вместо корректного адреса.
Отказ в обслуживании (Denial of Service, DoS)
DoS-атака заключается в том, что одной или нескольким жертвам отказывается в доступе к сетевым ресурсам. В случае ARP, злоумышленник может отправить ответ ARP, который ложно назначает сотни или даже тысячи IP-адресов одному MAC-адресу, что потенциально может привести к перегрузке целевого устройства. Атака этого типа, иногда называемая «лавинной рассылкой ARP» (ARP-флудингом), также может быть нацелена на коммутаторы, что потенциально может повлиять на производительность всей сети.
Перехват сеанса
Перехват сеанса по своей природе похож на MiTM за исключением того, что злоумышленник не будет напрямую перенаправлять трафик с машины жертвы на целевое устройство. Вместо этого он захватывает подлинный порядковый номер TCP или файл cookie жертвы и использует его, чтобы выдавать себя за жертву. Так он может, к примеру, получить доступ к учетной записи данного пользователя в соцсети, если тот в нее вошел.
Какова цель отравления ARP?
У хакеров всегда самые разные мотивы, в том числе при осуществлении отравления ARP, начиная от шпионажа высокого уровня и заканчивая азартом создания хаоса в сети. В одном из возможных сценариев злоумышленник может использовать ложные сообщения ARP, чтобы взять на себя роль шлюза по умолчанию для данной подсети, эффективно направляя весь трафик на свое устройство вместо локального маршрутизатора. Затем он может следить за трафиком, изменять или сбрасывать его. Такие атаки являются «громкими», поскольку оставляют за собой улики, но при этом не обязательно влияют на работу сети. Если целью атаки является шпионаж, машина злоумышленника просто перенаправляет трафик изначальному адресату, не давая ему оснований подозревать, что что-то изменилось.
Другой целью может быть значительное нарушение работы сети. Например, довольно часто DoS-атаки выполняются не очень опытными хакерами просто для получения удовольствия от созданных проблем.
Опасным типом отравления ARP являются инсайдерские атаки. Поддельные сообщения ARP не выходят за пределы локальной сети, поэтому атака должна исходить от локального устройства. Внешнее устройство также потенциально может инициировать ARP-атаку, но сначала ему нужно удаленно скомпрометировать локальную систему другими способами, в то время как инсайдеру требуется только подключение к сети и некоторые легкодоступные инструменты.
ARP-спуфинг vs отравление ARP
Термины «ARP-спуфинг» и «отравление ARP» обычно используются как синонимы. Технически под спуфингом понимается выдача злоумышленником своего адреса за MAC-адрес другого компьютера, в то время как отравлением (подменой) называют повреждение ARP-таблиц на одной или нескольких машинах-жертвах. Однако на практике это элементы одной и той же атаки. Также эту атаку иногда называют «отравлением кэша ARP» или «повреждением ARP-таблицы».
Последствия атак ARP Poisoning
Основной эффект отравления ARP заключается в том, что трафик, предназначенный для одного или нескольких хостов в локальной сети, вместо этого направляется на устройство, выбранное злоумышленником. Конкретные последствия атаки зависят от ее специфики. Трафик может направляться на машину злоумышленника или в несуществующее место. В первом случае заметного эффекта может не быть, в то время как во втором может быть заблокирован доступ к сети.
Само по себе отравление кэша ARP не оказывает длительного воздействия. Записи ARP кэшируются от нескольких минут на конечных устройствах до нескольких часов на коммутаторах. Как только злоумышленник перестает активно заражать таблицы, поврежденные записи просто устаревают, и вскоре возобновляется нормальный поток трафика. Само по себе отравление ARP не оставляет постоянной инфекции или «точек опоры» на машинах-жертвах. Однако нередко хакеры совершают ряд атак по цепочке, и отравление ARP может быть элементом более масштабной атаки.
Как обнаружить отравление кэша ARP
Существует множество платных программ и программ с открытым исходным кодом для обнаружения отравления кэша ARP, однако проверить ARP-таблицы на своем компьютере можно даже без установки специального ПО. В большинстве систем Windows, Mac и Linux ввод команды arp-a в терминале или командной строке отобразит текущие назначения IP-адресов и MAC-адресов машины.
Такие инструменты, как arpwatch и X-ARP, позволяют осуществлять непрерывный мониторинг сети и могут предупредить администратора о выявлении признаков отравления кэша ARP. Однако достаточно высока вероятность ложных срабатываний.
Как предотвратить отравление ARP
Cуществует несколько методов предотвращения отравления ARP:
Статические ARP-таблицы
Можно статически назначить все MAC-адреса в сети соответствующим IP-адресам. Это очень эффективно для предотвращения отравления ARP, но требует огромных трудозатрат. Любое изменение в сети потребует ручного обновления ARP-таблиц на всех хостах, в связи с чем для большинства крупных организаций использование статических ARP-таблиц является нецелесообразным. Но в ситуациях, когда безопасность имеет первостепенное значение, выделение отдельного сегмента сети для статических ARP-таблиц может помочь защитить критически важную информацию.
Защита коммутатора
Большинство управляемых коммутаторов Ethernet оснащены функциями предотвращения атак ARP Poisoning. Эти функции, известные как динамическая проверка ARP (Dynamic ARP Inspection, DAI), оценивают достоверность каждого сообщения ARP и отбрасывают пакеты, которые выглядят подозрительными или вредоносными. С помощью DAI также можно ограничить скорость прохождения сообщений ARP через коммутатор, эффективно предотвращая DoS-атаки.
DAI и аналогичные функции когда-то были доступны исключительно для высокопроизводительного сетевого оборудования, но теперь они представлены практически на всех коммутаторах бизнес-класса, в том числе используемых в небольших компаниях. Обычно рекомендуется включать DAI на всех портах, кроме подключенных к другим коммутаторам. Эта функция не оказывает значительного влияния на производительность; при этом, вместе с ней может понадобиться включение других функций, например DHCP Snooping.
Включение защиты порта на коммутаторе также может помочь минимизировать последствия отравления кэша ARP. Защиту порта можно настроить таким образом, чтобы разрешить использование только одного MAC-адреса на порте коммутатора, что лишает злоумышленника возможности применять несколько сетевых идентификаторов.
Физическая защита
Предотвратить атаки ARP Poisoning также поможет надлежащий контроль физического доступа к рабочему месту пользователей. Сообщения ARP не выходят за пределы локальной сети, поэтому потенциальные злоумышленники должны находиться в физической близости к сети жертвы или уже иметь контроль над машиной в сети. Обратите внимание, что в случае беспроводной сети территориальная близость не обязательно означает прямой физический доступ: может быть достаточно сигнала, который достигает двора или парковки. Независимо от типа соединения (проводное или беспроводное), использование технологии наподобие 802.1x может гарантировать подключение к сети только доверенных и/или управляемых устройств.
Сетевая изоляция
Хорошо сегментированная сеть может быть менее восприимчива к отравлению кэша ARP в целом, поскольку атака в одной подсети не влияет на устройства в другой. Концентрация важных ресурсов в выделенном сегменте сети с более строгими мерами безопасности может значительно снизить потенциальное влияние атаки ARP Poisoning.
Шифрование
Хотя шифрование не предотвращает ARP-атаку, оно может снизить потенциальный ущерб. Раньше популярной целью атак MiTM было получение учетных данных для входа в систему, которые когда-то передавались в виде обычного текста. Благодаря распространению шифрования SSL/TLS совершать такие атаки стало сложнее.