Информационная безопасность: спуфинг-атака

arp spoofing attackС понятием «информация» связаны три следующих термина:

  1. Уязвимость – это некое свойство информационной системы, которое может создать угрозу безопасности данной информационной системы.
  2. Угроза.
  3. Атака – это путь, механизм, какие-то действия, с помощью которых угроза реализуется, эксплуатируя уязвимость.

Существуют две сетевые модели: модель TCP/IP и OSI. Модель OSI появилась позже и была попыткой разложить по полочкам стек протоколов. Модель TCP/IP появилась раньше и она является более практической. Она имеет четыре уровня. И на каждом уровне существуют свои проблемы безопасности.

Рассмотрим канальный уровень. Классическим примером уязвимости этого уровня является уязвимость ARP-протокола. Это канальный протокол второго уровня модели OSI или первого уровня модели TCP/IP. Он служит для связи MAC-адресов и IP-адресов в некотором сегменте сети.

ARP-запросы отвечают на то, какой MAC-адрес принадлежит тому IP, к которому мы обращаемся. Предположим у нас есть хост A, хост B и мы имеем коммутатор (switch). Надо отметить, что раньше сети проектировались на устройствах под названием хабы. Это достаточно примитивное устройство, в котором нет ничего кроме распайки.

Получив пакеты, которые шлют машины, обмениваясь информацией между собой, хабы рассылали их по всем портам. Всё, что нужно было злоумышленнику, чтобы перехватить трафик в сетях, которые функционировали на хабах, это запустить сниффер. Компьютер получал пакеты, которые направлены не только ему лично, то есть не по адресу сетевой карточки, которая на этом компьютере установлена, а вообще все пакеты.

Это было очень давно и уже много лет сети строятся на коммутаторах. Эти устройства более умные. Они имеют CAM-таблицу. Пакеты уже не рассылаются по всем портам, а свитч запоминает и ведёт в этой CAM-таблице соответствие портов хостам.

Предположим, что у нас есть компьютер А с IP-адресом 10. 0. 0. 1 , и компьютер В с IP-адресом 10.0.0.2. Чтобы отправить пакет с машины A на машину B, машина A рассылает широковещательный запрос, который пойдёт на все порты коммутатора. ARP-запрос (ARP-request) такого содержания: «Скажите пожалуйста по какому MAC-адресу расположена машина с IP-адресом 10.0.0.2 ?».

Все машины в сети получают этот запрос. Машина B отвечает (ARP-reply). Компьютер А, который инициирует соединение, обновляет свою ARP-таблицу и знает, что машина В имеет такой MAC-адрес, что позволяет отправить пакет напрямую.

Представим себе, что злоумышленник хочет увидеть трафик между машинами А и В. Так как у нас есть коммутатор, то запуская сниффер, он ничего не видит, потому что пакеты до него не «долетают». Надо понимать, что все протоколы, которые используются сейчас в интернете – это протоколы, которым очень много лет.

Когда их проектировали, то не думали о безопасности. Потому что никто не мог предположить, что стек протоколов TCP/IP станет популярным и интернет будет построен на его базе. Проблема протокола ARP заключается в отсутствии аутентификации.

Злоумышленник оправляет компьютеру А ARP-ответ. В нём говорится, что машина В находится теперь на другом MAC-адресе и компьютеру В отправляется аналогичный ответ, что машина А имеет тоже другой MAC-адрес. Оба компьютера доверяют этой информации и обновляют свою ARP-таблицу.

В результате чего весь трафик между компьютером А и компьютером В теперь идёт через машину злоумышленника. Компьютер А посылает теперь пакеты ему, думая, что он машина В и машина В аналогично посылает пакеты ему, думая, что он машина А. В

сё что остаётся сделать злоумышленнику – это включить у себя на компьютере роутинг, чтобы трафик всё-таки шёл и обмен информацией был, и спокойно перехватывать все пакеты. Такой вид атаки называется ARP-spoofing (подделка ARP-ответов). Какие существуют способы защиты:

1. Использование функции коммутатора Port security таким образом, чтобы с данного порта можно было видеть только один MAC. Стоит помнить что, подделать MAC-адрес не трудно.

2. Использование статической ARP-таблицы. Это не совсем удобный способ, потому что когда появляется новый клиент, необходимо обновить информацию об этом клиенте на всех машинах.
3. Использование IPv6.
4. Аутентификация на порту коммутатора (802.1x).