Перейти к содержимому

Как найти ARP-спуфинг в Wireshark: пошаговый анализ дампа трафика

Как найти ARP-спуфинг в Wireshark: пошаговый анализ дампа трафика
Время чтения: 14 мин.

Три месяца назад разбираю рядовой алерт на корпоративном сегменте — коммутатор зафиксировал дубликат MAC-адреса шлюза. Открываю pcap-файл в Wireshark, ставлю фильтр arp.duplicate-address-detected — в выдаче сотня gratuitous ARP-пакетов от хоста, которого нет в инвентаре сети. Вся атака уместилась в ~2000 пакетов, и ни одно средство защиты на периметре её не увидело — потому что атака шла внутри VLAN. Ниже разберём, как читать дамп трафика в Wireshark и находить признаки ARP-спуфинга и VLAN hopping, даже если вы открыли pcap-файл впервые на прошлой неделе.

Зачем злоумышленнику ARP-спуфинг: место в цепочке атаки на корпоративную сеть

Прежде чем разбирать фильтры — контекст: какую задачу решает атакующий и почему SOC-аналитику нужно ловить эту технику рано.

MITRE ATT&CK — открытая база тактик и техник атак; T-коды (T1557, T1040 и т.п.) — её идентификаторы. ARP Cache Poisoning (T1557.002) — подтехника категории Adversary-in-the-Middle (T1557, тактики Credential Access и Collection). Суть: атакующий встаёт между двумя устройствами в локальной сети и перехватывает трафик — логины, пароли, cookies, токены.

В типичной цепочке атаки ARP-спуфинг стоит между начальным доступом и кражей учётных данных:

  1. Initial Access — атакующий уже внутри сети (скомпрометированная рабочая станция, физический доступ, открытый Wi-Fi)
  2. ARP Cache Poisoning (T1557.002) — рассылка поддельных ARP-ответов, подмена MAC-адреса шлюза
  3. Network Sniffing (T1040, тактики Credential Access и Discovery) — перехват трафика, извлечение учётных данных из незашифрованных протоколов
  4. Lateral Movement / Exfiltration — продвижение по сети с перехваченными данными (конкретные техники зависят от сценария)

Почему это актуально именно сейчас: по данным CrowdStrike Global Threat Report 2025, 75% вторжений используют действительные учётные данные. Verizon DBIR 2025 фиксирует 38% утечек через кражу credentials. Часть этих учёток — результат перехвата на канальном уровне, где ARP-спуфинг остаётся стандартной техникой.

Если SOC-аналитик ловит аномалию на шаге 3, атаку можно остановить до кражи данных. Пропустил — атакующий получает credentials и уходит глубже в инфраструктуру. Поэтому мониторинг ARP-таблиц в сети — не факультатив, а обязательная часть работы SOC L1-L2.

Как выглядит нормальный ARP-трафик при чтении pcap-файлов

Чтобы увидеть аномалию, нужно сначала понять, как выглядит норма.

ARP (Address Resolution Protocol — протокол разрешения адресов) связывает IP-адреса (логические адреса устройств в сети) с MAC-адресами (уникальные физические идентификаторы сетевых карт, вшитые производителем). В пределах одной подсети каждое устройство должно знать MAC-адрес собеседника, чтобы отправить ему Ethernet-фрейм. ARP решает эту задачу:

  • Хост A хочет связаться с 192.168.1.50, но знает только IP
  • Хост A отправляет широковещательный ARP-запрос (opcode 1): «Кто имеет 192.168.1.50? Сообщите MAC»
  • Хост B отвечает ARP-ответом (opcode 2): «192.168.1.50 — это aa:bb:cc:dd:ee:ff»
  • Хост A сохраняет связку IP↔MAC в ARP-таблице (локальный кеш) и использует дальше

В нормальном pcap-дампе ARP-трафика немного: пары «запрос → ответ» появляются при установлении новых соединений или при истечении записи в кеше (типичный TTL — 60–300 секунд в зависимости от ОС). Каждый IP-адрес соответствует ровно одному MAC. Gratuitous ARP (самообъявление — хост объявляет свой MAC без входящего запроса) появляется единицами: при загрузке устройства, при смене IP или при переключении HSRP/VRRP (протоколы резервирования шлюза).

