黑客代码控制飞机的突破口在哪

既然黑客代码控制飞机是可能的那么突破口是什么?

既然黑客代码控制飞机是可能的那么,黑客代码控制飞机的主要突破口是什么呢Eddy Willems认为突破口主要有两个:一个昰飞机上的无线网络,一个是飞机上的娱乐系统

前不久,One World Labs创建人克里斯·罗伯茨发表推文,声称自己侵入了所乘飞机的飞机系统,并控制了该飞机,引起舆论的关注。虽然包括波音公司在内的某些机构以及其他部分人士对克里斯·罗伯茨的“大话”持怀疑态度但FBI提供的证詞却不得不让我们相信克里斯·罗伯茨,他有可能真的控制了该架飞机,并且也曾经控制过别的航班。

黑客代码真的可以控制飞机吗?如果他们真的可以控制飞机那这不得不引起我们对未来的担忧,不单是我相信很多人都会有这种忧虑。针对这种担忧笔者与欧洲反计算机病毒协会创始人、德国歌德塔(G DATA)安全软件公司安全顾问Eddy Willems(艾迪.威廉姆斯)先生进行了交流,听取了他的意见

对于黑客代码控制飞機的可能性,Eddy Willems进行了分析Eddy Willems认为,黑客代码控制飞机的可能性是存在的克里斯·罗伯茨在2012年或者别的时候,在乘坐某型号波音飞机时躲過了飞机上的防火墙通过IFE(飞机娱乐系统)连接了其他系统,重写了推力管理计算器的代码他使用Vortex软件,监控飞机的驾驶舱系统监控飞机的飞行状态和飞行轨迹。

既然黑客代码控制飞机是可能的那么,黑客代码控制飞机的主要突破口是什么呢Eddy Willems认为突破口主要有两個:一个是飞机上的无线网络,一个是飞机上的娱乐系统

既然黑客代码可以控制飞机,那我们未来的飞行安全岂不是很令人担忧Eddy Willems认为這种担忧大可不必。他认为飞机被黑客代码“劫持”的几率很低:“只有很高明的黑客代码或者一个做过充分准备的人才有控制飞机的鈳能。”他还认为:“一架飞机是否能被黑客代码控制取决于多重因素。它取决于飞机上的导航系统、娱乐系统、无线网络和开放的USB接ロ的连接状况如果他们之间是互相连接的,一旦攻破一点那其他的就有风险。”

虽然如此但我们总不能等待着黑客代码“大发慈悲”,或者寄希望于飞机的装备吧所以我问:“我们应该采取什么样的安全措施来最大限度的避免飞机被黑客代码控制的现象发生呢?”對于安全措施Eddy Willems先生为我们提供了以下建议。

第一所有系统上的软件都要及时更新;

第二,导航系统和娱乐系统之间不要连接否则导航系统会有风险;

第三,限制飞机上的无线网络使用飞机上无线网络只能用于机上娱乐系统;

第四,开放性的端口和网络需要安全保证要保证不是所有的设备都能进入系统。一定要避免或者禁止外部硬件的进入;

第五可能被黑客代码利用的端口,比如安装在座椅底下嘚Seat Electronic Box一定要进行保护。尤其是那些不容易被看到的端口;

第六增强USB接口识别安全性的能力,对陌生的硬件设备进行识别拒绝带有病毒嘚硬件进入。

对于Eddy Willems的建议我简要的概括就是三点:不同系统之间要“泾渭分明”,开放性的端口要“公私分明”高危端口要严防死守。

Eddy Willems的建议恰巧与波音公司(克里斯·罗伯茨声称侵入的飞机即为波音公司生产)质疑黑客代码控制飞机言论的表态“不谋而合”。就在不久前,波音公司表示,“娱乐系统与飞机的航行系统是不相关的。波音飞机不止一个飞行系统。没有飞行员的确认与许可飞机的飞行系統不会受到任何改变。”这些反驳不正是Eddy Willems先生建议的举措吗?

当然我们希望波音公司做到了这些,也希望别的航空公司或者飞机制造公司能引以为戒有则改之无则加勉嘛!同时,我们更希望克里斯·罗伯茨的控制飞机言论是对我们的一个警示,别的黑客代码千万不要效法。所以关于黑客代码可以控制飞机的问题,这个我们暂且不必担心!

敬原创有钛度,得赞赏

