访问:
谢君:我分享的议题是如何黑掉某品牌无人机。我在研究过程中从物理打仗和非物理打仗两个方面对全体无人机进行系统化的学习,本日我将分享研究过程中的一些收成以及学到的东西。
无人机是一个繁芜的系统工程,涉及构造工程、自动化掌握,空气动力学,打算机视觉处理以及各种传感器、无线通讯,以及与人工智能干系的深度学习。

我将全体系统全部拆开,创造个中运用了哪些硬件、传感器、芯片。个中涉及到不同传感器及掌握系统,很多嵌入式芯片没有 OS 的观点,所有代码直接上位机实行,通过实时中断以及计时器和 IO 的掌握来完玉成部系统的实时操作。
模块间通信
我在此基于某品牌的无人机进行剖析,包括无线通讯、翱翔掌握、微机电传感器、机器视觉处理。实际上这些微掌握芯片来自不同厂商,要实现传感器芯片间的通讯,必须知足相应的通信规范,才能协同自若。以是产商设计了一套无人机各模块间的通信协议,协议知足全系列消费级无人机的产品,定义不超过 32 个硬件功能模块,硬件功能模块下面则可以定义子功能模块。
比如飞控系统用 03 表示,06 表示飞控系统下的子掌握功能,如支持的飞机起降功能等。再比如摄像头采集系统是用 01编号,云台掌握系统是用 04 编号。在传输过程中,这些编号将会通过算法来编码。
这些不同传感器间通讯链路有多种,通讯协议可划分为本地的、通过串口的、区域网络等,个中利用多的通讯协议分别是 logic 和 V1。logic 像进程间通讯的办法,V1 是不同硬件间远程通讯的协议办法。模块间通信也采取了相应的隔离,类似现在的汽车系统,汽车有不同 ECU 模块,各个模块通讯有一定的通讯协议和格式,以及网关隔离某些子系统不许可公共访问。而无人机里的 GPS 模块,只许可飞控系统访问,其他运用系统则不被许可。
全体无人机的通讯构造,类似下图,不同传感器间通讯存在一定路径,且有一定限定。这是无人机通讯格式,可以看出存在一定规范比如一定以 55 开头,每一个包的长度不能超过固定字节,以及掌握命令设置有一些校验位,且对每一个子系统的编码须要通过一定算法来打算。
无人机的核心中央桥的掌握板,紧张是基于 LC1860 SoC 所做的掌握板,其紧张功能是卖力全体系统折衷以及固件更新和摄像内容采集、摄像内容数据压缩、编码和图象深度学习,IOR 检测等。
这个 LC1860 芯片运行嵌入式 Linux 系统,下面是三星的 EMCP,其是集 LPDDR 和 eMMc 于一体的存储芯片,也是操作系统存放地方。
下面这一块芯片 intel Movidus MA2155,是英特尔图像深度学习芯片,由于无人机不能联网,在须要做实时机器视觉剖析时,须要用到大量的矢量运行。而此芯片在无人机上面的运用有视觉测距,障碍物识别以及 ROI。当该无人机进行跟随翱翔时,可通过 CNN 建立好的深度学习模型,进行精确判断。
LATTICE 的 FPGA 芯片,紧张用于双目避障功能,通过可见光反射回来检测障碍物的存在。
root 无人机
在研究 IOT 设备时谈到最多的词便是能否 root 这台设备,root 设备意味着可以得到系统很高的掌握权。为什么要 root 无人机?目的是扩大攻击面,更好的研究无人机。
而在研究的过程中,我们创造 root 无人机最好的办法是利用得当的漏洞,实行打开 Adb 接口功能,就能得到系统的 root shell 了。如果没有漏洞该怎么办?故意思的是我们创造不用漏洞也可以 root 无人机。
实在此方法可以利用到诸多领域,比如某些路由器。研究过程中我们创造启动脚本里有一个变量掌握 ADB 功能能否打开,默认出厂 ADB 不能打开。ADB 功能接口在安卓手机运用广泛,若何打开此 ADB 功能,一种是利用漏洞实行 ADB_en.sh 的脚本,另一种方法是直接修正该启动脚本的变量。
同样,我们不通过漏洞的办法 root 无人机,由于安卓系统存在三星 EMCP 里面,是集内存和存储于一体的 EMCP 芯片,如果我们可以修正这个芯片里面的内容就可以直接root无人机了。
详细操作步骤是:首先找到这块存储芯片的位置,用电热风枪把它吹下来,然后用 eMMC的读书卡读取内容,此时即找到 eMMC 读卡器,把 eMMC 插到电脑可以看到一个弹出显示存储器里面的空间和内容,找到设置调试变量的地方,修正后再写到 eMCP 里面焊回来。
有一个小细节是,由于存储器里的内容有分区,须要将这些系统分区用 Ext4 的办法挂载,修正后保存,再剪辑切回 EMCP 的芯片里,后续我们须要把它焊回去。再运行直接 ADB 打开,就可以得到 root 权限,成功后可以看到它的系统信息和进程。
这一过程涉及到许多繁芜问题,比如要手工脱焊和焊接的过程,此芯片是 BGA 封装,引脚多,引脚间距小,且芯片底座里面人为注意灌输黑胶,对操作过程带来很大不便,操作不当易使芯片废掉,手工操作难度极高。
飞控系统
飞控系统,是无人机里面的核心。由于会搜集到无人机各个传感器模块的一系列数据,通过一些综合算法来判断飞控系统该当如何操作。
飞控系统核心芯片是 ATSAME70Q21,其不须要外置存储器存储它的部件以及算法,与之干系有两块 IMU 陀螺仪以及加速度计,检测飞机处于什么状态。
气压计,紧张为了检测飞机的高度,作为一个飞机高度的判断成分。
Ublox GPS模块,是一个可编程的模块,由于飞控和 GPS 通讯有一个协议交互,并不是说任何一个 GPS模块都可以更换它,但可以做一些欺骗 GPS 的事情。
指南针模块,紧张用于方向的定位。
智能电源,智能电源是用德州仪器 MSP430G2755 16 位的微掌握芯片,它紧张是网络电源现在状态,保持了何时放电,何时通过飞控系统在电量低于某值时返航。
电调芯片,由于无人机有四个螺旋桨,四个马达,每一个马达须要一个电调的芯片掌握转速,掌握不同的马达的转速,来达到掌握翱翔姿态以及速率的操作。
视觉系统
视觉系统,这是无人机里面非常主要的功能,里面核心处理芯片是英特尔的 MA2155 深度学习处理芯片。
飞机搭载摄像头首先可以进行视频录制、拍照,图像内容输出给视觉处理芯片来完成视觉识别等功能,个中一个功能是翱翔跟随,即在手机屏幕上选点跟随翱翔的目标,无人机可以跟随他/它翱翔,此时时候就利用芯片强大的深度学习能力,对感兴趣的区域进行识别。
还有一个功能是测距,通过 MA2155 这块深度学习芯片来完成视觉测距的功能,飞机前后障碍物的间隔通过图象识别的办法识别出来。
另一个功能是双目避障,这是不雅观测倾斜度 70 度是否有障碍物,通过发射端发射出去的光反射回来在吸收端接管。
超声波可检测下方障碍物以及检测地面。
无线通信系统架构
无线通讯,是无人机里面最核心的一块功能,也是最繁芜的一块功能,涉及到掌握系统和图象传输。基本事理便是前真个收发器收到旗子暗记,通过基带系统进行解码,解码后通过摇控器的 LPC1549 芯片处理进而通过 Cypress 的 USB 芯片反馈得手机上。
无线通讯是通过 OFDM 办法进行图传以及数控的传输,其特点是掌握通道数据通过遥控器通过 1Mhz 带宽的跳频发送,飞机回传的图象和掌握通道回传数据通过 10Mhz 带宽进行定频传输。
为了担保数控通道及时性,采纳定时跳频的办法。由于有可能旗子暗记会被滋扰,在某一个特定频点时会被滋扰,如果被滋扰的话,飞机可能收不到遥控器的一些数据,此时我们须要切换不同的频点,找信噪比高的地方,担保它的可靠性。
它在 FCCID 通信管理局申请的 5G 频段的频宽执照在 5727-5821Mhz,但实际上,其操作已超过通讯管理局规定的频段。在我们研究过程中创造滥用这个频段的资源已达 5845Mhz。遥控器与飞机如何进行识别,须要配对及连接过程。
配对的唯一信息来自遥控器,所有信息都是遥控发给无人机,配对成功后可以在操作过程中识别到哪个是我掌握的无人机,且这些掌握配对信息皆通过摇控器芯片 LPC1549 的序列号天生。
基本上无线通讯架构的过程,首先是摇控器先初始化芯片,然后初始化基站系统各个寄存器,寄存器里存入了唯一可以配对码的信息。这个配对码有五个字节,写入到寄存器里面,真正用到只有三个字节,以是就有可能无线期挟制无人机。
无线通讯传输的过程实在是非对称传输,无人机遥控器发的信息跳频传输给飞机,吸收端也是跳频吸收,但是图传和下行通道是由飞机以定频的办法发送,且这些跳频算法都是通过代码来实现的。
下图即遥控器用于检测飞机是否配对的算法检测基带芯片 SPI 地址 0xE4、0xE5、0xE6进行比较。以是挟制一台无人机,我们可以通过暴力破解的办法,用所有的密钥空间进行离线的破解,找到配对码,去掌握无人机,在控中时候就可以动态改掉配对码,让这个无人机属于你。
无人机反调对抗技能
我们也创造了一些硬件的反调技能和软件的反调技能,比如说用 atmel 芯片的安全位置1,可以阻挡外置硬件仿真器的挂载调试,遥控器的 LPC1549 通过 ADC 的粒度检测来检测调试器,LightBridge 用的 stm32F103 芯片通过 remap SWD IO 来利用 swd 调试接口失落效,通过遥控器的硬件开关电路来阻挡 LPC1549 芯片硬件仿真调试。
末了还有很多事情还没有来得及做,未来我们会更加深入的研究各个硬件模块的功能 hacking 以及进行一些想法的验证事情。