Уже давно известна уязвимость протокола ARP к атаке, получившей название arpoison. Атака позволяет перенаправлять данные, предназначенные одному компьютеру в локальной сети, на другой. Это широко используется, особенно в атаках типа Man in the Middle, позволяющих перехватывать информацию, передаваемую по "защищенным" протоколам: ssh, ssl, https. arp_antidote - средство для активной борьбы с атаками типа arpoison (arp spoofing), используемых для осуществления MitM-атак утилитами типа ettercap.
Уже давно известна уязвимость протокола ARP к атаке, получившей название arpoison. Атака позволяет перенаправлять данные, предназначенные одному компьютеру в локальной сети, на другой. Это широко используется, особенно в атаках типа Man in the Middle, позволяющих перехватывать информацию, передаваемую по "защищенным" протоколам: ssh, ssl, https. Программа ettercap, позволяющая человеку без специальных знаний перехватывать пароли, передаваемые по SSH, основана именно на атаке arpoison.
Возможность arpoison считается недостатком самого протокола ARP, и поэтому качественных мер борьбы с этой атакой до сих пор не предпринималось. Существуют лишь средства обнаружить ее и сообщить администратору, но задержка между обнаружением и реакцией может оказаться недопустимо большой, когда речь идет о перехвате конфиденциальной информации. Другие способы вообще частично запрещают функционирование протокола ARP, что создает сильные неудобства в нормальной работе.
Предлагаемое решение позволяет не только обнаружить, но и предотвратить атаку типа arpoison. При этом оно не имеет никаких "побочных эффектов" - не перекладывает функции протокола ARP на плечи администратора (нет необходимости вручную прописывать статические записи), позволяет машинам менять соответствие IP <-> MAC автоматически. Контролируются только arpoison-атаки.
arp_antidote - средство для активной борьбы с атаками типа arpoison (arp spoofing), используемых для осуществления MitM-атак утилитами типа ettercap.
Патч arp_antidote изменяет реализацию протокола ARP в linux kernel так, что провести атаку arpoison становится невозможно.
Установка патча.
Патч написан для ядра 2.4.19, однако, тестировался и в 2.4.18 и, предположительно, подходит для любого ядра 2.4. Для установки скачайте antidote.diff.gz в каталог с исходным кодом ядра linux,
распакуйте его
gzip -d antidote.diff.gz
и примените патч:
patch -p1 < antidote.diff
После применения патча и перекомпиляции фичу нужно разрешить (по умолчанию она запрещена) через sysctl:
sysctl -w net.ipv4.neigh.eth0.arp_antidote=1 - разрешить на интерфейсе eth0
sysctl -w net.ipv4.neigh.eth0.arp_antidote=0 - запретить
Когда фича запрещена, работает стандартная реализация протокола ARP. При приеме пакета ARP-reply (посылаемого при атаке arpoison) ядро обновляет запись в кеше, если она там уже была, независимо от ее старого значения.
Если фичу разрешить, то при приеме ARP-reply производится сравнение старого и нового MAC-адреса,
и при обнаружении его изменения запускается процедура верификации. Посылается ARP-запрос, требующий всем хозяевам IP-адреса сообщить свои MAC-адреса. В случае атаки arpoison "настоящая" система, имеющая этот IP-адрес, ответит на запрос, и, таким образом, атака будет распознана.
Если же изменение MAC-адреса было связано не с атакой, а со стандартными ситуациями, ответа, содержащего "старый" MAC-адрес, не будет, и по прошествию определенного таймаута система обновит запись в кеше.
При обнаружении подозрительной ситуации ("двойника") ядро выводит сообщение:
"ARP_ANTIDOTE: Possible MITM attempt!", и не обновляет запись ARP-кеша, а наоборот, прописывает старую запись как статическую. После предотвращения таким образом непосредственной угрозы атаки следует приступить к принятию организационных мер против горе-хакера :) Затем статическую запись можно опять удалить.
Нам интересно ваше мнение: результаты тестирования, в том числе положительные :), и нужна ли такая система вообще, следует ли делать версию для FreeBSD.