苹果设备有一个出色的空投功能——它是为在设备之间发送数据而设计的。 在这种情况下,不需要对设备进行设置或初步配对;只需单击两次即可开箱即用。 通过 Wi-Fi 的附加组件用于传输数据,因此数据传输速度非常快。 同时,利用一些技巧,你不仅可以发送文件,还可以查出与你在同一地铁车厢的人的电话号码。
去年,我一直在使用此功能在上班途中、公共交通上和公共餐饮场所结识有趣的人。 平均而言,我每天都能结识几个新朋友,有时我会在一个新朋友的陪伴下离开地铁。
空投是如何工作的?
AirDrop 是一种用于在对等网络中传输文件的协议。 它既可以在常规本地网络上工作,也可以在任何 Apple 设备之间通过无线方式工作。 我们将分析最后一种情况,即两个设备没有连接到公共网络,而只是位于附近,例如,两个拿着手机的人在地铁车厢内旅行,并且没有连接到公共 Wi-Fi。
通过 AirDrop 传输的第一阶段是发送 BLE 数据包
为了通过 AirDrop 发起数据传输,发起者的手机会发送一个 BLE 广播数据包,其中包含有关 iCloud 帐户和发起者设备所有者的电话号码的哈希信息,并建议通过 AWDL(Apple Wireless Direct Link)建立连接) 协议,例如 Wi-Fi。来自 Android 世界的 Fi Direct。 这个BLE数据包的结构非常有趣,我们将进一步分析它。
在接收方,AirDrop 可以处于三种状态:
- 已关闭 - 根本不会被检测到
- 仅适用于联系人 — 仅接受来自地址簿中联系人的文件。 在这种情况下,联系人被认为是 icloud 帐户链接到的电话号码或电子邮件。 此处链接帐户的逻辑与 iMessages 信使的逻辑相同。
- 所有 - 每个人都可以看到手机
AirDrop 隐私设置。 默认状态设置为“对于联系人”。
根据您的隐私设置,手机将继续通过 AWDL 建立连接或简单地忽略 BLE 数据包。 如果 AirDrop 设置为“适合所有人”,那么下一步设备将通过 AWDL 相互连接,在它们之间创建 IPv6 网络,其中 AirDrop 将作为常规应用程序协议使用 mDNS 通过标准 IP 协议工作。
对于实验,您可以观看 AWDL 在 MacBook 上的工作原理。 该协议下的所有交换都通过接口进行 awdl0,可以使用 Wireshark 或 tcpdump 轻松捕获。
在这个阶段我们知道三个实体:
低功耗蓝牙 (BLE) 封装 - 此数据包包含电话根据其决定发起者是否在其联系人列表中的数据。
Apple 无线直连 (AWDL) — Apple 的 Wi-Fi Direct 专有替代品,如果通过 BLE 通信成功则激活。
空投 - 使用 mDNS、HTTP 等在常规 IP 网络中运行的应用程序协议。 可以在任何以太网网络中工作。
BLE数据包结构
看起来这个 BLE 数据包仅从发起者到接收者发送一次,然后仅通过 AWDL 进行交换。 实际上,AWDL 连接的寿命非常短,只有几分钟或更短。 因此,如果文件的接收者想要回复您,他也会充当发起者并发送 BLE 数据包。
接收端的电话如何知道发起者的号码/电子邮件是否在其联系人列表中? 当我知道答案时,我感到非常惊讶: 发起者以 sha256 哈希形式发送他的号码和电子邮件,但不是全部,只是前3个字节。
来自 AirDrop 启动器的 BLE 数据包的结构。 使用电话号码和电子邮件的哈希值,响应者可以了解发起者是否在他的联系人列表中。
例如,如果您的 Apple 帐户(又名 iCloud、iMessages)链接到号码 +79251234567,则其哈希值将按如下方式计算:
echo -n "+79251234567" | shasum -a 256
07de58621e5d274f5844b6663a918a94cfd0502222ec2adee0ae1aed148def36
结果,BLE数据包中的值就会飞走 07de58 获取电话号码。 这似乎还不够,但通常这三个字节足以找出真实的电话号码。
同样重要的是要记住,AirDrop 隐私设置不会影响 BLE 数据包中的数据。 即使设置了“对于所有人”设置,电话号码的哈希值也将包含在其中。 此外,当打开共享窗口以及输入 Wi-Fi 网络密码时,还会发送带有电话号码哈希值的 BLE 数据包。
Apple Bleee 研究发布了现成的 Python 脚本,用于在 BLE 包中自动进行数据分析。 我强烈建议您查看研究并尝试这些程序,那里有很多有趣的东西。
AWDL(苹果无线直连)
AWDL 是 Apple 专有的常规 Wi-Fi 附加组件,可实现 Wi-Fi Direct 等功能。 我不完全知道它是如何工作的,有一种特殊的方式来宣布和协调渠道,而且它只适用于专有的苹果驱动程序。 也就是说,只有 MacBook/iPhone 可以通过 AWDL 连接。
可悲的 Android 手机用户仍然只是梦想着能够正常工作的 Wi-Fi Direct 功能。
但不久前,那些来自
此外,这些人从头开始用 Python 编写了 AirDrop 协议的实现,称为
如何通过 AirDrop 卷起
通过 AirDrop 卷起的典型情况
无聊的理论已经够多了,是时候开始实践了。 因此,您已配备了所有必要的设备,并准备好继续前进并使用高科技卷起球。
首先你需要记住要点:
- AirDrop 仅在手机解锁时才起作用 – 最好目标是不断地看手机。 这种情况最常发生在无聊的地方,例如地铁里。
- 需要时间 — 通常,发送的第 3-5 张图像会发生积极的转化,因此您需要在一个地方至少有 5 分钟的安静时间。 我认为,当您同意通过 AirDrop 继续在 Messenger 中进行交流时,即是积极的转变。 这很难即时实施,因为并不清楚谁接受了你的有效负载,而且很可能你会在就某些事情达成一致之前先热身。
- 个性化创意效果更佳 — 我将您通过 AirDrop 发送的媒体内容称为有效负载。 仅仅一张带有迷因的图片很可能不会有任何结果;内容应该与情况相关,并有明确的行动号召。
经典方法——一部手机
适合所有拥有 iPhone 的人,除了社交技能之外不需要任何特殊技能。 我们将 AirDrop 切换为“所有人”模式,然后前往地铁。 在正常的一天(自我隔离之前),在莫斯科地铁车厢里,我观察到这样的事情:
目标列表
正如您所看到的,几乎所有手机都会广播所有者的姓名,通过它我们可以轻松确定他的性别并准备适当的有效负载。
有效载荷
正如我上面所写,独特的有效负载效果更好。 理想情况下,图片应注明所有者的姓名。 以前,我必须使用笔记应用程序中的图形编辑器和某种移动 Photoshop 存根来塑造创造力。 结果等需要的图画出来的时候,就已经要下车了。
我的朋友安雅
向机器人发送一行文本就足够了,它会以图像的形式生成该文本,该图像与 AirDrop 窗口中预览的宽高比完全匹配。 您可以通过按按钮选择图片中的角色。 您还可以选择将 Telegram 登录名添加到角落的图片中。
有效载荷生成器
最糟糕的是,受害者的屏幕上立即显示了图片,而没有任何操作。 您甚至不必单击“接受”。 你可以看到装载有效载荷后脸上的即时反应。 不幸的是,从 iOS 13 开始,屏幕上不再显示陌生联系人的照片。 这是之前的样子:
iOS 上交付的有效负载 ≤12
现在,不再显示预览,而是仅显示发件人设备的名称。 因此,通过姓名联系 iOS ≥13 的受害者的唯一方法是在设备的设置中进行设置,例如拨打电话“Yulia,你好”。 提示:您可以在设备名称中使用表情符号。 当然,这种方法不像图片那样鲜艳,但它大大增加了点击“接受”按钮的机会。
对动作的进一步描述超出了技术文章的范围,仅取决于您的想象力、即兴创作和幽默。 我只能说那些加入这个游戏并开始用图片回复你或发短信的人通常都是非常开朗、开放和有趣的人。 那些看完图片后根本不回应,或者更糟的是,干脆拒绝该消息的人通常是无聊的势利小人和正经人。 恐惧因素也常常发挥作用:脆弱、胆怯的人害怕与如此傲慢的匿名陌生人互动。
自动拣选机
如果您懒得手动生成和发送有效负载,并且希望使该过程自动化,您可以制作一个自动语音拾取机,它在后台通过 AirDrop 将图片发送给范围内的每个人。 我们将使用树莓派零作为硬件平台,但是任何装有Linux的计算机都可以,最主要的是Wi-Fi卡支持监听模式和数据包注入。
基于树莓派零 w + UPS Lite 电池护罩通过空投发送扬声器
有针对越狱iPhone的AirDrop洪水程序,它们比树莓派上的开放版本运行更稳定
在树莓派上设置 OWL 的详细描述位于
重要的是要记住,只有在收到 BLE 数据包后,才会为患者激活 Airdrop(或更确切地说 AWDL)。 因此,我们必须每隔几秒发送一次。 这可以使用实用程序来完成 000000000000000001123412341234123400
.
一旦你有了一个可以工作的 OWL 守护进程,你就可以启动我的 fork flooder.py
,给大家发了一张图片 kak_dela.jpeg
.
根据我的观察,树莓派零w在监听模式下不稳定。 Flooder 活动运行约 20 分钟后,Wi-Fi 子系统崩溃。 问题是作者描述的
普夫纳戈奇 ,并且可能是由过热引起的。 需要提供看门狗或者使用更稳定的硬件
Maniacello 模式 - 我知道你的号码
如果你想让自己表现得像个不合格的疯子,并永远阻止继续与你交流的愿望,你可以尝试找出附近人的电话号码。
正如我们之前了解到的,发起方发送的 BLE 数据包包含 sha256 电话号码的前三个字节。 当受害者点击“共享”按钮并开始扫描空投设备或在输入字段中点击新网络的 Wi-Fi 密码时,可以捕获此哈希值(通过这种方式,Apple 会寻找您可以请求的范围内的朋友)网络密码)。
您需要以某种方式触发来自受害者的哈希消息并捕获它。 我正在使用存储库中的实用程序
图标 Х 意味着带有电话哈希值的数据包被捕获。
他们的解析器有时会崩溃,但大多数情况下它都能工作。 我不会完全复述该漏洞的本质,因为Apple Blee的作者已经详细分析了该漏洞,所以我只会描述我的经历。 我只想说我在 CSR 8510 芯片上使用 USB 蓝牙适配器,因为它对我来说比 MacBook 内置并插入虚拟机的蓝牙适配器稳定得多。
因此,我们从受害者的手机中捕获了哈希值,并从电话号码的哈希值中收到了令人垂涎的三个字节。
使用该实用程序截获带有电话号码哈希值的 BLE 数据包
我们知道,在俄罗斯,所有手机号码均以代码 +79 开头,并且受害者的手机很可能具有相同的代码。 事实证明,我们有从+79000000000到+79999999999的数字范围,大约有十亿个数字。
为了缩小范围,我们只取实际注册到任何运营商的代码,并丢弃其余的。 结果,范围变为一半大,大约有 XNUMX 亿个数字。
接下来,我们从所有数字生成 sha256,并仅保存每个哈希的前 3 个字节。 我们把这个列表输入到Sqlite数据库中,并建立索引来加快搜索速度。
数据库中的数据如下所示:
所有俄罗斯电话号码和哈希值的前三个字节
接下来,有了受害者的哈希值,我们就可以在数据库中搜索所有匹配项。 通常每个哈希有 15-30 个匹配项。
与受害者的哈希值匹配的所有数字
显然,并非所有这些数字都被实际使用。 我们可以通过HLR请求或隐形短信来切断不必要的信息。 30 个号码中,有 5 个是在网上找到的。
HLR 请求的结果。 网络编号以绿色突出显示。
我可以继续筛选这些数字,例如,将它们全部添加到 Telegram/Whatsapp 并查看头像,检查 Getcontact 等数据库。 但事实证明,一一拨打所有五个号码并观察受害者的电话何时响起会更容易。
目标已定位
所有
- 树莓派上的flooder很不稳定,需要尝试其他单板。
- 适用于 iOS 的原生洪水工具会好得多,但即使越狱,我也找不到适用于 iOS 12-13 的工具。
- floater.py 脚本非常愚蠢。 它可能会通过从接收者的设备名称中提取名称并删除“iPhone”一词来生成个性化图片。
- 可以通过仅检查该号码链接到 iMessage 的事实来优化确定电话号码的方法。 这很可能会给您带来接近 100% 的命中率。
结论
这是地铁里的完美娱乐。 有一种哇效应,好奇的人对此感兴趣。 有很多即兴创作,有非常有趣的案例。 事实证明,很多人都准备跟着玩,甚至取消计划,以便在地铁站下车喝咖啡。 在这一年里,我认识了很多人,并继续与他们中的一些人进行交流。
有时我关掉 Telegram 登录并玩得开心
来源: habr.com