Что меняется при атаке. Атакующий отправляет поддельные ARP-ответы (opcode 2), заявляя: «IP шлюза 192.168.1.1 — это МОЙ MAC». Жертва обновляет ARP-таблицу и начинает отправлять весь трафик, предназначенный шлюзу, на устройство атакующего. Самый характерный симптом ARP-спуфинга — один и тот же MAC привязан к двум разным IP, или один IP заявляется двумя разными MAC. Именно это мы будем искать в дампе.

Признаки ARP-спуфинга в трафике: пошаговый анализ дампа Wireshark

Требования к окружению

  • ОС: Windows 10+, Linux (любой дистрибутив с GUI), macOS
  • RAM: от 4 ГБ для дампов до 100 МБ, от 8 ГБ для крупных pcap-файлов (фактическое потребление зависит от типа трафика и числа активных dissectors)
  • Wireshark: версия 3.x или 4.x (фильтр arp.duplicate-address-detected доступен в актуальных версиях). Установка: на Windows — скачать с wireshark.org, на Debian/Ubuntu — sudo apt install wireshark
  • Дамп трафика: файл .pcap или .pcapng с записанным ARP-трафиком. Если дампа нет, можно записать тестовый на Linux: sudo tcpdump -i eth0 -w test.pcap (нужен root-доступ). Для получения дампа с аномалиями используйте arpspoof/ettercap/bettercap в изолированной лаборатории — иначе дамп будет содержать только нормальный ARP-трафик
  • Контекст применения: внутренний пентест или SOC-расследование в корпоративной сети с Ethernet-сегментами

Фильтры Wireshark для ARP-атак

Весь анализ дампа трафика в Wireshark строится на display-фильтрах — выражениях в зелёной строке вверху окна, которые отсекают всё лишнее и показывают только нужные пакеты. Пять фильтров, которые закрывают поиск ARP-спуфинга:

Фильтр 1: весь ARP-трафик. Введите arp в строку фильтра — Wireshark покажет только ARP-пакеты. Отправная точка: смотрите общую картину, сколько ARP-пакетов в дампе и от каких хостов.

Фильтр 2: только ARP-ответы. Именно через поддельные ответы проводится атака. Фильтр arp.opcode == 2 оставит только reply-пакеты. Отсортируйте по столбцу Sender IP — если один IP (особенно адрес шлюза) фигурирует в ответах от нескольких разных MAC, это и есть признак спуфинга.

Фильтр 3: автоматическое обнаружение дубликатов. Wireshark умеет детектировать конфликты сам. Фильтр arp.duplicate-address-detected покажет пакеты, где один IP заявлен с разных MAC-адресов. Если фильтр вернул результаты — с высокой вероятностью идёт ARP cache poisoning. Это встроенный способ обнаружения конфликта IP/MAC в pcap, и он экономит кучу времени.

Фильтр 4: gratuitous ARP. Фильтр arp.isgratuitous показывает пакеты самообъявления. В нормальной сети их единицы. Если от одного IP летят десятки gratuitous ARP в секунду — атакующий непрерывно обновляет отравленные записи в ARP-таблицах жертв. Ориентир из практики: больше 10 gratuitous ARP в секунду от одного источника — подозрительно. Но порог нужно калибровать под конкретную сеть: легитимные всплески случаются при VM live migration, HSRP/VRRP preemption или массовом DHCP renewal.

Фильтр 5: ответы от конкретного IP. Для целевой проверки шлюза: arp.opcode == 2 && arp.src.proto_ipv4 == 192.168.1.1 (подставьте IP вашего шлюза). Если в выдаче пакеты с разными Sender MAC — один из них поддельный.

Дублирующиеся MAC-адреса и Expert Information

Для визуального анализа полезно добавить в Wireshark столбцы с MAC-адресами — в стандартной раскладке они скрыты:

  1. Откройте Edit → Preferences → Columns
  2. Нажмите «+», добавьте столбец Source MAC, выберите тип Hw src addr (resolved)
  3. Аналогично добавьте Dest MAC — тип Hw dst addr (resolved)
  4. Перетащите новые столбцы правее Source / Destination

Теперь при фильтрации по arp.opcode == 2 вы видите MAC-адреса прямо в списке пакетов. В чистой сети каждый IP отвечает ровно одним MAC. При атаке картина другая:

Пакет Sender IP Sender MAC Что это
#55 192.168.1.1 aa:bb:cc:dd:ee:ff Легитимный шлюз
#56 192.168.1.1 11:22:33:44:55:66 MAC атакующего

Два ARP-ответа заявляют один IP, но с разными MAC — конфликт. Пакет #56 — поддельный.

