Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/awesome-pentest-gadgets/skylift
嵌入式系统安全Wi-Fi审计漏洞利用无线安全硬件与物联网安全红队
GitHubawesome-pentest-gadgets/skylift

skylift

使用 ESP8266 进行 WiFi 地理位置欺骗

查看仓库
8368年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

SkyLift V0.4

将于 6 月 15 日发布

  • python3
  • click
  • 更易用的 CLI 解析器工作流程
  • 修复时间戳

SkyLift V0.3

SkyLift 是一款低成本的地理位置欺骗设备。它目前使用 ESP8266 广播 WiFi 信标帧,以利用 WiFi 地理位置服务中一个存在已久(2008 年)的漏洞。

这是 SkyLift 的第三个原型版本,在与 Akademie Schloss Solitude 和 ZKM 合作的网络驻留项目期间进一步开发。阅读关于该项目的访谈。或者按照下面的说明,用不到 5 美元自己制作一个。

更新

  • 2017年5月13日:新增来自 John Kiriakou(CIA 举报人)在柏林 Gruener Salon 演讲的新扫描数据

SkyLift 最初与 Surya Mattu 合作开发,用于 !Mediengruppe Bitnik 在 2016 年南特 Zoo Galerie 举办的 Assange 房间 "Welcome to Ecuador!" 展览。更新版本 V0.3 的开发始于 2016 年 11 月,最终于 2017 年 5 月在 Schloss Solitude 网络驻留项目的支持下发布。与初始系统(SkyLift V0.1)相比,该版本进行了多项改进,包括:

  • 制造成本从 50 美元降低到约 5 美元
  • 核心技术的设置时间从数小时缩短到约 15 分钟
  • 改进了用户操作(只需提供 USB 电源)
  • 通过跳频提高性能
  • 改进数据包结构(新增时间戳间隔字节)
  • 新增隐藏(空)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 放置在距离手机 1 - 2 米范围内(在 WiFi 拥挤区域为 0.25 - 0.5 米)
  • 完整设置和故障排除见下文

设置

你需要准备:

  • Arduino 1.6.12+
  • ESP8266 NodeMCU 12 或 12E | eBay、Amazon.com、Adafruit Huzzah
  • 用于编程的 USB Micro 数据线
  • 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 都可以在 eBay 上以大约半价购买,前提是你愿意等待 1-2 周的发货时间。ESP8266 的价格最低可至 3 美元。

测试脚本

测试 WiFi

  • 确保你使用的是较新版本的 Arduino(构建时使用的是 1.6.12)
  • 确保已安装 ESP8266 开发板。在"首选项 > 附加开发板"中添加 "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
  • 在"工具 > 开发板"中选择 "NodeMCU 0.9 (ESP12 Module)" 或 12E
  • 使用 Arduino/test_single_beacon_frame 草图进行测试
  • 检查你的 WiFi 网络。Network1 名称应该在第 1 信道上可见。

测试 OLED 屏幕

  • 将 OLED 连接到 PCB 背面的 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 返回的置信度评分。
  • 如果有多个网络的信号强度在 -60 至 -40dB 之间,SkyLift 不太可能返回新的地理位置

提高性能的技巧:

  • 将附近 WiFi 信号数量减少到 5 个以下,且强度低于 -80dB
  • 如果信号强度低于 -80dB,即使有 10 个以上的网络也应该仍然有效
  • 使用 NetSpot(免费试用版)监控附近网络,并在可能的情况下远离现有的 WiFi 路由器
  • 远离窗户,那里基于空间的 GPS 信号更强
  • 确保手机靠近 ESP8266(在 WiFi 繁忙区域理想距离为 0.1 - 1米,中等密度 WiFi 区域为 1-2米,低密度 WiFi 区域最远可达 10米),并远离附近的路由器
  • 对于超过 10 米的距离,你可以切断 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 应用,并在"设置 > AirPort Utility"中启用"Wi-Fi 扫描器"。进行一次 WiFi 扫描,将结果保存到已同步的备忘录中,或通过电子邮件发送给自己。确保 CSV 数据前有 2 行。示例:

root@kitploit:~
# 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

输出文本大致如下:

root@kitploit:~
#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 迄今已获得最佳效果。


关于 WiFi 地理位置服务

地理位置服务(Geolocation Services)是用于确定智能手机地理位置的各类技术的统称。地理位置服务使用的四种主要技术是:(1) GPS、(2) 蜂窝三角定位、(3) 蓝牙和 (4) WiFi 定位。根据这 4 种信号中哪些可用,智能手机将尝试以最高精度和最短等待时间来确定其地理位置。

SkyLift 利用了 WiFi 地理位置服务的一个漏洞,该漏洞最早由苏黎世联邦理工学院(ETH Zurich)的瑞士研究员 Srdjan Capkun 于 2008 年发现。尽管在 2008 年就已提出预警,所有主要的智能手机公司仍然继续将 WiFi 作为核心地理位置技术进行集成。该漏洞在 2012 年依然存在,当时 Bengt Sjölen 和 Gordan Savicic 在其 2012 年项目 Packetbridge(<- 很好的文档)中创造性地利用了它。

该漏洞难以解决,因为 WiFi 地理位置公司假设每个人的 WiFi 路由器(包括你家中的那台)都是其商业地理位置产品的一部分。这是否合法或合乎道德,应当进行更公开的辩论。

可以肯定的是(这一点在 2008 年就已得到证明),智能手机的地理位置数据很容易被伪造,不应被信任。然而,我们在越来越多的关键应用中依赖这项技术。例如,下图展示了我多么轻松地欺骗了苹果的"查找我的 iPhone"服务,使其认为我的设备位于伦敦的厄瓜多尔大使馆。(该图像实际是在柏林使用设备制作的,适用于桌面端或移动设备)。

厄瓜多尔大使馆中的查找我的 iPhone

延伸阅读

  • 信标帧概述
  • 信标帧数据包 更深入的解析
  • 欺骗 WiFi 地理位置服务 —— 发布在 Hackaday 上
  • 不要信任地理位置
  • 利用定向 WiFi 地理位置欺骗的设备到身份关联攻击
  • 关于使用 MDK3 + Raspberry Pi 的 SkyLift V0.1 博文

免责声明

  • Pokémon 玩家及其他人士,请自行承担使用风险
  • 目前仅用于研究和艺术目的
  • 使用前请查阅当地的 WiFi 法规
  • 持续广播一段时间后,BSSID 可能会被列入黑名单,甚至与另一个位置关联(这曾发生在 FACT Liverpool),这可能会向其他用户暴露你的位置,或被创造性地用于产生百慕大三角效应
  • SkyLift 不是 GPS 欺骗设备。对于 1.5GHz GPS 欺骗,请参阅使用低成本 TX SDR 欺骗 GPS 位置或软件定义的 GPS 信号模拟器
  • SkyLift 目前仅支持 2.4GHz 频段
  • SkyLift 不是万无一失的解决方案

SkyLift 展览记录:

  • Dark Technology Dark Web。Spektrum。柏林。2017 年。
  • How Much of This is Fiction。FACT。利物浦。2017 年。
  • Lanceurs d'alerte。La Gaîté Lyrique。巴黎。2017 年。
  • *Welcome to Ecuador。Zoo Galerie。2016 年。

I

SkyLift 致谢:

  • 原始概念与 !Mediengruppe Bitnik(德国)合作开发
  • SkyLift V0.1 与 Surya Mattu(美国)合作开发
  • 技术顾问:Julian Oliver(德国)
  • 研究协助和 Python 开发贡献:Leon Eckert(美国/德国)
  • "Welcome to Ecuador" 装置(2016 年)由 Aude Launay 为 Zoo Galerie 策展
  • ESP8266 Beacon Frame 概念验证代码来自 https://github.com/kripthor/WiFiBeaconJam
  • Schloss Solitude 网络驻留项目
下载工具