卡巴斯基实验室多年的网络威胁研究表明,任何可以访问互联网的设备都存在遭到黑客入侵的风险。近年来,我们看到了被黑客入侵的玩具、水壶、照相机、甚至是电熨斗,黑客似乎无处不在。但还有一块最后的阵地:用于动物们的“智能”设备,比如说用于监视它们的位置的追踪器。这些工具可以访问设备持有者的家庭网络和电话,以及他们宠物的位置。
这篇报告重点说明了用户和制造商可能存在的风险。其中,我们检查了几个追踪器潜在漏洞。我们选择了一些受到好评的流行模型来进行这项研究:
- Kippy Vita
- LINK AKC Smart Dog Collar
- Nuzzle Pet Activity and GPS Tracker
- TrackR bravo and pixel
- Tractive GPS Pet Tracker
- Weenect WE301
- Whistle 3 GPS Pet Tracker & Activity Monitor
使用的技术:蓝牙低能耗技术
研究中的四个追踪器都使用了蓝牙低能耗技术(BLE),而在很多情况下这种技术都可以看作是防护设备的一大弱点。让我们来仔细看看这种技术。BLE是在物联网设备中广泛使用的蓝牙节能规范,我们关注它的身份认证技术的缺陷、服务的可用性及它的Characteristics(可以理解为一个数据类型,它包括一个value和0至多个对次value的描述(descriptors))。
首先在身份认证方面,和使用PIN码连接对等设备的“经典型”蓝牙不同,BLE针对的是非对等设备,换句话说就是其中一个设备可以没有屏幕或键盘。因此,PIN码保护并不支持BLE,它的身份认证技术完全取决于设备的开发者,而经验表明,开发者经常忽视这一点。
我们感兴趣的第二点是它的服务的可用性、Characteristics和(descriptors)描述符。它们构成了BLE规范中设备之间数据传输的基础。正如我们所指出的,BLE服务于非对等设备,其中一个(连接的设备)通常是智能手机,而在以下这个例子中,另一个设备是一个跟踪器。两个设备连接以后,智能手机可以使用多种BLE服务,每一个服务可能都包含一个带有descriptors的Characteristics,而Characteristics和descriptors都可以用于数据传输。
因此,在BLE的情况下,在Characteristics和descriptors被用于读写之前进行身份预认证就成为了保障设备安全的有效方法。此外,如果身份预认证未通过,在连接后不久,中断连接也是一种很好的安全措施。在这种情况下,身份认证应基于一些攻击者无法接触到的加密方法——例如,数据的第一部分可以使用服务器端(而不是应用程序端)的特定密钥进行加密。或者通过例如内置的SIM卡这种附加的通讯渠道,来确认所连接设备的传输数据和MAC地址。
Kippy Vita
Kippy Vita追踪器通过其内置的SIM卡将GPS坐标传输到服务器,来将宠物的位置显示在移动应用程序中。跟踪器不会与智能手机“直接”连接。我们无法检测到设备本身是否出现任何问题,所以我们将关注点转向到了移动应用程序中。
如下图所示,与我们测试的任何其他应用程序不同,一切看起来都很不错:SSL Pinning已成功执行。另外,Android应用程序在将重要数据保存到自己的文件夹之前对其进行了加密。
我们检测到的唯一问题是Android应用程序传输到服务器的日志数据。这些数据可能包括用户的密码、登录信息,以及授权接口。
Kippy Vita应用程序带有用户登录和密码的输出
尽管并非所有的应用程序都可以读取日志(只有系统应用程序或具有超级用户权限的应用程序),但它仍然是一个关键的安全问题。
Registered CVE:CVE-2018-9916
Link AKC
Link AKC追踪器通过GPS监测宠物的位置,并通过内置的SIM卡传输其位置坐标。更重要的是,它可以直接通过BLE与所有者的手机进行连接,这意味着它始终准备好连接设备,这是一个不错的研究起点。
Link AKC令我们惊喜不已:开发者在保障智能手机的连接方面做了所有正确措施,所以我们没找到任何关键问题,这对于支持BLE的设备来说并不常见。
在智能手机连接设备到发现服务后,它应该在两个Characteristics和一个descriptors(用于通知跟踪器预期的更改)中启用通知(否则跟踪器断开链接)。之后,Link AKC准备好接收命令。它们应该包含了用户ID;如果用户没有使用跟踪器的权限,则不执行该命令。这种做法保证了用户对访问权的控制。即使使用从测试设备获得的ID,我们也无法让追踪器执行另一个智能手机发出的命令——看来跟踪器检查了智能手机的MAC地址。
但是,这个设备不能被定义为完全安全。在Android应用中,我们发现开发者忘记了禁用日志记录。因此,该应用程序将大量数据传输到logcat,其中包括:
- 该应用程序授权接口,如果截获则可将其用于登录服务并找出宠物的位置:
- 用户注册数据,包括姓名和电子邮件地址:
- 设备坐标:
从Android 4.1开始,只有一些具有超级用户权限的系统应用或应用程序可以读取其他程序的日志。将智能手机连接到计算机时也可以获得访问权限,但这需要启动Android开发者模式。
尽管存在这些限制,但仍然存会出现问题:即使几率很小,攻击者也可能获取数据以访问受害者的帐户。
更重要的是,Android应用程序不会验证服务器的HTTPS证书,从而将其暴露而遭受中间人(MITM)攻击。对于成功的攻击,攻击者只需要在智能手机上安装他们自己的证书(这非常简单),允许他们拦截所有传输的数据,包括用于帐户访问的密码和接口:
Android的Link AKC应用程序易受MITM攻击
授权接口也以未加密的形式存储在应用程序文件夹中,虽然需要超级用户权限来访问它,但它仍然不是存储重要数据的最佳位置。
验证接口以未加密的形式存储
RegisteredCVE:CVE-2018-7041
Nuzzle
就功能而言,Nuzzle和之前的追踪器一样:也是使用SIM卡传输宠物的GPS坐标,并可以通过BLE直接连接到智能手机。但就直接连接而言,Nuzzle的表现不如Link AKC:缺乏授权和访问控制意味着该设备可以连接任何智能手机。这让攻击者可以像设备所有者一样控制设备。例如,通过它可以打开灯泡(只有一个属性的值需要更改)来快速耗电。
一旦建立连接,攻击者就可以从设备接收数据。数据有两个Characteristics:一个包含遥测信息,包括设备的位置,另一个提供设备的状态信息(特别是温度和电池电量)。
更糟糕的是,连续读取遥测特性的数据会导致设备“被丢失”:为了节省电池电量,如果设备的数据信息已经通过BLE发送,则不会通过移动网络传输坐标。因此,仅通过使用智能手机连接到跟踪器就可以隐藏宠物的位置。
我们在更新设备固件的过程中发现了另一个安全漏洞。发现完整性控制很容易绕过。基本上这个固件由两个扩展名为DAT和BIN的文件组成。第一个包含有关固件的信息,包括完整性控制中使用的校验和(CRC16),第二个包含固件本身。只需更改DAT文件中的校验和就可以在跟踪器上安装篡改后的软件。
在Nuzzle固件中的AT命令
为了使设备瘫痪,我们甚至不需要分析固件,因为它并没有加密或者打包,所以我们只需要在十六进制编辑器中打开它,我们就可以找到AT命令和用于发送数据的主机和SIM卡。在主机中更改了几个字节后,更新了固件校验和,并将其上传到设备,就可以使跟踪器停止工作。
与Link AKC的情况一样,Android的Nuzzle应用程序不检查服务器证书,而且授权接口和用户电子邮件地址以未加密的形式存储在应用程序文件夹中。
未加密的授权令牌和用户电子邮件地址
Registered CVE: CVE-2018-7043 CVE-2018-7042 CVE-2018-7045 CVE-2018-7044
TrackR
这次研究中使用了两个TrackR设备:Bravo和Pixel。这些“小玩意儿”不同于以前的设备,因为它们的追踪范围限制在100米以内(如果它们的目的是追踪宠物的话),与其他模型不同,它们没有GPS模块或SIM卡,唯一的连接是通过BLE。他们主要被用来定位公寓周围的钥匙或者遥控器等。但是,开发者已经为这些设备配备了一个可选项,可以让他们跟踪某些物品的移动轨迹:跟踪器的位置可以通过其他带TrackR应用的用户智能手机进行传输。如果应用程序在智能手机上运行,它会将附近检测到的所有“小玩意儿”的数据和智能手机坐标一起传输到服务上。这其中存在的第一个缺陷:任何人都可以登录到移动应用程序并发送一个假坐标。
我们试图找出更多的问题,但事实证明,其中大部分问题已经被Rapid7的同事发现。虽然他们的研究是在一年多前发布的,但在撰写本文时,一些漏洞仍未修复。
因为这些设备在通过BLE连接时没有进行身份验证,所以它们也可对入侵者开放。例如,攻击者只需更改一个Characteristics的值即可轻松地连接和打开音频信号。这可以让攻击者在其拥有者执行或损坏跟踪器电池之前找到该宠物。
TrackR服务和属性结构
此外,Android上的TrackR应用程序不验证服务器证书,这意味着MITM攻击可能窃听密码,授权接口,用户电子邮件地址和设备坐标。
TrackR Android应用程序请求包含授权接口
好的一面是,TrackR不会将授权接口或密码存储在其自己的文件夹中,这是防护使用超级用户权限窃取数据的木马的有效方法。
Registered CVE: CVE-2018-7040 CVE-2016-6541
Tractive
与我们研究的大多数设备不同,Tractive跟踪器不通过自己的服务器直接与智能手机进行通信,这种方法足够安全,但我们在Android应用程序中仍检测到了一些小问题。首先,与其他情况一样,它不验证可用于MITM攻击的服务器证书。更重要的是,应用程序以未加密的形式存储授权接口:
以及宠物的移动数据:
Weenect WE301
这是另一个不直接与所有者的智能手机进行连接的跟踪器,它通过内置的SIM卡将宠物坐标传输到服务器。我们没有发现此跟踪器的任何安全问题,但在Android版本的应用程序中检测到类似于Tractive中的问题。
首先,它不防护MITM攻击,允许攻击者访问用户帐户或拦截地理信息。其次,身份验证数据以未加密的形式存储在应用程序文件夹中,这会将其暴露给设备上具有超级用户权限的木马。
Whistle 3
这是该研究中技术上最有意思的追踪者之一。它可以通过其内置的SIM或者Wi-Fi将GPS坐标传输到服务器(如果设备拥有者提供Wi-Fi网络密码),或者通过BLE直接传输到所有者的智能手机。
我们首先查看了Wi-Fi,并发现开发者已经注意到了连接的安全性:设备通过HTTPS传输小部分数据(即以加密形式)。
Wi-Fi数据传输使用HTTPS进行保护
接下来,我们检查了BLE连接并在其中发现了很多安全问题。首先是缺乏适当的身份验证。连接之后,设备等待执行一系列的动作(可以被描述为身份预认证),但这一系列的动作非常简单,第三方可以很容易地复制它。复制过程所需要的只是连接到设备;将两个Characteristics传输到WRITE_TYPE_NO_RESPONSE模式;请求更改传输数据(MTU)的大小;打开一个Characteristics的通知,并将某个数字传输到另一个Characteristics。
现在,跟踪器已准备好接收和执行不带有用户ID的命令,这意味着任何人都可以发送它们。例如,可以发送一个initiateSession命令,并且作为响应,该设备将发送未加密的一组数据,包括设备坐标。更重要的是,如果连续发送此命令,小工具将不会通过SIM卡发送位置数据,因为它会假定这些数据已通过BLE被“直接”接收到。因此,可以将跟踪器对其所有者隐藏起来。
还有一个问题:跟踪器在没有任何身份验证的情况下将数据传输到服务器。这意味着任何人都可以替代它,并改变其中的坐标。
该应用程序通过BLE传输从追踪器接收到的数据
Android上的Whistle 3应用程序使用HTTPS协议(这很好),但不验证服务器证书。
MITM攻击可以拦截用户数据
不仅如此,Whistle 3将用户数据以未加密的形式存储在自己的文件夹中,可通过具有超级用户权限的特洛伊木马将其泄露给盗用者。只有带身份验证的数据存储方法安全。
跟踪器从应用数据库中调整坐标
请注意,Whistle 3将数据写入logcat。如上所述,尽管某些具有超级用户权限的系统程序或应用程序才能读取其他应用程序的日志,但也无需将重要数据写入日志中。
Android应用程序可以记录用户和宠物数据(活动,电子邮件地址,姓名,所有者的电话号码)以及一个被使用的接口
Registered CVE: CVE-2018-8760 CVE-2018-8757 CVE-2018-8759 CVE-2018-9917
结论
GPS追踪器早已在很多领域得到成功应用,但使用追踪器追踪宠物的位置远远超出了传统的应用范围,因此需要升级新的“用户通信接口”和“训练”才能工作和提供云服务等。如果安全措施得不到妥善解决,用户数据可被入侵者访问,这将危害到用户和宠物。
研究结果:四个追踪器使用BLE技术与所有者的智能手机进行通信,但只有一个安全。其余的追踪器可以接收并执行任何人的命令。此外,只需要靠近跟踪器。就可以将它们禁用或隐藏
这次测试中只有一个的Android应用程序会验证其服务器的证书,而不是仅仅依赖系统。因此,他们很容易受到MITM攻击——入侵者可以通过“说服”受害者安装证书来拦截传输的数据。
发表评论
您还未登录,请先登录。
登录