Доверчивый протокол
Внутри локальной сети устройства общаются по физическим адресам сетевых карт, MAC-адресам. Чтобы узнать, какой MAC соответствует нужному IP-адресу, компьютер использует протокол ARP: он спрашивает всех «у кого этот адрес?» и получает ответ. Полученное соответствие запоминается в таблице на некоторое время.
Проблема в том, что протокол создавался для доверенных сетей и ничего не проверяет. Ответ принимается от кого угодно, а многие системы принимают даже неспрошенные ответы. Этим и пользуется ARP spoofing: злоумышленник в той же сети рассылает ложные сведения, будто его MAC принадлежит адресу шлюза или другого узла.
Механика подмены
Типичная схема перехвата такая. Атакующий сообщает жертве, что адрес роутера соответствует его MAC-адресу, а роутеру сообщает, что адрес жертвы соответствует его MAC. Теперь трафик между ними идёт через его устройство. Если он пересылает пакеты дальше, пользователь ничего не замечает, кроме, возможно, небольшой задержки. Так возникает положение посредника в атаке человек посередине.
Если пакеты не пересылаются, у жертвы просто пропадает связь, и это уже отказ в обслуживании. Подмена держится за счёт регулярной повторной рассылки, потому что записи в таблице устаревают, а настоящие ответы могут перезаписать поддельные.
Где это возможно и что даёт
Атака работает только внутри одного сегмента сети, где узлы слышат друг друга на канальном уровне. Значит, злоумышленнику нужно подключиться к той же сети Wi-Fi или кабельной сегментации: в кафе, гостинице, общем офисном сегменте. Через интернет ARP-подмену выполнить нельзя.
Перехваченный незашифрованный трафик читается целиком. С современным шифрованием картина лучше: содержимое соединений по TLS остаётся защищённым, а подмена сертификата вызывает предупреждение браузера. Но метаданные, то есть с какими адресами общается устройство, посредник видеть может, и не защищены сервисы, работающие без шифрования.
Признаки и проверка
На обычном компьютере проще всего посмотреть таблицу ARP командой arp с ключом -a в Windows или ip neigh в Linux. Тревожный признак: у двух разных IP-адресов, особенно у шлюза и ещё одного узла, одинаковый физический адрес. MAC вашего роутера можно сверить с этикеткой на его корпусе или в панели управления.
Другие признаки: внезапная нестабильность связи, повторяющиеся предупреждения браузера о сертификатах, появление в списке устройств роутера незнакомого узла. Специализированные утилиты слежения за ARP умеют оповещать об изменении соответствия.
Защитные меры
Для домашних и офисных сетей помогают разделение на сегменты, изоляция клиентов в общедоступном Wi-Fi и отдельные VLAN. В управляемых коммутаторах есть функции проверки ARP и защиты от подмены, использующие таблицу доверенных соответствий. Статические записи ARP для критичных адресов работают, но неудобны и подходят лишь для отдельных случаев.
На стороне пользователя главный щит это шифрование: HTTPS, DNS через шифрованный канал, защищённые протоколы вместо открытых. В непроверенной сети не вводите чувствительные данные в сервисы без шифрования, а на предупреждения браузера о сертификате не отвечайте согласием продолжить.
Похожие приёмы в локальной сети
ARP-подмена родственна нескольким другим атакам канального уровня. При переполнении таблицы коммутатора ложными адресами он начинает пересылать чужие кадры на все порты, как хаб. Подмена DHCP-сервера позволяет раздавать клиентам ложный шлюз или ложный DNS. Все эти приёмы используют доверие протоколов, разработанных в те годы, когда сеть считали безопасным пространством.
Общий защитный принцип один: не полагаться на честность соседей по сегменту. Управляемое оборудование поддерживает динамическую проверку ARP, защиту от посторонних DHCP-серверов и ограничение числа адресов на порту. В домашних условиях главный ресурс это доверие только шифрованным соединениям и разделение сети на гостевую и основную.
Проверка таблицы ARP занимает секунды и полезна как привычка, когда вы подключаетесь к незнакомой сети. Сравните адрес шлюза и его физический адрес до и после подозрительных сбоев: если что-то изменилось без вашего участия, лучше отключиться и продолжить в другой сети.