
Спуфинг геолокации WiFi с помощью ESP8266
Будет опубликовано 15 июня
SkyLift — это недорогое устройство для подмены геолокации. В настоящее время он использует ESP8266 для передачи WiFi Beacon Frames, чтобы эксплуатировать давнюю (2008 года) уязвимость в сервисах WiFi-геолокации.
Эта третья прототипная версия SkyLift была доработана во время веб-резиденции в Akademie Schloss Solitude и ZKM. Прочитайте интервью о проекте. Или соберите свой собственный по инструкциям ниже менее чем за $5.

SkyLift изначально был разработан в сотрудничестве с Surya Mattu для выставки «Assange room Welcome to Ecuador!» от !Mediengruppe Bitnik в Zoo Galerie в Нанте в 2016 году. Разработка этой обновлённой версии, V0.3, началась в ноябре 2016 года и была окончательно выпущена в мае 2017 года при поддержке веб-резиденции в Schloss Solitude. Эта версия содержит несколько улучшений по сравнению с исходной системой (SkyLift V0.1), в том числе:
"\x00"За информацией об оригинальном SkyLift (V0.1) обращайтесь по адресу https://ahprojects.com/notebook/2016/skylift-geolocation/
SkyLift — это проект с открытым исходным кодом, поддерживаемый Adam Harvey, который исследует уязвимости безопасности и творческие возможности в потребительских сервисах геолокации для смартфонов.
Если вы заинтересованы в получении готового и полностью рабочего устройства, добавьте себя в мой список рассылки на https://undisclosed.cc/.
git clone https://github.com/adamhrv/skylift/arduino/skylift_v03_embassy" загрузите скетч "skylift_v03_embassy.ino"Что вам понадобится:
С OLED-дисплеем (опционально):
И OLED-дисплей, и ESP8266 NodeMCU можно купить примерно за полцены на eBay, если вы готовы подождать доставку 1–2 недели. ESP8266 можно найти всего за $3.
Arduino/test_single_beacon_frameArduino/test_oled_screenArduino/skylift_v03_embassyСоветы по улучшению производительности:
Если вы находитесь в помещении без других WiFi-маршрутизаторов, и SkyLift не работает, пожалуйста, создайте отчёт об ошибке и включите как можно больше деталей:
Вы можете создать собственные данные о местоположении SkyLift с помощью iOS, OSX или API Wigle.net. (Процессы для Android и Linux пока не документированы).
1A) Сканирование WiFi-сетей в OSX
python utils/osx_scan_to_json.py -o data/json/my_osx_scan.json
1B) Сканирование WiFi-сетей в iOS
Используйте бесплатное приложение AirPort Utility и включите "Wi-Fi Scanner" в Settings > AirPort Utility. Выполните WiFi-сканирование и сохраните его в синхронизированные заметки или отправьте себе по электронной почте. Убедитесь, что перед CSV-данными есть 2 строки. Пример:
# Make your notes or add title her (saved as your_scan.txt))
SSID, BSS, RSSI, Channel, Time
"", "11:11:11:11:11:11", "-61", "44", "13:17:34"
"", "11:11:11:11:11:11", "-61", "44", "13:17:44"
"freewificonnect", "22:22:22:22:22:22", "-80", "11", "13:17:32"
"freewificonnect", "22:22:22:22:22:22", "-80", "11", "13:17:41"
Сохраните файл в "data/ios/your_scan.txt", а затем выполните:
python utils/ios_to_json.py -i data/ios/your_scan.txt -o data/json/your_scan.json
1C) Использование Wigle API
Зарегистрируйтесь на https://wigle.net, чтобы получить API Key и API Token (сейчас это бесплатно). Результаты с Wigle могут различаться или не работать. Их данные собираются краудсорсингом, не проверены и могут быть устаревшими. Для лучших результатов создайте собственное WiFi-сканирование на месте.
python utils/wigle_to_json.py --lat 37.484581 --lon -122.147921 --radius 3 -o data/json/wigle_test.json
2) Преобразование iOS (csv) в JSON
python utils/ios_to_json.py -i data/ios/your_scan.txt -o data/json/your_scan.json
3) Преобразование (любого) JSON для скетча Arduino
python utils/json_to_arduino.py -i data/ios/your_scan.json -o data/ino/your_scan.txt
Выходной текст будет выглядеть примерно так:
#define nn 2
char* ssids_str[nn] = {
"74:46:A0:33:00:01",
"74:46:A0:33:00:02"
};
byte bssids[nn][6] = {
{0x74, 0x46, 0xA0, 0x33, 0x00, 0x12},
{0x74, 0x46, 0xA0, 0x33, 0x00, 0x12}
};
char* ssids[nn] = {
"wifi_ssid",
"another_wifi_ssid"
};
#ifdef USE_SCREEN
byte channels[nn] = {6, 6};
#else
byte channels[nn] = {10, 11};
#endif
Затем сделайте копию "skylift_v03_embassy" и замените существующие WiFi-данные своими собственными.
Экспериментально: обратите внимание на два варианта каналов. Если вы используете скетч в автономном режиме (без экрана), возможно, вы захотите изменить каналы. Для использования SkyLift в большом помещении, похоже, лучше работают несколько повторителей на случайных каналах, а версия с экраном — на каналах 1, 6 и 11. Если вы используете только одно устройство, использование каналов 1, 6 и 11 вместе дало наилучшие результаты на данный момент.
Геолокационные службы — это широкий термин для совокупности технологий, используемых для определения географического местоположения смартфона. Четыре основные технологии, используемые для геолокации: (1) GPS, (2) сотовая триангуляция, (3) Bluetooth и (4) WiFi-позиционирование. В зависимости от того, какие из этих 4 сигналов доступны, смартфон попытается определить своё географическое местоположение с максимальной точностью и минимальным временем ожидания.
SkyLift использует эксплойт для WiFi-геолокационных служб, впервые обнаруженный в 2008 году швейцарским исследователем Srdjan Capkun из ETH Zurich, который продемонстрировал это. Несмотря на их раннее предупреждение в 2008 году, все крупные производители смартфонов продолжают использовать WiFi как основную технологию геолокации. Уязвимость всё ещё существовала в 2012 году, когда Bengt Sjölen и Gordan Savicic творчески использовали её в своём проекте 2012 года Packetbridge (<- хорошая документация).
С этой уязвимостью трудно бороться, потому что компании, занимающиеся WiFi-геолокацией, предполагают, что роутер каждого человека, включая домашний, является частью их коммерческого геолокационного продукта. Легально это или этично — этот вопрос должен обсуждаться более открыто.
Что точно известно и уже было доказано в 2008 году, так это то, что данные геолокации смартфона можно легко подделать, и им нельзя доверять. Тем не менее мы полагаемся на эту технологию во всё большем числе критически важных приложений. Например, изображение ниже показывает, как легко мне удалось обмануть сервис Apple "Find my Phone", заставив его думать, что моё устройство находится в посольстве Эквадора в Лондоне. (Изображение сделано при реально находящемся в Берлине устройстве; работает с настольным или мобильным устройством).
