无线安全
首页 > 安全文摘 > 无线安全> 正文

黑客通过机载娱乐系统攻击飞机

作者:kong
2016-12-22 12:57:01
次阅读

翻译:pwn_361

前言

我在IOActive已经有五年了,我有很多去好地方的机会,经常离家有几千公里远,所以飞行显然是我日常生活的一个组成部分。你可能不认为这是一个大问题,除非像我一样,你害怕飞行。我不认为我可以完全摆脱这种焦虑;几十个航班后,我的手仍然会在起飞时出汗,但我学会了生活,有时甚至享受它……并在飞行中,做一些关于机载系统的攻击研究。

研究飞机上的设备如何在飞机上工作,能帮我减轻恐惧感,并且能习惯于噪音、碰撞、和强烈的气流。这篇文章主要研究机载设备如何在飞机上工作,特别是松下航空电子的机载娱乐系统(IFE)。

两年前,当我从华沙飞往迪拜时,在飞机上,我决定试试运气,玩一玩IFE,当我触摸屏幕上一个角落的某个特定区域时,突然,设备返回了一段调试信息:

到迪拜后,我花了一点时间在GOOGLEH搜寻这些关键字,我发现了为多家航空公司开发的几百个公开可用的固件更新:

这些文件显然还在不断更新,所以有可能获得部署在飞机上的最新版本。这些文件今天仍然在,虽然目录列表有所不同。

我能够找到固件更新的航空公司包括:

阿联酋航空

法航

阿根廷航空公司

美国联合航空公司

维珍航空公司

新加坡航空公司

芬兰航空公司

伊比利亚航空公司

阿提哈德航空公司

卡塔尔德航空公司

荷兰皇家航空公司

美国航空公司

斯堪的纳维亚航空公司

IFE包含下面这些基础的体系结构

系统控制单元(SCU)

这需要一个被认证过的机载服务器。乘客可以实时获取有关飞行的信息,如风速、纬度、经度、高度和外界温度。SCU通常通过航空总线接收所有这些数据(航空总线ARINC 429),并通过以太网显示到座位显示单元(SDU)。

座位显示单元(SDU)

这个LRU(线性可替换单元)允许乘客使用IFE的被动和主动的功能,比如看电影,购物,阅读,或连接到互联网。它基本上是一个有触摸屏的嵌入式设备,最新的基于Android,而传统设备主要使用Linux。

个人控制单元(PCU)

遥控器就算是个人控制单元之一。PCU可以控制SDU,和我后面要讲到的,它也可以作为一个信用卡读卡器。

机组人员控制板

乘务员和其他机组人员使用这些设备来控制飞机的功能,如灯,执行器(包括床),通告,机上购物,或专业音频系统,以满足乘客的需求。客舱管理系统(CMS)和IFE通常集成在一块。松下航空电子集成了飞机的CMS和机载娱乐系统(IFE),以及全球通讯服务系统,操作简单,共享系统功能。

松下机载娱乐系统

有多款松下机载娱乐系统:有老旧的3000/3000i,最新的是X系列的eFX, eX2 和eX3(基于Android系统),硬件可能会有所不同,但他们有一个类似的体系结构和一些共同的特点。

你可以在松下航空电子设备官方网站中找到。

这些系统支持相当多的个性化功能,这允许航空公司部署经过定制的IFEs,而代码库大致是一样的。

通常IFEs在飞机着陆后,通过Wi-Fi 点对点网络或高速移动数据链进行内容更新。松下航空电子IFEs大多数经过“跑腿网络”(意思是,这些设备在飞机飞行中是不联网的,一般更新数据是在飞机着陆以后),在飞行过程中,卫星通信或定制的移动数据连接也是可能的。然而,在大多数情况下,IFES是离线操作的,其内容是预先装入的。通常IFE甚至不会实时检查信用卡。

松下电子IFE采用客户端-服务器架构,有以下三个主要组成部分:

1. CrewApp

2. SeatApp

3. Backend  

在上述的网站中,我发现了多种版本的CrewApp和SeatApp,当我在GOOGLE上搜索确定的关键字时,我发现IFE的后端源代码是公开曝光的,只是在不同的航空网站上。虽然它包含特定航空公司的定制功能和数据,但是它们使用的后端代码都是松下的。

当然,在这篇文章里不可能把所有的变化都说清楚,由于各航空公司和其他公司根据他们的需要,对松下的框架进行了匹配和扩展,因此,我们将只专注于特定的功能。

我分析的这个固件文件不包含完整的系统,仅仅是更新的文件。这很遗憾,否则我们就可以获得更多关于这些设备底层工作的细节。然而,通过查阅可用文件也可以得到一些有趣的细节。

脚本分析

松下航空电子设备定义了自己的脚本语言,用于程序扩展、GUI接口和主程序的各项功能。它有几十个命令,覆盖所有功能。

对主要的二进制(airsurf)进行逆向,我们可以还原出这个脚本格式对应的解析器是如何工作的。为了说明这些,让我们来看看#define。

解析器对脚本会逐行进行处理,当解析器遇到“#define”声明时,会尝试跳转到sub_80C2690解析这个声明。

