当前位置:首页 > 黑客技术 > 正文内容

黑客信息网:逆向智能门锁漏洞分析PART(二)

访客4年前 (2021-04-04)黑客技术1028

  点击蓝字

  关注我们

  逆向智能门锁漏洞分析PART(一)后续篇

  

  BTSNOOP (安卓蓝牙 HCI 记录器)

  最终,BTSNOOP必须成为我最大的发现之一,当想要捕捉一个完整的蓝牙会话之间的中央(手机)和外设(锁),我尝试各种方法来捕获我的OTA蓝牙会话,包括北欧的nRF嗅探器开发板nRF52840-DK,Sena的UD100加密狗,Ubertooth-One和德州仪器CC2540加密狗。所有这些方法的问题在于,由于蓝牙低功耗 (BLE)通道跳跃,它们无法跟踪连接。北欧nRF52840-DK在与 Wireshark 和北欧的 BLE 嗅探器插件一起使用时非常接近,但不幸的是,数据包捕获是在链路层(而不是主机控制器接口层),导致无法解析的加密数据。

  由于它不是在 HCI 层捕获的,这意味着它容易受到 CCM AES-128 BLE 安全密钥交换协议握手的影响。根据我的判断,这意味着如果nRF52840-DK在配对时没有嗅探,它将完全错过安全握手,导致数据包没有解密。

  重要提示:NRF 嗅探器缺点!

  如果 KeyWe 锁在配对后执行通道跃点,但在 App 传输第 1 个数据包之前,nRF 嗅探器将错过初始 CCM AES-128 BLE 安全密钥交换。这将导致加密的"无用的"数据包。这是 nRF 嗅探器无法遵循通道图的一个缺陷。注意:CCM AES-128 BLE 安全密钥交换是所有蓝牙低功耗 OTA 无线连接中的安全协议,可防止 MiM 窃听。

  CCM AES-128 BLE 安全密钥交换:

  (这是与 KeyWe 项目无关的一般信息)

  临时密钥在蓝牙配对过程中使用。短期密钥用作首次设备对加密连接的密钥。短期密钥使用三条信息生成:临时密钥和两个随机数,一个由从站生成,另一个由主项生成。

  使用短期密钥加密连接后,其他密钥将分发。长期密钥替换加密连接的短期密钥。身份解析密钥用于隐私。连接签名密钥用于身份验证。

  幸运的是,有一个极好的方法来捕捉蓝牙流量使用您的ANDROID设备!

  在 Android 手机上

  ?转到设置

  ?如果未启用开发人员选项,请现在启用

  ?转到开发人员选项

  ?启用选项 启用蓝牙 HCI 窥探日志

  ?执行需要捕获的操作(会话)

  ?禁用选项 启用蓝牙 HCI 窥探日志

  ?使用亚行(安卓调试桥)将文件复制到 PC

  ?感兴趣的文件btsnoop_hci.log

  注意:通常,我会保留启用蓝牙 HCI 窥探日志的选项,因为它在我的根测试手机上

  获取btsnoop_hci.log蓝牙会话的完整信息

  列出的android文件

  

  调出的btsnoop_hci日志文件

  

  重命名btsnoop_hci.log btsnoop_hci-07-31-20.log(与我的会话日期一起附加)

  

  WIRESHARK 分析

  将btsnoop_hci.log导入 Wireshark,我们可以看到OTA加密数据包交换。这与 Frida 函数十六进制提供了交叉引用用户会话活动的一种有价值的方法。从我在 KeyWe 锁研究期间生成的大量会话中,我可以确认这些数据包交换在每个会话中遵循相同的顺序,并且永远不会变化。在下面的示例中,我们可以看到由应用程序启动的打开密钥交换,然后是门。

  示例 1:应用程序发送应用程序编号 + 门返回门号 + 门发送 Hello

  

  有趣的注意:(在上面的截图):fb2b28c68b3f99c514b98fada4bf0b89 (传输 #2) 可以解密与通用键复制门号!

  这可以通过使用免费的在线 AES-128 密码工具在这里验证:

  输入加密数据包 fb2b28c68b3f99c514b98fada4bf0b89 并输入密钥(通用键) c88ff4150f4ac27934a6c5e6741efac 后单击解密

  

  使用在线 AES-128 密码工具是将 Wireshark 会话数据与 Frida 十六进制数据关联到的方便方法。接下来的几个屏幕截图显示了各种蓝牙 OTA 流量如何与应用程序的已知函数调用重合的示例。这为我们提供了大量有关程序流和执行的信息。

  示例 2:应用程序发送欢迎 + 门发送开始 + 应用程序和门两个交换门模式

  

  示例 3:APP 发送 eKey=门发送 eKey(身份验证和授权)

  

  示例 4:门状态=门时间集交换

  

  示例 5:门状态交换

  

  重放攻击

  如屏幕截图所示(上图),可以使用 btsnoop_hci.log(捕获)在 Wireshark 中分析整个蓝牙会话,并与使用 Frida 工具找到的数据并排进行比较。另请注意,通过无线发送的每个加密数据包都可以通过确定传输方向(应用程序到门或门到应用程序)并使用适当的密钥(AppKey 或门键)进行解密。

  现在,我们已经有了密钥,知道如何解释所有数据,我们可以尝试使用重放攻击来操作锁。同样,F-Secure在他们的Github中提供了一个不错的工具,他们称之为"open_from_pcap"。根据预先录制的 pcap 会话中的信息,此工具允许他们重放会话并操作锁。当然,当他们在脚本中重新编辑其脚本时,keys.py无害。然而,正如我前面所说,我最终能够对功能进行逆向工程。因此,通过将 F-Secure 的 REDACTED keys.py我自己的版本交换,它允许我在open_from_pcap上实现"btsnoop_hci.log"工具。

  使用我的 Sena UD100 蓝牙 USB 适配器,运行“open_from_pcap”脚本的第一个结果如下所示:

  

  显然,我修改keys.py正确确定了公钥、AppKey 和DoorKey,但在 eKeyVerify 阶段失败。

  在不深入地了解 F-Secure 的编码的情况下,open_from_pcap python 脚本在另一个脚本 (decode_from_pcap)中调用一个函数,该脚本据称会从会话 pcap 中检索 eKey。不幸的是,这对我来说并不适用。也许这与他们的 pcap 文件与我的 btsnoop_hci.log 文件的格式结构不同(从 Wireshark 会话中保存为 pcap)有关,不管怎样,我决定放弃破译他们的代码,而是修改了‘open_from_pcap’文件,使用我的硬编码 eKey,而不是尝试检索它。

  顺便说一下,F-Secure 人员需要从 pcap 检索密钥的原因是,当创建帐户时,eKey 会在线存储,并且不存在于任何 OTA 传输中。但是,通过使用 Frida,它可以通过将 javascript 注入 eKeyVerify 函数来检测,该函数提供返回值的十六进制(见下文)。

  

  正如您从上面的屏幕截图中看到的,作为测试的一部分,我决定删除我的(旧)KeyWe 帐户并创建一个(新)帐户。通过这样做,我也许能够确定从一个用户帐户到另一个用户帐户发生哪些更改,以及 eKey 是否可预测。从我所看到的,没有明显的可检测模式。eKey(也称为用户密码)是在所有者创建其帐户时生成的,因此在帐户设置期间,密钥是完全随机的,并且可能从用户密码派生。此外,当我创建新帐户时,我故意只更改了原始密码中的一个字符。此处意在说明,这可能有助于我确定 eKey 是否仅派生自用户密码。

  从上面的屏幕截图中,似乎很清楚的是,eKeyVerify 函数是由应用程序调用的,并且传递的参数是一个 6 字节的值 (eKey)。返回的值可以假定为由应用程序(使用 AppKey 加密)发送到门的修改结果 eKey。在不深入挖掘代码的情况下,我只能假设 6 字节值 (eKey) 提供了指向存储的实际(修改的) eKey 的链接。无论如何,这个6字节的eKey是完成重播会话所需的全部。

  将 eKey 硬编码到replay.py脚本中,导致以下重播会话:

  

  成功!!

  此重放是成功的,因为我能够获得eKey(用于身份验证和授权)从我扎根的手机使用Frida提取它。就目前情况,由于合法所有者的 eKey 无法以这种方式访问,因此此重放攻击无法在野外工作。同样,正如我前面所说,eKey不是传送OTA的。

  考虑以下代码段捕获我的手机的btsboop_hci.log和相应的 Frida 十六进制的 eKeyVerify 函数:

  

  Wireshark 捕获显示打开数据包传输(密钥交换、握手等)。密切关注此会话中的第 8 个数据包。它显示应用程序发送的加密数据包,其中包含修改后的 eKey 值。从 Frida 十六进制,另请注意,6 字节 eKey 值被枚举为修改后的 eKey 值的字节 (5:11)。

  根据我们学到的关于此数据包在传输前如何加密的知识,我们知道这将是一个使用 AppKey 作为密钥的 AES-128 密码。

  使用在线 AES-128 密码工具解密第 8 个 OTA 加密数据包:46402315a85a72e66e9671d0444b513af使用AppKey:e022c1193ebb3882efc9cf79b6e557d1 作为密钥, 正如我们所了解的,6 字节 eKey 值被枚举为解密修改的 eKey 值的字节 (5:11)。

  (见下文)

  

  这个小练习清楚地表明,如果我们可以在野外合法所有者的打开数据包交换的OTA捕获,我们将有我们需要的一切(包括他们的用户密码 + eKey)来危害他们的家庭安全,并解锁他们的门!

  总结

  我不得不承认,我花了大量的时间研究(按几个月的顺序)这个项目,主要是因为处理沉重的混淆的代码,但也由于学习曲线涉及学习任何新的工具。熟悉 Frida 工具及其许多功能和实现中有几个对我来说是这个项目的要点之一。此外,能够对 Android 应用程序进行逆向工程同样有益,同时意识到 F-Secure 通报发布以来已经一年一段时间了,供应商已经有足够的机会来减轻他们的影响。因此,我强烈同意F-Secure研究人员的发现,因为固件更新功能肯定会减轻他们的大量暴露,并且使用自定义(内部)加密算法一开始就不是非常好。

  结尾之际,我还要处理一些未完成的研究,这是OTA捕获我的非根个人电话和 KeyWe 锁之间的会话,以创建一个重放攻击,将在野外工作。无论如何,为了减轻他们的曝光率,我强烈建议 Guardtec KeyWe 智能锁的当前所有者尽快将移动应用程序升级到最新版本(本文撰写时的版本 2.1.0)。

  

  End

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/107516.html

分享给朋友:

“黑客信息网:逆向智能门锁漏洞分析PART(二)” 的相关文章

天猫双十一活动什么时候开始华流

以前提到双十一那都是光棍才过的节日,而现在双十一摇身一变成了全民购物狂欢节。在双十一期间以淘宝天猫为主的购物平台都会推出各种优惠活动以及满减折扣,可以算得上是全年最便宜的时候了。那么天猫双十一活动什么时候开始呢?下面就跟百思特小编来详细了解一下2020年天猫双十一开始时间吧!...

美团暗语「美团暗语2021」

 昨天,很多网友问小编美团暗语最好的方法是什么?有关美团暗语2021最好的方法是哪种?最新美团暗语2020?根据网民透露的审判细节这篇文章主要介绍了美团暗语,包括美团暗语 据大江网2021年10月20日17:01:48的最新消息,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全...

接单的黑客_可以找黑客黑美团吗

有在网络安全范畴中,猜测网络违法和歹意软件发展趋势好像现已成为了各大网络安全公司的传统了。 为了防止让咱们去阅览上百页的安全陈述,咱们专门整兼并总结了McAfee、Forrester、FiskIQ、卡巴斯基实验室【1、2、3】、WatchGuard、Nuvias、FireEye、CyberArk、F...

黑客了解,中国黑客越南网络apt,黑客网站密码破解工具

6.42 · hxxp[://]offlineearthquake[.]com/file//?id=&n=000 进程三:使命履行及实时数据剖析10.61 2019年6月19日,FireEye Endpoint Security设备上收到了缝隙检测警报。 违规应用程序被辨认为Microso...

威海海景房房价走势 - 山东威海海景房骗局

我是在乳山银滩买房的,多谢啦!可能是真实情况。 晚上夕阳衬着大海格外美丽,石岛房子要比银滩强的多。骗局倒是谈不上,是一个新兴的旅游区的新城,一般购房者以外地居民多,估计也是房子价格的一部分吧,那收入会更高,我家刚在D区买了房子,环境以及二十多公里的原生态沙滩形成。 但都在下面县级市的镇的郊区.听老妈...

窗帘价格算法 「窗帘怎么算米数」

我们应该了解市面上大致的窗帘行情,是体现家居生活的美观程度,窗帘成品高度+30公分,的外观,布以1:1点5来计算。计算宽幅:窗宽*倍数*单价=金额注:倍数一般指1:2或1:2点5或1。 只要把这个尺寸报给商家他就会给窗帘你,第一位算的是平面,窗帘宽度轨道价格=轨道每米的价格*窗帘宽度另外-30这样可...

评论列表

孤央枝桠
2年前 (2022-07-09)

许多功能和实现中有几个对我来说是这个项目的要点之一。此外,能够对 Android 应用程序进行逆向工程同样有益,同时意识到 F-Secure 通报发布以来已经一年一段时间了,供应商已经有足够的

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。