Expert Information — встроенный механизм Wireshark для выявления аномалий. Путь: Analyze → Expert Information. В открывшемся окне ищите предупреждения уровня Warning с текстом «Duplicate IP address configured». Каждое предупреждение кликабельно — ведёт к конкретным пакетам с конфликтом. Это второй способ обнаружения, дополняющий фильтры — пригодится, когда вы не знаете заранее, какой именно IP под атакой.

Временная диаграмма gratuitous ARP. Чтобы оценить интенсивность атаки: Statistics → I/O Graphs, в поле фильтра графика укажите arp.isgratuitous. Wireshark покажет количество таких пакетов в секунду на временной шкале. Всплеск — момент начала атаки.

Автоматизация обнаружения MITM-атак: tshark вместо GUI

Wireshark с графическим интерфейсом удобен для ручного разбора, но на серверах без GUI или при мониторинге в реальном времени — нужен tshark (консольная версия Wireshark, входит в тот же пакет). Скрипт ниже анализирует ARP-ответы и детектирует ситуацию, когда один IP заявляется двумя разными MAC:

sudo tshark -i eth0 -Y "arp.opcode == 2" -T fields \
  -e arp.src.proto_ipv4 -e arp.src.hw_mac 2>/dev/null | awk '
{
  ip=$1; mac=$2
  if (ip != "" && mac != "") {
    if ((ip in seen) && seen[ip] != mac)
      print "ARP SPOOF DETECTED: " ip " claimed by " seen[ip] " AND " mac
    if (!(ip in first)) first[ip]=mac
    seen[ip]=mac
  }
}'

Что здесь происходит, шаг за шагом:

  1. tshark -i eth0 — захватывает трафик на интерфейсе eth0 (посмотреть свои интерфейсы: ip link show). Нужен root или sudo
  2. -Y "arp.opcode == 2" — display-фильтр: пропускает только ARP-ответы
  3. -T fields -e arp.src.proto_ipv4 -e arp.src.hw_mac — выводит два поля из каждого пакета: IP отправителя и его MAC
  4. awk — сравнивает: если для одного IP уже видели другой MAC — выводит предупреждение

Ожидаемый вывод при обнаружении атаки:

ARP SPOOF DETECTED: 192.168.1.1 claimed by aa:bb:cc:dd:ee:ff AND 11:22:33:44:55:66

Если вывод пуст — конфликтов MAC для одного IP не обнаружено. Скрипт работает в реальном времени: оставьте его запущенным на хосте в подсети и он среагирует на попытку спуфинга.

Предпосылки: Linux с установленным tshark (пакет wireshark-cli или tshark в зависимости от дистрибутива), права root, доступ к сетевому интерфейсу нужного VLAN.

Ограничение: tshark детектирует только уже начавшуюся атаку и только в подсети, где запущен. Для мониторинга нескольких VLAN нужно запускать отдельный экземпляр на каждом сегменте или использовать SPAN-порт коммутатора (зеркалирование трафика).

Обнаружение VLAN hopping в сети

VLAN (Virtual LAN — виртуальная локальная сеть) — способ логически разделить физическую сеть на изолированные сегменты. В корпоративной сети бухгалтерия, разработка и серверная ферма обычно живут в разных VLAN: трафик между ними проходит через маршрутизатор с ACL (списки контроля доступа). VLAN hopping — атака, при которой трафик «перепрыгивает» из одного VLAN в другой, минуя маршрутизатор и его правила.

В большинстве публичных разборов ARP-спуфинга VLAN hopping обходят стороной. Тут разберём обе техники.

Double tagging 802.1Q в дампе трафика

Double tagging (двойная инкапсуляция) — атака на механизм передачи 802.1Q-тегов (стандарт, описывающий маркировку VLAN-принадлежности в Ethernet-фреймах). Механика:

  1. Атакующий формирует фрейм с двумя VLAN-тегами: внешний — native VLAN коммутатора (обычно VLAN 1, используемый по умолчанию на trunk-портах), внутренний — целевой VLAN (например, серверный VLAN 100)
  2. Первый коммутатор снимает внешний тег (потому что он совпадает с native VLAN — штатное поведение) и пересылает фрейм дальше по trunk
  3. Второй коммутатор видит внутренний тег (VLAN 100) и направляет фрейм в целевой VLAN