在这个函数中定义了五种类型:flash, text, draw, timer, 和value。

脚本中的第一行是一个“#define”值,我们来看一看它是怎么处理的。

首先,读取了这一行,并提取了定义的名称。随后,解析器会检查后面的值(下面绿色的区域)是不是一个数字(蓝色区域)。

如果这个值不是一个数字,则对一系列变量进行检查。如果是一个数字,它会扩展这个值。

如果这个值是一个数字,则将名称和值做为一对,添加到定义的全局数组中(下面蓝色区域)。

对于cmd声明,这个二进制会遍历cmd表,并调用相关函数,传递参数。

我们在这里可以看到一些有趣的功能,例如程序从读卡器上读取信用卡数据以后。

从读卡器读出的数据(/ dev / CCR)被解析,跟踪打印出来,并确认。

我们在这里也可以看到普通的文件,如shell脚本,配置文件(包含硬编码凭证),数据库,资源,和库文件。

在最新的X系列的IFEs中,松下将系统换成了Android,并将老的.txt脚本模式换成了QT QML(QML是Qt推出的Qt Quick技术的一部分,是一种新增的简便易学的描述语言)。

后台用了PHP,初步分析表明,它存在漏洞:

图片中的代码属于“座位到座位”的聊天功能。在这里,乘客可以向他人发送信息。你不需要花很长时间就能发现一些问题,而且问题不只一个。

下面的视频是实际漏洞的测试方法,它们没有飞机的安全风险。

1. 绕过信用卡检查

2. 任意文件访问

3. sql注入

潜在的影响

那么,一个攻击者离接到机载娱乐系统中并利用漏洞还有多远呢?对此,还没有确定的回答。但是,我们做一些假设(不针对任何公司和系统)。

在航空系统和设备认证时,在软件方面,会依靠专用的DO-178B标准(机载软件适航标准),IFE在技术上是D到E级之间。松下航空电子的IFE设备是E级认证。这基本上意味着,即使整个系统失败了,对飞机安全也没有任何影响,并且不会让乘客有不适感。

同样,我要说的是,根据被处理数据的类型,飞机的数据网络被分为四个数据区域:乘客娱乐、乘客自带设备、航空信息服务、和最后的飞机控制。

物理控制系统应位于飞机控制区域,必须和乘客区域相隔离;然而,并不总是这样的,一些飞机使用光学数据二极管,而另一些依靠电子网关模块。这意味着,这两个数据区域只要有一个物理连接路径,我们就不能忽略潜在的攻击。

机载娱乐系统就有可能成为一个攻击终端。在某些情况下,这样的攻击在物理上是不可能的,原因这些系统是物理隔离的,但是在特殊情况下,如果能成功建立物理连接,攻击仍然在理论上是有可能的,IOActive成功入侵了非航空交通工具上的电子网关模块。在乘客娱乐系统、自有设备区域与飞机控制区域之间,拥有跨越“红线”的能力很大程度上依赖于目标飞机上部署的特定设备、软件和配置。

在2014年,我们展示了卫星通讯(SATCOM)设备上的一系列漏洞。包括机载的SATCOM终端。一个重要关注点是不同数据域之间共享这些卫星通信设备,这会允许一个黑客利用这些设备,并将IFE作为一个支点,对某一航空电子设备发起攻击。

在IT的一面,取得IFE的控制权,意味着一个黑客能向飞机上的乘客发出各种通知信息。例如:黑客可以发布虚假的飞行信息,如高度或风速、并可以在交互式地图中显示虚假航线信息。也有可能危害到CrewApp 单元,控制专业音频系统,照明灯等。如果将所有这些攻击连环在一起,恶意攻击者就有可能令乘客出现恐慌。

捕获个人信息,包括信用卡的详细信息,虽然这不在本研究的范围内,但是如果一个后台配置不当,某些时候有可能会提供频繁飞行者/VIP会员数据的访问功能,那捕获个人信息在技术上是有可能。

从光明的一面,而不是在松下电子IFE系统的研究范围,我相信机载WI-FI本身不是一个问题,因为它可以安全的实现,但仅仅只是WI-FI本身。

这一切意味着,经过初步分析,我们不相信这些系统可以抵御熟练的恶意人员发起的坚实攻击。

航空公司必须保持警惕,当攻击来自机载娱乐系统时,确保该系统和其它系统是正确隔离的,并且具体分析每架飞机的安全态势。安全责任不仅只是某个IFE制造商,飞机制造商、或航空运营商的。和安全相关的每一方,都要发挥重要作用。

负责任的披露

在2015年3月份,我已经向松下航空电子公司报告了我们研究结果,我相信他们有足够的时间去生产和开发补丁,至少对于最突出的漏洞。就是说,我们相信,在这种异构环境中,在涉及众多航空公司,以及数以百计版本的可用软件的情况下,很难说这些问题是不是已经完全解决。

上一篇:上一篇很抱歉没有了
下一篇:下一篇很抱歉没有了

已有 条评论

推荐阅读

小组Security交流群: 199852440
关注网络攻防小组微信公众号
每日精选文章推送

新浪微博