Разрезанный вдоль сетевой кабель на чёрном антистатическом коврике: восемь медных жил раскрыты, часть в синей оплётке, часть оголена с красной и голубой парой проводов. Вдоль целого участка оболочк...


На внутреннем пентесте банковского филиала я подключился к сетевой розетке в переговорной, запустил Yersinia - и через 30 секунд access-порт стал trunk. В Wireshark полезли пакеты серверного VLAN, управления коммутаторами и IP-телефонии. Причина банальна: DTP в режиме dynamic auto на всех пользовательских портах. Админ не тронул дефолтную конфигурацию Cisco Catalyst - и вся VLAN-сегментация обнулилась одним кадром. Такая же история попадалась мне на нескольких проектах с legacy-инфраструктурой: филиалы, промплощадки, серверные по принципу «работает - не трогай». Обучение пентесту сетей на уровне L2 - навык, без которого ни OSCP, ни PNPT не сдать, а русскоязычные курсы эту тему почти не покрывают.

VLAN и trunk-порты: зачем пентестеру разбираться в L2​

VLAN делит один физический коммутатор на изолированные широковещательные домены. Хост в VLAN 10 не видит хосты в VLAN 20 - трафик между ними идёт только через маршрутизатор. На этом строится сегментация сети: серверы, пользователи, телефония и управление живут в разных VLAN.

Порты коммутатора работают в двух режимах. Access-порт принадлежит одному VLAN - к нему подключают рабочие станции. Trunk-порт гонит трафик нескольких VLAN между коммутаторами, добавляя к кадрам тег 802.1Q с идентификатором VLAN. Кадры native VLAN передаются по trunk без тега - и эта деталь критична для атаки double tagging.

Если смотреть через призму MITRE ATT&CK, у VLAN hopping нет выделенного T-кода. Тактически он создаёт условия для Lateral Movement (T1210 - если в сегменте торчит уязвимый сервис, T1021 - если доступны удалённые службы) и Discovery (T1046, T1040), но формально ближе к этапу discovery/exploitation. После физического доступа к порту (initial access) пентестер эксплуатирует L2-протоколы, чтобы попасть в сегменты, куда прямой доступ закрыт. Перед попыткой VLAN hopping нужна разведка топологии (Network Topology, T1590.004) и обнаружение сервисов (Network Service Discovery, T1046) - понять, какие VLAN существуют и что в них крутится.

Две основные атаки - switch spoofing через DTP и 802.1Q double tagging. Обе бьют по конфигурационным ошибкам, а не по уязвимостям в коде коммутатора.

Switch spoofing через DTP - атака на trunk-порт коммутатора​

[Применимо: внутренний пентест, legacy Cisco-инфраструктура]

Dynamic Trunking Protocol - проприетарный протокол Cisco для автоматического согласования trunk-соединений. Если порт в режиме dynamic auto или dynamic desirable, любое устройство, пославшее DTP-кадр с запросом trunk, получит полноценный trunk с доступом ко всем разрешённым VLAN. Одним кадром.

Yersinia - основной инструмент для switch spoofing атаки. Предустановлен в Kali Linux, умеет бить по DTP, STP, CDP и другим L2-протоколам. Альтернатива - скрипты для DTP-spoofing с GitHub (например, dtp-spoof.py; перед использованием проверьте актуальность репозитория): sudo python3 dtp-spoof.py -i eth0 --desirable.
Bash:
# Yersinia: активация trunking через GUI (проверено на Yersinia 0.8.2)
sudo yersinia -G
# GUI → Launch attack → DTP → enable trunking (путь в меню может отличаться в других версиях)

# После установки trunk - создание sub-интерфейсов для целевых VLAN
sudo modprobe 8021q
sudo ip link add link eth0 name eth0.10 type vlan id 10
sudo ip link set eth0.10 up
sudo dhclient -v eth0.10
После отправки DTP-кадра порт коммутатора переключается в trunk. Связь прервётся на пару секунд - потом через виртуальные интерфейсы можно получить IP через DHCP или назначить статический адрес в каждом обнаруженном VLAN.

Когда техника работает:
  • Порт коммутатора в режиме dynamic auto или dynamic desirable (дефолт на многих Cisco Catalyst)
  • DTP включён (по умолчанию на большинстве Cisco)
Когда техника НЕ работает:
  • Порт явно настроен: switchport mode access + switchport nonegotiate
  • Коммутатор не Cisco (Arista, Juniper, MikroTik - DTP не поддерживают)
  • Включён 802.1X - DTP-кадры отбрасываются до аутентификации
  • Port Security с ограничением MAC-адресов
  • Современные корпоративные стандарты закрывают DTP на access-портах
На практике DTP-spoofing срабатывает реже, чем пять лет назад. Но legacy-коммутаторы с дефолтной конфигурацией стабильно живут на удалённых площадках и в серверных, которые никто не трогал годами. Ещё один вектор, описанный на HackTricks, - Voice VLAN hijacking через LLDP/CDP: утилита VoIP Hopper (синтаксис зависит от версии - сверьтесь с README проекта; типичный вызов: sudo voiphopper -i eth0 -c 0, но набор обязательных флагов может отличаться) имитирует IP-телефон, обнаруживает Voice VLAN и создаёт sub-интерфейс автоматически. Этот приём работает даже при отключённом DTP, если access-порт настроен в режиме «access + voice». На нескольких проектах именно через Voice VLAN удавалось попасть в сегмент управления, когда DTP был закрыт.

