Практика использования arp-spoofing
В данной статье я расскажу как, используя пакет утилит arp-sk в операционной системе GNU/Linux реализовать атаку man-in-the-middle на протокол arp.
Для чего вообще нужна такая атака:
На хабре достаточно много статей например для взлома Wi-Fi. Но что делать после того, как ключ взломан? Тут можно увидеть один из вариантов действий.
Немного теории
первый пакет — компьютер отправляет широковещательное сообщение с целью узнать mac-адрес, который принадлежит ip-адресу 192.168.4.1 и просьбой отослать ответ на 192.168.4.11. Здесь не видно, но компьютер 192.168.4.11 при отправлении данного запроса указывает свой mac-адрес в качестве источника и широковещательный mac-адрес(FF:FF:FF:FF:FF:FF) в качестве адреса получателя. Сетевое устройство, получив данный пакет должно произвести сравнение ip-адреса со своим, и в случае совпадения послать следующий пакет.
второй пакет — устройство с адресом 192.168.4.1 отвечает на mac-адрес, который был указан в запросе со своего mac-адреса, что адрес 192.168.4.1 находится на 00:50:ba:46:5d:92.
В связи с тем, что arp-запрос отсылается на широковещательный адрес то данное сообщение могут получить любой, кто находится в одном широковещательном сегменте с источником. Посему возникает один из вариантов атаки — постоянно отправлять сообщение о своем mac-адресе. При этом, когда компьютер-жертва отправляет arp-запрос на роутер, то сразу же получает ответ от атакующего. Соответственно траффик будет направлен атакующему.
Наша задача: получить траффик компьютера Victim с помощью компьютера Attacker.
Для этого мы будем использовать самопроизвольный arp-ответ. В протоколе arp предусмотрена возможность отправления устройством arp-запроса или ответа в случае, если такое не требуют другие устройства. Для чего это надо — например, если изменился mac-адрес маршрутизатора. В случае, если компьютер поддерживает самопроизвольный arp то он перезапишет легитимный адрес на адрес атакующего.
Проведение атаки
Установка необходимого ПО
Подмена адреса
Посмотрим адреса
Наш адрес:
# ifconfig eth1 | grep HW
eth1 Link encap:Ethernet HWaddr 00:13:CE:5C:11:34
Теперь отправляем устройствам следующие arp-пакеты: подставляем в качестве mac-адреса другого устройства свой.
Первый от имени 192.168.4.17 о том, что его mac-адрес теперь 00:13:CE:5C:11:34 отправляем на 192.168.4.1 (00:50:ba:46:5d:92)
Второй от имени 192.168.4.1 о том, что его mac-адрес теперь 00:13:CE:5C:11:34 отправляем на 192.168.4.17 (00:1c:bf:41:53:4b)
У нас будет следующий вывод:
+ Initialization of the packet structure
+ Running mode «reply»
+ Ifname: eth1
+ Source MAC: 00:13:ce:5c:11:34
+ Source ARP MAC: 00:13:ce:5c:11:34
+ Source ARP IP : 192.168.4.1
+ Target MAC: 00:1c:bf:41:53:4b
+ Target ARP MAC: 00:1c:bf:41:53:4b
+ Target ARP IP : 192.168.4.17
Посмотрим теперь на компьютере Victim arp-таблицу:
Собственно все. Теперь можно запустить свой любимый сниффер и получить необходимые пакеты. Например ping до яндекса
Добавление. В случае, если на компьютере установлен брандмауэр, то он может выдать сообщение о подмене адреса.
Данная информация приведена только для ознакомления. Автор напоминает вам о Статье 272 УК РФ «Неправомерный доступ к компьютерной информации»
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 и методы противодействия. Надеюсь, в ближайшем будущем производители персональных сетевых экранов внесут соответствующие корректировки в следующие выпуски своих продуктов, а администраторы локальных сетей ещё раз подумают о том, насколько правильно настроено сетевое оборудование.
Атака канального уровня ARP-spoofing и как защитить коммутатор Cisco
Данная статья не является руководством для кулхацкеров. Все ниже написанное является частью изучения курса Cisco SECURE.
В данном материале я покажу как на практике провести атаку канального уровня на коммутатор Cisco, а также покажу как защитить свою сеть от этого. Для лабораторного стенда я использовал Cisco 881 и Catalyst 3750G.
Наверное все, кто сталкивался хоть немного с сетями знают, что такое протокол ARP.
Вкратце напомню. Протокол ARP используется для преобразования IP-адреса в MAC-адрес. Рассмотрим такую топологию:
Что произойдет, если с хоста H1 пропинговать Gateway? Первым делом будет работать ARP протокол. H1 отправит широковещательный запрос (ARP-request), в котором будут указаны MAC и IP хоста H1 и IP получателя (GATEWAY). Далее GATEWAY получит запрос и видя, что в поле IP получателя содержится его адрес, дописывает к нему свой MAC и отправляет ответ ARP-reply. Хост H1 получает ответ и заносит его в ARP-таблицу.
Как можно перехватить трафик идущий от H1 к GATEWAY? Допустим атакующий (ATTACKER) находится в одном широковещательно домене с GATEWAY и H1. Если атакующий запустит сниффер, к примеру Wireshark, то в сниффере ничего интересного он не увидит, кроме своих броадкастов и прочей служебной информации. Для перехвата трафика можно использовать слабости протокола ARP. Данный протокол не имеет никакой защиты, никакой проверки подлинности запросов. А еще возможна отправка ARP ответов без ARP запросов, это так называемый gratuitous-ARP.
Это как раз то, что нужно. Использовать для атаки будем софт Cain & Abel, но для начала посмотрим ARP-таблицы на хосте H1 и на ATTACKER:
Далее запускаем Cain&Abel, включаем сниффер и добавляем все хосты из широковещательного домена.
Далее переходим на вкладку ARP, жмем + и выбираем адрес шлюза и хост, с которого будем перехватывать трафик.
Жмем кнопку ARP-poisoning и процесс изменения таблицы ARP на хосте H1 запустился.
Теперь посмотрим, как изменилась ARP-таблица на хосте H1.
Видим подмену MAC-адреса для IP 192.168.1.1
Теперь запустим на хосте H1 putty и попробуем зайти на GATEWAY через небезопасный протокол telnet. Так как протокол telnet передает данные в plain text, то атакующий в сниффере должен будет увидеть всю нужную информацию, то есть логин и пароль. Заходим и вводим логин/пароль и пароль enable.
Теперь на ATTACKER в сниффер, вкладка Passwords. Видно что какую-то информацию отловили
Смотрим эту запись и видим текст такого содержания:
User Access Verification
Username: яы яы яы яы’яэ яы яэ яъ P яряю яъ яряю’яэ яъ XTERMяряы$яю$admin
Все. Пароль от телнета перехвачен.
А теперь самое главное. Как защитить свою сеть от таких атак. На помощь нам приходит инструмент Dynamic ARP Inspection (DAI).
DAI предназначен для регулировки ARP-запросов, то есть решает — какие пропускать, а какие отбросить. Грубо говоря, DAI полностью защищает сеть от атаки ARP-spoofing, которая происходит на канальном уровне, благодаря незащищенности протокола ARP.
Немного о том, как работает DAI. Для того, чтобы работал этот механизм, нам необходимо в сети использовать DHCP и на коммутаторе должен быть включен DHCP Snooping. Если в сети используется статическая адресация, то DAI работать не будет.
Как работает DHCP Snooping. Допустим DHCP сервер у нас настроен на GATEWAY. Злоумышленник ATTACKER решил поднять у себя dhcp сервер и раздавать какие-то свои адреса. DHCP snooping предназначен для регулировки запросов и будет отбрасывать запросы сервера злоумышленника. Все очень просто. Есть Untrusted и Trusted порты. Надежным портом мы назначаем порт, которые ведет к GATEWAY, так как он у нас будет авторизованным DHCP сервером. Все остальные порты будут ненадежными и серверные запросы от них будут отбрасываться.
При этом строится таблица соответствия адресов dchp snooping database. Включаем на коммутаторе SW функцию DHCP snooping
ip dhcp snooping vlan 1
ip dhcp snooping database flash:/dhcp-snoop.db
ip dhcp snooping
На порту, смотрящему в сторону GATEWAY
SW(config-if)# ip dhcp snooping trust
Смотрим, что получилось
SW#sh ip dhcp snooping
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
1
DHCP snooping is configured on the following Interfaces:
Insertion of option 82 is enabled
circuit-id format: vlan-mod-port
remote-id format: MAC
Option 82 on untrusted port is not allowed
Verification of hwaddr field is enabled
Interface Trusted Rate limit (pps)
— — — FastEthernet1/0/47 yes unlimited
И посмотрим, что появилось в таблице соответствия
SW#sh ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
— — — — — — E8:03:9A:BE:0C:D8 192.168.1.50 26268 dhcp-snooping 1 FastEthernet1/0/13
50:B7:C3:78:B4:1A 192.168.1.10 69421 dhcp-snooping 1 FastEthernet1/0/1
Total number of bindings: 2
Теперь, если атакующий захочет стать dhcp сервером, то запросы его коммутатор будет отбрасывать.
На основании базы dhcp snooping, где содержится соответствие всех MAC и IP адресов и будет работать механизм Dynamic ARP Inspection.
Перейдем к настройке. На коммутаторе Cisco данный инструмент включается для каждого vlan отдельно. В нашем случае, достаточно на коммутаторе SW дать команду:
SW(config)#ip arp inspection vlan 1
Оба хоста и шлюз находятся в vlan 1. В DAI для портов коммутатора есть две настройки: Trusted и Untrusted. По-умолчанию, все порты коммутатора
Untrusted, то есть ненадежные. Порт, который идет к шлюзу или порт, в который включен транком еще один коммутатор можно сделать Trusted, тогда ARP-запросы приходящие через него будут считаться надежными.
SW(config-if)#ip arp inspection trust
Теперь повторим атаку с самого начала. Пробуем делать ARP-poisoning через Cain&Abel. Атака не проходит и в логах коммутатора появились следующие записи:
18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/0000.0000.0000/192.168.1.1/18:11:19 UTC Mon Mar 1 1993])
18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:19 UTC Mon Mar 1 1993])
18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.1/50b7.c378.b41a/192.168.1.10/18:11:19 UTC Mon Mar 1 1993])
18:11:19: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:19 UTC Mon Mar 1 1993])
18:11:21: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:21 UTC Mon Mar 1 1993])
18:11:21: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.1/50b7.c378.b41a/192.168.1.10/18:11:21 UTC Mon Mar 1 1993])
18:11:21: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([e803.9abe.0cd8/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:21 UTC Mon Mar 1 1993])
18:11:24: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:24 UTC Mon Mar 1 1993])
18:11:25: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/1, vlan 1.([50b7.c378.b41a/192.168.1.10/001d.4641.02b4/192.168.1.1/18:11:25 UTC Mon Mar 1 1993])
Коммутатор отбрасывает «неправильные» arp-запросы. Теперь атакующий ничего не сможет перехватить.
Включим еще дополнительную проверку DAI
SW(config)#errdisable recovery cause arp-inspection
Данная опция позволяет восстановить порт и состояния errdisabled через 300 секунд. Если конечно несоответствие MAC-IP будет на этом порту продолжаться, то порт восстановлен не будет.
Просмотреть trusted и untrusted порты и статистику можно командой
SW#show ip arp inspection interfaces
На этом всё.
Спасибо за внимание.
ARP-spoofing
Материал из Xgu.ru
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 и других.
Алгоритм работы ARP
Протокол может использоваться в следующих случаях:
В любом из этих случае узлом 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, он является особенно небезопасным, поскольку с его помощью можно уверить удалённый узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети, изменился и указать, какой адрес используется теперь.
ARP-spoofing
До выполнения ARP-spoofing’а в ARP-таблице узлов A и B существуют записи с IP- и MAC-адресами друг друга. Обмен информацией производится непосредственно между узлами A и B. (зелёная стрелка)
В ходе выполнения ARP-spoofing’а компьютер C, выполняющий атаку, отправляет ARP-ответы (без получения запросов):
В силу того что компьютеры поддерживают самопроизвольный ARP (gratuitous ARP), они модифицируют собственные ARP-таблицы и помещают туда записи, где вместо настоящих MAC-адресов компьютеров A и B стоит MAC-адрес компьютера C. (красные стрелки)
После того как атака выполнена, когда компьютер A хочет передать пакет компьютеру B, он находит в ARP-таблице запись (она соответствует компьютеру C) и определяет из неё MAC-адрес получателя. Отправленный по этому MAC-адресу пакет приходит компьютеру C вместо получателя. Компьютер C затем ретранслирует пакет тому, кому он действительно адресован — т.е. компьютеру B. (синие стрелки)
Инструменты для выполнения ARP-spoofing’а
В настоящее время существует несколько инструментов для выполнения ARP-spoofing’а, работающие как в ОС Linux, так и в ОС Windows.
Все названные программы распространяются свободно.
Выполнение ARP-spoofing’а c помощью ettercap
[Пример выполнения атаки с помощью ettercap.] Рассмотрим как выполнить вышеописанную атаку с помощью ettercap.
Детально рассмотрим как выполняется ARP-spoofing. В качестве инструмента будем использовать программу ettercap, однако другие инструменты для выполнения ARP-spoofing’а работают аналогичным образом.
Атаку выполняет hostC против узлов hostA и hostB.
Установить ettercap принятым в системе способом:
Выполнить атаку против узлов hostA и hostB:
В качестве аргументов указываются 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-адрес в пакета внезапно меняется на другой. А потом они вообще перестают приходить.
Такая техника гарантирует, что таблица 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.
Дополнительная информация
Обнаружение узла, выполняющего ARP-spoofing
Если коммутатор управляемый, можно определить, на каком из его портов работает узел, имеющий определённый MAC-адрес.
Например, это можно сделать с помощью скрипта mac2port. Скрипт связывается с коммутатором по SNMP и опрашивает его таблицу соответствия MAC-адресов портам. Полученная информация выдаётся в удобном для поиска виде на стандартный поток вывода. Для упрощения использования скрипт выводит MAC-адреса в таком же формате, как это делает arpwatch.
Условия для использования скрипта:
Пример использования скрипта:
Если ранее с помощью arpwatch была зафиксирована атака:
можно воспользоваться скриптом, и определить с какого порта коммутатора она производилась (при этом не имеет значения, истинный ли это MAC-адрес сетевой карты атакующего или он был изменён):
Важно чтобы определение выполнялось быстро, пока информация об атакующем ещё хранится в памяти коммутатора.
Для этого имеет смысл вызывать скрипт поиска автоматически при обнаружении соответствующей записи в системном журнале. Анализ журнала можно выполнять, например, такими средствами как swatch или syslog-ng.
Например, если используется syslog-ng.
можно создать скрипт, выполняющий анализ:
и подключить его к syslog-ng.
Для этого нужно в конфигурационном файле syslog-ng.conf указать следующие строки:
можно и не указывать, но на нагруженных системах, она существенно снижает нагрузку.
В этом случае при выполнении arp-spoofing’а происходит следующее:
Вот как это выглядит в файле:
Текст скрипта mac2port
Другие средства обнаружения
Методы предотвращения
Если нужно перехватить трафик, который уходит с какого-то узла в сети во внешнюю сеть, атаковать нужно узел и шлюз сети. Однако на шлюзе средство обнаружения ARP-spoofing’а может присутствовать с намного более высокой вероятностью, чем на узле. Поскольку нас интересует трафик, который узел отправляет в сеть, достаточно модифицировать ARP-таблицу только узла и не рисковать быть замеченным шлюзом. Данные, которые шлюз отправляет узлу будут проходить напрямую, а данные, которые узел отправляет шлюзу будут проходить через систему злоумышленника.
(как на шлюзе, так и на узле можно было бы отследить, что на пакетах приходящих от узла MAC-адреса отличаются от тех, что записаны у него в ARP-таблице, т.е. что пакеты отправляются на один MAC-адрес, а приходят с другого. Но вот какие системы это делают?)
Борьба с ARP-spoofing’ом с помощью arpwatch и подобных инструментов оказывается хотя и очень простой, но далеко не эффективной.
В основе рассматриваемых способов противодействия ARP-атакам лежат два совершенно различных принципа, каждый из которых обладает как достоинствами, так и недостатками.
Статический ARP
Если при этом отключить использование ARP на сетевых интерфейсах, то доступны будут только те системы, (1) MAC-адреса которых добавлены в ARP-таблицу нашего узла и (2) наш MAC-адрес добавлен в ARP-таблицы узлов, с которыми производится обмен трафиком.
Если не отключать использование ARP на сетевых интерфейсах, MAC-адрес заданный статически имеет приоритет. Если MAC-адрес для какого-то IP-адреса не задан, используется ARP-запрос.
Статическую ARP-таблицу можно получить на основе существующей ARP-таблицы маршрутизатора:
она запишется в файл /etc/ethers
Нужно чтобы в таблице было максимальное количество машин сети. Нужно или строить таблицу в момент пика сетевой активности или предварительно пройдясь по всему диапазону адресов пингами: for i in `seq 1 255` do
done (здесь 192.168.15.0/24 — сеть, для которой выполняется сканирование).
После того как файл /etc/ethers создан, его можно загружать с помощью команды:
Дальше можно вообще отключить ARP на интерфейсе, и те кто не прописан в /etc/ethers, вообще не смогут пользоваться маршрутизатором.
Преимущества и недостатки
Метод ручного формирования ARP-таблиц имеет следующие недостатки:
Патчи ядра системы
Существует патч (предложенные buggzy) для ядер Linux/FreeBSD, который позволяет свести к минимуму опасность успешного выполнения атаки ARP-spoofing против пропатченных систем.
Суть метода состоит в следующем. При приеме ARP-ответа производится сравнение старого и нового MAC-адресов, и при обнаружении его изменения запускается процедура верификации. Посылается ARP-запрос, требующий всем хозяевам IP-адреса сообщить свои MAC-адреса.
Если выполняется атака настоящая система, имеющая этот IP-адрес, ответит на запрос, и, таким образом, атака будет распознана. Если же изменение MAC-адреса было связано не с атакой, а со стандартными ситуациями, ответа, содержащего «старый» MAC-адрес, не будет, и по прошествию определенного таймаута система обновит запись в кеше.
При обнаружении подозрительной ситуации («двойника») ядро выводит сообщение: «ARP_ANTIDOTE: Possible MITM attempt!», и не обновляет запись ARP-кеша, а наоборот, прописывает старую запись как статическую. После того как источник атаки выявлен и обезврежен, статическую запись можно удалить.
Патчи, реализующие этот метод борьбы:
Патчи работают только с ядром серии 2.4.
Другие методы борьбы с ARP-spoofing’ом
К сожалению, этот метод не применим к Windows-системам, и другим системам, работающим под управлением ОС, исходный код которых недоступен.
Необходимо решить проблему кардинально: нужно так построить сеть, чтобы выполнение ARP-spoofing’а в ней было принципиально невозможно. А если возможным, то бесполезным.
Это можно сделать двумя способами:
Использование VLAN
Компьютер C может использовать ARP-spoofing против компьютера A только в том случае, если они находятся в одной сети канального уровня. В том случае, если они разделены маршрутизатором, атака невозможна (возможна атака на маршрутизатор, но это совсем другое дело).
Преимущества
Недостатки
Существует мнение, что некоторые коммутаторы позволяют пересылать трафик из одного VLAN’а напрямую в другой в обход запрета прямой пересылки кадров между VLAN’ами. Об одном из способов подробнее можно почитать на странице [1]
Использование packet filtering ACL на коммутаторах
Современные коммутаторы Dlink и Cisco поддерживают продвинутые инструменты анализа пакетов и фильтрацию по их параметрам. Существуют два направления фильтрации:
Настройку ACL для предотвращения ARP-spoofing’а зачастую увязывают в один комплекс с выдачей ip по DHCP с использованием опции 82, позволяющей выдавать ip по порту устройства и IP-Mac-Port binding, запрещающего подмены IP/MAC на третьем уровне.
Настройка коммутаторов Dlink описана в FAQ(1, 2, 3) и на форуме dlink.ru (1, 2), настройка коммутаторов ProCurve в этом wiki.
Преимущества
Недостатки
Использование PPPoE
Преимущества
Недостатки
Мифы и заблуждения, касающиеся ARP-spoofing
Функция port-security коммутатора позволяет защититься от смены MAC-адреса на порту коммутатора. В том случае если компьютер, подключенный к порту коммутатора меняет MAC-адрес или если меняется компьютер, коммутатор замечает подмену и перестаёт передавать пакеты отправленные с новым обратным адресом. Кроме этого, могут выполняться другие действия: отсылка SNMP-трапа, запись в syslog и тому подобное.
При ARP-spoofing’е MAC-адрес отправителя (атакующего) не меняется и поэтому с точки зрения port-security никаких аномалий нет. Функция port-security никак не отвечает за соответствие IP-адресов и MAC-адресов, а атака ARP-spoofing построена именно на этом.-










