Воздушные ловкости. Простые трюки, которые выручают при пентесте Wi-Fi

В этой статье я покажу несколько простых и распространенных, но довольно эффективных приемов из практики пентеста сетей Wi-Fi: скрытие MAC-адреса при сканировании сети и атаке на WPA2, выявление «спрятанных» сетей, обход MAC-фильтрации и глушение чужой точки доступа.

WARNING

Все советы настоятельно рекомендуется использовать только в целях образования. Блокировка передачи данных и применение рассмотренных средств может преследоваться по закону. Для проведения тестов на проникновение требуется получить соответствующее письменное подтверждение заказчика. Помни, что данные о деавторизации сохраняются в логах роутера.

Смена и автоматическая генерация нового MAC-адреса при новом подключении к Wi-Fi

MAC (Media Access Control) — уникальный идентификатор, выдается каждой единице активного оборудования (то есть сетевому адаптеру, роутеру, свичу и так далее) или некоторым их интерфейсам.

MAC прошит в оборудование при изготовлении и используется в сети для идентификации отправителя и получателя фрейма. Предполагается, что при появлении в сети нового устройства администратору не придется задавать ему MAC вручную.

Схема строения шестиоктетного MAC-адреса

MAC уникален (или, по крайней мере, должен быть) для каждого сетевого интерфейса. При этом у устройства их может быть несколько — например, у ноутбуков их как минимум два: один у контроллера проводного подключения по Ethernet, второй — у адаптера Wi-Fi. У роутера или у свитча адреса уникальны для каждого порта, а если это роутер Wi-Fi, то различаться будут адреса у каждого беспроводного интерфейса (у современных роутеров это 2,4 ГГц и 5 ГГц).

Зачем менять MAC?

MAC позволяет однозначно идентифицировать устройство и не меняется при смене операционной системы — он прошит в микросхему, которая предоставляет сетевой интерфейс.

Пентестеры и хакеры скрывают свой MAC, чтобы не допустить идентификации оборудования при атаке. Думаю, ты понимаешь, зачем это может понадобиться: если использовать реальный MAC, то он может быть засвечен при подключении к другим сетям. Существуют и средства сопоставления MAC с географическими координатами — например, скрипт iSniff-GPS из набора Kali.

Практика

Итак, предположим, что ты используешь Linux. Давай посмотрим, как сменить MAC без использования дополнительных программ.

Открывай терминал и вводи команду

$ ifconfig | grep HWaddr

Если ты используешь Ethernet, то посмотреть адреса адаптеров можно так:

$ ifconfig | grep ether

Чтобы временно изменить свой MAC, нужно выключить соответствующий сетевой интерфейс. Например, для интерфейса eth1 команда будет такой:

$ ifconfig eth1 down

Теперь можно сформировать новый MAC.

$ ifconfig eth1 hw ether 00:00:00:00:00:11

Цифры, как ты понимаешь, в этот шаблон можешь подставить любые.

Теперь нужно снова поднять eth1.

$ ifconfig eth1 up

И последнее — нужно проверить, вступили ли изменения в силу. Если ты снова посмотришь список MAC, то увидишь, что интерфейс изменился. Однако после перезагрузки компьютера старое значение MAC вернется.

Было бы удобно, если бы MAC изменялся каждый раз при подключении к сети. В этом нам поможет пакет NetworkManager. Начиная с версии 1.4 эта программа поддерживает спуфинг MAC, причем у нее есть много полезных опций.

Для каждой группы «проводные» (ethernet) и «беспроводные» (wifi) правила MAC настраиваются отдельно.

Также помни, что беспроводной адаптер может находиться в одном из двух состояний:

  • сканирование — задается с помощью свойства wifi.scan-rand-mac-address. По умолчанию yes, то есть во время сканирования будет устанавливаться произвольный MAC-адрес. Если выбрать no, то этого происходить не будет;
  • подключен к сети — задается свойством wifi.cloned-mac-address, по умолчанию его значение равно preserve.