Как искать в Wireshark. Фильтр vlan показывает все фреймы с 802.1Q-тегами. Для поиска конкретного VLAN: vlan.id == 100. Признак double tagging: в панели деталей пакета (нижняя часть окна Wireshark) — два уровня заголовков «802.1Q Virtual LAN», вложенных друг в друга. В нормальном трафике между хостом и коммутатором двойной тег не появляется. Видите фрейм с двумя 802.1Q-заголовками от рабочей станции — это аномалия.

Когда техника НЕ работает: double tagging — односторонняя атака (ответный трафик не вернётся к атакующему), поэтому годится только для слепых инъекций. Не сработает, если native VLAN trunk-порта изменён с дефолтного VLAN 1, или если на коммутаторе настроена принудительная маркировка native VLAN (vlan dot1q tag native на Cisco). [Применимо: внутренний пентест, Cisco/Huawei-инфраструктура с дефолтной конфигурацией trunk-портов]

Switch spoofing и анализ DTP-пакетов

Switch spoofing — атака, при которой устройство атакующего притворяется коммутатором и устанавливает trunk-соединение с реальным свитчем через протокол DTP (Dynamic Trunking Protocol — проприетарный протокол Cisco для автоматического согласования trunk-портов).

В Wireshark фильтр dtp покажет DTP-пакеты в дампе. В нормальной сети DTP генерируют только коммутаторы. Если в выдаче фильтра появляется DTP от MAC-адреса, который не принадлежит сетевому оборудованию (проверьте по OUI-префиксу MAC — первые 3 октета указывают на производителя), — это признак switch spoofing.

Когда техника НЕ работает: switch spoofing возможен, только если порт коммутатора работает в режиме dynamic auto или dynamic desirable. Если администратор статически задал режим access (switchport mode access) и отключил DTP (switchport nonegotiate) — атака невозможна. Техника специфична для Cisco; коммутаторы Huawei, Juniper, Aruba не используют DTP и к switch spoofing через DTP не уязвимы. [Применимо: внутренний пентест, сети Cisco с дефолтной конфигурацией портов]

Инструменты анализа сетевого трафика на атаки: сравнение и ограничения

Wireshark — не единственный вариант для обнаружения ARP-спуфинга и VLAN hopping. Выбор зависит от задачи:

Критерий Wireshark (GUI) tshark (CLI) Zeek (Bro)
Преимущества Визуальный анализ пакетов, Expert Info, I/O Graphs, низкий порог входа Автоматизация через bash/cron, работа на серверах без GUI Структурированные логи, корреляция событий, горизонтальное масштабирование
Ограничения Не масштабируется на гигабитные потоки, GUI обязателен, дампы >500 МБ тормозят Нет визуализации, сложнее для начинающих Требует развёртывания и тюнинга, не даёт packet-level деталей из коробки
Когда использовать Ручной разбор дампа при расследовании инцидента, обучение, верификация алерта Мониторинг на серверах, интеграция в скрипты и SIEM Постоянный мониторинг корпоративной сети, SOC на масштабе нескольких VLAN
Когда НЕ использовать Постоянный мониторинг в продакшене, анализ дампов > 1 ГБ Когда нужна визуальная корреляция паттернов между пакетами Разовый анализ единичного pcap, быстрая ad-hoc проверка

На практике инструменты дополняют друг друга: Zeek детектирует аномалию в потоке и генерирует алерт, SOC-аналитик открывает соответствующий фрагмент pcap в Wireshark для верификации, а tshark-скрипт на сенсоре подтверждает, что конфликт MAC-адресов реальный.

Мониторинг ARP-таблиц: верификация и защита корпоративной сети

Верификация после обнаружения

Wireshark показал подозрительные пакеты — дальше нужно подтвердить атаку на живой системе. На заведомо чистой машине в той же подсети проверяете ARP-таблицу.

На Linux: команда ip neighbor show выведет текущие записи с указанием состояния (REACHABLE — запись активна, STALE — устарела, DELAY — ожидает подтверждения). Ищите запись для IP шлюза — MAC-адрес должен совпадать с эталонным из документации на маршрутизатор. Если MAC другой — таблица отравлена. Более старая команда arp -n покажет то же без статусов.

На Windows: arp -a отобразит кеш. Принцип проверки тот же.

Временное исправление: sudo arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff — статически задаёт MAC для IP шлюза. Поддельные ARP-ответы не перезапишут статическую запись. Но это костыль: статическая запись защищает только тот хост, на котором установлена, остальные машины в VLAN остаются уязвимы. Мера временная — до момента, пока атакующее устройство не найдено и не отключено.

