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

Три месяца назад разбираю рядовой алерт на корпоративном сегменте — коммутатор зафиксировал дубликат 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-спуфинг стоит между начальным доступом и кражей учётных данных:
- Initial Access — атакующий уже внутри сети (скомпрометированная рабочая станция, физический доступ, открытый Wi-Fi)
- ARP Cache Poisoning (T1557.002) — рассылка поддельных ARP-ответов, подмена MAC-адреса шлюза
- Network Sniffing (T1040, тактики Credential Access и Discovery) — перехват трафика, извлечение учётных данных из незашифрованных протоколов
- 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-адресами — в стандартной раскладке они скрыты:
- Откройте Edit → Preferences → Columns
- Нажмите «+», добавьте столбец Source MAC, выберите тип Hw src addr (resolved)
- Аналогично добавьте Dest MAC — тип Hw dst addr (resolved)
- Перетащите новые столбцы правее 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
}
}'
Что здесь происходит, шаг за шагом:
tshark -i eth0— захватывает трафик на интерфейсе eth0 (посмотреть свои интерфейсы:ip link show). Нужен root или sudo-Y "arp.opcode == 2"— display-фильтр: пропускает только ARP-ответы-T fields -e arp.src.proto_ipv4 -e arp.src.hw_mac— выводит два поля из каждого пакета: IP отправителя и его MACawk— сравнивает: если для одного 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-фреймах). Механика:
- Атакующий формирует фрейм с двумя VLAN-тегами: внешний — native VLAN коммутатора (обычно VLAN 1, используемый по умолчанию на trunk-портах), внутренний — целевой VLAN (например, серверный VLAN 100)
- Первый коммутатор снимает внешний тег (потому что он совпадает с native VLAN — штатное поведение) и пересылает фрейм дальше по trunk
- Второй коммутатор видит внутренний тег (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 или передачи сетевому администратору:
- Открыть pcap в Wireshark, применить фильтр
arp.duplicate-address-detected— если есть результаты, перейти к п.2 - Отфильтровать ARP-ответы:
arp.opcode == 2, отсортировать по Sender IP — найти IP с несколькими MAC - Оценить частоту gratuitous ARP: фильтр
arp.isgratuitous, построить I/O Graph (Statistics → I/O Graphs) — ориентировочный порог >10/сек от одного IP (калибровать под свою сеть) - Проверить Expert Information: Analyze → Expert Information → искать «Duplicate IP address configured»
- Зафиксировать подозрительный MAC, проверить по инвентарю и OUI-базе (первые 3 октета MAC → производитель)
- На чистой машине выполнить
ip neighbor show(Linux) /arp -a(Windows) — сравнить MAC шлюза с эталонным - Проверить DTP-активность: фильтр
dtp— источник не коммутатор = switch spoofing - Проверить двойные 802.1Q-теги: фильтр
vlan, в деталях пакета искать два вложенных заголовка «802.1Q Virtual LAN» - При подтверждении — изолировать порт атакующего, установить статическую ARP-запись как временную меру
- Настроить превентивные меры: 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.