Для проводного интерфейса (свойство ethernet.cloned-mac-address) и беспроводного интерфейса в состоянии подключения (wifi.cloned-mac-address) доступны следующие варианты:

  • явно указанный MAC — то есть можно задать свой постоянный MAC;
  • permanent — использовать вшитый в устройство MAC-адрес (по умолчанию);
  • preserve — не менять MAC устройства после активации (например, если MAC был изменен другой программой, то будет использоваться текущий адрес);
  • random — генерировать случайную величину для каждого подключения.

NetworkManager настраивается через файл /etc/NetworkManager/NetworkManager.conf. Как вариант, можешь добавить дополнительный файл с расширением .conf в директорию /etc/NetworkManager/conf.d (называться конфиг при этом может как угодно). Я рекомендую именно второй способ, поскольку при обновлении NetworkManager обычно заменяет главный .conf, и если ты вносил в него изменения, то они пропадут.

Включаем автоматическую генерацию рандомных MAC-адресов

Если ты хочешь, чтобы при каждом подключении подменялся MAC-адрес, но при соединении с одной и той же сетью использовался одинаковый MAC, то надо добавить пару строк в конфиг. Вот они:

[connection]
ethernet.cloned-mac-address=stable
wifi.cloned-mac-address=stable

Свойства ethernet.cloned-mac-address и wifi.cloned-mac-address можно задавать по отдельности или вместе.

Проверить значения ты можешь, набрав ip a, а чтобы изменения вступили в силу, нужно перезапустить NetworkManager:

$ sudo systemctl restart NetworkManager

Теперь подключайся к беспроводной сети и снова проверяй значения MAC.

Для одних и тех же сетей будут генерироваться одинаковые адреса. Если же ты хочешь, чтобы адреса всегда были разными, настройки будут такими:

[connection]
ethernet.cloned-mac-address=random
wifi.cloned-mac-address=random

Устанавливаем определенный MAC

Предположим, нам нужно использовать какой-то определенный MAC. Для этого снова будем править /etc/NetworkManager/conf.d/mac.conf.

Чтобы задать MAC для проводного интерфейса, добавляй такие строки:

[connection]
ethernet.cloned-mac-address=<новый MAC>

Чтобы задать MAC для беспроводного соединения — вот такие:

[connection]
wifi.cloned-mac-address=<новый MAC>

Вместо <новый MAC>, естественно, следует написать нужный MAC-адрес. И конечно, можно задать настройки для проводного и беспроводного соединения одновременно.

Обрати внимание, что при использовании этого метода MAC будет изменяться только после того, как ты подключишься к сети. До этого у интерфейсов будут их исходные адреса. Исключением может быть Wi-Fi, если ты уже настроил спуфинг, как показано выше. Для отмены спуфинга добавляй в конфиг такие строки:

[device]
wifi.scan-rand-mac-address=no

И перезапускай службу, чтобы изменения вступили в силу.

Другие способы программно поменять MAC

Менять MAC умеет не только NetworkManager. На самом деле существует много способов сделать это при помощи как сторонних программ, так и системных служб. Чтобы мы могли отслеживать результаты, измени настройки NetworkManager:

[device]
wifi.scan-rand-mac-address=no

Теперь он не будет спуфить MAC во время сканирования беспроводных сетей.

Поскольку в настройках NetworkManager не заданы параметры ethernet.cloned-mac-address и wifi.cloned-mac-address, будет использоваться значение по умолчанию (preserve), даже если MAC был изменен другими программами.

Примеры дальше я буду выполнять в Kali Linux и менять настройки для адаптера Wi-Fi. Особенность всех этих способов в том, что изменения будут теряться после перезагрузки системы либо после переподключения адаптера.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Иван Пискунов: Технический эксперт, ресерчер, участник CTF-команды CraZY Geek$, 10 лет в индустрии ИБ. Автор блога ipiskunov.blogspot.com. Канал в telegram @w2hack или t.me/w2hack. Увлекается миром Unix, malware analysis, reverse engineering и тестированием сетей на проникновение