О взломе WIFI написано не мало. Но это на столько обширная и интересная тема что о ней всегда есть что сказать нового. Ведь взлом WIFI является началом практически у всех хакеров Так и сегодня, мы собрали для вас 4 лучших приема взлома WIFI сетей. Эти методы помогут вам в ваших пентестах работать эффективнее!
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 без использования дополнительных программ.
Открывай терминал и вводи команду
Код:
Код:
Код:
Код:
Теперь нужно снова поднять eth1
Код:
Было бы удобно, если бы MAC изменялся каждый раз при подключении к сети. В этом нам поможет пакет NetworkManager. Начиная с версии 1.4 эта программа поддерживает спуфинг MAC, причем у нее есть много полезных опций.
Для каждой группы «проводные» (ethernet) и «беспроводные» (wifi) правила MAC настраиваются отдельно.
Также помни, что беспроводной адаптер может находиться в одном из двух состояний:
Для проводного интерфейса (свойство ethernet.cloned-mac-address) и беспроводного интерфейса в состоянии подключения (wifi.cloned-mac-address) доступны следующие варианты:
Включаем автоматическую генерацию рандомных MAC-адресов
Если ты хочешь, чтобы при каждом подключении подменялся MAC-адрес, но при соединении с одной и той же сетью использовался одинаковый MAC, то надо добавить пару строк в конфиг. Вот они:
Код:
Проверить значения ты можешь, набрав ip a, а чтобы изменения вступили в силу, нужно перезапустить NetworkManager:
Код:
Для одних и тех же сетей будут генерироваться одинаковые адреса. Если же ты хочешь, чтобы адреса всегда были разными, настройки будут такими:
Код:
Предположим, нам нужно использовать какой-то определенный MAC. Для этого снова будем править /etc/NetworkManager/conf.d/mac.conf.
Чтобы задать MAC для проводного интерфейса, добавляй такие строки:
Код:
Код:
Обрати внимание, что при использовании этого метода MAC будет изменяться только после того, как ты подключишься к сети. До этого у интерфейсов будут их исходные адреса. Исключением может быть Wi-Fi, если ты уже настроил спуфинг, как показано выше. Для отмены спуфинга добавляй в конфиг такие строки:
Код:
Менять MAC умеет не только NetworkManager. На самом деле существует много способов сделать это при помощи как сторонних программ, так и системных служб. Чтобы мы могли отслеживать результаты, измени настройки NetworkManager:
Код:
Поскольку в настройках NetworkManager не заданы параметры ethernet.cloned-mac-address и wifi.cloned-mac-address, будет использоваться значение по умолчанию (preserve), даже если MAC был изменен другими программами.
Примеры дальше я буду выполнять в Kali Linux и менять настройки для адаптера Wi-Fi. Особенность всех этих способов в том, что изменения будут теряться после перезагрузки системы либо после переподключения адаптера.
Изменение MAC с помощью iproute2
Мы будем использовать программу ip, которая включена в пакет iproute2. Начнем с проверки текущего MAC:
Код:
Код:
Для изменения MAC выполняем команду
Код:
Последним шагом мы возвращаем интерфейс в состояние up:
Код:
Код:
Изменение MAC с помощью macchanger
Еще один вариант — использовать программу macchanger. Тут есть возможность и создать MAC как у оборудования какого-то определенного производителя, и полностью рандомизировать. В Kali эта утилита стоит по умолчанию.
В момент смены MAC, как и при других способах, устройство не должно использоваться, поэтому выключай его:
Код:
Чтобы узнать значения MAC, можно запустить утилиту с опцией -s:
Код:
Код:
Код:
Чтобы рандомизировать MAC, не меняя первые три байта (префикс производителя), есть опция -e:
Код:
Код:
И наконец, чтобы вернуть исходный MAC, есть опция -p:
Код:
Некоторые владельцы хотспотов настраивают их так, чтобы те не транслировали свое название (ESSID). Делается это обычно в качестве дополнительной меры безопасности. Пользователи не будут видеть такую сеть в списке доступных, а для подключения требуется набрать название вручную.
Это слабенькая защитная мера, потому что в определенные моменты ESSID все же транслируется в открытом виде.
Получаем скрытый SSID при помощи Airodump-ng
Поймать ESSID в эфире можно во время подключения клиента, а для этого нужно либо подождать, пока это произойдет естественным образом, либо форсировать процесс, отключив всех от точки доступа. Это называется деаутентификацией. Потерявшие связь клиенты начнут на автомате подключаться заново, и имя сети проскочит в открытом виде.
Первым делом запускаем airodump:
Код:
Код:
Код:
Результат поступит практически мгновенно, и ты увидишь строку с полным названием скрытой точки доступа.
3. Обход MAC-фильтрации путем заимствования адреса из белого списка
В решении этой задачи нам снова поможет Airodump-ng. Переводим адаптер в режим мониторинга и выполняем такие команды:
Код:
Бывает и так, что сразу клиентов у определенных точек доступа не видно, поскольку программа собрала недостаточно сведений. В этом случае тебе опять же поможет деаутентификация. Если у хотспота есть хоть один клиент, ты это сразу увидишь после переподключения. А заодно можно и перехватывать хендшейки.
Для деаутентификации останавливаем Airodump-ng и запускаем снова, только уже с указанием канала интересующей нас точки.
Код:
Код:
4. Глушение сети Wi-Fi
При пентесте бывает нужно заглушить какую-то из точек доступа. Для этого я рекомендую использовать утилиту LANs. Она умеет не только глушить Wi-Fi, но и другие вещи: шпионит за пользователями, индивидуально травит таблицы ARP целевой машины, роутера и при необходимости — сервера DNS.
Радиус действия глушения сильно зависит от мощности адаптера, но у скрипта есть настройки, которые позволяют глушить всех подряд или только одного клиента. Здесь все просто: качаем и ставим зависимости и скачиваем сам скрипт.
Код:
Код:
Нажимай Ctrl + C для остановки поиска, когда построишь карту сети и посмотришь списки подключенных клиентов. Для тех же целей, кстати, можно успешно использовать Nmap.
Точечный вариант глушения будет выглядеть так:
Код:
Код:
Код:
Для глушения Wi-Fi бывает удобно использовать утилиту wifijammer. Она крайне проста в использовании, так что обсуждать здесь почти нечего: без параметров она просто будет заглушать все, что найдет в радиусе досягаемости адаптера. Чтобы не задеть своих, можно исключить некоторые MAC-адреса с опцией -s.
Устанавливаем wifijammer:
Код:
Код:
1. Смена и автоматическая генерация нового 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 без использования дополнительных программ.
Открывай терминал и вводи команду
Код:
Если ты используешь Ethernet, то посмотреть адреса адаптеров можно так:$ ifconfig | grep HWaddr
Код:
Чтобы временно изменить свой MAC, нужно выключить соответствующий сетевой интерфейс. Например, для интерфейса eth1 команда будет такой:$ ifconfig | grep ether
Код:
Теперь можно сформировать новый MAC.$ ifconfig eth1 down
Код:
Цифры, как ты понимаешь, в этот шаблон можешь подставить любые.$ ifconfig eth1 hw ether 00:00:00:00:00:11
Теперь нужно снова поднять eth1
Код:
И последнее — нужно проверить, вступили ли изменения в силу. Если ты снова посмотришь список MAC, то увидишь, что интерфейс изменился. Однако после перезагрузки компьютера старое значение MAC вернется.$ ifconfig eth1 up
Было бы удобно, если бы 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 — генерировать случайную величину для каждого подключения.
Включаем автоматическую генерацию рандомных MAC-адресов
Если ты хочешь, чтобы при каждом подключении подменялся MAC-адрес, но при соединении с одной и той же сетью использовался одинаковый MAC, то надо добавить пару строк в конфиг. Вот они:
Код:
[connection]
ethernet.cloned-mac-address=stable
Свойства ethernet.cloned-mac-address и wifi.cloned-mac-address можно задавать по отдельности или вместе.wifi.cloned-mac-address=stable
Проверить значения ты можешь, набрав ip a, а чтобы изменения вступили в силу, нужно перезапустить NetworkManager:
Код:
Теперь подключайся к беспроводной сети и снова проверяй значения MAC.$ sudo systemctl restart NetworkManager
Для одних и тех же сетей будут генерироваться одинаковые адреса. Если же ты хочешь, чтобы адреса всегда были разными, настройки будут такими:
Код:
[connection]
ethernet.cloned-mac-address=random
Устанавливаем определенный MACwifi.cloned-mac-address=random
Предположим, нам нужно использовать какой-то определенный MAC. Для этого снова будем править /etc/NetworkManager/conf.d/mac.conf.
Чтобы задать MAC для проводного интерфейса, добавляй такие строки:
Код:
[connection]
Чтобы задать MAC для беспроводного соединения — вот такие:ethernet.cloned-mac-address=<новый MAC>
Код:
[connection]
Вместо <новый MAC>, естественно, следует написать нужный MAC-адрес. И конечно, можно задать настройки для проводного и беспроводного соединения одновременно.wifi.cloned-mac-address=<новый MAC>
Обрати внимание, что при использовании этого метода MAC будет изменяться только после того, как ты подключишься к сети. До этого у интерфейсов будут их исходные адреса. Исключением может быть Wi-Fi, если ты уже настроил спуфинг, как показано выше. Для отмены спуфинга добавляй в конфиг такие строки:
Код:
[device]
Еще способы программно поменять MACwifi.scan-rand-mac-address=no
Менять MAC умеет не только NetworkManager. На самом деле существует много способов сделать это при помощи как сторонних программ, так и системных служб. Чтобы мы могли отслеживать результаты, измени настройки NetworkManager:
Код:
[device]
Теперь он не будет спуфить MAC во время сканирования беспроводных сетей.wifi.scan-rand-mac-address=no
Поскольку в настройках NetworkManager не заданы параметры ethernet.cloned-mac-address и wifi.cloned-mac-address, будет использоваться значение по умолчанию (preserve), даже если MAC был изменен другими программами.
Примеры дальше я буду выполнять в Kali Linux и менять настройки для адаптера Wi-Fi. Особенность всех этих способов в том, что изменения будут теряться после перезагрузки системы либо после переподключения адаптера.
Изменение MAC с помощью iproute2
Мы будем использовать программу ip, которая включена в пакет iproute2. Начнем с проверки текущего MAC:
Код:
На выходе после слов link/ether ты увидишь MAC-адрес. Первым делом выключаем соответствующий интерфейс. У меня это wlan0.$ ip link show
Код:
Далее мы переходим непосредственно к спуфингу MAC. Ты можешь задать любое значение, но помни, что сеть может быть настроена так, чтобы адреса не выдавались, если MAC не соответствует устройству какого-то известного производителя. Поэтому в качестве первых трех байтов лучше взять известный префикс и изменять только вторые три байта.$ sudo ip link set dev wlan0 down
Для изменения MAC выполняем команду
Код:
Значения подставь свои.$ sudo ip link set dev <интерфейс> address <MAC>
Последним шагом мы возвращаем интерфейс в состояние up:
Код:
Ну и для проверки изменений можешь написать$ sudo ip link set dev <интерфейс> up
Код:
Значение link/ether должно быть таким, как ты устанавливал.$ ip link show <интерфейс>
Изменение MAC с помощью macchanger
Еще один вариант — использовать программу macchanger. Тут есть возможность и создать MAC как у оборудования какого-то определенного производителя, и полностью рандомизировать. В Kali эта утилита стоит по умолчанию.
В момент смены MAC, как и при других способах, устройство не должно использоваться, поэтому выключай его:
Код:
Дальше в качестве интерфейса у меня будет wlan0, меняй его на свой при необходимости.$ sudo ip link set dev <интерфейс> down
Чтобы узнать значения MAC, можно запустить утилиту с опцией -s:
Код:
В результате она выдаст текущий MAC и тот, что прошит в устройстве (на случай, если они не совпадают), а также укажет вендора. Например:$ sudo macchanger -s wlan0
Код:
Current MAC: 00:c0:ca:96:cf:cb (ALFA, INC.)
Чтобы поменять MAC на совершенно произвольный адрес, есть опция -r:Permanent MAC: 00:c0:ca:96:cf:cb (ALFA, INC.)
Код:
На выходе к двум строкам выше добавится новый адрес.$ sudo macchanger -r wlan0
Чтобы рандомизировать MAC, не меняя первые три байта (префикс производителя), есть опция -e:
Код:
Ну и если ты хочешь сам задать новый MAC, используй -m:$ sudo macchanger -e wlan0
Код:
Вместо <MAC> подставь нужный адрес.$ sudo macchanger -m <MAC> wlan0
И наконец, чтобы вернуть исходный MAC, есть опция -p:
Код:
2. Обнаружение скрытого SSID$ sudo macchanger -p wlan0
Некоторые владельцы хотспотов настраивают их так, чтобы те не транслировали свое название (ESSID). Делается это обычно в качестве дополнительной меры безопасности. Пользователи не будут видеть такую сеть в списке доступных, а для подключения требуется набрать название вручную.
Это слабенькая защитная мера, потому что в определенные моменты ESSID все же транслируется в открытом виде.
Получаем скрытый SSID при помощи Airodump-ng
Поймать ESSID в эфире можно во время подключения клиента, а для этого нужно либо подождать, пока это произойдет естественным образом, либо форсировать процесс, отключив всех от точки доступа. Это называется деаутентификацией. Потерявшие связь клиенты начнут на автомате подключаться заново, и имя сети проскочит в открытом виде.
Первым делом запускаем airodump:
Код:
Когда он запалит новую сеть, ты увидишь ВSSID, длину названия и используемый канал. Например, если сеть работает на первом канале, указываем его:$ airodump-ng <интерфейс>
Код:
Точно так же, как при перехвате рукопожатия, можно задать ключ -w и за ним — префикс имени файла. Захват рукопожатия не мешает выявлению скрытой точки. Дальше можно либо просто подождать, пока кто-то подключится, либо деаутентифицировать всех клиентов:$ airodump-ng wlan0 --channel 1
Код:
Здесь -0 означает массовую деаутентификацию, 3 — количество отправленных пакетов.$ aireplay-ng -0 3 -a <BSSID> wlan0
Результат поступит практически мгновенно, и ты увидишь строку с полным названием скрытой точки доступа.
3. Обход MAC-фильтрации путем заимствования адреса из белого списка
В решении этой задачи нам снова поможет Airodump-ng. Переводим адаптер в режим мониторинга и выполняем такие команды:
Код:
Ты увидишь список сетей, количество подключенных клиентов и их MAC-адреса, которые можно присвоить своему адаптеру, если в сети настроена фильтрация по белым спискам.$ ifconfig wlan0 down && iwconfig wlan0 mode monitor && ifconfig wlan0 up $ airodump-ng wlan0
Бывает и так, что сразу клиентов у определенных точек доступа не видно, поскольку программа собрала недостаточно сведений. В этом случае тебе опять же поможет деаутентификация. Если у хотспота есть хоть один клиент, ты это сразу увидишь после переподключения. А заодно можно и перехватывать хендшейки.
Для деаутентификации останавливаем Airodump-ng и запускаем снова, только уже с указанием канала интересующей нас точки.
Код:
После этого шлем deauth-пакеты и смотрим, что получится:$ airodump-ng wlan0 --channel 1
Код:
После выполнения атаки будут раскрыты некоторые из ранее неизвестных клиентов. Копируй MAC кого-то из легитимных пользователей, записывай в настройки своей сетевой карты — и можешь проводить задуманную атаку.$ aireplay-ng -0 5 -a <MAC> wlan0
4. Глушение сети Wi-Fi
При пентесте бывает нужно заглушить какую-то из точек доступа. Для этого я рекомендую использовать утилиту LANs. Она умеет не только глушить Wi-Fi, но и другие вещи: шпионит за пользователями, индивидуально травит таблицы ARP целевой машины, роутера и при необходимости — сервера DNS.
Радиус действия глушения сильно зависит от мощности адаптера, но у скрипта есть настройки, которые позволяют глушить всех подряд или только одного клиента. Здесь все просто: качаем и ставим зависимости и скачиваем сам скрипт.
Код:
$ sudo apt install -y python-nfqueue python-scapy python-twisted nbtscan
Теперь можно запускать наш скрипт, чтобы начать глушение.$ cd LANs.py/
Код:
Ключи -u и -p означают активное обнаружение цели для ARP-спуфинга и вывода всех интересных незашифрованных данных, которые они отправляют или запрашивают. Опции -ip здесь нет, поэтому будет выполнено ARP-сканирование сети и его результаты будут сравниваться с результатами живого «неразборчивого» захвата. В результате получится список всех клиентов сети.$ python lans.py -u -p
Нажимай Ctrl + C для остановки поиска, когда построишь карту сети и посмотришь списки подключенных клиентов. Для тех же целей, кстати, можно успешно использовать Nmap.
Точечный вариант глушения будет выглядеть так:
Код:
Здесь:$ python lans.py --jam --accesspoint <MAC роутера> -s <MAC для пропуска>
- —jam — глушить все или некоторые беспроводные точки 2,4 ГГц и клиентов в пределах досягаемости; если необходимо, то вместе с этим можно использовать дополнительные аргументы (ниже);
- -s — так можно задать MAC, который не будет деавторизован;
- —accesspoint — тут можно ввести MAC конкретной точки доступа, которая будет выступать в качестве цели.
Код:
Глушение только одной точки доступа:$ python lans.py --jam
Код:
Здесь тоже можно задать некоторые дополнительные опции:$ python lans.py --jam --accesspoint <BSSID>
- -ch — ограничить глушение одним каналом;
- —directedonly — не отправлять пакеты деаутентификации на широковещательные адреса точек доступа, а только парам из клиента и хотспота;
- —accesspoint — так можно указать конкретную точку доступа в качестве цели.
Для глушения Wi-Fi бывает удобно использовать утилиту wifijammer. Она крайне проста в использовании, так что обсуждать здесь почти нечего: без параметров она просто будет заглушать все, что найдет в радиусе досягаемости адаптера. Чтобы не задеть своих, можно исключить некоторые MAC-адреса с опцией -s.
Устанавливаем wifijammer:
Код:
$ sudo apt install -y python-nfqueue python-scapy python-twisted nbtscan
И запускаем:$ cd LANs.py/
Код:
[sudo python2 wifijammer.py -s <MAC для исключений