
انتحال الموقع الجغرافي عبر WiFi باستخدام ESP8266
سيُنشر في 15 يونيو
SkyLift هو جهاز منخفض التكلفة لانتحال الموقع الجغرافي. يستخدم حالياً ESP8266 لبث إطارات WiFi Beacon Frames لاستغلال ثغرة قديمة (منذ 2008) في خدمات تحديد الموقع الجغرافي عبر WiFi.
تم تطوير هذا الإصدار النموذجي الثالث من SkyLift بشكل إضافي خلال إقامة ويب مع Akademie Schloss Solitude وZKM. اقرأ مقابلة حول المشروع. أو اصنع نسختك الخاصة باتباع التعليمات أدناه بأقل من 5 دولارات.

طُوّر SkyLift في الأصل بالتعاون مع Surya Mattu لصالح !Mediengruppe Bitnik في غرفة أسانج ضمن معرض «Welcome to Ecuador!» في Zoo Galerie في نانت عام 2016. بدأ تطوير هذا الإصدار المحدّث، V0.3، في نوفمبر 2016 وتم إطلاقه أخيراً في مايو 2017 بدعم من إقامة ويب في Schloss Solitude. يُدخل هذا الإصدار عدة تحسينات على النظام الأولي (SkyLift V0.1)، بما في ذلك:
لمعلومات حول 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، فيرجى فتح تقرير مشكلة (issue report) وتضمين أكبر عدد ممكن من التفاصيل:
يمكنك إنشاء بيانات مواقع SkyLift الخاصة بك باستخدام iOS أو OSX أو Wigle.net API. (عمليات Android وLinux غير موثقة بعد).
1أ) مسح شبكات WiFi على OSX
python utils/osx_scan_to_json.py -o data/json/my_osx_scan.json
1ب) مسح شبكات WiFi على iOS
استخدم تطبيق AirPort Utility المجاني وفعّل "Wi-Fi Scanner" في Settings > AirPort Utility. قم بإجراء مسح WiFi واحفظه في ملاحظاتك المتزامنة أو أرسله إلى نفسك عبر البريد الإلكتروني. تأكد من وجود سطرين قبل بيانات CSV. مثال:
# 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
1ج) استخدام Wigle API
سجّل في https://wigle.net للحصول على API Key وAPI Token (وهو مجاني حالياً). النتائج مع Wigle قد تختلف أو قد لا تعمل. بياناتهم مأخوذة من المصادر الجماعية (crowdsourced) وغير موثقة وقد تكون قديمة. للحصول على أفضل النتائج، قم بإنشاء مسح 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. اعتماداً على أي من هذه الإشارات الأربع المتاحة، سيحاول الهاتف الذكي تحديد موقعه الجغرافي بأعلى دقة وأقصر وقت انتظار.
يستخدم SkyLift ثغرة (exploit) في خدمات تحديد الموقع الجغرافي عبر WiFi تم اكتشافها لأول مرة في عام 2008 من قبل الباحث السويسري Srdjan Capkun في ETH Zurich. وعلى الرغم من التحذير المبكر في 2008، واصلت جميع شركات الهواتف الذكية الكبرى دمج WiFi كتقنية أساسية لتحديد الموقع. استمرت الثغرة في الوجود حتى 2012 عندما استغلّها Bengt Sjölen وGordan Savicic بشكل إبداعي في مشروعهما Packetbridge عام 2012 (<- توثيق جيد).
من الصعب التعامل مع هذه الثغرة لأن شركات تحديد الموقع عبر WiFi تفترض أن جهاز توجيه WiFi لكل شخص، بما في ذلك الموجود داخل منزلك، هو جزء من منتجها التجاري لتحديد الموقع. سواء كان هذا قانونياً أو أخلاقياً أم لا، ينبغي أن يكون محل نقاش أكثر انفتاحاً.
ما هو مؤكد، وقد ثبت بالفعل في 2008، هو أن بيانات الموقع الجغرافي للهواتف الذكية يمكن تزويرها بسهولة ولا ينبغي الوثوق بها. ومع ذلك، نعتمد على هذه التقنية في عدد متزايد من التطبيقات الحرجة. على سبيل المثال، توضح الصورة أدناه مدى سهولة خداع خدمة Find my Phone من Apple لتعتقد أن جهازي موجود في السفارة الإكوادورية في لندن. (الصورة التُقطت والجهاز في الواقع في برلين، وتعمل مع أجهزة سطح المكتب أو الأجهزة المحمولة).

I