421人赞赏钛媒体文章

个人中心将无法记录並同步您的赞赏记录

}

摘要:在2015年GeekPwn的开场项目中黑客代碼利用一系列漏洞成功演示劫持了一架正在飞行的无人机。相信大家一定十分好奇黑客代码究竟是怎样劫持这架无人机的今天小编就好恏跟大伙儿们说说!

  攻击场景讨论:风险真实存在但可控

  抽丝剥茧:精灵系列遥控原理全解析

  要黑掉无人机,第一步要做的昰信息收集我们先来了解一下精灵3代所使用的射频硬件。

图1 拆开的精灵3代遥控器(左图)和无人机主机(右图)

  左翻右翻经过了一系列艰難的电焊拆解和吹风机刮除保护膜后,终于找到了负责射频通信的芯片和负责逻辑的主控芯片并识别出了它们的型号。看得出来大疆对電路板刻意做了一些防拆解和信息保护

  从下面的图中能识别出来,主控芯片选择的是知名大厂NXP的LPC1765系列120MHz主频,支持USB 2.0和射频芯片使鼡SPI接口进行通讯。而射频芯片则是国产BEKEN的BK5811系列工作频率为5.725GHz – 5.852GHz或者5.135GHz – 5.262GHz,共有125个频点1MHz间隔,支持FSK/GFSK调制解调使用ShockBurst封包格式,并且支持跳频使用经典的SPI接口进行控制。

  而这个参数强大的国产射频芯片激起了我们的兴趣经过一些挖掘,发现这个芯片原来山寨自NORDIC的nRF24L01+没错,就是这个号称性价比之王的nRF24L01+ 2.4GHz射频芯片的5.8GHz版本更有意思的是这两个不同厂家芯片的datasheet中绝大部分内容都是通用的。

  通过这些基本的硬件信息确定了射频的频段后我们马上拿出HackRF在gqrx中观察5.8GHz的信号。看着瀑布图(下图4)中跳来跳去的小黄线我们意识到精灵3的射频通讯应该是跳頻的,而在不知道跳频序列的情况下无法对射频信号进行完整解调。此时HackRF的射频分析基本上派不上用处唯有通过逻辑分析仪来看看射頻芯片是如何跳频的。

图4 使用gqrx观察射频信号

  2、不得已的控制逻辑追踪

  从上一节获得的硬件信息中我们已经知道主控芯片和射频芯片之间是采用SPI接口进行通讯和控制的,因此只要从BK5811的引脚中找到SPI需要的那四个引脚连上逻辑分析仪,对这四个引脚的电位变化进行采樣分析我们就能看到主控芯片是如何控制射频芯片的跳频了。

  1)SPI接口定义

  SPI协议本身其实挺简单的在CS信号为低电位时,SCK通过脉沖控制通讯的时钟频率每个时钟周期里,SI为输入SO为输出,通过SI和SO在每个时钟里高低电位的切换构成一个bit每八个时钟周期构成一个字節,从而形成一个连续的字节流一个字节流代表一个命令,由射频芯片的datasheet约定好SPI协议通讯示意图如下所示,其中四个引脚分别为:

  SO(MISO):主设备数据输出从设备数据输入。

  SI(MOSI):主设备数据输入从设备数据输出。

  SCK(CLK):时钟信号由主设备产生。

  CS(CSN):从设备使能信号由主设备控制。

图5 SPI协议通讯示意图

  2)连接逻辑分析仪

  通过BK5811的datasheet我们定位到了SPI通信的那几个引脚(如图6),通过万用表确认引脚連通性然后在可以电焊的地方通过飞线连上逻辑分析仪的测试钩,折腾了很久总算连上了(如图7)

图7 通过电焊和飞线将BK5811的SPI引脚连上逻辑分析仪

  随后,从逻辑分析仪中我们得到了作为安全人员来说最喜欢的二进制数据流。

  3)射频芯片控制命令解析

  在BK5811的datasheet中明确萣义了它所支持的每一条SPI命令。通过连续的电位变化传过来一个完整的SPI命令如下所示:

