尽管一般公众可能会将无人机想象成玩具或电影制片人使用的工具,但廉价的地理空间、数据收集和诊断技术的进步只会增加它们的受欢迎程度。如今,我们在许多行业和用例中看到无人机的身影,如制造业、农业和监视。考虑到现代无人机能够在超过 10 公里的范围内运行,并且高度超过 5 公里,操作员可以在设备执行任务时远离数英里之外。
无人机可能被部署用于远程或危险环境的视觉检查,使用高清摄像头,或与热成像等技术结合使用。其他可能与高精度定位和定位结合,用于测量、状态监测和检查、监视和搜救等情况。在这种关键应用中,所有相关方都对操作的安全性、安全性和尽可能管理风险都有利益。
正如系列的第一部分所介绍的,Nozomi Networks 实验室对 DJI Mavic 3 系列无人机中使用的基于 Wi-Fi 的 QuickTransfer Mode 协议进行了安全分析。该协议可快速将图像和视频检索到用户的移动设备上。研究的主要目的是揭示可能对无人机构成威胁或导致数据外泄的潜在漏洞。调查发现了总共九个需要用户交互(QuickTransfer Mode 激活)的漏洞。
第 1 部分解释了从无人机获取固件并解压缩的过程,本博客描述了我们对固件的分析,以及每个漏洞的重要性和潜在影响。这些漏洞有可能通过利用 QuickTransfer Mode Wi-Fi 协议促进未经授权的视频和图片外泄。
大疆检查了报告的漏洞并确定了受影响的无人机型号。他们解决了九个问题中的七个,认为剩下的两个问题不需要修复。因此,两个 CVE 被发布为“有争议”的状态。大疆为每个受影响的无人机型号发布了固件更新以解决确定的问题。
-
Mavic 3 Pro: v01.01.0300
-
Mavic 3: v01.00.1200
-
Mavic 3 经典版 v01.00.0500
-
Mavic 3 Enterprise v07.01.10.03
-
Matrice 300 v57.00.01.00
-
矩阵 M30 V07.01.0022
-
Mini 3 Pro v01.00.0620
服务分析和仿真
在获取并解压固件后,我们的第一步是分析初始化脚本(包括 init.rc 和所有导入的配置脚本),以识别无人机上运行的服务,构成潜在的攻击面。特别感兴趣的是那些外部暴露功能的服务(套接字连接,文件上传,HTTP API 等),因为它们为邻近攻击者(例如,利用 QuickTransfer Mode 的移动设备上的恶意应用程序)提供了可利用的攻击面。随后,进行了两种类型的分析:
-
静态分析:二进制文件的逆向工程
-
动态分析:运行时调试服务
鉴于 Mavic 3 固件是定制的 Android 构建,通过在经过精细调整的 Android 模拟器中执行目标二进制文件来实现动态分析。这种方法使得可以使用诸如 strace 和 gdb 等工具对值得注意的服务进行跟踪和分析。
Wi-Fi 连接
快速传输模式协议在无人机和移动设备之间创建了一个 Wi-Fi 连接。为了启动 Wi-Fi 会话,当无人机不在飞行时,无人机提供基于 WPA2 的接入点,移动设备通过 DJI Fly 应用程序访问。这代表了所有 DJI 无人机上的标准通信系统。图 1 显示了检测到的 DJI Mini 3 Pro 的接入点示例。
图 1. DJI Mini 3 Pro 暴露的 Wi-Fi 接入点。
连接密码由无人机生成,并通过蓝牙与移动设备安全交换。分析无人机的固件初始化脚本后,可以明显看到负责管理 WiFi 连接的服务是从位于/system/bin/dji_network 的二进制文件中执行的,并且在启动过程中启动(图 2)。
图 2. dji_network 服务配置。
在深入研究二进制代码时,可以看出,Wi-Fi 密码是在无人机初始启动期间随机生成的,并在此后保持不变。这一过程由 generatedefaultpasswd()函数实现,该函数调用 libc random()过程四次,如图 3 所示。
图 3. generatedefaultpassword() 函数。
图 3 显示了第一个漏洞,因为密码是使用十六进制字符集([0-9a-f])生成的 8 个字符字符串。使用 8 个字符的密码和十六进制字符集的 16 个字符,只有略多于 40 亿种可能的密码组合,对于今天的标准来说,这不足以被认为是安全的变化。事实上,这种密码组合数量可以很容易地通过 Hashcat 工具或类似工具以及 GPU 破解。通过对单个 Nvidia T4 GPU 进行快速实验,显示 Wi-Fi 密码可以在大约 2 小时内破解,最坏情况下约为 4 小时,如下所示。
图 4 和图 5 分别展示了对易受攻击的一款 DJI 无人机(在本例中为 DJI Mini Pro 3)进行破解尝试的攻击方案和结果。使用一台在云服务器实例上生成的单个 Nvidia T4 GPU,大约花费了 2 小时来破解密码。遭受攻击的无人机的 Wi-Fi 密码是 df46c50a。
图 4. 攻击 QuickTransfer 模式的 Wi-Fi 连接。
图 5. QuickTransfer Wi-Fi 密码破解。
分配给该漏洞的 CVE ID 是 CVE-2023-6951,CVSS 评分为 6.6(AV:A/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N – 中等)。通过利用这个问题,位于 Mavic 3 Wi-Fi 网络范围内的攻击者可以在未经授权的情况下与无人机建立连接。随后,攻击者可以与无人机互动,可能利用其他漏洞来危害其安全。
FTP 服务
在我们的研究中检查的攻击面之一是无人机上运行的 FTP 服务,允许访问加密的诊断数据而无需身份验证。通过在 Android 模拟器上运行服务进行 fuzzing,发现了一种持续的拒绝服务攻击,由一个格式错误的 SIZE 请求触发。纠正这个问题需要重新启动无人机设备以正确重新启动服务。
鉴于 FTP 服务仅用于诊断目的,其可用性可能不被认为具有很高的影响力,尽管为此漏洞分配了 CVE(CVE-2023-6950)和 CVSS 评分为 3.0(AV:A/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:L – 低),大疆选择不予解决。这一决定背后的理由是该服务仅用于诊断目的,仅提供对加密数据的访问。因此,该漏洞已被归类为“有争议”。
vtwo_sdk 服务
vtwosdk 守护程序服务是通过/system/bin/djivtwo_sdk 二进制文件实例化的。该服务可能用于维护目的,其作为攻击面的重要性源自以提升的特权(root)执行,如图 6 所示,并且在端口 10000 上监听 TCP 连接。
图 6. vtwo_sdk 服务配置。
这使其容易受到外部攻击,无论是来自于在手机上安装的恶意应用程序利用 QuickTransfer 模式,还是来自于连接到无人机 Wi-Fi 网络的入侵者(无论是否经过授权),利用先前描述的漏洞来获取随机生成的密码(CVE-2023-6951)。
该服务是建立在基于自定义 TLV 协议(Type-Length-Value)的 TCP 之上,用于处理外部输入命令。为了识别该协议中的漏洞,我们对其进行了在 Android 模拟器上的分析。为了探索潜在的安全问题,我们启动了一个简单的模糊测试活动,旨在揭示可能暴露安全漏洞的边缘情况。图 7 显示了在模糊测试活动期间在模拟器上运行的服务。
图 7. 在模糊测试期间检测到 vtwo_sdk 服务崩溃。
因此,我们确定了六次不同的崩溃,其中三次仅可用于拒绝服务攻击(CVE-2023-6948,CVE-2023-51452,CVE-2023-51453),这些崩溃是由 Android FORTIFY 安全功能强制执行的健全性检查引起的。对于这些漏洞,已分配了 CVSS 基础分数 3.0(AV:A/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:L – 低)。
剩下的三次崩溃包括两个越界写问题和一个数组索引越界漏洞。根据攻击者的熟练程度,这些基本操作可能导致任意代码执行或信息泄漏,最终导致无人机完全被攻破,这要归功于 vtwo_sdk 服务被授予的提升权限。
对于这三个漏洞(CVE-2023-51454,CVE-2023-51455,CVE-2023-51456),已分配了一个 CVSS 评分为 6.8(AV:A/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H – 中等)。
HTTP 服务
考虑到的最终攻击面是在端口 80 上运行的 HTTP 服务,可通过 QuickTransfer 连接的移动设备访问。在分析固件映像的 init 脚本时,确定了该服务是在二进制文件/system/bin/djihttpserver 中实现的。
通过对二进制文件的逆向工程,发现 HTTP 服务集成了一个未经身份验证的 API,可以扫描无人机的内存并从中下载图片和视频。DJI Fly 应用程序与无人机上的 HTTP 服务器之间缺乏身份验证,使 API 容易受到滥用,允许未经授权地从无人机中窃取媒体。
鉴于这些问题,一项关于缺失关键功能的身份验证漏洞已引起 DJI 的关注,以解决并确保此功能的安全性。
更详细地说,可以通过以下方式调用 HTTP API: v2?storage=[storage_id]&path=[file_path]
在哪里:
-
存储:选择 0 和 1 之间的一个选项,指定无人机的内部或外部(sdcard)存储器
-
文件路径:要下载的媒体文件的路径,相对于所选存储
由于生成的文件名在存储器上保存时具有标准格式(DCIM/100MEDIA/DJIxxxx.JPG 或 DCIM/100MEDIA/DJIxxxx.MP4,其中 xxxx 是递增数字),因此可能会猜测文件名并以未经授权的方式下载照片和视频(例如,使用 Python 脚本暴力破解文件名路径)。可以从无人机(192.168.2.1)中窃取数据的 HTTP 请求示例是:
GET/v2?storage=1&path=DCIM/100MEDIA/DJI_0005.JPG HTTP/1.1
Host:192.168.2.1:80
User-Agent:python-requests/2.28.1
Accept-Encoding:gzip, deflate
Accept:*/*
Connection:close
图 8 显示了在无人机静态 IP 地址(192.168.2.1)上发出的未经身份验证的请求成功请求文件 DJI_0005.JPG。
图 8. 通过未经身份验证的 HTTP 请求下载图像。
利用先前提到的与弱随机 Wi-Fi 密码生成相关的漏洞(CVE-2023-6951),攻击者可以连接到无人机并滥用此 API(图 9a)。此外,通过使用 QuickTransfer 在移动设备上安装的恶意应用程序可以在不需要任何权限的情况下从无人机中默默地导出图片和视频,除了互联网访问(用于执行 HTTP 请求)外,如图 9b 所示。
图 9. 通过 HTTP 进行数据外泄。
漏洞正式被确认为 CVE ID CVE-2023-6949,伴随着 CVSS 评分为 5.2(AV:A/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N – 中等)。然而,由于大疆未将其视为安全问题,其状态被标记为“有争议”。这一决定背后的理由在于认为纠正弱 Wi-Fi 密码生成(CVE-2023-6951)将消除远程攻击向量。此外,任何对移动设备的潜在妥协被视为用户的责任。
评估和管理风险
无人机的使用越来越普遍,用途多样。占据市场份额超过 90%的大疆公司是领先的供应商。鉴于他们的设备被广泛采用,尤其是在专业环境中,确保大疆无人机的安全至关重要。
我们强烈建议用户立即升级其设备到最新的固件版本,从而保护其数据免受可能利用 QuickTransfer Mode Wi-Fi 协议的九个已识别漏洞的潜在安全风险,这些漏洞有可能促使未经授权的视频和图片外泄。
组织经营任何类型的无人机也应考虑这些操作和相关应用可能受到网络攻击的影响。如果无人机内的功能受到损害,那么在特定操作期间风险暴露会发生什么变化?例如,在监视或监控工作期间,如果灯光可以打开或关闭会怎样?
对于提供将操作从一个操作员传递给另一个操作员等功能的设备,如果未经授权的操作员能够控制设备,可能会导致什么结果?在多个操作员操作多个无人机的情况下,这种情况可能会在操作过程中意外发生吗?
所有无人机操作员都必须考虑他们操作的位置,考虑到如果突然失控会如何改变风险概况是明智的,尤其是在规模上。在考虑数据隐私时,操作员应考虑如何管理与未经授权访问视频或图像相关的风险。最糟糕的情况可能是敏感镜头的外泄,这可能会危及更广泛的操作并导致风险概况意外改变。
无人机硬件、相关固件和软件,在评估和评估风险时,不应该是唯一的焦点。 无人机操作员环境中的其他设备、程序和流程可能容易受到攻击,从而暴露或扩大攻击面。 组织在评估无人机操作风险时必须考虑更广泛的基础设施。
同时,组织还应考虑第三方无人机的运营可能如何影响他们的业务和运营风险。我们已经看到机场运营因未经授权的无人机入侵而中断的例子。风险管理和安全领导者应考虑这种侵入将如何影响他们的运营,以及可能需要实施哪些缓解措施来控制和管理这些风险。
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与技术交流之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
如果你是一个车联网攻防的长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款。
5-20人 88元
20-50人 98元
50-100人 128元
原文始发于微信公众号(车联网攻防日记):【IoT安全】大疆御 3 无人机研究第 2 部分:漏洞分析