Поиск включенных wi fi устройств

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 ГГц.
Читайте также:  Изменить пароль точки доступа wifi

Теперь создайте файл 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. Пример запуска:

Читайте также:  Dns вай фай айфон

Обратите внимание на данные:

Всего точек доступа: 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.

В зависимости от целей, можно использовать данные, полученные в процессе перемещения.

Является ли устройство мобильником и поддерживает ли режим монитора предполагается исключительно исходя из имени производителя, т.е. данные могут быть неверными.

Связанные статьи:

Источник

Оцените статью
Adblock
detector