PhanTap — это «невидимый» сетевой TAP, ориентированный на red team. При ограниченном физическом доступе к целевому зданию этот TAP можно установить в разрыв между сетевым устройством и корпоративной сетью. PhanTap незаметен в сети и не влияет на трафик жертвы, даже в сетях с NAC (Network Access Control 802.1X - 2004).
PhanTap анализирует сетевой трафик и маскирует свой трафик под устройство жертвы.
Он может поднять туннель обратно к удалённому серверу, давая пользователю точку опоры в сети для дальнейшего анализа и пивотинга.
PhanTap — это пакет OpenWrt и должен быть совместим с любым устройством. Физическое устройство, использованное для нашего тестирования, — это небольшой недорогой роутер GL.iNet GL-AR150.
Подробную статью в блоге, описывающую PhanTap, можно найти здесь
Возможности:
Прозрачный сетевой мост.
Бесшумный: нет ARP, multicast, broadcast.
Passthrough 802.1x.
Автоматическая настройка:
захватывает трафик, входящий в сеть (источник — не RFC1918, а назначение — RFC1918): IP-адрес и MAC назначения — это наша жертва, MAC источника — наш шлюз;
SNAT'ит мостовой трафик на MAC-адрес и IP-адрес жертвы;
устанавливает default gateway роутера на MAC-адрес шлюза, обнаруженного ранее.
Анализирует ARP-, multicast- и broadcast-трафик, добавляет маршрут к IP-адресу машины и добавляет MAC-адрес машины в таблицу соседей, что даёт возможность взаимодействовать со всеми машинами в локальной сети.
Изучает DNS-сервер из трафика и меняет DNS-сервер на роутере на тот же самый.
Анализирует DHCP-пакеты для динамической перенастройки.
Может выполнять команды (например: /etc/init.d/openvpn restart) при настройке нового IP или DNS.
Позволяет выбрать любое VPN-решение, например OpenVPN TCP port 443, чтобы проходить через большинство межсетевых экранов.
Вы можете обращаться к машине жертвы (используя IP-адрес шлюза).
Настройка
PhanTap протестирован с GL.iNet GL-AR150. Это устройство имеет два отдельных сетевых интерфейса в OpenWrt (eth0, eth1).
Если ваше устройство использует внутренний коммутатор (на основе swconfig) с интерфейсами вида eth0.1, eth0.2, некоторый специальный трафик может блокироваться, например 802.1Q (тегированный vlan), но PhanTap должен работать.
В этом примере мы используем GL-AR150, у которого только 2 интерфейса.
Удалите интерфейсы из любых сетевых интерфейсов, где они могут использоваться, если это так, с помощью следующих команд в CLI
(предполагая, что мы используем GL-AR150):
Теперь PhanTap настроен: как только вы подключите его между жертвой и её коммутатором, он автоматически настроит роутер и предоставит ему доступ в Интернет.
Вы можете добавить свой любимый VPN для удалённого подключения обратно. Мы тестировали PhanTap с OpenVpn, порт TCP 443, чтобы избежать некоторых методов обнаружения.
Также можно добавить команду, которая будет выполнена при настройке нового IP или DNS, в /etc/config/phantap, например /etc/init.d/openvpn restart (перезапуск сервиса OpenVpn).
GL.iNet GL-AR150 и большинство недорогих устройств поддерживают только 100 Мбит/с, тогда как современный сетевой трафик — 1 Гбит/с.
Сетевой порт остаётся поднятым (со стороны коммутатора), когда устройство жертвы отключено или выключено.
Некоторый трафик блокируется Linux bridge (STP/Pause-кадры/LACP).
Failsafe-режим OpenWrt отправляет IPv4 и IPv6 пакеты, как описано в документации: https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset. Это происходит во время ранней загрузки и может привести к обнаружению устройства. Не существует простого способа отключить это во время выполнения, поскольку эта конфигурация находится в U-Boot. Раздел U-Boot смонтирован только для чтения, и его конфигурация может быть доступна и изменена только из оболочки U-Boot (например, через UART на GL-AR150). Более простое решение — скомпилировать OpenWrt с включённой опцией TARGET_PREINIT_DISABLE_FAILSAFE.
Дорожная карта :
Добавить логику перезапуска определения при поднятии/опускании линков.
Добавить поддержку IPv6.
Проверить ограничения устройств, использующих коммутаторы (swconfig) вместо отдельных интерфейсов.