802.1Q double tagging - VLAN hopping с native VLAN​

[Применимо: внутренний пентест, атакующий на native VLAN]

Double tagging не требует DTP. Атакующий формирует Ethernet-кадр с двумя 802.1Q-заголовками: внешний тег совпадает с native VLAN, внутренний - с целевым. Первый коммутатор снимает внешний тег (native VLAN - легитимный) и пересылает кадр через trunk. Второй коммутатор видит оставшийся внутренний тег и доставляет кадр в целевой VLAN. Такая вот «матрёшка» из тегов.
Python:
from scapy.all import Ether, Dot1Q, IP, ICMP, sendp

frame = (Ether(dst="aa:bb:cc:dd:ee:ff") /  # MAC-адрес жертвы (unicast)
         Dot1Q(vlan=1) /       # Внешний тег: native VLAN
         Dot1Q(vlan=20) /      # Внутренний тег: целевой VLAN
         IP(dst="10.10.20.11") /
         ICMP())
sendp(frame, iface="eth0")
Критическое ограничение: double tagging - атака строго однонаправленная. Ответный пакет от жертвы в VLAN 20 несёт один тег VLAN 20 - атакующий на VLAN 1 его не получит. TCP-соединение невозможно: three-way handshake не завершится. Это убивает атаки на HTTP, SSH и большинство сетевых служб.

А вот UDP-сервисы уязвимы - протокол не требует подтверждения. Теоретически однонаправленность можно обойти, если в целевом VLAN доступен UDP-сервис с уязвимостью, допускающей выполнение кода (например, десериализация). В таком гипотетическом сценарии жертва выполняет произвольный код и инициирует reverse shell на внешний сервер атакующего напрямую, минуя VLAN-ограничение - ответ идёт не через double tagging, а через обычную маршрутизацию. Это чисто академический пример: публичных демонстраций подобной связки с double tagging я не нашёл, и на практике такой сценарий маловероятен.

Когда техника работает:
  • Атакующий подключён к native VLAN trunk-канала (обычно VLAN 1)
  • Native VLAN совпадает с VLAN атакующего
  • Между атакующим и целью - минимум два коммутатора с trunk
Когда техника НЕ работает:
  • Native VLAN изменён на неиспользуемый (best practice)
  • На trunk включена опция vlan dot1q tag native
  • Целевой сервис работает по TCP
  • Коммутатор обрабатывает double tag на входном порте (некоторые современные модели)

Лаборатория для обучения пентесту сетей

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

ПараметрМинимумРекомендуется
RAM8 ГБ (GNS3 + 2 коммутатора + Kali)16 ГБ (EVE-NG + полный стенд)
CPU4 ядра с VT-x/AMD-V8 ядер
Диск40 ГБ SSD100 ГБ SSD
ОС хостаUbuntu 22.04 / Windows 10+Ubuntu 22.04
ГипервизорGNS3 (бесплатно)EVE-NG Community (бесплатно)

Для образов Cisco IOS легальный источник - Cisco Modeling Labs (CML), подписка порядка $200/год для персонального использования. Бесплатные альтернативы для отработки VLAN: MikroTik RouterOS в режиме CHR, Arista vEOS. Для switch spoofing и double tagging хватит двух виртуальных коммутаторов и Kali Linux.

Что отрабатывать​

Минимальный лабораторный сценарий для пентеста VLAN:
  1. Настроить два коммутатора с trunk-каналом, три VLAN (управление, пользователи, серверы)
  2. Оставить один порт в dynamic auto - запустить Yersinia, убедиться в переключении на trunk
  3. Настроить native VLAN 1 на trunk - отправить double-tagged кадр через Scapy, проверить доставку в Wireshark на дальнем коммутаторе
  4. Применить защитные меры из чеклиста ниже - повторить атаки и убедиться в блокировке
Этот сценарий, судя по открытым syllabus на момент публикации, покрывает тему Network Attacks из программы OSCP. Для PNPT (TCM Security) сетевой пентест выделен в отдельный блок. На eJPT (INE Security) сегментация разбирается на более базовом уровне. Если виртуальные коммутаторы кажутся избыточными для старта - на TryHackMe есть модули по сетевым атакам для начинающих, на HackTheBox - лабы уровня Medium с сегментированными сетями, требующими VLAN pivoting.

Чеклист защиты при тестировании сегментации сети​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Каждый пункт закрывает конкретный вектор VLAN hopping. Такой чеклист в отчёте экономит администратору часы разбора абстрактных рекомендаций.

L2-атаки часто воспринимают как «слишком привязанные к Cisco» и неактуальные. На внутренних пентестах это опровергается стабильно. DTP в дефолте живёт на удалённых филиалах, промышленных площадках и в серверных, где коммутаторы ставили десять лет назад. Один сработавший DTP-spoofing даёт доступ к управленческому VLAN за минуту - быстрее большинства атак на веб-приложения.

Курсы по сетевой безопасности разделяют атаку и защиту на разные модули, но в реальности это один цикл: сломал - понял почему сломалось - закрыл - проверил что закрылось. Строчка switchport nonegotiate превращается из конспекта в осознанное действие, когда видишь в Wireshark, как без неё DTP-кадр поднимает trunk. На экзамене OSCP теорию не спрашивают - дают сеть и время. Те, кто руками прогнал весь цикл «атака → Wireshark → защита → повторная проверка», решают сетевые задачи быстрее. Если хочешь системную подготовку по сетевым атакам с лабами и ментором - на WAPT эту цепочку проходят в первых модулях.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab