虽然公众可能认为无人机被电影制片人用作玩具或工具,但经济实惠的地理空间、数据收集和诊断技术的进步只会增加它们的受欢迎程度。如今,我们在许多行业和制造、农业和监控等用例中看到了无人机。考虑到现代无人机的工作范围超过 10 公里,上限超过 5 公里,操作员在执行任务时可能距离设备数英里。
无人机可以使用高清摄像机或与热视觉等技术结合使用,对远程或危险环境进行目视检查。其他可与高精度定位和定位相结合,用于测量、状态监测和检查、监视以及搜救等情况。在此类关键应用中,所有相关方都对安全运营和尽可能管理风险享有既得利益。
正如本系列第一部分所述,Nozomi Networks Labs 对 DJI Mavic 3 系列无人机中使用的基于 Wi-Fi 的 QuickTransfer 模式协议进行了安全分析。该协议有助于在用户的移动设备上快速检索图像和视频。该研究的主要目的是揭示可能对无人机构成威胁或导致数据泄露的潜在漏洞。调查共发现了九个需要用户交互(快速传输模式激活)的漏洞。
第 1 部分解释了从无人机获取固件并拆包的过程,而本博客介绍了我们对固件的分析以及每个漏洞的严重性和潜在影响。这些漏洞有可能通过利用 QuickTransfer 模式 Wi-Fi 协议来促进未经授权的视频和图片泄露。
大疆创新检查了报告的漏洞并确定了受影响的无人机型号。他们已经解决了九个问题中的七个,认为其余两个没有必要解决。因此,两个 CVE 的状态为“有争议”。DJI 发布了固件更新,以解决每个受影响的无人机型号的已识别问题:
-
Mavic 3 Pro: v01.01.0300
-
Mavic 3: v01.00.1200
-
Mavic 3 classic v01.00.0500
-
Mavic 3 Enterprise v07.01.10.03
-
Matrice 300 v57.00.01.00
-
Matrice M30 V07.01.0022
-
Mini 3 Pro v01.00.0620
服务分析和仿真
获取并解压固件后,我们的第一步是分析init脚本(包括init.rc和所有导入的配置脚本),以识别无人机上运行的服务,构成潜在的攻击面。特别令人感兴趣的是那些向外部公开功能(套接字连接、文件上传、HTTP API 等)的服务,因为它们为相邻攻击者提供了可利用的攻击面(例如,移动设备上利用 QuickTransfer 模式的恶意应用程序)。随后,进行了两种类型的分析:
-
静态分析:二进制文件的逆向工程
-
动态分析:运行时调试服务
鉴于 Mavic 3 固件是定制的 Android 版本,通过在微调的Android 模拟器中执行目标二进制文件可以促进动态分析。这种方法可以使用strace和gdb等工具来跟踪和分析值得注意的服务。
Wi-Fi 连接
QuickTransfer 模式协议在无人机和移动设备之间创建 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 密码是在无人机首次启动期间随机生成的,此后保持不变。该过程由函数generate_default_passwd()促进,该函数调用libc random()过程四次,如图3 所示。
图 3.generate_default_password ()函数。
图 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 模拟器上运行的服务进行模糊测试,发现了由格式错误的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 – 低),DJI 选择不解决这个问题。这一决定背后的理由是该服务专门用于诊断目的,仅提供对加密数据的访问。因此,该漏洞已被归类为“有争议”。
vtwo_sdk服务
vtwo_sdk守护进程服务通过/system/bin/dji_vtwo_sdk二进制文件实例化。该服务可能用于维护目的,其作为攻击面的重要性源于其以提升的权限(root)执行,如图 6 所示,以及它在端口 10000 上侦听 TCP 连接。
图6 . vtwo_sdk服务配置。
这使得它容易受到外部攻击,无论是来自使用 QuickTransfer 模式安装在手机上的恶意应用程序,还是来自授权或未授权连接到无人机 Wi-Fi 网络的入侵者,利用前面描述的漏洞检索随机生成的密码(CVE- 2023-6951)。
该服务基于 TCP 上基于自定义 TLV 的协议(类型-长度-值)构建,用于处理外部输入命令。为了识别该协议中的漏洞,我们在 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 – MEDIUM) 已分配。
HTTP 服务
最后考虑的攻击面是在端口 80 上运行的 HTTP 服务,可通过 QuickTransfer 连接的移动设备进行访问。通过分析固件镜像的初始化脚本,确定该服务是在二进制文件/system/bin/dji_http_server中实现的。
通过对二进制文件进行逆向工程,发现 HTTP 服务包含未经身份验证的 API,可以扫描无人机的内存并从中下载图片和视频。DJI Fly 应用程序和无人机上的 HTTP 服务器之间缺乏身份验证,导致 API 容易被滥用,从而导致未经授权的媒体从无人机中泄露。
鉴于这些问题,关键功能缺失身份验证漏洞已引起 DJI 的注意,以解决并保护此功能。
更详细地,可以通过以下方式调用 HTTP API:
v2?storage=[storage_id]&path=[file_path]
在哪里:
-
存储:0 和 1 之间的选择,指定内部或外部(SD 卡)无人机内存
-
file_path:要下载的媒体文件的路径,相对于所选存储
由于生成的文件名在保存到内存时具有标准格式(DCIM/100MEDIA/DJI_xxxx.JPG 或 DCIM/100MEDIA/DJI_xxxx.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 - 中)。然而,其状态被标记为“有争议”,因为 DJI 不承认这是一个安全问题。这一决定背后的基本原理植根于这样的信念:纠正弱 Wi-Fi 密码生成 (CVE-2023-6951) 将消除远程攻击向量。此外,移动设备的任何潜在危害均被视为用户的责任。
评估和管理风险
无人机的使用变得越来越广泛并具有多种用途。大疆创新占据超过 90% 的市场份额,是领先的供应商。鉴于其设备的广泛采用,特别是在专业环境中,确保大疆无人机的安全至关重要。
我们强烈鼓励用户立即将其设备升级到最新的固件版本,从而保护其数据免受九个已识别漏洞的潜在安全风险,这些漏洞有可能通过利用 QuickTransfer 模式 Wi-Fi 协议促进未经授权的视频和图片泄露。
运营任何类型无人机的组织还应考虑这些操作和连接的应用程序可能如何受到网络攻击的影响。如果无人机内的功能受到损害,这将如何改变特定操作期间的风险暴露?例如,如果在监视或监控工作期间可以打开或关闭照明怎么办?
对于提供将操作从一个操作员传递给另一个操作员等功能的设备,如果未经授权的操作员能够控制该设备,可能会出现什么结果?在多架无人机与多名操作员一起操作的操作过程中,这种情况是否会意外发生?
所有无人机操作员都必须考虑他们的操作地点,明智的做法是考虑如果突然失控,尤其是大规模失控,风险状况会如何变化。在考虑数据隐私时,运营商应考虑如何管理与未经授权访问视频或图像相关的风险。最坏的情况可能是敏感镜头被泄露,从而影响更广泛的行动并导致风险状况发生意外变化。
无人机硬件、相关固件和软件不应成为评估风险时的唯一焦点。无人机操作员环境中的其他设备、程序和流程可能容易受到暴露或扩大攻击面的攻击。组织在评估无人机操作风险时必须考虑更广泛的基础设施。
同时,组织还应考虑第三方无人机的操作如何影响其业务和运营风险。我们已经看到了机场运营因无人机未经授权进入而中断的例子。风险管理和安全领导者应考虑此类入侵将如何影响他们的运营,以及可能需要实施哪些缓解措施来控制和管理这些风险。
原文地址:
by - Nozomi Networks Labs :
https://www.nozominetworks.com/blog/dji-mavic-3-drone-research-part-2-vulnerability-analysis
原文始发于微信公众号(Ots安全):DJI Mavic 3 无人机研究第二部分:漏洞分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论