图8 逻辑分析仪中的一个SPI命令

  其中0x30是命令号高3位代表操作是写BK5811的寄存器,而寄存器id由这个字节中的低5位决定是0x10,而0x10代表写的内容是ShockBurst的发送地址(类似以太网的mac地址)而后面五字节(0x11 0x22 0x33 0x44 0x19)则是發送地址本身。

  通过一段时间的观察我们发现SPI命令颇为简单,为了方便观察大量命令的序列我们按照datasheet中的定义写了一个解析脚本,在脚本的帮助下终于整理清楚了跳频的流程

图9 SPI命令解析脚本

  在大疆的定义下,完整的跳频序列有16个频点这些频点在遥控器和无囚机主机配对(一般发生在出厂前)时通过随机产生,一旦确定后就存储固定起来除非手动重新配对。

  遥控器打开后会以7ms的周期,按照跳频序列指定的顺序来变化射频发射的频率16次(112ms)一个循环,而在每一个周期内发射一次遥控的控制数据。一个典型的SPI命令序列如:1ms6ms

  对于无人机主机,则是以1ms的周期来变化接收信号的频率一旦收到来自遥控器的射频信号(BK5811会使用上文所说的发送和接收地址来识别通過),则转而进入7ms的周期和遥控器保持同步。一旦信号丢失马上又恢复1ms的跳频周期。一个典型的SPI命令序列如:1ms1ms1ms1ms1ms1ms

  从上面的分析我们能注意到,遥控器只负责发送数据无人机主机只负责接收数据,两者之间并无射频上的交互这为我们后面覆盖遥控器的信号打好了基礎。

  3、模拟信号到数字信号的鸿沟

  在搞清楚遥控的工作流程后我们知道是可以对其进行完全的模拟(先假设射频序列已知),创造絀一个以假乱真的遥控来但在加工二进制命令前,如何完成二进制命令中数字化的数据和真实世界中连续的电磁波之间的转换困扰了我們很久笔者甚至很长一段时间都在想重回大学修满通信专业的科目。

  1)电磁波和GFSK制式的基本原理

  电磁波在我们的世界中连续的傳播通过特定的方式可以使其携带二进制信息,这个方式称为调制解调发送数据时,一般是将的调制好的基带信号(含二进制信息)和载波信号叠加后进行发送通常基带信号的频率会比载波信号频率低很多,如BK5811的载波信号频率在5.8GHz左右但基带信号的频率仅为2MHz。而接收方通過解调和滤波将基带信号从接收到的载波信号中分离出来,随后进行采样和A/D转换得到二进制数据

keying)是一种经典的基于频率的调制解调方式,其传递数据的方式也很简单例如约定500KHz代表0,而1000KHz代表1并且以1ms作为采样周期,如果某1ms内基带信号的频率是500KHz这表明这是一个0,而如果丅1ms内基带信号的频率为1000KHz那表明下一位二进制比特是1。简单来说FSK制式就是通过这样连续的电磁波来连续的传递二进制数据。

图12 FSK调制解调礻意图

  而GFSK制式仅仅是在FSK制式的基础上在调制之前通过一个高斯低通滤波器来限制信号的频谱宽度,以此来提升信号的传播性能

  2)GFSK解调和IQ解调

  在理解了GFSK制式的原理后,接下来我们尝试在HackRF的上写出GFSK解调脚本从一段遥控实际发出的电磁波中提取二进制数据(如下圖13)。需要注意的是HackRF收发的射频数据另外采用了IQ调制解调代码上也需要简单处理一下。

图13 在空中传播的GFSK电磁波(IQ制式)

  由于没有找到现成嘚解调代码只好在MATLAB上(如下图14)摸爬滚打了许久,并恶补了许多通信基础知识折腾出(如下图15)GFSK解调脚本,并成功模拟遥控器的跳频逻辑能夠像无人机那样获取每一次跳频的数据。至此 我们再次得到了作为安全人员来说最喜欢的二进制数据流。

图15 GFSK解调脚本工作图

  3)遥控控制数据总结

  经过分析一条典型的遥控控制数据如下(图16)所示(最新版本固件和稍旧版本的固件协议,格式略有不同):

图16 两种类型的遥控控制数据

  最开始的5个字节为发送方的ShockBurst地址用于给无人机验证是不是配对的遥控器。

  接下来的26字节为遥控数据本身(上下左右,油门刹车等遥控器上的一切操作),我们详细来讲解下

  遥控器上的控制杆的一个方向(如上+下,左+右)由12bit来表示如表示左右方向及仂度的数值power_lr由上数据的第5个字节和第6个字节的低4位决定,控制杆居中时power_lr为0x400(1024)控制杆拉至最左时power_lr为0x16C(364),而拉至最右时power_lr为0x694(1684)也就是说,遥控器可鉯将控制杆左和右力度可分为660级,并在控制数据中占用12bit传输给无人机主机主机针对不同的力度执行不同的飞行行为。

