08.12.2020 | Спуфинг Wi-Fi сетей для отправки поддельных сигналов геолокации на телефон |
Автор: Kody Во многих городских районах GPS работает не очень хорошо. Здания отражают GPS сигналы между собой, создавая помехи для телефонов, в результате чего большинство современных устройств определяют собственное местонахождения при помощи россыпи разных техник, включая близлежащие Wi-Fi сети. Используя устройство SkyLift и микроконтроллер семейства ESP8266, можно сымитировать поддельные сети, и в итоге смартфон будет «думать», что находится в совершенно другом месте. Wi-Fi сети являются надежным способом определения местонахождения для устройств с ограниченным доступом к GPS. Злоумышленники могут эксплуатировать уязвимость, распространяя широковещательные сигналы, как будто исходящие от известных сетей. Эта техника не работает, если в рядом есть множество других Wi-Fi сетей или сильный GPS сигнал, но хорошо зарекомендовала себя в местах, где устройства вынуждены использовать систему aGPS. Как умные устройства определяют геолокацию Проблема определения местоположения не нова, и большинство умных устройств помимо GPS используют другие методы, как, например, сотовые вышки, которые всегда неподвижны и полезны для определения относительной геолокации. Поскольку спрос на быстрые GPS устройства начал расти, технология aGPS (или Assisted GPS) стала решением проблемы, связанной с замедленным получением сигнала, имеющим место быть при использовании традиционного GPS. Чтобы решить проблему определения местонахождения устройства со слабым или отсутствующим GPS сигналом, большинство смартфонов непрерывно фиксируют координаты близлежащих Wi-Fi сетей. Собираемые сведения добавляются в огромную базу данных обнаруженных сетей, геолоцированные множеством пользователей. Эта информация используется для определения местонахождения устройства на основе обнаруженных близлежащих Wi-Fi сетей. В общем-то, сей факт не должен удивлять того, кто знаком с вардрайвингом , поскольку проекты навроде Kismet существуют уже достаточно давно. Проект Wigle.net позволяет злоумышленникам загружать данные и определять, где находится каждая сеть, что упрощает задачу идентификации геолокации устройства, находящегося в районе сетей с известными координатами. В отличие от традиционного GPS в случае с aGPS устройства вызывает API для получения местонахождения на основе имени, MAC адреса и силы сигнала близлежащих Wi-Fi сетей на основе базы известных сетей с геотегами. Как происходит спуфинг aGPS Теперь, когда мы в общих чертах поняли, как работает aGPS, можно приступить к поиску способов спуфинга сигналов. Один из наиболее очевидных путей – найти район, где определение геолокации в основном происходит при помощи aGPS, а не традиционного GPS. Подобные места могут быть везде, где отсутствует прямая видимость неба. Например, глубоко внутри зданий или паркингов с отсутствующим GPS сигналом. В этих условиях смартфоны вынуждены использовать менее точные данные для определения геолокации, как, например, на основе близлежащих Wi-Fi сетей. Как только смартфон оказался в ситуации, когда нужно использовать aGPS, а не GPS, при помощи SkyLift мы можем распространять сигнальные Wi-Fi фреймы (beacon frame) с уже известной геолокацией с целью сбить устройство с толку. Эта схема будет работать только если рядом мало конкурирующих сетей, поскольку в плотной густонаселенном городском районе результаты могут быть как минимум непредсказуемыми из-за случайных перемещений, а как максимум – полностью провальными, когда рядом есть известные сети. Если мы находимся в правильном месте, когда телефоны вынуждены использовать aGPS для определения местонахождения, то можем выбрать специфические локации с целью спуфинга. Чтобы решить эту задачу можно либо пойти в нужное место и проанализировать Wi-Fi трафик, или использовать сервис Wigle.net для получения списка сетей в нужном месте для спуфинга, а затем скопировать детальную информацию об этих сетях. Что понадобится Чтобы следовать этому руководству вам понадобится микроконтроллер серии ESP8266. Подойдет всё, начиная от D1 Mini и заканчивая NodeMCU . Можно найти задешево в интернет-магазине. Для настройки MCU вам понадобится макетная плата , перемычки , кабель Micro-USB и Wi-Fi антенна с кабелем SMA . Я не буду рассматривать сборку MCU, поскольку эта тема уже рассматривалась ранее .
Кроме того, вам понадобится компьютер с подключением к интернету и установленной средой Arduino IDE, при помощи которой мы будем программировать микроконтроллер. Кабель Micro-USB используется для подключения ESP8266 к компьютеру с целью запитывания и программирования.
Шаг 1. Добавление платы с ESP8266 в Arduino Мы будем использовать бесплатную и кроссплатформенную среду Arduino IDE , в которой можно создавать быстрые прототипы. Arduino IDE (Integrated Development Environment; Интегрированная среда разработки) позволяет писать и загружать скрипты на устройства с микроконтроллерами, поддерживаемые Arduino. Вы можете скачать Arduino IDE с официального сайта . После установки нужно кликнуть на выпадающее меню Arduino и выбрать Preferences. Затем вставьте следующий URL в поле Additional Boards Manager URLs: http://arduino.esp8266.com/stable/package_esp8266com_index.json Далее нажмите OK, чтобы закрыть меню. Затем нужно добавить плату NodeMCU в Boards Manager. Кликните на Tools, наведите мышку на раздел Board, чтобы увидеть выпадающий список. Наверху кликните на Boards Manager и откройте окно, позволяющее добавить новые платы. Теперь всё готово к программированию микроконтроллера ESP8266. Подключите устройство компьютеру, после чего, когда вы кликните на Tools, должен быть автоматически выбран корректный порт. Выберите NodeMCU 1.0 или другое устройство, которое вы используете, в меню Board. Если у вас не очень качественный USB кабель, порт может не отображаться. Соответственно, если вы всё сделали правильно, но порт не показывается, в первую очередь следует попробовать другой кабель. В верхней части интерфейса есть две основные кнопки: галочка отвечает за компилирование и проверку кода на предмет ошибок, стрелка вправо – отправляет код на устройство. Шаг 2. Загрузка SkyLift После настройки Arduino IDE нужно скачать SkyLift, например, из репозитория на GitHub при помощи следующей команды: ~$ git clone https://github.com/adamhrv/skylift.git Переходим в директорию, куда был загружен SkyLift, и открываем проект в Arduino IDE. ~$ cd skylift ~$ cd skylift_demo/ ~$ open skylift_demo.ino Здесь есть конфигурационные файлы и основной скрипт. В этой статье мы не будем модифицировать файл. Если после подключения ESP8266 замигал LED индикатор, переходим к следующему шагу. Шаг 3. Загрузка кода на ESP8266 Пришло время загрузить код на ESP8266, который должен быть подключен через кабель Micro-USB к нашему компьютеру, где запущена среда Arduino IDE. Убедитесь, что выбрана правильная плата и порт настроен на правильный интерфейс, связанный с ESP8266. Как только все настройки будут выполнены, кликните на иконку в виде стрелки для загрузки кода на плату. После завершения вы должны увидеть открытые сети, находящиеся неподалеку. В нашем примере открытые сети отсылают сигналы, которые мы будем спуфить, поскольку эти сети известны и привязаны к штаб-квартире Facebook. Если смартфон окажется в условиях, когда для определения геолокации нужно пираться только на эти сигналы, мы можем сделать подмену, чтобы устройство думало, что находится у штаб-квартиры Facebook вместо своего реального местоположения. Шаг 4. Тестирование системы в полевых условиях После загрузки кода на устройство пришло время протестировать систему в полевых условиях. Вы можете воспользоваться приложением Wigle WiFi для поиска близлежащих сетей и мест, где остальные сети плохо доступны. Как только место со слабым сигналом GPS обнаружено, выключите гелокационные службы на вашем телефоне, а затем включите обратно. Когда ваш телефон попытается определить местонахождение, то сможет только принимать поддельные сигналы с устройства ESP8266, и в итоге на карте будет указаны координаты штаб-квартиры Facebook. Обнаруженное местоположение должно быть указано в фотографиях, сделанных с включенной геолокацией, предлагаться приложениям, использующую эту информацию и так далее до тех пор, пока вы не перестанете транслировать поддельные сигналы, или целевое устройство не получит сильный сигнал от спутника GPS или легитимной близлежащей сети с известными координатами. Заключение У смартфонов и других умных устройств есть много способов обнаружить местоположение, которые злоумышленники могут использовать для отправки поддельных сигналов. Эти сценарии реализуются везде, начиная от арт-проектов, в которых на устройство отсылается поддельный сигнал, и заканчивая бассейнами богатых и знаменитых и другими ситуациями, когда манипулирование координатами может быть полезно. Данная проблема имеет место быть не во всех случаях, однако следует быть сверх осторожным особенно внутри больших зданий и других территорий, где слабый GPS, и устройство вынуждено использовать легко подделываемые сигналы. Надеюсь, это руководство, посвященное aGPS и подделке сигналов при помощи устройства на базе микроконтроллера ESP8266, вам понравилось. По любым вопросам можете обращаться ко мне в твиттер @KodyKinzie . |
Проверить безопасность сайта