如何劫持大疆Spark无人机

阅读量382967

|评论7

|

发布时间 : 2018-03-15 14:59:50

x
译文声明

本文是翻译文章,文章来源:embedi.com

原文地址:https://embedi.com/blog/dji-spark-hijacking/

译文仅供参考,具体内容表达以及含义原文为准。

 

写在前面的话

对于我们每个人来说,被犯罪分子骗走血汗钱那肯定是件很悲伤的事。随着物联网(IoT)的快速发展,可远程控制的设备已成为我们日常生活中不可或缺的一部分。但在享受方便的同时有一个明显的缺点暴露出来———它们也可以被犯罪分子利用。有没有想过攻击者可能只是坐在家中上,就可以控制您的设备飞到他们手里。是不是觉得不可能?但是我们已经成功劫持了大疆Spark无人机,将上面的假想照进现实。看看我们是怎么做到的吧!

 

介绍

一直以来,大疆无人机深受黑客的关注。他们主要对破解无人机的某些功能,比如设置更高的控制通道频率,消除飞行高度限制或禁飞区等限制感兴趣。此外,还有一些关于越狱无人机的信息。公开的知识你可以在这个Github,还有这个wiki中找到。

大疆Spark是大疆无人机非专业系列中的一款设备。于2017年发布,作为业余航空摄影的无人机销售。在一些方面上,它比其他型号差一些:例如,电池满电的情况下只能持续16分钟的飞行时间。但他与(Phantom 4和Mavic)相比,Spark便宜了499美元。

Spark采用Android 4.4为核心的Leadcore LC1860C ARMv7-A CPU。更新文件带有.sig扩展名,使用RSA-SHA256进行签名,其中一些文件使用AES算法进行加密。其他网络安全爱好者已经公开了这种AES密钥,因此可以使用该工具从文件中提取加密的字段数据。在无人机固件中,发现有大量来确保设备正常运行的原生应用程序。


大疆Spark配备了一组外部接口:

  1. 用于PC连接的USB接口;
  2. 用于闪存连接器的扩展;
  3. 通过Wi-Fi来控制设备的手机应用;
  4. 通过2.412-2.462 GHz的遥控器来管理设备。


大疆还设计了大疆 Assistant 2应用程序。该应用程序可以通过USB操作连接到台式电脑的设备,可以为其更新固件,更改Wi-Fi网络设置等。

在浏览社区资料时,我们发现了改变无人机达到最大高度的脚本websocket_tool.py。每次请求会在web-socket server写入新的值。这个web-socket server是由大疆 Assistant 2应用程序启动的。换句话说,该应用程序有2个接口:

  1. 图形用户界面
  2. web-socket接口。

从一台你认为安全的计算机上感染系统比使用传统方法更容易。正因为这样导致了连接到PC的手机被各种恶意软件感染。所以,我们决定复现这个场景并仔细研究web-socket接口。

 

二.Web-socket服务器

我们推出了最新的大疆 Assistant 2 1.1.6版本,并将带有V01.00.0600固件版本的大疆 Spark连接到电脑。让我们尝试访问Web-socket服务器。为了使用web sockets,我们使用了websocket-client包中的wsdump.py工具。


服务器响应表示在URL ws:// victim:19870 /上没有服务。在运行web_socket_tool.py脚本后,我们找到了一个有效的URL - / general


可以看见,服务器不需要授权就可以使用。但是它的响应是加密的,这说明接口只能用于大疆软件而不是用户。那么问题来了:它传递了什么?我们再看客户端和服务器之间的消息是如何加密的。在分析旧版大疆 Assistant 2版本时,我们发现它们以纯文本与服务器通信。之后,我们了解到加密机制已用于1.1.6版本,这就是为什么来自社区资料的脚本没有加密。

 

三.加密算法

首先,我们检查了加密的文本属性。每次应用程序重新运行时,加密文本保持相似。无人机重启也不会改变它。在Mac上运行也得到相同的结果。这些表明加密密钥不依赖于会话或使用的操作系统。因此,我们假设是硬编码的。

web-socket服务器的代码存储在大疆WebSocketServer.dll库中。借助工具(例如,用于PEiD的Krypto ANALyzer),我们确定了算法 – AES和本地化加密程序。


即使对AES知之甚少,也可以确定使用的加密方式。唯一需要的是将反编译的代码与Github的开放源代码进行比较。发现使用CBC模式。通过分析交叉引用,我们可以找到初始化的加密密钥。

 

四.破解用户界面

我们所需要做的就是将传输的数据加密/解密到wsdump.py脚本中,并且我们将获得应用程序发送给我们的解密数据。在我们的github修改了wsdump.py脚本。


除了关于应用程序版本,设备类型等的信息外,还有无人机管理服务的URL列表。


这些服务可以通过web-socket接口远程处理。

 

