PhanTap (Фантомный TAP)

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 должен работать.
opkg update
- Установите пакет PhanTap:
opkg install phantap
- Настройте Wi-Fi и начните администрировать роутер через него.
- Перезагрузите устройство или выполните
/etc/init.d/phantap setup.
- Получите имена интерфейсов с этого устройства:
# uci show network | grep -E 'device=|ports='
network.loopback.device='lo'
network.@device[0].ports='eth0'
network.lan.device='br-lan'
network.wan.device='eth1'
network.wan6.device='eth1'
network.phantap.device='br-phantap'
В этом примере мы используем GL-AR150, у которого только 2 интерфейса.
- Удалите интерфейсы из любых сетевых интерфейсов, где они могут использоваться, если это так, с помощью следующих команд в CLI
(предполагая, что мы используем GL-AR150):
uci delete network.@device[0].ports
uci delete network.wan.device
uci delete network.wan6.device
- Добавьте интерфейсы в мост phantap и перезапустите сетевой сервис с помощью следующих команд в CLI
(предполагая, что мы используем GL-AR150):
uci add_list network.br_phantap.ports='eth0'
uci add_list network.br_phantap.ports='eth1'
uci commit network
/etc/init.d/network reload
-
Теперь PhanTap настроен: как только вы подключите его между жертвой и её коммутатором, он автоматически настроит роутер и предоставит ему доступ в Интернет.
-
Вы можете добавить свой любимый VPN для удалённого подключения обратно. Мы тестировали PhanTap с OpenVpn, порт TCP 443, чтобы избежать некоторых методов обнаружения.
-
Также можно добавить команду, которая будет выполнена при настройке нового IP или DNS, в /etc/config/phantap, например /etc/init.d/openvpn restart (перезапуск сервиса OpenVpn).
-
Можно также рассмотреть отключение Wi-Fi по умолчанию и использование аппаратных кнопок для его включения (https://openwrt.org/docs/guide-user/hardware/hardware.button).
Ограничения или как это можно обнаружить :
- 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) вместо отдельных интерфейсов.