Превентивные меры на коммутаторах

Dynamic ARP Inspection (DAI) — функция управляемых коммутаторов (Cisco, Huawei, Juniper, Aruba). DAI проверяет каждый ARP-пакет на порту: сопоставляет IP↔MAC из ARP-ответа с данными DHCP Snooping binding table. Несовпадение — пакет отбрасывается. Ограничение: DAI требует настроенного DHCP Snooping; хосты со статическими IP нуждаются в статических привязках IP-MAC через arp access-list (Cisco) или аналогичный механизм других вендоров.

Port Security — ограничивает количество MAC-адресов на порту. Появляется новый MAC сверх лимита — порт блокируется (violation mode shutdown) или логирует событие (restrict). Ограничение: не спасает, если атакующий клонирует легитимный MAC. Port Security также не защищает от VLAN hopping (double tagging), т.к. работает на уровне MAC, а не VLAN-тегов.

802.1X — аутентификация устройств через RADIUS-сервер перед предоставлением доступа к VLAN. Не пустит в сеть неавторизованное устройство. Ограничение: не все устройства поддерживают (принтеры, IoT, legacy-оборудование), требует развёрнутой PKI-инфраструктуры.

Против VLAN hopping: отключить DTP на всех пользовательских портах (switchport nonegotiate), перевести порты в режим access (switchport mode access), изменить native VLAN trunk-портов с дефолтного VLAN 1 на неиспользуемый, включить vlan dot1q tag native.

Чеклист обнаружения ARP-спуфинга и VLAN hopping в корпоративной сети

Готовый чеклист для включения в SOC-playbook или передачи сетевому администратору:

  1. Открыть pcap в Wireshark, применить фильтр arp.duplicate-address-detected — если есть результаты, перейти к п.2
  2. Отфильтровать ARP-ответы: arp.opcode == 2, отсортировать по Sender IP — найти IP с несколькими MAC
  3. Оценить частоту gratuitous ARP: фильтр arp.isgratuitous, построить I/O Graph (Statistics → I/O Graphs) — ориентировочный порог >10/сек от одного IP (калибровать под свою сеть)
  4. Проверить Expert Information: Analyze → Expert Information → искать «Duplicate IP address configured»
  5. Зафиксировать подозрительный MAC, проверить по инвентарю и OUI-базе (первые 3 октета MAC → производитель)
  6. На чистой машине выполнить ip neighbor show (Linux) / arp -a (Windows) — сравнить MAC шлюза с эталонным
  7. Проверить DTP-активность: фильтр dtp — источник не коммутатор = switch spoofing
  8. Проверить двойные 802.1Q-теги: фильтр vlan, в деталях пакета искать два вложенных заголовка «802.1Q Virtual LAN»
  9. При подтверждении — изолировать порт атакующего, установить статическую ARP-запись как временную меру
  10. Настроить превентивные меры: DAI + DHCP Snooping, Port Security, switchport mode access + switchport nonegotiate на пользовательских портах, сменить native VLAN на trunk-портах

На моей практике расследований в корпоративных сетях с несколькими VLAN нередко попадались сегменты без включённого DAI. Коммутаторы стоят в конфигурации по умолчанию, DTP активен, native VLAN — единица, Port Security не настроен. В таких условиях ARP-спуфинг проходит за минуты, а VLAN hopping через double tagging — вопрос одного фрейма. Сетевые инженеры знают об этих рисках, но канальный уровень исторически считался «внутренним и доверенным». Отдельная тенденция — рост атак через скомпрометированные рабочие станции (IBM X-Force 2025: infostealers составляют 32% от всего malware, рост атак с использованием валидных credentials — +71% за год). Эти данные касаются credential theft в целом, а не конкретно DAI/VLAN-мисконфигураций, но косвенно подтверждают: канальный уровень перестал быть безопасным по определению. Первое действие после прочтения — откройте дамп из своей сети, поставьте фильтр arp.duplicate-address-detected и убедитесь, что шлюз отвечает ровно одним MAC. Если хочется выстроить понимание сетевой безопасности системно, а не собирать по отдельным статьям — на IB Basics в Codeby Academy как раз идут от сетевых основ к первым задачам в SOC, без требований к начальной подготовке.

Эту тему и смежные навыки разбирают на практике в курсе «Компьютерные сети» Codeby Academy.