Как обнаружить все 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:

gedit wfw.sh

 и скопируйте туда следующее


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

bash wfw.sh /tmp/test-01.csv

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

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

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

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

Смотрите также: Продвинутое слежение за Wi-Fi устройствами


Рекомендуется Вам:

15 комментариев to Как обнаружить все Wi-Fi устройства в округе?

  1. Аноним:

    #airodump-ng-oui-update из пакета aircrack-ng
    скачает в /etc/aircrack-ng/airodump-ng-oui.txt

    После этого aircrack-ng будет выводить в своем окне производителя.

  2. gentux:

    #airodump-ng-oui-update из пакета aircrack-ng
    скачает в /etc/aircrack-ng/airodump-ng-oui.txt

    После этого aircrack-ng будет выводить в своем окне производителя.

  3. pilot:

    подскажите, а можно ли с помощью данного инструмента (или любого другого) вычислить дальность от точки до клиента. Может условную (в мсекундах) или неточную?

  4. mcedit98:

    Доброго времени суток. Воспользовался вашим скриптом - отличный, спасибо)

    Развернул Kali на Raspberri pi3, на интегрированной wlan запустил монитор и airdump-ng. Всё выглядит рабочим, но проблема подкралась откуда не ждали: включил на собственной мобиле wifi, увидел его, затем выключил/включил wifi на мобиле и… больше свой телефон в airodump-ng я не видел((( Более того моего MAC нет и в test-01.csv 

    Тоже самое сделал с ещё одним мобильным телефоном - тоже перестал видеться. С чем может быть связанно такое поведение? Может быть каким-то специальным образом нужно airodump-ng перезапускать?

    • Alexey:

      Приветствую! Дело в том, что сейчас большинство телефонов работают следующим образом:

      • пока телефон НЕ подключён к какой-либо точке доступа, у него случайный MAC-адрес вида DA:A1:19*
      • когда телефон подключается к точке доступа, его MAC-адрес возвращается к настоящему.

      Судя по вашему описанию, впервые вы увидели свой телефон, когда он был подключён к ТД. Затем вы пытались искать свой телефон, когда он НЕ был подключён к какой-либо ТД. Получается, что телефон в списке есть, но вы не можете его узнать, т.к. у него спуфится MAC-адрес. Подключитесь к ТД, и вы узнаете свой телефон.

      • mcedit98:

        "гугловских" МАС адрессов в списке действительно целая куча, Но дело было не только в этом. Телефон переподключённый к точке, изменил мак адрес. Под переподключением я имею ввиду забывание сети, и повторное подключение с вводом ключа.

        Похоже что способом по МАС адресу идентифицировать пользователя нельзя. Есть ли какие-нибудь альтернативы идентификации посредством WiFi?

  5. zozo:

    В итоге 

    сканит, csv сохраняет, но скрип не отрабатывает(

    root@kali:~/wifiscr# bash wfw.sh /tmp/test-01.csv
    wfw.sh: строка 2: $'\r': команда не найдена
    wfw.sh: строка 82: синтаксическая ошибка рядом с неожиданным маркером «fi»
    'fw.sh: строка 82: ` 

  6. mcedit98:

    Пользовался скриптом и всё было прекрасно, пока не упёрся в лимит sd карты. Для того, что бы sd карта не выходила из строя (файловая система переключается в режим read only) вечно перезаписывающийся csv решил хранить в RAM диске. Благо в linux это делается без сторонних утилит одной строкой:

    #Создаём каталог
    sudo mkdir -p /ram
    #Выделяем часть ОЗУ под RAM-disc
    sudo mount -t tmpfs -o size=100m tmpfs /ram

    Скрипты указанные в статье запускаем в связке с директорией /ram

  7. Oleg:

    А, как выйти из режима монитора (на следующем после дампа шаге файл с базой данных MAC-адресов не удается скачать)?

  8. Александр:

    Здравствуйте. Можно ли сейчас как-то обойти динамическией маки? Т.е. возможно ли узнать маки устройств в радиусе действия, не подключённых ни к каким ТД, грубо говоря, устройств "проходящих" мимо?

  9. init:

    1. А что будет, если пользователь создаст shell-скрипт, у котого имя не wfw.sh? Для того, чтобы исправить досадную ошибку необходимо использовать "$(basename "$0")".

        echo -e "\tbash "$(basename "$0")" /tmp/test-01.csv";

    2. При попытки выполнить не из дериктории, в которых находится shell-скрипт, получаю "grep: ./oui.txt: Нет такого файла или каталога". Всё из-за того, что ищёт файл в текующей директории.

    Ошибка в result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";. Как вариант исправления предлагаю использовать:

    DIR="$( cd "$( dirname "$0" )" && pwd )"

    result="$(grep -i -A 1 ^$MAC $DIR/oui.txt)";

    Замечу, что у вас не только одна переменная, которая выполняет комманду - у Вас есть result2.

    Изменённый shell-скрипт: https://pastebin.com/x928m5j8

    Проверте его прежде чем изменять статью.

    P.S. Заметил, что у Вас в форме отверта битая ссылка. Речь о "подписаться".

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *