Одной из многих кроличьих нор, в которые я недавно попал, было использование WiFi для отслеживания клиентских устройств. Хотя этот метод никоим образом не нов, я помню, как видел выступление matt0177 Blackhat USA в 2022 году, где он продемонстрировал использование разведывательных сигналов, излучаемых персональными устройствами, в качестве средства противодействия наблюдению. Это было первое практическое применение отслеживания устройств, с которым я столкнулся, и я хотел попробовать сделать еще один шаг вперед для домашнего использования 📶.

Моя цель состояла в том, чтобы захватить локальные беспроводные сигналы и создать вторичную точку данных для предупреждений, вызванных камерами движения и другими домашними сигналами тревоги. В лучшем случае это может предоставить информацию об устройстве нежелательного посетителя (так называемом смартфоне), например:

  • Уникальный MAC-адрес для отслеживания устройства.
  • Производитель устройства, использующий поиск OUI.
  • Недавно подключенные точки доступа через зонды ESSID.

Как это работает?

Идея, стоящая за этим, на самом деле довольно проста…

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

Тем не менее, сколько людей отключают Wi-Fi или Bluetooth, выходя из дома?

Из-за этого наши телефоны всегда излучают сигналы в поисках известных устройств/сетей. Эти беспроводные маяки могут быть перехвачены и интерпретированы любым слушающим.

Требования к оборудованию

Для этого проекта я использовал следующее оборудование:

  • Малиновый Пи 4b
  • Двухдиапазонный беспроводной адаптер Alfa

Обнаружение устройств поблизости

Я надеялся изменить существующий проект с открытым исходным кодом или использовать удивительный набор инструментов Kismet для проверки концепции. Однако по нескольким причинам я создал собственное приложение под названием SignalSpy.

SignalSpy использует пакет aircrack-ng для мониторинга устройств поблизости и отображения данных в аккуратно отформатированном веб-приложении. Эта информация может использоваться для отслеживания сигналов в радиусе действия, просмотра подключенных устройств соседних точек доступа и расчета приблизительного расстояния на основе уровня сигнала.

Пользовательские уведомления

Чтобы упростить обнаружение, оповещения устройств можно настроить в зависимости от расстояния, мощности и возникновения — с дополнительными push-уведомлениями Slack.

Успех! 🏆

В нескольких тестовых случаях, как с моими собственными устройствами, так и с неосведомленными доставщиками, я постоянно получал уведомления в соответствии с другими устройствами мониторинга:

Даже в тех случаях, когда смартфоны использовали Private WiFi для ротации MAC-адресов, можно было извлечь имена точек доступа или значения ESSID из тестовых запросов клиентов. Это может позволить искать на сайтах уникальные имена, такие как WiGLE, для определения известных местоположений и, предположительно, домашнего адреса владельца.

Заключение

В целом объем данных, полученных при мониторинге беспроводных частот, был ошеломляющим — даже в сельской местности. Однако путем нормализации и сортировки этой информации удалось успешно отслеживать перемещения устройств!

Сопоставление этих данных с другими элементами управления, такими как домашние камеры безопасности, предоставило простой способ получить дополнительную информацию о инициированных событиях:

Ботанические заметки 🤓

До сих пор экспериментировались только беспроводные частоты 2,4 ГГц и 5 ГГц. Включение дополнительных сигналов ближнего действия, таких как Bluetooth, может обеспечить альтернативные точки данных и повысить точность отслеживания устройств.

Для тех, кто все еще задается вопросом «почему не Kismet?»:

  • У меня были опасения по поводу размера базы данных, когда я пытался создать полупостоянное домашнее решение, работающее в течение продолжительных периодов времени.
  • Я провел время, играя с kismet_logging.conf, чтобы уменьшить размер, и попытался перезапустить программу, чтобы инициировать новую базу данных .kismet. Тем не менее, я никогда не мог получить достаточно маленький размер файла и столкнулся с проблемами беспроводной карты при постоянном сбросе демона Kismet.
  • Наконец, и самое главное, у меня не хватило времени 😫. Если я продолжу разработку с SignalSpy, я хочу больше узнать об удивительном сборе данных Kismet и совместимости по умолчанию с Bluetooth, GPS и многим другим!

Спасибо за прочтение! Не стесняйтесь подключаться и обращаться с любыми вопросами!