-
-
[原创]【看雪2017安全开发者峰会演讲回顾0x1】如何黑掉无人机
-
发表于:
2017-11-21 17:41
10785
-
[原创]【看雪2017安全开发者峰会演讲回顾0x1】如何黑掉无人机
谢君
阿里安全IoT安全研究团队Leader,资深安全专家,12年安全领域工作经验。现专注于IoT安全研究与
提供解决方案。
2016年发现小米整个智能硬件生态高危远程漏洞,在XPwn2016展示其漏洞利用并协助修复;
2016年发现美的智能生态远程高危漏洞,并协助修复;
2015年发现Broadlink整个智能硬件生态高危远程利用漏洞,在GeekPwn2015展示其漏洞利用;
2014年发现美国奔驰高危远程漏洞,并控制超过50辆奔驰汽车。此前并发现过惠普,富士施乐打印机远程漏洞和微软高危漏洞;
2011年发现迅雷网络多个高危漏洞,并且验证利用迅雷网络发起大规模DDOS攻击。
谢君:今天我分享的议题是如何黑掉某品牌的无人机。我在研究无人机的过程中从物理接触和非物理接触两个方面对整个无人机进行系统化的研究,研究的过程其实也是一个学习的过程,所以今天我想跟大家分享一下我在这个研究过程中的一些收获和所学到的一些东西。
自我介绍一下,我现在是在阿里安全负责IoT安全攻防研究以及安全解决方案,在安全领域也折腾了十几年。现在专注于互联网安全这一块的研究,无人机对于我来讲是一个比较新的东西,我接触的时间也比较晚了,才有一年的时间。我在整个研究和学习的过程中,总结了无人机的一些功能,无人机系统一个复杂的系统工程,里面涉及到领域实在是太多了、太复杂了,里面涉及到结构工程、自动化控制,空气动力学,计算机视觉处理以及各种传感器、无线通讯,并且涉及到人工智能相关的深度学习。
对它有整体的感官,我整个系统全部拆开,发现里面应用了哪些硬件,哪些传感器,哪些芯片。无人机这一块涉及到不同的传感器以及控制系统,很多嵌入式芯片没有这个OS的概念,所有代码是直接上位机执行,通过实时中断以及计时器和IO的控制来完成整个系统的实时操作。
我的分析是基于某品牌的无人机进行分析,包括无线通讯、飞行控制,以及微机电传感器、机器视觉处理,这些微控制芯片来自各个不同厂商。
这么多的传感器芯片之间进行通讯,必须满足相应的通信规范,大家才能协同自如,所以产商设计了一套无人机各个模块之间的通信协议,整个协议满足它整个全系列消费级无人机的产品,定义最多不超过32个硬件功能模块,硬件功能模块下面可以定义子功能模块,比如说我们的飞控系统用03来表示,06表示飞控系统下面这个子控制功能,比如下面支持的飞机起降功能等。
我们可以看到摄像头采集系统是用01的来编号的,云台控制系统是用04来编号的,而在传输过程中,这些编号将会通过算法来编码。这些不同的传感器之间通讯链路有多种,这里面通讯协议按照他自己的一些划分,有本地的,通过串口的,区域网络等等,在里面用的最多的通讯协议是两个,一个logic以及是V1,logic像进程间通讯的方式,V1指远程不同硬件之间进行通讯的一种协议方式。
模块间通信也做了一些相应的隔离,非常像现在的汽车系统,汽车有不同ECU各个模块,各个模块通讯也有一定的通讯协议和格式,也有一些网关隔离某一些子系统是不允许公共访问的。像无人机里面GPS模块的话,只允许飞控系统访问,其他应用系统是不允许访问,整个无人机的通讯的结构,类似于这张图一样,所有的不同的传感器之间通讯是有一定的路径,而且也有一定的限制。这是无人机通讯格式,就是说他们有一定的规范比如说他的头部一定是55开头的,它的每一个包的长度不能超过多少个字节,它的控制命令设置还有一些校验位。并且,对于每一个子系统的编码通过一定的算法来计算的。
无人机的核心中心桥的控制板,主要是基于LC1860SoC外加图像识别芯片,双目避障,无线收发器,无线基带,LightBridge,它的主要功能是整个系统的协调以及固件更新和摄像内容数据编码和图象深度学习,ROI检测之类的。这个LC1860芯片运行的是嵌入式Linux系统,下面是三星的EMCP,是集LPDDR和eMMc于一体的存储芯片,操作系统就存放在这个芯片里面。下面这一块芯片intel
Movidus
MA2155,这是英特尔图像深度学习芯片,因为无人机不能联网,无人机需要做实时的机器视觉分析,需要用到大量的矢量运行,这个时候这个芯片的优势就体现出来了,这个芯片在这个无人机上面的应用有视觉测距,障碍物识别,还有ROI,比如说你的飞机进行跟随飞行的时候,跟随一个人飞行的时候,通过CNN建立好的深度学习模型,来精确判断。LATTICE的这块FPGA芯片,主要是用于双目避障功能,通过可见光反射回来检测障碍物的存在。
我们在研究IOT设备的时候说的最多一个词就是能否root这台设备,root掉设备意味着我们可以获得系统很高的控制权。我们为什么要root无人机,我们root无人机目的是扩大它的攻击面,更好研究无人机。我们在研究的过程中发现要root无人机,最好的办法就是利用一个合适的漏洞,执行打开Adb这个接口功能,就能得系统的root
shell了。如果你要是没有漏洞的话,这个时候怎么办。这个时候我们在研究过程中发现有意思的办法:可以不利用漏洞也可以root无人机。其实这个办法也可以运用到很多的领域。像一些路由器。研究的过程中发现启动脚本里面有一个变量是控制adb功能打开与否的,默认出出厂是这个ADB是不打开的,ADB功能接口在安卓手机应用广泛,怎么打开这个adb功能,一种是利用漏洞执行ADB_en.sh的脚本,另外一种就是方法就是直接修改这个启动脚本的变量。
我们不通过漏洞的方式来root无人机,因为安卓系统是存在三星EMCP里面,是集内存和存储于一体的EMCP的芯片,如果我们可以修改这个芯片里面的内容,我们就可以直接root无人机了。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)