Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
skylift — ESP8266을 이용한 WiFi 지리적 위치 스푸핑 | Kitploit
도구/GitHubGitHub/awesome-pentest-gadgets/skylift
Embedded Systems SecurityWi-Fi AuditingExploitationWireless SecurityHardware & IoT SecurityRed Teaming
GitHubawesome-pentest-gadgets/skylift

skylift

ESP8266을 이용한 WiFi 지리적 위치 스푸핑

저장소 보기
836298년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

SkyLift V0.4

6월 15일에 게시될 예정입니다

  • python3
  • click
  • 사용하기 쉬운 CLI 파서 워크플로우
  • 타임스탬프 수정

SkyLift V0.3

SkyLift는 저비용 지리적 위치 스푸핑 장치입니다. 현재 ESP8266을 사용하여 WiFi 비콘 프레임(Beacon Frames)을 브로드캐스트함으로써 WiFi 지리적 위치 서비스의 오랜 기간(2008년) 존재해 온 취약점을 악용합니다.

SkyLift의 이 3번째 프로토타입 버전은 Akademie Schloss Solitude 및 ZKM과의 웹 레지던시 기간 동안 더욱 개발되었습니다. 프로젝트에 대한 인터뷰를 읽어보세요. 또는 아래 지침에 따라 $5 미만으로 직접 제작할 수 있습니다.

업데이트

  • 2017년 5월 13일: 베를린 Gruener Salon에서 열린 John Kiriakou(CIA 내부고발자)의 강연에서 가져온 새 스캔 추가

SkyLift는 원래 2016년 낭트의 Zoo Galerie에서 열린 !Mediengruppe Bitnik의 Assange 룸 "Welcome to Ecuador!" 쇼를 위해 Surya Mattu와 공동으로 개발되었습니다. 이 업데이트 버전(V0.3)의 개발은 2016년 11월에 시작되어 Schloss Solitude의 웹 레지던시 지원을 받아 2017년 5월에 최종 출시되었습니다. 이 버전은 초기 시스템(SkyLift V0.1)에 비해 다음과 같은 여러 가지 개선 사항을 포함합니다:

  • 제작 비용을 $50에서 약 $5로 절감
  • 핵심 기술 설정 시간을 수 시간에서 약 15분으로 단축
  • 사용자 조작 개선(USB 전원만 연결하면 됨)
  • 채널 호핑을 통한 성능 개선
  • 패킷 구조 개선(타임스탬프 간격 바이트 추가)
  • 숨겨진(null) SSID 옵션 "\x00" 추가
  • 사용자 지정 위치 생성을 위한 유틸리티 스크립트 추가
  • 기술을 단일 장치로 통합
  • 표시용 선택적 OLED 추가

원래 SkyLift(V0.1)에 대한 정보는 https://ahprojects.com/notebook/2016/skylift-geolocation/을 참조하세요.

SkyLift는 소비자용 스마트폰 지리적 위치 서비스의 보안 취약점과 창의적 활용 가능성을 연구하는 Adam Harvey가 유지 관리하는 오픈 소스 프로젝트입니다.

완성된 즉시 사용 가능한 장치를 구하려면 https://undisclosed.cc/에서 제 메일링 리스트에 가입하세요.

빠른 시작

  • ESP8266 NodeMCU 12 또는 12E 구매 | eBay (저렴함) 또는 Amazon.com (빠름)
  • git clone https://github.com/adamhrv/skylift/
  • "arduino/skylift_v03_embassy"에서 스케치 "skylift_v03_embassy.ino"를 업로드하세요.
  • 스마트폰의 WiFi 지리적 위치 서비스가 활성화되어 있는지 확인하세요.
  • ESP8266을 휴대폰에서 12m 이내에 배치하세요(혼잡한 WiFi 지역에서는 0.250.5m 이내).
  • 전체 설정 및 문제 해결 방법은 아래를 참조하세요.

설정

필요한 것:

  • Arduino 1.6.12+
  • ESP8266 NodeMCU 12 또는 12E | eBay, Amazon.com, Adafruit Huzzah
  • 프로그래밍용 USB 마이크로 케이블
  • 5V USB 배터리(선택 사항)

OLED 디스플레이 사용 시(선택 사항):

  • OLED 디스플레이 | eBay, Amazon.com
  • PCB 3x7cm(OLED 디스플레이 사용 시에만) | Amazon.com
  • 납땜 인두
  • OLED 라이브러리 Adafruit_SSD1306 라이브러리
  • ESP8266 라이브러리: "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
  • 납땜 후 헤더를 다듬기 위한 와이어 커터

OLED 디스플레이와 ESP8266 NodeMCU는 모두 배송을 1~2주 기다릴 의향이 있다면 eBay에서 약 절반 가격에 구매할 수 있습니다. ESP8266은 최저 $3까지도 가능합니다.

테스트 스크립트