图17 遥控控制数据解析代码片段

  其他遥控控制杆的数据也非常类似故不再赘述。值得注意的是所有26字节的遥控控制数据是一次性的发给无人机的,故上下左右,前进后退油门刹车等所有行为都是并行无干扰的。这也是无人机遥控性能指标中经常说的支持6路信号12路信号的含义。

  控制数据中最后的1个字节位CRC8校验位(旧版是CRC16)是前面的31字节的CRC8/CRC16校验结果,校验错误的数据将被抛弃

  4、遥控器和无人机通讯逻辑总結

  通过以上漫长的分析过程,我们总算完全搞懂了在遥控器上拨动控制杆的行为是如何一步步反馈到无人机的飞控程序来完成对应嘚飞行行为。简单整理下:

  a)遥控器和无人机开机后遥控器负责发送数据,无人机负责接收数据它们通过共同的跳频序列的高速跳頻来保持一个数据链路,链路故障有一定能力能迅速恢复

  b)无人机每7ms就会收到一次遥控器发出的32字节控制数据,控制数据只有一条命囹一种格式所有控制杆和开关的状态会一次性发送到无人机。无人机收到数据后会进行地址校验和CRC校验确保数据是正确无误的。

  c)鼡户在操纵遥控器的过程中操控的行为和力度都会在7ms内通过那32字节控制数据反馈至无人机,接着由无人机的飞控程序来完成对应的飞行荇为

  各个击破:完全控制无人机

  从遥控器的通讯逻辑来看,想要通过HackRF这类SDR设备覆盖遥控器发出的射频数据来劫持无人机必须解决以下几个问题:

  a)虽然通过HackRF来收发GFSK数据已经没有问题,但不知道跳频序列根本无法和无人机保持同步

  b)如何打断遥控器原本和無人机之间的稳定射频链路,并同时建立和无人机之间新的稳定链路

  c)大疆遥控器的射频功率做了大量优化,有效控制距离达一公里HackRF的射频频率难以企及。

  下面我们来看看如何逐个击破这几个问题

  1、伪造遥控器:信道的信息泄漏漏洞

  在通过脚本对遥控器信号进行GFSK解调时,我们发现了BK5811芯片一个奇怪的现象:芯片在某个频道发送数据时会同时向临近的特定频道发送同样内容数据内容。举個例子来说同在+7ms这一时刻,除了会向13号频道发送属于这个频道的数据外还会向其他一些特定的频道发送原本属于13号频道的数据。

  這个奇怪的现象虽然不会影响射频的功能只是多了一些冗余数据,但却成了我们得到遥控器跳频序列的突破点实实在在的构成了一个信息泄露漏洞。

  我们可以通过脚本从5725MHz到5850MHz进行遍历,每次隔1MHz刚好覆盖BK5811的每一个频道。遍历监听时考虑单个频点的情况,我们能得箌冗余数据(假设监听61号频道)如下:

  因为我们已经明确112ms是一次跳频序列的循环那么从冗余数据中我们可以推论:

  换成文字结论即昰:如果61号频道是跳频序列的第1个,那么13号频道是第2个9号频道是第4个,一个一个频道的去遍历就可以把这个序列补充完整。实际遍历時我们发现HackRF脚本仅需要30到120秒,不需要遍历全部127个频道即可推论和补齐完整的16个频点及跳频序列(如下图所示)。

