Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь то устройства Bluetooth или Wi-Fi, вам стоит попробовать увлекательный инструмент на основе Python 3 под названием Sparrow-wifi. Он кроссплатформенный, простой в использовании и имеет впечатляющий графический интерфейс, который показывает уровень сигнала соседних устройств. Просмотрим как осуществляется разведка по Wi-Fi и GPS с помощью Sparrow-wifi.
Что можно сделать с помощью Sparrow-Wi-Fi
Ghostop14 создал Sparrow-wifi для установки на Raspberry Pi, прикрепленном к дрону или вездеходу, для использования в боевых полетах или вождении. Его даже протестировали на воздушном дроне 3DR Solo, и вы можете прочитать больше об их опыте использования Sparrow-wifi на Raspberry Pi и дрона на странице GitHub. Мы просто будем использовать его в системе Kali Linux, работающей на ноутбуке, но для проекта на базе Pi он будет аналогичен.
Прежде чем приступить к использованию Sparrow-wifi, полезно показать, на что он способен. Являясь «инструментом определения спектра Wi-Fi следующего поколения в диапазонах 2,4 ГГц и 5 ГГц», он имеет возможности Wi-Fi, программно-определяемую радиосвязь, расширенные возможности Bluetooth и возможности GPS (которые также можно подключить к GPS на дронах и вездеходах). Наиболее выдающиеся особенности, на которые стоит обратить внимание сегодня, включают, помимо прочего:
- Наложение спектров 2,4 ГГц и 5 ГГц в режиме реального времени поверх спектра Wi-Fi.
- Определите информацию SSID для ближайших устройств через Wi-Fi.
- Определите ближайшие устройства Bluetooth и Bluetooth LE.
- Отслеживайте источники рекламы Bluetooth LE (iBeacons) с помощью окна телеметрии.
- Рассылайте свои собственные рекламные объявления iBeacon.
- Управляйте боевыми полетами или военными двигателями с помощью Raspberry Pi на дроне или вездеходе, используя графический интерфейс или автономные режимы сканирования и записи.
- Импортируйте или экспортируйте из или в файл CSV или файл JSON.
- Просматривайте местоположения на Картах Google по координатам GPS, предоставленным обнаруженными устройствами SSID или Bluetooth, что может быть полезно для построения графика телеметрии Wi-Fi с течением времени.
Что вам нужно для начала
Вам понадобится адаптер беспроводной сети, который можно перевести в режим монитора. Кроме того, вам понадобится компьютер для его запуска с Python 3, и все.
Обновление и улучшение Kali
Перед установкой чего-либо полезно использовать обновление для повторной синхронизации и обновления индексных файлов пакетов в системе из их источников, а также выполнить обновление для обновления всех инструментов, которые имеют более новые версии, найденные в обновлении. Обновление может занять некоторое время, в зависимости от того, сколько пакетов устарели.
~$ sudo apt update && sudo apt upgrade
Hit:1 http://kali.download/kali kali-rolling InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
17 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
fonts-glyphicons-halflings gir1.2-appindicator3-0.1 libappindicator3-1
libboost-iostreams1.67.0 libboost-system1.67.0 libboost-thread1.67.0
libgdal26 libicu63 libmpdec2 libprotobuf22 libpython3.7-minimal
libpython3.7-stdlib libqhull7 libre2-6 libx264-155 libx265-179
php7.3-mysql python3-flask-session python3-pcapfile python3.7
python3.7-minimal ruby-did-you-mean
Use 'sudo apt autoremove' to remove them.
The following packages have been kept back:
crackmapexec gcc-10-base lib32gcc-s1 lib32stdc++6 libatomic1 libcc1-0
libgcc-s1 libgfortran5 libgomp1 libitm1 liblsan0 libobjc4 libquadmath0
libstdc++6 libtsan0 libubsan1 php-common
0 upgraded, 0 newly installed, 0 to remove and 17 not upgraded.
Установите необходимые зависимости
Теперь нам нужно установить некоторые необходимые инструменты Python 3 и GPS, включая python3-pip, gpsd, gpsd-clients, python3-tk и python3-setuptools. Для этого используйте следующую команду.
~$ sudo apt install python3-pip gpsd gpsd-clients python3-tk python3-setuptools
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-setuptools is already the newest version (46.1.3-1).
python3-setuptools set to manually installed.
The following additional packages will be installed:
gpsd-tools libgps26 python-pip-whl python3-gps python3-wheel
Suggested packages:
tix python3-tk-dbg
The following NEW packages will be installed:
gpsd gpsd-clients gpsd-tools libgps26 python-pip-whl python3-gps
python3-pip python3-wheel
The following packages will be upgraded:
python3-tk
1 upgraded, 8 newly installed, 0 to remove and 824 not upgraded.
Need to get 3,533 kB of archives.
After this operation, 7,755 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://kali.download/kali kali-rolling/main amd64 libgps26 amd64 3.20-12 [98.6 kB]
Get:2 http://kali.download/kali kali-rolling/main amd64 gpsd amd64 3.20-12 [413 kB]
Get:3 http://kali.download/kali kali-rolling/main amd64 gpsd-tools amd64 3.20-12 [299 kB]
Get:4 http://kali.download/kali kali-rolling/main amd64 python3-gps amd64 3.20-12 [105 kB]
Get:5 http://kali.download/kali kali-rolling/main amd64 gpsd-clients amd64 3.20-12 [432 kB]
Get:6 http://kali.download/kali kali-rolling/main amd64 python-pip-whl all 20.0.2-5kali1 [1,842 kB]
Get:7 http://kali.download/kali kali-rolling/main amd64 python3-wheel all 0.34.2-1 [24.0 kB]
Get:8 http://kali.download/kali kali-rolling/main amd64 python3-pip all 20.0.2-5kali1 [211 kB]
Get:9 http://kali.download/kali kali-rolling/main amd64 python3-tk amd64 3.8.5-1 [109 kB]
Fetched 3,533 kB in 1s (2,563 kB/s)
Reading changelogs... Done
Selecting previously unselected package libgps26:amd64.
(Reading database ... 287092 files and directories currently installed.)
Preparing to unpack .../0-libgps26_3.20-12_amd64.deb ...
Unpacking libgps26:amd64 (3.20-12) ...
Selecting previously unselected package gpsd.
Preparing to unpack .../1-gpsd_3.20-12_amd64.deb ...
Unpacking gpsd (3.20-12) ...
Selecting previously unselected package gpsd-tools.
Preparing to unpack .../2-gpsd-tools_3.20-12_amd64.deb ...
Unpacking gpsd-tools (3.20-12) ...
Selecting previously unselected package python3-gps.
Preparing to unpack .../3-python3-gps_3.20-12_amd64.deb ...
Unpacking python3-gps (3.20-12) ...
Selecting previously unselected package gpsd-clients.
Preparing to unpack .../4-gpsd-clients_3.20-12_amd64.deb ...
Unpacking gpsd-clients (3.20-12) ...
Selecting previously unselected package python-pip-whl.
Preparing to unpack .../5-python-pip-whl_20.0.2-5kali1_all.deb ...
Unpacking python-pip-whl (20.0.2-5kali1) ...
Selecting previously unselected package python3-wheel.
Preparing to unpack .../6-python3-wheel_0.34.2-1_all.deb ...
Unpacking python3-wheel (0.34.2-1) ...
Selecting previously unselected package python3-pip.
Preparing to unpack .../7-python3-pip_20.0.2-5kali1_all.deb ...
Unpacking python3-pip (20.0.2-5kali1) ...
Preparing to unpack .../8-python3-tk_3.8.5-1_amd64.deb ...
Unpacking python3-tk:amd64 (3.8.5-1) over (3.8.2-2) ...
dpkg: warning: unable to delete old directory '/usr/lib/python3.7/tkinter': Directory not empty
Setting up libgps26:amd64 (3.20-12) ...
Setting up gpsd-tools (3.20-12) ...
Setting up python3-tk:amd64 (3.8.5-1) ...
Setting up python3-wheel (0.34.2-1) ...
Setting up python-pip-whl (20.0.2-5kali1) ...
Setting up python3-gps (3.20-12) ...
Setting up gpsd (3.20-12) ...
Creating/updating gpsd user account...
gpsd.socket is a disabled or a static unit, not starting it.
gpsd.service is a disabled or a static unit, not starting it.
gpsd.socket is a disabled or a static unit, not starting it.
Setting up gpsd-clients (3.20-12) ...
Setting up python3-pip (20.0.2-5kali1) ...
Processing triggers for desktop-file-utils (0.24-1) ...
Processing triggers for mime-support (3.64) ...
Processing triggers for libc-bin (2.30-4) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for kali-menu (2020.2.2) ...
Прежде чем устанавливать следующий пакет необходимых инструментов, вам следует сначала обновить pip3, чтобы предотвратить ошибки, с которыми столкнулись другие при установке других зависимостей. Используйте следующую команду, чтобы сделать это.
~$ sudo pip3 install --upgrade pip
Collecting pip
Downloading pip-20.2.2-py2.py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 1.0 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.0.2
Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.2.2
Наконец, установите последний пакет зависимостей, необходимых для Sparrow-wifi, в который входят QScintilla, PyQtChart, gps3,dronekit, manuf, python-dateutil, numpy и matplotlib.
~$ sudo pip3 install QScintilla PyQtChart gps3 dronekit manuf python-dateutil numpy matplotlib
Collecting QScintilla
Downloading QScintilla-2.11.5-cp35.cp36.cp37.cp38-abi3-manylinux2014_x86_64.whl (2.6 MB)
|████████████████████████████████| 2.6 MB 1.0 MB/s
Collecting PyQtChart
Downloading PyQtChart-5.15.0-5.15.0-cp35.cp36.cp37.cp38-abi3-manylinux2014_x86_64.whl (1.2 MB)
|████████████████████████████████| 1.2 MB 7.2 MB/s
Collecting gps3
Downloading gps3-0.33.3-py2.py3-none-any.whl (29 kB)
Collecting dronekit
Downloading dronekit-2.9.2-py3-none-any.whl (56 kB)
|████████████████████████████████| 56 kB 5.9 MB/s
Collecting manuf
Downloading manuf-1.1.1-py3-none-any.whl (539 kB)
|████████████████████████████████| 539 kB 10.4 MB/s
Requirement already satisfied: python-dateutil in /usr/lib/python3/dist-packages (2.8.1)
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.17.4)
Requirement already satisfied: matplotlib in /usr/lib/python3/dist-packages (3.2.1)
Requirement already satisfied: PyQt5>=5.10.1 in /usr/lib/python3/dist-packages (from QScintilla) (5.14.2)
Collecting PyQt5-sip<13,>=12.8
Downloading PyQt5_sip-12.8.0-cp38-cp38-manylinux1_x86_64.whl (293 kB)
|████████████████████████████████| 293 kB 11.2 MB/s
Collecting pymavlink>=2.2.20
Downloading pymavlink-2.4.9.tar.gz (3.6 MB)
|████████████████████████████████| 3.6 MB 8.2 MB/s
Collecting monotonic>=1.3
Downloading monotonic-1.5-py2.py3-none-any.whl (5.3 kB)
Requirement already satisfied: future in /usr/lib/python3/dist-packages (from pymavlink>=2.2.20->dronekit) (0.18.2)
Requirement already satisfied: lxml in /usr/lib/python3/dist-packages (from pymavlink>=2.2.20->dronekit) (4.5.0)
Building wheels for collected packages: pymavlink
Building wheel for pymavlink (setup.py) ... done
Created wheel for pymavlink: filename=pymavlink-2.4.9-cp38-cp38-linux_x86_64.whl size=3695087 sha256=91c89fc1e95245a57d461a2cb23fcbd10c7319249cf782eb575c17fbe1e3ffa0
Stored in directory: /root/.cache/pip/wheels/3b/26/1c/5500a65a7d7ac54cade1db721eefce7b5c6e451862a21423bb
Successfully built pymavlink
Installing collected packages: PyQt5-sip, QScintilla, PyQtChart, gps3, pymavlink, monotonic, dronekit, manuf
Successfully installed PyQt5-sip-12.8.0 PyQtChart-5.15.0 QScintilla-2.11.5 dronekit-2.9.2 gps3-0.33.3 manuf-1.1.1 monotonic-1.5 pymavlink-2.4.9
PyQtChart gps3 dronekit manuf python-dateutil numpy matplotlib
Установка Sparrow-wifi
Теперь мы готовы установить Sparrow-wifi, который вы можете клонировать из репозитория GitHub. Это так просто, и мы можем начать погружаться в то, что он может предложить и как использовать его для беспроводной разведки.
~$ git clone https://github.com/ghostop14/sparrow-wifi
Cloning into 'sparrow-wifi'...
remote: Enumerating objects: 75, done.
remote: Counting objects: 100% (75/75), done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 593 (delta 42), reused 53 (delta 22), pack-reused 518
Receiving objects: 100% (593/593), 2.13 MiB | 3.14 MiB/s, done.
Resolving deltas: 100% (397/397), done.
Запуск Sparrow- wifi
Установив Sparrow-wifi, перейдем в его каталог:
~$ cd sparrow-wifi
~/sparrow-wifi$
И посмотрим, что внутри:
~/sparrow-wifi$ ls
docs sparrowhackrf.py
images sparrowmap.py
__init__.py sparrowrpi.py
LICENSE sparrow-screenshot.png
README.md sparrowtablewidgets.py
rpi.setup_prerequisites.sh sparrowwifiagent.cfg.sample
scripts sparrowwifiagent.py
sparrowbluetooth.py sparrow-wifi.py
sparrowcommon.py spectrum-screenshot.png
sparrowdialogs.py telemetry.py
sparrowdrone.py telemetry-screenshot.png
sparrow-elastic.py wifi_icon.png
sparrowgps.py wirelessengine.py
Сегодня мы просто хотим использовать основной скрипт sparrow-wifi.py; запустите это, используя
~/sparrow-wifi$ sudo ./sparrow-wifi.py
WARNING: CPU random generator seem to be failing, disable hardware random number generation
WARNING: RDRND generated: 0xffffffff 0xffffffff 0xffffffff 0xffffffff
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Используйте Sparrow-Wi-Fi для разведки
Эта последняя команда должна открыть графический интерфейс Sparrow-wifi. Как только он заработает, мы сможем выбрать интерфейс, который хотим сканировать, в раскрывающемся меню «Local Interface». Затем нажмите кнопку «Scan» рядом с ним.
Он немедленно начнет сканирование близлежащих устройств, показывая их SSID, MAC-адреса, имена поставщиков, протоколы безопасности, каналы, частоты, уровень сигнала, пропускную способность и многое другое. Он даже покажет, когда устройства были замечены в первый и последний раз.
Хотя у меня не активирован GPS, вы можете щелкнуть значок GPS в правом верхнем углу окна, чтобы открыть XGPS, который покажет вам спутники, используемые для определения местоположения GPS, а также другие полезные данные.
Давайте быстро пробежимся по меню. В меню «Agent» вы сможете подключиться к удаленному агенту, включить удаленную запись, а также выполнить обнаружение и настройку агента. Нас сейчас это не интересует.
Далее у нас есть «Geo» который покажет нам некоторые инструменты для GPS. Например, есть мониторинг координат GPS, который сообщит нам последние действительные координаты. Мы также можем запустить XGPS отсюда, как и раньше, щелкнув значок GPS. У нас также есть способ создать карту точек доступа, которую вы можете попытаться использовать, чтобы увидеть, что к вам относится. Также есть возможность создать карту SSID на основе телеметрии, которая больше касается уровня сигнала и других данных.
Теперь о меню «Bluetooth». Если у вас включен Bluetooth, вы можете создать iBeacon или отсканировать существующие, при условии, что устройство Bluetooth отправляет рекламу. Это не всегда так, поскольку устройства Bluetooth отличаются от Wi-Fi с точки зрения того, как они рекламируют себя и как их можно обнаружить. Например, они скачкообразно меняют частоты, поэтому никогда не будут смотреть график Wi-Fi на частоте 2,4 ГГц, что затрудняет их отслеживание. К сожалению, вы также не можете одновременно сканировать устройства Bluetooth и Bluetooth LE.
В пункте меню «Spectrum» можно настроить коэффициент усиления анализатора спектра, но для наших целей сегодня это не интересует.
Рядом с кнопкой «Scan»/»Stop scanning» вы можете выбрать другой режим сканирования из раскрывающегося списка. Мы выбрали «Normal», но если мы переключим его на «Hunt, » выберем канал, к которому мы хотим сузить его, а затем повторим сканирование для поиска конкретной сети.
Также доступна опция удаления любой сети, которая не была замечена в течение последних трех минут, что отлично подходит для избавления от всего ненужного мусора после запуска поискового сканирования.
Теперь в левой нижней панели 2,4 ГГц мы можем видеть, какие спектры используются и где они находятся. Чтобы, если мы хотели сосредоточиться на чем-то конкретном, мы могли нажать на один из результатов.
Как только результат будет выделен, вы можете перейти в меню «Telemetry»и выбрать «Telemetry For Selected Network.»
Откроется новое окно с активным трекером. Мы можем видеть уровень сигнала относительно этого устройства, и если у вас включен GPS, вы сможете увидеть уровень сигнала по сравнению с изменениями долготы и широты при перемещении. Вы также можете направить направленную антенну, чтобы использовать телеметрический трекер для приближения к устройству.
На самом деле я не двигаюсь, поэтому вы не увидите большого скачка уровня сигнала на моих скриншотах, но если вы переместите направленную антенну и направите ее в правильном направлении, вы увидите большой всплеск мощности. в верхней левой панели. Подобные всплески вы можете увидеть в наших руководствах по выбору правильной антенны для взлома Wi-Fi и поиску устройств Wi-Fi с направленной антенной. Но настроить Wireshark намного сложнее, чем просто включить Sparrow-wifi.
Заключение
Sparrow Wi-Fi — это быстрый и простой способ запустить графический интерфейс и посмотреть, что вокруг вас, независимо от того, ищете ли вы устройства Bluetooth или Wi-Fi. Он не такой продвинутый, как Kismet, который может показать вам всю подробную информацию обо всем, но это действительно отличный инструмент Python для начала. Его даже можно установить на дрон, что весьма впечатляет.