Введение
Компьютер, присоединенный к сети имеет два адреса. Один адрес сетевой карты, так называемый MАC адрес. В теории, МАС адрес уникален и прошит в самой карте (на самом деле это конечно несколько не так). МАС адрес важен в частности для Ethernet протокола, для приема и передачи данных. Ethernet строит кадры данных, из блоков по 1.500 байт. Каждый кадр имеет в заголовке MAC адрес источника и получателя.
Второй адрес компьютера, это всем известный IP. IP используется в приложениях независимо от того, какой сетевой техникой оперирует сам компьютер. IP-адрес виртуальный и задается софтом. IP и Ethernet должны работать вместе. IP тоже общается пакетами, но несколько другой
структуры чем Ethernet. Пакеты IP не могут передаваться сами по себе (смотрите наши статьи
Модель OSI #1,
#2). В частности в Ethernet сетях они передаются через протокол Ethernet, который разбивает пакеты на фреймы, добавляет свой служебный заголовок и передает в сеть. Во время сбора кадра, Ethernet не знает, какой МАС адрес на машине получателя, единственная информация - IP адрес получателя. Для определения Мас адреса по IP и нужен ARP (Address Resolution Protocol).
ARP
ARP посылает ARP запросы, которые фактически спрашивают: "Ваш IP адрес х.х.х.х.? Да? Просто замечательно. Пошлите в таком случае ваш МАС адрес мне обратно." Пакеты рассылаются на все компьютеры сети. Каждый компьютер сети исследует ARP запрос и отсылает ответ в случае совпадения.
Для минимизации ARP пакетов, рассылаемых по сети, операционная система сохраняет в
кэше ARP ответы. Когда компьютер получает ARP ответ, он обновляет ARP
кэш с новым значением IP/MAC. Большинство операционных систем обновляют
кэш таблицу независимо от того, посылали ли они запрос на соответствие или нет.
ARP spoofing в том и состоит - послать компьютеру специально сконструированный ответ, в котором IP адрес будет сопоставлен ложному МАС адресу, так что пакеты будут приходить не компьютеру А, а компьютеру В. При этом жертва даже не будет знать, что посылает пакеты не по тому адресу. Такой процесс называют часто "отравлением".
Перехват
Свитч определяет, какой фрейм по какому порту идет, путем сравнения МАС адреса фрейма с собственной таблицей. Таблица содержит список портов и присоединенных к ним Мас адресов. Таблица заполняется при включении свитча, путем опознавания первого же кадра, пришедшего по каждому порту.
Сетевую карту можно ввести в состояние сканирования (promiscuous mode), при котором она будет разбирать все кадры, не взирая на МАС адрес. В сети со свитчем это довольно неинтересно, так как свитч роутит пакеты, определяясь своей таблицей. Однако, используя ARP имитацию, можно кое-что испортить и в свитч-сети.
Одним из примеров использования ARP служит так называемая "man-in-the-middle" атака. Злоумышленник как бы "вставляет" свой компьютер между двумя компьютерами. При этом коммуникация даже не будет нарушена, так как компьютер хакера будет форвардить информацию, не прерывая ее поток. Вот наглядный пример - Х это хакер, Т1 и Т2 - компьютеры жертв.
- Х "отравляет" ARP кэш Т1 и Т2
- Т1 теперь соотносит IP Т2 с МАС адресом Х
- Т2 теперь соотносит IP Т1 с МАС адресом Х
- Весь трафик от Т1 и Т2 теперь будет поступать к Х
Очень удачно получится, если заразить не только
кэш компьютеров, но роутеров/шлюзов. Если сделать так, то весь Инет трафик жертв можно будет получать на свой компьютер.