Виртуальные Wi-Fi интерфейсы для одновременного использования Wi-Fi адаптера в разных режимах
Оглавление
1. Что такое dev и phy для команды iw
2. Одновременное использование Wi-Fi адаптера в разных режимах
3. Добавление интерфейса в режиме монитора
4. Как удалить виртуальный интерфейс
5. Типы виртуальных интерфейсов
6. Как в iw добавить AP интерфейс
7. Как как одну Wi-Fi карту использовать в качестве клиента и Точки Доступа
8. Команды для показа имён сетевых интерфейсов
Что такое dev и phy для команды iw
Программа airmon-ng для беспроводных адаптеров показывает такие данные как PHY и Interface.
Программа iw позволяет управлять сетевым адаптером обращаясь к нему либо как к устройству phy, либо как к интерфейсу dev. При этом набор команд разный.
PHY (аббревиатура от англ. Physical layer — физический уровень) — интегральная схема, предназначенная для выполнения функций физического уровня сетевой модели OSI.
Микросхемы PHY позволяют другим микросхемам канального уровня, называемым MAC, подключиться к физической среде передачи, такой как оптическое волокно или медный кабель.
То есть в Linux PHY — это номер, который устройству присвоил драйвер/фреймворк PHY для обращения к нему и настройки на канальном уровне.
Что касается dev (имя устройства, имя интерфейса), то это то условное имя присвоенное устройству системой. Имеются разные схемы наименования, поэтому в разных дистрибутивах Linux сетевые интерфейсы могут называться по-разному. При желании, имя сетевого интерфейса можно изменить.
Одновременное использование Wi-Fi адаптера в разных режимах
Казалось бы, ну и что? Через phy можно управлять настройками, значение которых без чтения специальной технической документации непонятно. Через имя интерфейса dev можно управлять более привычными настройками (перевести в режим монитора, переключиться на определённый канал и так далее).
Дело в том, что для беспроводных адаптеров сетевой интерфейс это не просто имя, идентифицирующее устройство. Интерфейсы бывают разных типов и для доступа к некоторым возможностям беспроводных адаптеров нужно добавлять интерфейсы. Более того, один Wi-Fi адаптер может иметь сразу несколько сетевых интерфейсов, выполняющих разные функции, например, комбинация интерфейсов в управляемом режиме и в режиме монитора, либо комбинация интерфейсов в управляемом режиме и в режиме Точки Доступа, при этом беспроводной адаптер будет одновременно выполнять сразу две функции! Причём разным интерфейсам одного Wi-Fi адаптера можно присвоить разные MAC адреса.
Смотрите также:
- Как узнать MAC-адрес и Как по MAC-адресу узнать производителя
- Как поменять MAC-адрес в Linux, как включить и отключить автоматическую смену (спуфинг) MAC в Linux
Выполните следующую команду для вывода полного списка возможностей всех ваших беспроводных интерфейсов:
iw list
Поищите следующие строки:
- software interface modes (can always be added) — программные режимы интерфейсов (всегда могут быть добавлены)
- valid interface combinations — возможные комбинации интерфейсов
Пример для первого Wi-Fi адаптера:
software interface modes (can always be added): * AP/VLAN * monitor valid interface combinations: * #{ managed, P2P-client } <= 2, #{ AP, mesh point, P2P-GO } <= 2, total <= 2, #channels <= 1
То есть вместо того, чтобы переводить интерфейс из управляемого режима в режим монитора или запускать на нём Точку Доступа, можно к уже имеющемуся добавить виртуальный интерфейс в режиме monitor или в режиме AP.
Также у данного беспроводного адаптера может быть до двух сетевых интерфейсов в режимах managed, P2P-client, до двух интерфейсов AP, mesh point, P2P-GO, но в любом случае общее количество интерфейсов не может быть более двух, при этом у всех у них должен быть один канал (#channels <= 1).
Следующий пример:
software interface modes (can always be added): * AP/VLAN * monitor valid interface combinations: * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1, total <= 3, #channels <= 2
Опять же можно добавить интерфейс в режиме монитора, интерфейс в управляемом режиме может быть только один, всего может быть до трёх интерфейсов и они могут использовать до двух разных каналов (#channels <= 2).
Ещё пример:
software interface modes (can always be added): * AP/VLAN * monitor valid interface combinations: * #{ AP, mesh point } <= 4, total <= 4, #channels <= 1
Можно добавить до четырёх AP интерфейсов.
И ещё пример:
software interface modes (can always be added): * AP/VLAN * monitor valid interface combinations: * #{ AP, mesh point } <= 8, total <= 8, #channels <= 1
Можно сделать аж до 8 интерфейсов AP, но все они могут использовать один канал.
Добавление интерфейса в режиме монитора
Предпочитаемый мной способ получить режим монитора — это перевести существующий беспроводной интерфейс из режима managed в monitor:
sudo ip link set <ИНТЕРФЕЙС> down sudo iw <ИНТЕРФЕЙС> set monitor control sudo ip link set <ИНТЕРФЕЙС> up
В результате Wi-Fi карта, пока она находится в режиме монитора, теряет способность подключаться к Точкам Доступа, то есть Интернет-подключение отсутствует.
Смотрите также: Памятка по Wi-Fi в Linux: подсказки и решение проблем
С помощью добавления нового интерфейса эту проблему удаётся решить.
Добавление интерфейса в режиме монитора выполняется следующим образом:
sudo iw ИНТЕРФЕЙС interface add НОВЫЙ_ИНТЕРФЕЙС type monitor
В качестве ИНТЕРФЕЙС укажите имя существующего интерфейса, а в качестве НОВЫЙ_ИНТЕРФЕЙС можно указать произвольное имя.
При желании, вы можете назначить новому интерфейсу произвольный MAC-адрес:
sudo iw ИНТЕРФЕЙС interface add НОВЫЙ_ИНТЕРФЕЙС type monitor addr MAC_АДРЕС
Посмотрим, какие беспроводные интерфейсы имеются в системе:
iw dev
Видим, что Wi-Fi карта wlp0s20f0u1 подключена к сети с именем Jenechka.
Добавим к wlp0s20f0u1 интерфейс с именем wlanmon в режиме монитора и установим на нём MAC-адрес:
sudo iw wlp0s20f0u1 interface add wlanmon type monitor addr 'ca:fe:de:ad:be:ef'
Вновь посмотрим на наши интерфейсы:
iw dev
Обратите внимание, что появился новый интерфейс wlanmon.
Запустим airodump-ng используя только что созданный виртуальный интерфейс:
sudo airodump-ng wlanmon
А в другом окне запустим пинг, чтобы убедиться, что подключение к сети по-прежнему доступно:
ping suip.biz
Обратите внимание, что не смотря на то, что Wi-Fi адаптеру нужно находиться на одном канале для связи с ТД, тем не менее, при этом интерфейс в режиме монитора переключается по каналам.
Причём уже после остановки записи экрана, airodump-ng даже сумела поймать рукопожатие.
Я не заметил, чтобы виртуальный интерфейс в режиме монитора, если он используется для захвата данных, мешал Интернет-подключению. Но если попытаться с него что-либо отправить (например, для деаутентификации беспроводных клиентов), то Интернет-подключение разрывается. Скорее всего, это связано со сменой используемого канала.
Как удалить виртуальный интерфейс
Для удаления виртуального интерфейса используйте команду:
sudo iw ИНТЕРФЕЙС del
Например:
sudo iw wlanmon del
Типы виртуальных интерфейсов
Выше были показаны примеры команды в которых мы указывали имя сетевого интерфейса:
sudo iw dev DEV-ИМЯ interface add ИМЯ type ТИП [mesh_id ] [4addr on|off] [flags *] [addr ]
Также можно добавить виртуальный интерфейс по имени PHY:
sudo iw phy PHY-ИМЯ interface add ИМЯ type ТИП [mesh_id ] [4addr on|off] [flags *] [addr ]
Наверное, это может быть полезным, если вы удалили все имеющиеся интерфейсы (если такое возможно).
Доступные типы интерфейсов:
- managed
- ibss
- monitor
- mesh
- wds
Флаги используются только для monitor интерфейсов, валидные флаги:
none: без специальных флагов fcsfail: показывать кадры с ошибками FCS control: показывать контрольные кадры otherbss: показывать кадры от других BSS cook: использовать режим cooked active: использовать режим active (ACK входящие одноадресные пакеты mumimo-groupid <GROUP_ID>: использовать MUMIMO в соответствии с групповым id mumimo-follow-mac <MAC_ADDRESS>: использовать MUMIMO в соответствии с MAC-адресом
mesh_id используется только для режима mesh.
Как в iw добавить AP интерфейс
Вы могли заметить, что в приведённом выше списке валидных типов интерфейсов отсутствует AP. Данный интерфейс с типом AP будет создан автоматически при создании Точки Доступа.
Для простоты, воспользуемся программой create_ap (по ссылке показано, как её установить).
Использование:
sudo create_ap [опции] ИНТЕРФЕЙС-AP ИНТЕРФЕЙС-С-ИНТЕРНЕТОМ [ИМЯ-AP [ПАРОЛЬ]]
К примеру, на интерфейсе wlo1 я хочу создать ТД с именем HackWare и паролем 12345678, в качестве источника Интернета должен использоваться интерфейс wlp0s20f0u1, тогда команда следующая:
sudo create_ap wlo1 wlp0s20f0u1 HackWare 12345678
Я могу подключиться к этой ТД и пользоваться Интернетом:
На компьютере же был создан новый интерфейс типа AP с именем ap0:
Interface ap0 ifindex 21 wdev 0x6 addr c0:b6:f9:da:af:3f ssid HackWare type AP channel 1 (2412 MHz), width: 20 MHz (no HT), center1: 2412 MHz txpower 22.00 dBm multicast TXQ:
Как как одну Wi-Fi карту использовать в качестве клиента и Точки Доступа
Показанный выше способ подразумевает, что у вас два сетевых интерфейса — причём обязательно один из них должен быть Wi-Fi адаптером, а второй может быть как Wi-Fi адаптером, так и проводным соединением.
Предположим, что у меня отсутствует проводное соединение и имеется только один адаптер, можно ли одну Wi-Fi карту одновременно использовать для подключения к Точке Доступа и как Точку Доступа? Да, можно. Один сетевой интерфейс может одновременно работать в качестве клиента и в качестве ТД, то есть выполнять роль усилителя сигнала (беспроводной повторитель).
Начнём с того, что остановим NetworkManager, иначе в моём случае у меня постоянно возникала ошибка «RTNETLINK answers: Device or resource busy»:
sudo systemctl stop NetworkManager sudo airmon-ng check kill
Если у вас NetworkManager убран из автозагрузки, то начать нужно с активации беспроводного интерфейса:
sudo ip link set ИНТЕРФЕЙС up
Теперь нам нужно создать два виртуальных интерфейса в режиме managed с разными MAC-адресами:
sudo iw dev wlp0s20f0u1 interface add wlan0_sta type managed addr 00:c0:ca:00:00:02 sudo iw dev wlp0s20f0u1 interface add wlan0_ap type managed addr 00:c0:ca:00:00:01
Один из этих интерфейсов будет выполнять роль станции, а другой роль ТД.
Поскольку мы отключили NetworkManager, то теперь нам нужно подключиться к удалённой ТД вручную.
Создаём конфигурационный файл:
wpa_passphrase Jenechka ПАРОЛЬ > wpa_Jenechka.conf
Выполняем подключение:
sudo wpa_supplicant -i wlan0_sta -c wpa_Jenechka.conf
Если вы хотите, чтобы процесс wpa_supplicant ушёл в фон, то добавьте опцию -B:
sudo wpa_supplicant -B -i wlan0_sta -c wpa_Jenechka.conf
Подключение требует некоторого времени:
# sleep 5 # если запускать через скрипт, то в этом месте нужно дать время на подключение
Запускаем службу DHCP для автоматического получения IP адреса:
sudo dhclient wlan0_sta
Смотрим на состояние интерфейсов:
iw dev
Видим, что интерфейс wlan0_sta подключён к ТД — именно это нам и нужно.
Очень важно — посмотрите, на каком канале работает ТД и клиент. Этот канал обязательно нужно указать в следующей команде, иначе ничего не получится. В данном случае они работают на 8 канале.
Наконец, запускаем ТД с именем HackWare и паролем 12345678 на 8 канале:
sudo create_ap -c 8 wlan0_ap wlan0_sta HackWare 12345678
Всё получилось, и у нашего усилителя Wi-Fi сигнала даже есть подключённый клиент:
Команды для показа имён сетевых интерфейсов
Небольшая памятка по командам для получении информации о доступных в системе сетевых интерфейсах.
Показать только беспроводные интерфейсы:
iw dev
Вывод беспроводных интерфейсов вместе с их PHY, информации о драйвере и чипсете:
sudo airmon-ng
Вывод некоторой аппаратной информации:
sudo lshw -class network
Имена и описание интерфейсов:
sudo lshw -class network -short
Вывод всего, что напоминает сетевые интерфейсы (вместе с виртуальными):
ip link show
Смотрите также: Как использовать команду ip в Linux
Следующим образом можно посмотреть имена интерфейсов и оборудование:
ls -l /sys/class/net
Так можно вывести имена интерфейсов кроме виртуальных:
find /sys/class/net -type l -not -lname '*virtual*' -printf '%f\n'
Обратите внимание, что создаваемые в этой инструкции интерфейсы в данном случае не считаются виртуальными, поскольку привязаны к физическому оборудованию.
Статистику по интерфейсам можно посмотреть следующим образом:
cat /proc/net/dev
Дополнительные источники
- About iw: https://wireless.wiki.kernel.org/en/users/documentation/iw
- Software access point: https://wiki.archlinux.org/title/Software_access_point
- https://ru.wikipedia.org/wiki/PHY
- https://www.kernel.org/doc/html/latest/driver-api/phy/phy.html
- https://www.kernel.org/doc/html/latest/networking/phy.html
Связанные статьи:
- Как работают мошеннические Wi-Fi точки доступа (65.3%)
- Перевод беспроводной карты в режим монитора (наблюдения) в Kali Linux с использованием команд ip и iw (62.8%)
- Быстрый, простой и рабочий способ обхода Captive Portal (hotspot с авторизацией на web-интерфейсе) (62%)
- WiFi-autopwner 2: инструкция по использованию и обзор новых функций (62%)
- Усиление сигнала Wi-Fi (61.5%)
- USB Wi-Fi адаптеры с поддержкой режима монитора и беспроводных инъекций (100% совместимые с Kali Linux) на 2022 (RANDOM - 50%)
Приветствую. "Проблемы Frag Attacks позволяют злоумышленнику, находящемуся в радиусе действия Wi-Fi, собирать информацию о владельце устройства и выполнять вредоносный код". Планируете писать про frag attack?
https://github.com/vanhoefm/fragattacks
Приветствую! Я видел эту страницу (или новость) об этом. Всё, что они делают, они называют «атаками», но вся суть написанного на этой странице и на их сайте сводится к следующему:
И это всё… У них есть Live-образ, в котором это всё можно попробовать (чтобы не загадить свою систему), но конечный смысл происходящего мне не ясен. Поэтому непонятно, зачем этим заниматься, если априори это не даст никакого результата.
Подскажите пожалуйста, то что описано в статье, подобное можно ли повторить на проводном интерфейсе. Таким образом чтоб один физический интерф. одновременно был и шлюзом и сниффером.