- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Автоматическая проверка всех Точек Доступа по базе 3WiFi
- Проблема с роутерами, поддерживающими два диапазона
- Связанные статьи:
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Как обнаружить все Wi-Fi устройства в округе?
- Заключение
- Связанные статьи:
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Автоматическая проверка всех Точек Доступа по базе 3WiFi
Базе данных 3WiFi, а также поиску по ней посвящена целая статья «Сервис 3WiFi: пароли от точек доступа Wi-Fi» там рассказывается, что и как можно найти в этой базе данных.
Довольно часто глядя в окно программы Airodump-ng я думаю, как было бы хорошо проверить все видимые точки доступа по 3WiFi за раз. Ведь если роутер (точка доступа), попала в эту базу, то мы с лёгкостью можем получить пароль, какой бы сложности он не был, не нужно возиться с брут-форсом, WPS ПИНами, раскрытием имени скрытых сетей и т.д. В качестве приятного бонуса часто мы ещё и получаем учётные данные от админки. Конечно, можно использовать онлайн карту 3WiFi, для этого найдите своё местоположение на карте и посмотрите список доступных точек доступа рядом с вами. Но у способа имеется большой минус – не для всех точек доступа определены географические координаты, т.е. вы можете пропустить некоторые точки доступа.
Используя API 3WiFi, я добавил в WiFi-autopwner новую функцию «Поиск по базе 3WIFI всех точек доступа в диапазоне досягаемости» — это десятый пункт меню. Поскольку запросы делаются к онлайн базе 3WiFi, то для работы этой функции обязательно нужно Интернет-подключение – иначе ничего не получится.
После выбора соответствующего пункта меню программа спросит, поддерживает ли ваша беспроводная карта работу на частотах 5 ГГц? Если поддерживает, и вы хотите сканировать в том числе каналы 5 ГГц, то введите букву y, если не поддерживает или вы не хотите сканировать эти каналы, то введите букву n.
Откроется окно поиска Wi-Fi сетей:
Когда там соберётся достаточно данных, то закройте его (дважды щёлкните по крестику).
Поиск выполняется двумя способами:
Если было найдено совпадение для BSSID, то можно сразу радоваться – практически наверняка это точные данные. Информация выводится примерно в следующем виде:
Обработка 60:03:47:2D:C1:FD (имя: true_homewifi_1FD) <"result":true,"data":<"60:03:47:2D:C1:FD":[<"time":"2018-03-18 08:44:55","bssid":"60:03:47:2D:C1:FD","essid":"true_homewifi_1FD","sec":"WPA\/WPA2","key":"00000PIP","wps":"">]>,"time":0.0083670616149902>
Пароль идёт после слова «key», в данном примере это 00000PIP.
Если же найдено совпадение для имени точки доступа, то необходима дополнительная проверка, поскольку вероятны ложные срабатывания, особенно для популярных названий сетей Wi-Fi, например, при моём запуске найдена информация для сетей Pennapa, POMME, Bruce и т.д. – вполне вероятно, что это не те точки доступа, которые находятся в пределах моей досягаемости, поскольку кто-то ещё, на другом конце света мог назвать так свои сети Wi-Fi.
Тем не менее, результат для точки доступа с именем true_home2G_B70 вполне может быть достоверным:
Проблема с роутерами, поддерживающими два диапазона
Современные роутеры часто поддерживают работу на двух частотах: на 2.4 ГГц и 5 ГГц. Фактически, это две разные сети – у них могут быть разные имена, разные пароли, любая из них может быть отключена независимо от другой. Самое важное – у них разные MAC-адреса (т.е. BSSID).
Выполняя сканирование, если Router Scan by Stas’M находит роутер с двумя диапазонами, то он в парсит и сохраняет в базе данных информацию только о диапазоне 5 ГГц. Поскольку такие роутеры (в некоторых странах) стали популярными, но при этом сети на 5 ГГц до сих пор используются очень мало, то возникает проблема, что база данных 3WiFi заполняется о сетях, о которых мы не знаем, если сканируем только частоты диапазона 2.4 ГГц. Но дела ещё хуже, поскольку многие просто отключают второй диапазон за ненадобностью.
Очень много сетей с именами вида true_home5G_* — это двухдиапазонные роутеры, которые удачно взломаны, но от которых сохранена информация только о сети на 5 ГГц. На скриншоте видно много отключённых Wi-Fi сетей. На практике это означает, что в пределах нашей досягаемости может быть роутер, который присутствует в базе 3WiFi, но о котором мы не узнаем, если не просканируем 5 ГГц. А если вторая сеть отключена, то вообще нет никакой возможности найти его в базе, поскольку у видимой сети на 2.4 ГГц другой BSSID и может оказаться другое имя. К примеру, в рассматриваемых роутерах с сетями true_home5G_* вторая сеть по умолчанию называется true_home2G_*
Без изменения структуры базы данных, а также повторного пересканирования эту проблему не решить. Чтобы снизить количество пропущенных роутеров обязательно сканируйте частоты 5 ГГц. Для этого подходят карты Panda Wireless PAU09 N600 и Alfa AWUS052NH (также они подходят для всего остального в Kali Linux).
В одном роутере у всех сетевых интерфейсов (проводных и беспроводных), хоть и разные MAC-адреса, но обычно они различаются только на один символ, либо на 2 или 3 последних символа. Учитывая это, есть идея дополнить поиском по усечённым на 3 символа BSSID, это, с одной стороны, позволит найти роутеры:
- которые добавлены в базу данных 3WiFi по BSSID на 5 ГГц
- у которых сеть 5 ГГц вообще отключена
- но которые находятся рядом с нами и у них включена сеть на частотах 2.4 ГГц
К примеру, в базе данных есть роутер с BSSID 60:03:47:2D:C1:F0, а рядом с нами присутствует сеть 60:03:47:2D:C1:FB этого же роутера, но которая не попала в БД. Если мы выполним поиск по запросу 60:03:47:2D:C1:F*, то мы найдём нужный нам роутер. Правда, никаких гарантий, что пароли от сетей 2.4 ГГц и 5 ГГц совпадут. Зато мы узнаем IP роутера, учётные данные от админки (можем зайти и сами посмотреть всё, что нам нужно), а также WPS ПИН (если есть).
В общем, есть ещё способы усилить поиск.
Связанные статьи:
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как обнаружить все Wi-Fi устройства в округе?
С помощью программы airodump-ng можно увидеть информацию о точках доступа и клиентах. Если точек доступа несколько, то всё просто и удобно, а что делать, если общее количество ТД и станций в пределах диапазона измеряется сотнями? Такое количество не влезет ни в один экран.
Также через airodump-ng неудобно сопоставлять подключённые к ТД станции.
При использовании с программой airodump-ng опции -w захваченные пакеты записываются в файл, ещё создаётся файл с расширением .csv, который можно открыть программой для работы с таблицами или текстовым редактором. В этом файле собрана информация об увиденных устройствах:
Плюсом этого файла является то, что, там хотя бы можно увидеть все обнаруженные устройства. Минус – неудобство анализа данных.
В результате я решил написать под собственные нужды (а если вы это читаете – то значит и поделиться с вами) небольшой скрипт для анализа файла .csv, создаваемого программой airodump-ng.
- показывает общее количество увиденных точек доступа, клиентов и не подключённых к какой-либо ТД клиентов;
- для каждой сети определяет производителя устройства;
- выделяет сети, работающие на 5 ГГц;
- для каждой сети показывает подключённых к ней клиентов;
- для каждого клиента определяет производителя устройства, на основе этих данных предполагает, является ли устройство мобильным телефоном, может ли поддерживать режим монитора;
- показывает сети, к которым пытался подключиться каждый клиент;
- показывает всех клиентов, не подключённых ни к какой сети, и отображает для них сети, которые они искали.
Пример данных, которые выводит скрипт (данные получены из одного места без перемещения, за 1+ час):
Чтобы проанализировать файл .csv, нужно, чтобы airodump-ng его создала. Для этого переводим беспроводную карту в режим монитора. Я всегда начинаю со следующих двух команд, чтобы не мешали никакие процессы:
sudo systemctl stop NetworkManager sudo airmon-ng check kill
После этого перевожу в режим монитора:
sudo ip link set wlan0 down sudo iw wlan0 set monitor control sudo ip link set wlan0 up
Теперь запускаем airodump-ng примерно следующей командой:
sudo airodump-ng --berlin 60000 -w /tmp/test wlan0
Если вас также интересует диапазон 5 ГГц и если ваша беспроводная карта его поддерживает, то дополнительно можно запустить примерно такой командой:
sudo airodump-ng --channel 1-13,36-165 --berlin 60000 -w /tmp/test wlan0
- —berlin 60000 используется для того, чтобы из списка не исключались ТД и Станции, которые ушли из вида
- -w /tmp/test – для сохранения файлов в директорию /tmp/ с префиксом test
- —channel 1-13,36-165 говорит переключаться по всем возможным каналам, включая 5 ГГц.
Теперь создайте файл wfw.sh:
и скопируйте туда следующее
#!/bin/bash if [[ "$1" && -f "$1" ]]; then FILE="$1" else echo 'Укажите .csv файл, который вы хотите проанализировать.'; echo 'Пример запуска:'; echo -e "\tbash wfw.sh /tmp/test-01.csv"; exit fi echo -e "\033[1mВсего точек доступа: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\\"%;-]+,)' $FILE | wc -l`\e[0m" echo -e "\033[1mВсего клиентов: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\\"%;-]+,) ([A-Z0-9:])|(not associated)' $FILE | wc -l`\e[0m" echo -e "\033[1mИз них клиентов без ассоциации: \033[0;31m`grep -E '(not associated)' $FILE | wc -l`\e[0m" echo -e "\033[0;36m\033[1mИнформация о сетях:\e[0m" while read -r line ; do if [ "`echo "$line" | cut -d ',' -f 14`" != " " ]; then echo -e "\033[1m" `echo -e "$line" | cut -d ',' -f 14` "\e[0m" else echo -e " \e[3mне удалось получить имя сети\e[0m" fi fullMAC=`echo "$line" | cut -d ',' -f 1` echo -e "\tMAC-адрес: $fullMAC" MAC=`echo "$fullMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6` result="$(grep -i -A 1 ^$MAC ./oui.txt)"; if [ "$result" ]; then echo -e "\tПроизводитель: `echo "$result" | cut -f 3`" else echo -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m" fi is5ghz=`echo "$line" | cut -d ',' -f 4 | grep -i -E '36|40|44|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140'` if [ "$is5ghz" ]; then echo -e "\t\033[0;31mРаботает на 5 ГГц!\e[0m" fi printonce="\tИнформация о подключённых клиентах:" while read -r line2 ; do clientsMAC=`echo $line2 | grep -E "$fullMAC"` if [ "$clientsMAC" ]; then if [ "$printonce" ]; then echo -e $printonce printonce='' fi echo -e "\t\t\033[0;32m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m" MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6` result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)"; if [ "$result2" ]; then echo -e "\t\t\tПроизводитель: `echo "$result2" | cut -f 3`" ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'` warning=`echo $result2 | grep -i -E 'ALFA|Intel'` if [ "$ismobile" ]; then echo -e "\t\t\t\033[0;33mВероятно, это мобильное устройство\e[0m" fi if [ "$warning" ]; then echo -e "\t\t\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m" fi else echo -e "\t\t\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m" fi probed=`echo $line2 | cut -d ',' -f 7` if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then echo -e "\t\t\tИскал сети: $probed" fi fi done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\\"%;-]+,) ([A-Z0-9:])|(not associated)' $FILE) done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\\"%;-]+,)' $FILE) echo -e "\033[0;36m\033[1mИнформация о неподключённых клиентах:\e[0m" while read -r line2 ; do clientsMAC=`echo $line2 | cut -d ',' -f 1` echo -e "\033[0;31m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m" MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6` result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)"; if [ "$result2" ]; then echo -e "\tПроизводитель: `echo "$result2" | cut -f 3`" ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'` warning=`echo $result2 | grep -i -E 'ALFA|Intel'` if [ "$ismobile" ]; then echo -e "\t\033[0;33mВероятно, это мобильное устройство\e[0m" fi if [ "$warning" ]; then echo -e "\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m" fi else echo -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m" fi probed=`echo $line2 | cut -d ',' -f 7` if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then echo -e "\tИскал сети: $probed" fi done < <(grep -E '(not associated)' $FILE)
Также нам понадобиться файл с базой данных MAC-адресов и соответствующих им производителей, скачайте его в ту же директорию, где разместили файл wfw.sh
wget http://standards-oui.ieee.org/oui/oui.txt
bash wfw.sh путь_до_файла.csv
Обратите внимание, что если вы несколько раз запускали программу airodump-ng, то она каждый раз создаёт новые файлы, не удаляя старые. Я использовал префикс test, поэтому при первом запуске в папке /tmp/ был создан файл test-01.csv. Именно его я и буду анализировать. Кстати, скрипт можно запускать прямо во время работы airodump-ng. Пример запуска:
Обратите внимание на данные:
Всего точек доступа: 118 Всего клиентов: 292 Из них клиентов без ассоциации: 205
Общее количество точек доступа (118) – именно столько моя беспроводная карта увидела Wi-Fi сетей в округе (без перемещения). Общее количество клиентов (292) – это все устройства, которые подключены или не подключены к ТД. Клиенты без ассоциации (205) – это те, кто не подключён ни к одной из Wi-Fi сетей (например, проходили мимо моего дома с телефоном, на котором включен Wi-Fi).
Для этой ТД не получено имя сети, тем не менее, один из подключённых к ней клиентов искал сеть с именем alisa. Вполне возможно, что это и есть имя данной сети:
Аналогично для сетей на следующих скриншотах:
С помощью скрипта можно искать разные артефакты в беспроводном пространстве, например, не только у меня есть Wi-Fi карта с режимом монитора:
Очень много устройств у которых MAC-адрес начинается с DA:A1:19 и при этом отсутствует в базе данных:
Хотя если погуглить, можно найти информацию, что этот диапазон принадлежит самой Гугл:
Также я нашёл упоминания, что случайные MAC-адрес с таким префиксом создают Android и iOS для приватности.
Заключение
Чтобы скрипт показал как можно больше информации, дайте airodump-ng поработать подольше, хотя бы минут 5-10.
В зависимости от целей, можно использовать данные, полученные в процессе перемещения.
Является ли устройство мобильником и поддерживает ли режим монитора предполагается исключительно исходя из имени производителя, т.е. данные могут быть неверными.