五.计划一次攻击

即使没有专门的控制器,大疆无人机还可以通过智能手机进行控制。控制器可以作为Spark Combo包的一部分销售,也可以单独销售。如果没有控制器,智能手机应用程序是控制大疆Spark的唯一选择。无人机会创建一个Wi-Fi热点,该热点通过WPA2协议进行保护,手机可以连接此热点来控制无人机,但该热点只允许一个用户连接。
我们进行了一系列实验,从Wi-Fi热点对驾驶员进行认证。如果无人机在低空飞行时丢失了驾驶员的信号,它最终会掉落到地面。但是,如果驾驶员在无人机达到高空后取消了身份验证,则该设备的行为会十分奇怪,它会提高RPM的速度并达到更高的高度。所以,需要一个线路不让无人机像鸽子一样飞走。我们在实验使用的线路不够长,无法检查无人机可以达到的最大高度,事实证明Spark只是一个无线网络的囚徒。

web-socket接口授予Wi-Fi网络的完全访问权限。通过与已启动 web-socket服务器的计算机建立网络连接,攻击者可以查看到Wi-Fi设置并连接到另一个人的无人机。但是如果设置发生了变化。无人机将失去与用户的连接,这样攻击者将成为无人机的唯一拥有者。

总而言之,典型的攻击场景可能如下所示(我们从GitHub脚本中复制了json-commands格式)。

为了使攻击成功,网络犯罪分子会感染受害者的系统并远程追踪无人机,通
过连接受害者计算机,启动大疆 Assistan 2。确切的时间可以通过19870端口来确定,连接到web-socket服务器ws://victim:19870 执行以下操作将密码更改为无人机wi-fi热点:
1.请求ws://victim:19870/generalurl从服务器响应中获取文件值。


"FILE":"1d9776fab950ec3f441909deafe56b1226ca5889"

2.发送以下命令

ws://victim:19870/controller/wifi/<FILE>
{"SEQ":"12345","CMD":"SetPasswordEx","VALUE":"12345678"

3.之后,Wi-Fi密码将在不知情的情况下更改为受害者。
改之前:


改之后:

4.要使更改生效,重新启动Wi-Fi模块

{"SEQ":"12345","CMD":"DoRebootWifi"}

5.然后用智能手机连接到无人机。

6.等待USB拔出并劫持无人机。

这个场景在大疆Spark无人机上进行了测试,但它应该与所有兼容大疆 Assistant 2的无人机都有关。发行说明中提供了无人机的列表。


这种类型的攻击适用于所有支持的操作系统和默认防火墙。它可以在有线和公共无线网络中进行。为了不手动执行所有程序,这里是我们的PoC

 

USB和物联网

到目前为止,几乎所有的智能设备都可以通过USB连接(如PC或笔记本电脑)上传一些文件,更新设备固件(大多数设备只能通过USB进行充电)等日常行为,这可能会造成很大程度的威胁,因为被感染的设备可能很容易感染其他设备。网络犯罪分子还可以根据自己的喜好更改设置,将恶意固件上传到设备。当设备连接到其他PC /笔记本电脑时,感染会蔓延。

在物联网时代,问题会变得更加严重,所以智能设备开发人员应集中注意力在设备连接场景上,并设计身份验证和授权机制以及签名固件的受信任引导。否则,当智能汽车通过接口受到感染,车主不得不向犯罪分子支付赎金。

 

时间线:

09/25/2017 – 关于发送漏洞的第一个通知;
09/28/2017 – 发送技术细节;
10/12/2017 – 接受的漏洞和赏金的数量;
12/20/2017 – 赏金支付。

 

结论

大疆公司被认为是消费和商业无人机市场的领导者。根据维基百科,它在消费无人机市场占有巨大的市场份额; 到2021年它将生产约400万架无人机。可见一旦无人机出现漏洞那将十分危险——它们影响到大量用户和组织。这种情况已经发生过,例如SSL密钥和XSS漏洞。还有自从一架无人驾驶飞机撞上白宫的南草坪,美国陆军禁止大疆无人机。

由于大疆软件存在以下安全问题,可能会出现以下攻击方法。

1.Web-socket服务器侦听所有网络接口。
2.使用硬编码加密密钥与Web-socket服务器通信。
3.使用Web-socket界面的授权。
4.数据可以很容易获得。

Wi-Fi攻击可以劫持无人驾驶飞机,可能的情况也不止这样,Web-socket接口具有许多功能,可能使攻击者可以更改无人机的设置访问机密数据。

github(https://github.com/embedi/dji-ws-tools/blob/master/dji_wsdump.py)
工具:https://github.com/fvantienen/dji_rev/blob/master/tools/image.py

本文翻译自embedi.com 原文链接。如若转载请注明出处。
分享到:微信
+11赞
收藏
无名小卒
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66