Продвинутое слежение за Wi-Fi устройствами
Life-Hack [Жизнь-Взлом]/ХакингВ этой статье я расскажу об инструменте trackerjacker, который не только выводит список устройств в округе, но и умеет выполнять различные действия по заданным условиям.
Как установить trackerjacker.
Установка trackerjacker в Kali Linux, Debian, Linux Mint, Ubuntu и в любой другой дистрибутив выполняется следующим образом:
sudo pip3 install trackerjacker
В Arch Linux предыдущая команда тоже подходоит.
При установке trackerjacker в BlackArch нужно иметь в виду, что эта программа присутствует в стандартном репозитории и её можно установить так:
sudo pacman -S python-trackerjacker
Но проблема в том, что она не будет работать, поскольку для trackerjacker нужен scapy версии ровно 2.4.0, а в BlackArch (как и в Arch Linux) все пакеты всегда самой последней версии. Поэтому если вам нужно, чтобы программа заработала, то дополнительно выполните эту команду:
sudo pip3 install scapy==2.4.0
Для других дистрибутивов этого не требуется, поскольку при установке с помощью pip3 автоматически устанавливается scapy==2.4.0 в качестве зависимости.
Инструкция по использованию trackerjacker.
У этой программы имеется 2 главных режима использования: map mode (режим карты — собирается информация о всех устройствах в округе) и track mode (режим слежения).
В последующих командах вам нужно указать имя своего беспроводного интерфейса — вставьте его вместо wlp0s20f0u1 (это имя Wi-Fi интерфейса в моей системе).
sudo trackerjacker -i wlp0s20f0u1 --map
В стандартный вывод программа будет показывать информацию о переключении каналов и обнаруженных устройствах.

Основной интерес представляет «карта», которая сохраняется в файл формата YAML. Это карта всех близлежащих Wi-Fi сетей и их пользователей. По умолчанию имя файла wifi_map.yaml (имя и расположение файла можно поменять опцией --map-file). Пример такого файла:

Поскольку это формат YAML, то вы с лёгкостью может использовать его в качестве ввода для других скриптов вашей разработки. Автор trackerjacker написал простой скрипт parse_trackerjacker_wifi_map.py. В зависимости от способа установки, этот скрипт может отсутствовать, чтобы его скачать:
wget https://raw.githubusercontent.com/calebmadrigal/trackerjacker/master/helpful_scripts/parse_wifi_map.py
Запуск:
python3 ./parse_wifi_map.py
Пример работы скрипта:

Режим слежения в trackerjacker
Режим слежения позволяет вам указать ряд MAC адресов для наблюдения и предупреждать вас или выполнять указанную программу в случае превышения порога передаваемых данных. Пример запуска команды:
sudo trackerjacker --track -i wlp0s20f0u1 -m 3c:2e:ff:31:32:59 --t 4000 --trigger-command "./alert.sh" --channels-to-monitor 10,11,12,44
В ней:
- --track — включение режима слежения
- -i wlp0s20f0u1 — беспроводной интерфейс для использования
- -m 3c:2e:ff:31:32:59 — MAC адрес за которым нужно следить. Можно указать несколько адресов через запятую или файл со списком адресов (один MAC на одну строку) - это реализовано в одном из плагинов
- --t 4000 — порог в байтах, при превышении которого показываются предупреждения и выполняется указанная команда
- --trigger-command "./alert.sh" — команда, которую нужно выполнить в случае наступления события (превышения указанного порога)
- --channels-to-monitor 10,11,12,44 — каналы, которые нужно мониторить
В этом конкретном примере автор программы trackerjacker наблюдал за камерой безопасности чтобы определить, когда она выгружает видео (это свидетельствует о том, что ей замечено движение). Это, кстати, и было причиной появления проекта: наблюдение за сторонними камерами, к которым нет другого доступа — это позволяло дистанционно определить, что камеры кого-то заметили.
Плагин foxhunt.
Плагин foxhunt выводит список всех обнаруженных в округе Wi-Fi устройств в порядке убывания мощности сигнала. В тех случаях, когда возможно, выводится информация о производителях. Плагин можно указать опцией --trigger-plugin после которой нужно указать имя плагина (если он находится в соответствующей поддиректории программы), либо путь до файла плагина. Пример запуска с использованием плагина foxhunt:
sudo trackerjacker -i wlp0s20f0u1 --track --trigger-plugin foxhunt
Будет выведено примерно следующее:

