August 12, 2024

Man-In-The-Middle (MITM)

Принцип атак MITM заключается в том, что атакующий внедряется в сетевое взаимодействие и выступает в качестве посредника между атакуемыми узлами, ретранслируя их сообщения. Осуществить подобную атаку в локальной сети в частности можно при помощи техники ARP-spoofing.

ARP (Address Resolution Protocol – протокол определения адреса) – протокол в компьютерных сетях, предназначенный для определения MAC адреса компьютера по известному IP-адресу. Данный протокол используется во время сетевого взаимодействия для отображения IP-адреса на MAC-адрес во время подготовки и отправки кадров протокола канального уровня (на канальном уровне адресация происходит по MAC-адресам). Существуют следующие типы ARP-сообщений: ARP запрос (ARP request) и ARP ответ (ARP reply).
Для того чтобы отправить сетевой пакет системе необходимо знать MAC-адрес получателя (для инкапсуляции сетевого пакета (дейтаграммы) в кадр канального уровня), для этого первым шагом система проверяет локальную ARP таблицу (представлена на рисунке ниже), если записи с IP-адресом в ARP таблице нет, ARP протокол выполняет следующие действия:

  • Выполняется широковещательный ARP запрос, содержащий IP-адрес получателя
  • Узел, имеющий требуемый IP-адрес (указан в ARP запросе), отправляет ARP ответ, содержащий его MAC-адрес;
  • Данный ответ обрабатывается инициатором запроса, соответствующая запись добавляется в ARP таблицу;
  • Выполняется успешное отображение IP-адреса в MAC-адрес.

Особенностью работы ARP протокола является возможность обновления ARP таблицы без отправки ARP запроса, т.е. любой узел в локальной сети, получающий широковещательный ARP запрос, может обновить информацию об отправителе данного ARP запроса (изменить соответствие IP-адреса MAC-адресу в ARP таблице) (при условии, что ARP запись не является статичной).

Для оповещения узлов в сети об появлении нового узла (или при изменении сетевых настроек существующих узлов) применяется специальный Gratuitous ARP запрос. Данный ARP запрос запрашивает MAC-адрес собственного узла, т.е. посылает широковещательный ARP запрос, содержащий собственный IP-адрес (данный запрос остается без ответа, если в сети нет дублирующего IP-адреса).

Проверить записи в ARP таблице можно командой:

arp -a
Проверка таблицы ARP

Принцип атаки ARP-spoofing заключается в модификации локальной ARP таблицы машин таким образом, что MAC-адрес легитимного устройства в сети заменяется MAC-адресом атакующего. Это осуществляется за счет непрерывной отправки большого количества Gratuitous ARP запросов, которые атакуемый хост обрабатывает и использует для обновления информации об отправителе в локальной ARP таблице (атака осуществляется непрерывно, т.к. легитимные узлы могут восстановить ARP запись, отправив ARP пакет). Данная атака возможна из-за отсутствия механизма аутентификации для проверки сообщений в ARP протоколе, т.е. любой узел в сети может ответить на широковещательный ARP запрос (или отправить Gratuitous ARP).
Данная атака позволяет атакующему прослушивать, модифицировать, или перенаправлять сетевой трафик с атакуемых узлов. Осуществить атаку можно при помощи следующих инструментов:

  • Ettercap: Это один из наиболее известных инструментов для проведения MITM атак, включая ARP-spуфинг. Ettercap поддерживает перехват и фильтрацию сетевого трафика, а также предоставляет графический интерфейс для удобства использования.
  • Bettercap: Современный инструмент, который поддерживает различные виды MITM атак, включая ARP-spуфинг. Bettercap отличается своей гибкостью и удобством в настройке, а также имеет активную поддержку и частые обновления.
  • Arpspoof: Это простой, но эффективный инструмент для ARP-spуфинга, который является частью пакета dsniff. Arpspoof позволяет легко перенаправлять трафик через машину атакующего, что делает его отличным выбором для тех, кто только начинает изучать эту технику.
  • MITMf (Man-In-The-Middle-Framework): Комплексный фреймворк, включающий в себя инструменты для различных атак типа MITM, включая ARP-spуфинг. MITMf объединяет возможности нескольких инструментов и предоставляет мощный набор для проведения сетевых атак.

Реализация атаки

Рассмотрим реализацию атаки arp-spoofing с помощью инструмента bettercap:

sudo bettercap -iface eth0

Запуск bettercap

Используем следующие настройки:

set arp.spoof.targets 192.168.150.233
set arp.spoof.internal true
arp.spoof on

Параметр arp.spoof.target устанавливает машину, ARP таблица которой будет отравлена (по умолчанию атака осуществляется на все машины в сети), arp.spoof.internal true указывает на необходимость осуществления атаки на машины в локальной сети (по умолчанию атака осуществляется на шлюз), "arp.spoof on запускает ARP spoofing атаку.

После запуска ARP spoofing, атакующий может просматривать трафик атакуемых узлов (т.к. весь трафик будет проходить через машину атакующего) при помощи программ для анализа сетевого трафика (например, при помощи Wireshark).

Обнаружение

Активный ARP-spoofing можно обнаружить несколькими способами:

  • Просмотр ARP-таблицы.
Выделен IP-адрес атакующей машины
  • Изменение времени жизни (TTL) ping пакета (некоторые инструменты могут модифицировать TTL).

При прохождении трафика через узел атакующего, TTL пакета уменьшается.

  • Просмотр сетевого трафика при помощи программы для анализа сетевого трафика

В данном случае хост получает большое количество Gratuitous ARP запросов от одного источника, что является аномалией сетевого трафика и может свидетельствовать об ARP spoofing атаке.

Рекомендации

  • Настройка статических ARP-таблиц.

В небольших сетях для защиты от arp-spoofing атак на узлах в сети можно настроить статические ARP таблицы. Добавить статическую запись в ARP таблицу можно при помощи команды ОС Windows:

netsh interface ip add neighbors $interface_name $IP $MAC=

Примечание: с ростом сети администрирование статических ARP таблиц становится достаточно сложной задачей.

  • Настройка динамической проверки ARP (DAI).

Динамическая проверка ARP (Dynamic ARP Inspection, DAI) – это функция безопасности коммутатора, которая проверяет пакеты ARP в сети. DAI гарантирует, что ретранслируются только легитимные запросы и ответы ARP. Коммутатор выполняет следующие действия:

    • Перехватывает все ARP-запросы и ответы на недоверенных портах (для корректной работы DAI порты, к которым потенциально может получить доступ атакующий, помечаются как недоверенные (Untrusted) (обычно помечаются все порты, идущие к конечным узлам))
    • Проверяет, что каждый из этих перехваченных пакетов имеет действительную привязку IP-адреса к MAC-адресу перед обновлением локальной ARP таблицы, или перед пересылкой пакета в соответствующий пункт назначения.
    • Отбрасывает недействительные пакеты ARP.
  • Использовать шифрование.

Для снижения ущерба от атаки ARP-spoofing (как и любой MITM атаки) в локальной сети можно использовать протоколы шифрования данных для защиты передаваемой информации от атакующего. Например, такие протоколы как PPPoE или IPSec.

  • Использовать специальные программы для мониторинга ARP трафика и обнаружения аномалий (ArpON, arpwatch, BitCometAntiARP).

Данные программы анализируют ARP пакеты, предаваемые по сети, запоминают соответствие IP и MAC адресов. Если соответствие нарушено, или обнаружено появление новых MAC адресов в сети, генерируются соответствующее события в системном журнале.