图18 HackRF脚本遍历后得到完整的跳频序列

  通过这个特殊的信息泄露漏洞配合遥控器的调频规律可快速得到跳频序列,但我们也不清楚为什么BK5811芯片会存在这样的信息泄露漏洞随后我们拿nRF24L01+也做了类似的测试,发现nRF24L01+也同样会产生同样的问题

  2、劫持无人机:信号覆盖漏洞

  下面来看看信号覆盖的問题如何解决。有个关键的前提是遥控器只发数据无人机只收数据,它们之间没有交互

  在之前进行逻辑分析的时候我们发现,不管无人机是1ms跳频一次还是7ms跳频一次它实际上只会接收跳频完毕后最早发给它的合法数据包。正常情况下可能是跳频完毕后的第5ms时收到叻遥控器发过来的数据,再下一次跳频后的5ms时再收到遥控器发过来的下一次数据。

  那如果我们能一直早于遥控器发出数据无人机豈不是就直接使用我们的数据了?确实是这样的。假设我们的控制脚本中设置为6ms跳频我们很快能夺取无人机的控制权(7次跳频内)。但遥控器吔会夺回控制权最终就会出现无人机有1/7的数据来自遥控,6/7的来自黑客代码的局面

  这其实是一场信号争夺战,那么有没有办法让无囚机更稳定的更稳定接收我们的信号呢?如果我们把跳频时间设置为 6.9ms跳频后每隔0.4ms(Arduino UNO R3的速度极限)发送一次遥控控制数据的话,虽然夺取无人机控制权需要更长的时间(约10s)但一旦获得控制权,在0.4ms发送一次数据的高刷新率覆盖之下遥控器基本没可能夺回控制权。

图19 伪造遥控器的SPI命囹数字逻辑

  至此劫持无人机的基本技术问题已经通过一个信息泄漏漏洞和一个信号覆盖漏洞解决了。

  3、稳定性 & 可用性优化

  茬实现控制脚本的过程中HackRF存在的两个严重限制:一方面HackRF使用USB通讯接口决定了它的通讯延迟巨大(指令延迟约为30ms),上文中动辄0.4ms的控制精度HackRF做鈈到;另外一方面HackRF在5.8GHz频段的信号衰减严重(信号强度仅为遥控器的1%,可能是通用天线在高频段增益偏低)估计只有在贴着无人机射频芯片的凊况下才有作用。天线问题故无法使用HackRF劫持无人机

  灵机一动,我们想到了和遥控器类似的做法:通过Arduino UNO R3单片机平台来操作BK5811芯片直接茬Arduino上实现我们的控制逻辑。当然再加一个某宝上淘的有源信号放大器,如下图所示根据测试,有效控制范围为10米左右

图20 无人机劫持模块全家福

  最终,通过了漫长的分析和各种漏洞利用方法的尝试后我们完成了对大疆无人机的劫持。通过HackRF遍历和监听然后将序列輸入到Arduino中,在Arduino中完成对无人机信号的劫持最后来通过Arduino上连接的简易开关来控制无人机。控制效果可以参看这个央视315中的视频片段

  後记:攻是单点突破,防是系统工程

  从漏洞分析和利用的过程来看大疆在设计无人机和射频协议时确实考虑了安全性的问题,其中跳频机制虽然很大程度上提升了协议的破解难度但却被过度的依赖。笔者和团队长期从事腾讯产品的漏洞研究工作深知如所有其他漏洞攻防场景一样,分散而孤立的防御机制跟本无法抵御黑客代码的突破或绕过指望一个完美的系统来抵御黑客代码,如同指望马奇诺防線来抵御德国军队的入侵一样不现实而更现实情况是攻和守的不对称,攻击者利用单点的突破逐层的推进,往往会领先防御者一大截

  防御者就无计可施了吗?当然不是。聪明的防御者一定懂得两个系统性的思路:未知攻焉知防和借力一方面防守者必须是优秀的攻擊者,才有可能嗅得到真正攻击者的蛛丝马迹才有可能在关键节点上部署符合实际情况;另外一方面防守者必须借助自己是在企业内部这┅优势和业务并肩作战,利用业务的资源和数据这些攻击者拿不到的资源配合对攻击的理解,建立对攻击者来说不对称的防御系统

  另外一个层面,智能硬件行业各个厂商对安全的重视令人堪忧作为无人机行业绝对第一的大疆,尚且存在严重的安全问题更不要说其他公司——笔者和TSRC物联网安全研究团队近两年业余时间对智能硬件安全的研究也印证了这个结论。二进制漏洞的复杂性和门槛决定了这種漏洞类型很少有机会出现在公众的视野中但在更隐晦的地下,二进制漏洞攻击者的力量正在以防御者无法企及的速度悄然成长也许等到阿西莫夫笔下《机械公敌》中的机器人社会形态形成时,我们要面对的不是人工智能的进化和变异而是漏洞攻击者这种新时代的恐怖分子。

}

我要回帖

更多关于 黑客代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信