WiFi 테스트

  • 최신 버전의 Arduino를 사용하고 있는지 확인하세요(빌드에는 1.6.12가 사용됨).
  • ESP8266 보드가 설치되어 있는지 확인하세요. 환경설정(Preferences) > 추가 보드(Additional Boards)에서 "http://arduino.esp8266.com/stable/package_esp8266com_index.json"을 추가하세요.
  • 도구(Tools) > 보드(Board)에서 "NodeMCU 0.9 (ESP12 Module)" 또는 12E를 선택하세요.
  • Arduino/test_single_beacon_frame 스케치로 테스트하세요.
  • WiFi 네트워크를 확인하세요. Network1이라는 이름이 채널 1에서 보여야 합니다.

OLED 화면 테스트

  • PCB 뒷면에서 OLED를 ESP8266에 배선하세요.
  • 낮은 프로파일을 위해 헤더의 검은 플라스틱을 제거하세요.
  • ESP8266 핀 D2를 OLED 핀 SDA에 연결하세요.
  • ESP8266 핀 D3를 OLED 핀 SCL에 연결하세요.
  • PWR(3.3V)에 연결하세요.
  • GND에 연결하세요.
  • Arduino/test_oled_screen 스케치를 업로드하세요.
  • "Scrolling Text Demo 123 456" 텍스트가 화면에 스크롤되어 나타나야 합니다.

에콰도르 대사관

에콰도르 대사관 위치로 SkyLift 테스트하기

  • Arduino/skylift_v03_embassy 스케치를 업로드하세요.
  • 휴대폰에서 WiFi 위치 서비스를 활성화했는지 확인하세요.
  • 활성 데이터 연결이 있는지 확인하세요(셀룰러 또는 WiFi. IP 주소는 중요하지 않음).
  • 선호하는 지도 애플리케이션(또는 위치를 사용하는 모든 앱)을 여세요.
  • 작동하지 않는다면 그 이유는 여러 가지가 있을 수 있습니다. 가장 가능성이 높은 것은 주변에 너무 많은 라우터가 있어서 WiFi 지리적 위치 API가 반환하는 신뢰도 점수(confidence score)를 간섭하기 때문입니다.
  • -60~-40dB의 네트워크가 여러 개 있다면 SkyLift가 새로운 지리적 위치를 반환할 가능성은 낮습니다.

성능 향상을 위한 팁:

  • 주변 WiFi 신호 수를 -80dB 미만의 네트워크 5개 미만으로 줄이세요.
  • 신호 강도가 -80dB 미만이라면 10개 이상의 네트워크에서도 여전히 작동해야 합니다.
  • NetSpot(무료 평가판)을 사용하여 주변 네트워크를 모니터링하고 가능하면 기존 WiFi 라우터에서 멀리 이동하세요.
  • 위성 기반 GPS 신호가 더 강한 창문에서 멀리 이동하세요.
  • 휴대폰이 ESP8266에 가깝게(혼잡한 WiFi 지역에서는 이상적으로 0.11m, 중간 밀도 WiFi 지역에서는 12m, 저밀도 WiFi 지역에서는 최대 10m) 그리고 주변 라우터에서 멀리 떨어져 있는지 확인하세요.
  • 10m 이상의 거리에서는 PCB 트레이스 안테나를 절단하고 SMA 커넥터를 납땜하여 +7dB 안테나나 WiFi 증폭기를 추가하거나, 더 간단하게는 여러 SkyLift 장치를 추가하여 리피터로 사용할 수 있습니다.
  • 금속 지붕과 구조물은 주변 WiFi 신호를 감쇠시킵니다.
  • 석고보드, 목재, 콘크리트는 WiFi를 투과시키므로 신호를 눈에 띄게 감쇠시키지 않습니다.
  • 약 65%가 물로 구성된 사람들은 천연 WiFi 흡수체입니다(2.4GHz는 물의 공진 주파수). 혼잡한 환경에서 주변 WiFi 신호를 약화시켜 혼잡한 지역에서 지리적 위치 스푸핑 성능을 향상시킵니다.
  • 최적의 성능을 위한 권장 장소는 GPS, 셀룰러 및 WiFi 신호가 감소된 벙커, 바 또는 기타 지역입니다. 하지만 어디에서든 자유롭게 실험해 보세요.
  • 지금까지 가장 좋은 결과는 La Gaîté Lyrique의 지하실, 콘서트장, 그리고 (물론) 통제된 테스트 환경에서 얻었습니다.
  • 참고: SkyLift는 보장된 솔루션이 아닙니다. 주변에 경쟁하는 WiFi 신호가 너무 많으면 위치 서비스 API는 낮은 신뢰도 점수를 반환하고 셀룰러 삼각 측량 또는 위성 기반 GPS로 대체됩니다.

다른 WiFi 라우터가 없는 실내에 있는데도 SkyLift가 작동하지 않으면 가능한 한 많은 세부 정보를 포함하여 이슈 보고서를 제출해 주세요:

  • NetSpot 또는 다른 앱의 스캔 결과
  • ESP8266에서 사용하는 채널
  • SkyLift에서 스마트폰까지의 거리
  • 휴대폰에 활성 데이터 연결이 있는지 여부
  • 사용 가능한 데이터 연결(LTE, 4G, 3G, EDGE, GPRS)
  • iOS 또는 Android 여부와, 괜찮으시다면 휴대폰 모델

사용자 지정 위치

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 데이터를 사용자 지정 데이터로 교체하세요.

도구 다운로드