
ESP8266을 이용한 WiFi 지리적 위치 스푸핑
6월 15일에 게시될 예정입니다
SkyLift는 저비용 지리적 위치 스푸핑 장치입니다. 현재 ESP8266을 사용하여 WiFi 비콘 프레임(Beacon Frames)을 브로드캐스트함으로써 WiFi 지리적 위치 서비스의 오랜 기간(2008년) 존재해 온 취약점을 악용합니다.
SkyLift의 이 3번째 프로토타입 버전은 Akademie Schloss Solitude 및 ZKM과의 웹 레지던시 기간 동안 더욱 개발되었습니다. 프로젝트에 대한 인터뷰를 읽어보세요. 또는 아래 지침에 따라 $5 미만으로 직접 제작할 수 있습니다.

SkyLift는 원래 2016년 낭트의 Zoo Galerie에서 열린 !Mediengruppe Bitnik의 Assange 룸 "Welcome to Ecuador!" 쇼를 위해 Surya Mattu와 공동으로 개발되었습니다. 이 업데이트 버전(V0.3)의 개발은 2016년 11월에 시작되어 Schloss Solitude의 웹 레지던시 지원을 받아 2017년 5월에 최종 출시되었습니다. 이 버전은 초기 시스템(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는 모두 배송을 1~2주 기다릴 의향이 있다면 eBay에서 약 절반 가격에 구매할 수 있습니다. ESP8266은 최저 $3까지도 가능합니다.
Arduino/test_single_beacon_frame 스케치로 테스트하세요.Arduino/test_oled_screen 스케치를 업로드하세요.Arduino/skylift_v03_embassy 스케치를 업로드하세요.성능 향상을 위한 팁:
다른 WiFi 라우터가 없는 실내에 있는데도 SkyLift가 작동하지 않으면 가능한 한 많은 세부 정보를 포함하여 이슈 보고서를 제출해 주세요:
iOS, OSX 또는 Wigle.net API를 사용하여 나만의 SkyLift 위치 데이터를 만들 수 있습니다. (Android 및 Linux 프로세스는 아직 문서화되지 않음).
1A) OSX에서 WiFi 네트워크 스캔
python utils/osx_scan_to_json.py -o data/json/my_osx_scan.json
1B) iOS에서 WiFi 네트워크 스캔
무료 AirPort Utility 앱을 사용하고 설정(Settings) > AirPort Utility에서 "Wi-Fi 스캐너"를 활성화하세요. WiFi 스캔을 수행하고 동기화된 메모(Notes)에 저장하거나 자신에게 이메일로 보내세요. 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 사용
API 키와 API 토큰을 얻으려면 https://wigle.net에 등록하세요(현재 무료). 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을 모두 함께 사용하는 것이 지금까지 가장 좋은 결과를 제공했습니다.
*지리적 위치 서비스(Geolocation Services)*는 스마트폰의 지리적 위치를 결정하는 데 사용되는 기술 모음을 가리키는 광범위한 용어입니다. 지리적 위치 서비스에 사용되는 4가지 주요 기술은 (1) GPS, (2) 셀룰러 삼각 측량, (3) Bluetooth, (4) WiFi 포지셔닝입니다. 이 4가지 신호 중 어떤 것이 사용 가능한지에 따라 스마트폰은 가장 높은 정확도와 가장 짧은 대기 시간으로 지리적 위치를 결정하려고 시도합니다.
SkyLift는 2008년 ETH 취리히의 스위스 연구원 Srdjan Capkun이 처음 발견한 WiFi 지리적 위치 서비스의 *익스플로잇(exploit)*을 활용합니다. 2008년의 조기 경고에도 불구하고 모든 주요 스마트폰 회사는 WiFi를 핵심 지리적 위치 기술로 계속 통합했습니다. 이 취약점은 2012년 Bengt Sjölen과 Gordan Savicic가 그들의 2012년 프로젝트 Packetbridge(<- 훌륭한 문서)에서 창의적으로 악용했을 때에도 여전히 존재했습니다.
이 취약점은 다루기 어렵습니다. WiFi 지리적 위치 회사들이 집 안의 라우터를 포함한 모든 사람의 WiFi 라우터가 자신들의 상업용 지리적 위치 제품의 일부라고 가정하기 때문입니다. 이것이 합법적인지 윤리적인지 여부는 더 공개적으로 논의되어야 합니다.
확실하고 2008년에 이미 입증된 것은 스마트폰 지리적 위치 데이터가 쉽게 위조될 수 있으므로 신뢰해서는 안 된다는 것입니다. 그런데도 우리는 점점 더 많은 중요한 애플리케이션에서 이 기술에 의존하고 있습니다. 예를 들어, 아래 이미지는 제가 Apple의 나의 iPhone 찾기(Find my Phone) 서비스를 속여 제 기기가 런던의 에콰도르 대사관에 있는 것으로 인식하게 하는 것이 얼마나 쉬운지 보여줍니다. (기기는 실제로 베를린에 있었으며, 데스크톱 또는 모바일 기기에서 작동).