Плагины trackerjacker.
Обратите внимание, что foxhunt это встроенный плагин. Встроенных плагинов, на самом деле, всего один. Также имеется несколько примеров плагинов, которые в зависимости от установки могут не попасть в систему.
Эти примеры вы найдёте на странице (там же можете их и скачать): https://github.com/calebmadrigal/trackerjacker/tree/master/plugin_examples
Далее краткое описание каждого плагина:
- foxhunt.py
Выводит упорядоченный список Wi-Fi устройств, отсортированных на основе мощности их сигнала.
- count_apples.py
Считает устройства Apple.
wget https://raw.githubusercontent.com/calebmadrigal/trackerjacker/master/plugin_examples/count_apples.py sudo trackerjacker -i wlp0s20f0u1 --track --trigger-plugin count_apples.py
- count_manufacturers.py
Подсчёт устройств разных производителей.
Пример запуска:
wget https://raw.githubusercontent.com/calebmadrigal/trackerjacker/master/plugin_examples/count_manufacturers.py sudo trackerjacker -i wlp0s20f0u1 --track --trigger-plugin count_manufacturers.py

Деаутентифицирует Wi-Fi устройства, то есть постоянно отключает их от беспроводных точек доступа, в результате чего они не могут нормально работать. Для этого используется программа aircrack-ng. Атака происходит на основе установленного mac_to_deauth (одного или нескольких адресов для деаутентификации) или vendor_to_deauth (то есть вендора (производителя) — в результате чего отключаются от сети все устройства от указанного производителя.
Будьте осторожны с vendor_to_deauth — атака деаутентификации выполняется в отношении каждого устройства определённого производителя, это определяется на основе его MAC адреса.
Пример вызова:
sudo trackerjacker --track --plugin plugin_examples/deauth_attack.py --plugin-config "{'vendor_to_deauth': 'Apple'}"
- find_nearby_strangers.py
Найти всех незнакомцев. Будет сообщено о всех новых устройствах, которые появились рядом с вами.
- monitor_device_list.py
Следит за MAC адресами из списка, указанного в файле.
Пример запуска:
sudo trackerjacker --track --plugin plugin_examples/monitor_device_list.py --plugin-config "{'device_list': 'deepsec_devices.txt'}"
В этом файле (deepsec_devices.txt) список должен иметь один MAC адрес на одну строку.
Отслеживание появления новых электронных устройств в непосредственной близости.
Допустим, мы хотим узнать об устройствах, которые внезапно появились рядом с нами.
Скачиваем плагин.
wget https://raw.githubusercontent.com/calebmadrigal/trackerjacker/master/plugin_examples/find_nearby_strangers.py
Откройте скаченный файл:
gedit find_nearby_strangers.py
В нём вы найдёте ряд настроек:
# устройства, которые нужно игнорировать
DEVS_TO_IGNORE = {'ff:ff:ff:ff:ff:ff', '00:00:00:00:00:00'}
# показывать только устройства, порог мощности которых выше
POWER_THRESHOLD = -50
# время порога
TIME_THRESHOLD = 15 * 60 # 15 минут
# период сохранения
SAVE_PERIOD = 30 # секунд
# файл для сохранения
SAVE_FILE = 'find_nearby_strangers.pkl'
В первую очередь обратите внимание на переменную POWER_THRESHOLD. Мощность вы можете подобрать опытным путём в зависимости от ваших условий. Это должно быть отрицательное число больше -100. Чтобы показать тех, кто действительно близко (примерно в одной комнате), установите на -30.
Также вы можете дополнить список DEVS_TO_IGNORE — устройства должны быть указаны через запятую.
Для сброса базы данных удалите файл find_nearby_strangers.pkl.
Пример запуска:
sudo trackerjacker -i wlp0s20f0u1 --track --trigger-plugin find_nearby_strangers.py

Примечание: опция --power (порог мощности) в случае с плагином не работает.
Отслеживание появления определённого устройства.
Выше уже показано, как отследить, когда определённое устройство или устройства начинают интенсивно обмениваться данными. Также рассказано о плагине для мониторинга списка устройств (monitor_device_list.py). Но предположим, что нас интересует одно определённое устройство — когда оно появляется, когда оно приближается/удаляется или исчезает и т.д.
Пример команды для слежения за устройствомо с MAC-адресом 8c:77:16:45:1d:c3:
sudo trackerjacker -i wlp0s20f0u2 --track -m 8c:77:16:45:1d:c3 --power -70 --channels-to-monitor 1,2,3,4,5,6,7,8,9,10,11,12,13,14

С помощью опции --trigger-cooldown можно указать время, через которое будет выводиться информация (если есть условия для срабатывания триггера). То есть если целевое устройство находится в диапазоне доступности, то информация о его мощности будет выводиться каждую минуту. С помощью указанной опции можно установить другие интервалы времени.
Кстати, в выводимой информации в данном случае очень не хватает времени — если добавить время, то можно сутками мониторить определённый телефон/планшет/компьютер и составить примерно расписание (работа-дом-туалет-балкон).
Значение --power (порог мощности устройства, при котором будет выведена информация о нём) устанавливать необязательно — зависит от сценария использования.
Настройка trackerjacker с помощью конфигурационного файла.
Настройки из командной строки можно перенести в конфигурационный файл и запускать trackerjacker с опцией -c, после которой нужно указать путь до конфигурационного файла:
sudo trackerjacker -c my_config.json
Пример такого файла my_config.json:
{
"iface": "wlan0",
"devices_to_watch": [
{"mac": "5f:cb:53:1c:8a:2c", "name": "Bob's iPhone"},
{"mac": "32:44:1b:d7:a1:5b", "name": "Alice's iPhone"},
{"mac": "f2:43:2b:e5:c3:6d", "name": "Security camera", "threshold": 20000},
"44:61:32:C6:34:8F"],
"aps_to_watch": {"c6:23:ef:33:cc:a2": 500},
"threshold_window": 10,
"channels_to_monitor": [1, 6, 11, 52],
"channel_switch_scheme": "round_robin"
}
Примечания к данному файлу:
- threshold_bytes — это порог байтов по умолчанию, если обмен данных достигает его, то вызывается функция предупреждения
- threshold_window — это промежуток времени, за который анализируются threshold_bytes (то есть достигло ли количество threshold_bytes за время threshold_window)
- devices_to_watch — это список, который может содержать как строки (представляющие MAC адреса) или Python Dictionaries (в этом формате можно указывать name и threshold для данного устройства)
- name — это просто та надпись, которую вы хотите чтобы выводилась когда увидено это устройство
- threshold — в "Security camera" это сколько байт должно быть увидено, чтобы был вызван триггер
- channels_to_monitor — список 802.11 Wi-Fi каналов для мониторинга. Когда запускается trackerjacker, будет напечатан список каналов, которые поддерживает ваша Wi-Fi карта. По умолчанию мониторятся все поддерживаемые каналы.
- channel_switch_scheme — варианты default, round_robin или traffic_based. Если выбрана traffic_based, то определяются каналы с наибольшим количеством передаваемого трафика и им выделяется больше времени. При варианте round_robin всем каналам выделяется равное количество времени.
Следующая команда покажет опции по умолчанию в виде конфигурационного файла. Вы можете использовать эту команду чтобы сгенерировать конфигурационный файл, который вы можете взять за основу для вашей настройки:
sudo trackerjacker --print-default-config
Будет показано примерно следующее:
{
"aps_to_watch": [],
"beep_on_trigger": false,
"channel_switch_scheme": "default",
"channels_to_monitor": null,
"devices_to_watch": [],
"display_all_packets": false,
"display_matching_packets": false,
"do_map": true,
"iface": null,
"log_level": "INFO",
"log_path": null,
"map_file": "wifi_map.yaml",
"map_save_interval": 10,
"plugin_config": null,
"power": null,
"remove_unseen_devices": false,
"threshold": null,
"threshold_window": 10,
"time_per_channel": 0.5,
"trigger_command": null,
"trigger_cooldown": 30,
"trigger_plugin": null
}
Включение и отключение режима монитора, переключение Wi-Fi адаптера на определённый канал.
Trackerjacker поставляется с несколькими другими простыми функциями, имеющими отношение к Wi-Fi хакингу. Одна из них — это способность включать режим монитора на указанном беспроводном интерфейсе.
Чтобы включить режим монитора:
sudo trackerjacker --monitor-mode-on -i wlan0
Чтобы отключить режим монитора:
sudo trackerjacker --monitor-mode-off -i wlan0mon
Обратите внимание, что trackerjacker автоматически включит/отключит режим монитора по мере необходимости. Эта функциональность полезна если вы просто хотите включить режим монитора на беспроводном интрфейсе для использования с другими приложениями (или для более быстрого запуска trackerjacker, если вы планируете запуск/выход для тестирования чего-то).
Переключение беспроводного адаптера на определённый канал:
sudo trackerjacker --set-channel 11 -i wlan0
Обратите внимание, что trackerjacker будет автоматически переключать каналы по мере необходимости во время обычных действий map/track. Эта опция полезна если вы хотите переключить интерфейс на определённый канал для использования с другими приложениями.
Опции trackerjacker.
Другие опции trackerjacker вы сможете найти в карточке программы: https://kali.tools/?p=4956
Рекомендуемое железо.
Автор trackerjacker рекомендует следующие Wi-Fi адаптеры:
- Panda PAU07 N600 Dual Band
- (приятный, маленький, 2.4GHz и 5GHz)
- Panda PAU09 N600 Dual Band
- (более высокая мощность, 2.4GHz и 5GHz)
- Alfa AWUS052NH Dual-Band 2x 5dBi
- (высокая мощность, 2.4GHz и 5GHz, большой)
- TP-Link N150
- (работает хорошо, но поддерживает только 2.4GHz)
По своему опыту могу дополнить, что подойдут любые адаптеры из этого списка. Для наибольшей чувствительности рекомендую обязательно выбирать адаптеры с внешней антенной (или несколькими антеннами). Причём чем антенна больше, тем лучше чувствительность.