飞机飞行的中断可能会给航空公司造成数十亿美员的损失,但即便如此大多数现代商业航班仍旧依赖于存有严重安全问题的空中交通管制系统。到2020年,这些系统将会被升级为一个被称之为NextGen的系统,该系统依赖于ADS-B(广播式自动相关监视)系统。
“ADS-B Out”是ADS-B的基本功能,它负责将信号从飞机发送方经过视距传播发送给地面接收站或者其他飞机。在本教程中,我将带大家初步了解ADS-B系统,以及如何HACK ADS-B系统,并在智能手机上跟踪飞机航线。
ADS-B有多重要?
你可以想象自己现在是一名飞行员,需要完成一次横跨大西洋的飞行任务。在漆黑的夜晚,你主要依靠空中防撞系统(TCAS)来避免发生冲撞事故。再打个比方,现在在你飞行的方向突然出现了上百架的飞机。如果你此时你使用的是空客自动驾驶功能,那么它将自动为你作出飞行选择。
其次在安全方面例如在繁忙的节假日期间,针对主要机场的ADS-B系统的入侵可能造成的后果。大自然已经为我们提供了很好的案例,例如“洛杉矶机场数以千计的旅客的噩梦”,“冰岛火山Eyjafjallaj?kull造成的飞机中断”使航空公司成本高达17亿美元等。而如今,黑客也可以做到这一点。
图为2010年4月15日(星期四)冰岛火山爆发后ADS-B数据
本文我将为大家展示的是,对于“ADS-B In”和TCAS的欺骗攻击的示例,它们在协作测距系统中协同工作,因为它们都建立在相同的基础模式S数据链路上。这代表了FAA的NextGen系统中一种类型的漏洞,该类漏洞早在2001年9月18日就已经被公认。并在11年后的2012年的入侵事件中被证明。嘲讽的是到2016年,该类漏洞再次被一名黑客使用廉价的SDR设备入侵。
某些应用程序可能需要对ADS-B信息进行独立验证以检测欺骗,这是提出安全性问题的方面。
ADS-B是如何工作的?
ADS-B系统是一个集通信与监视于一体的信息系统,由信息源、信息传输通道和信息处理与显示三部分组成。ADS-B的主要信息是飞机的4维位置信息(经度、纬度、高度和时间)和其他可能附加信息(冲突告警信息,飞行员输入信息,航迹角,航线拐点等信息)以及飞机的识别信息和类别信息。此外,还可能包括一些别的附加信息,如航向、空速、风速、风向和飞机外界温度等等。
ADS-B的应用分为两类:发送(OUT)和接收(IN)。其中OUT是ADS-B的基本功能,它负责将信号从飞机发送方经过视距传播发送给地面接收站或者其他飞机。ADS-B IN是指航空器接收其他航空器发送的ADS-B OUT信息或地面服务设备发送的信息,为机组提供运行支持和情境意识。他们每秒钟以纯文本,未加密和未认证的方式执行此操作,也正是ADS-B In功能,为我们打开了飞机欺骗攻击的大门。
廉价的DVB-T加密狗可以获取250公里范围内的飞机ADS-B(飞机的身份,位置和速度)数据
尽管如此,ADS-B是FAA的NextGen系统的支柱。该系统旨在允许更多的飞机在特定空域内运行,同时增加安全性,减轻空中交通管制日益增加的负担。
美国联邦航空局甚至授权“在大多数受控制的美国领空飞行的飞机必须在2020年1月1日之前装备ADS-B”,而不考虑ADS-B固有的安全问题的事实。美国联邦航空局正在尽最大努力以500美元的奖励说服大家使用ADS-B。
截至2017年8月,美国共约164,200架通用航空固定翼飞机已经装备了约29000架,占比达到17%。但配备商用飞机的百分比要大得多,约6,670架飞机中有2,000架装备,占比达到30%。
事实上FAA的Ron Jones,在Defcon 20的精彩演讲(幻灯片)中,也指出了关于ADS-B系统存在的,包括干扰,注入以及窃听等基本安全问题。
如何HACK ADS-B?
虽然我们可以做到对飞机的数据欺骗,但这会造成严重的安全问题和影响并惹来牢狱之灾。因此,本教程将只侧重于ADS-B数据的接收。以下我们将会用到SDR,在之前我发布的文章做过介绍。只需插入25美金的SDR设备,将其调到1090 MHz即可!
然而在实际情况中,我们只要一部智能手机就可以实现该功能。我们只需简单的在手机上安装Flightradar24或FlightAware这两个应用,就可以实现对航班信息数据的实时跟踪。
Step 1:安装Flightradar24
Flightradar24应用,可在Google Play商店和iOS App Store中进行下载。需要说明的是该应用程序仅支持Android 4.1 / iOS 8.2或更高版本的系统。如果你的手机版本较旧,你也可以通过它的官方网站获取信息。
Step 2:运行和帐户设置
应用程序完成安装后,当我们运行它时将会要求获取我们的位置信息,我们点击允许即可。这一步非常重要,将直接影响后续所有功能的实现,如增强现实。
点击右上角的登录图标。你将看到一个界面,为你提供免费试用版,我们根据提示点击获取。这里需要我们注册登录,可以使用Facebook或Google账户登录,它将自动为你创建一个新的帐户。
Step 3:设置调整
在主界面我们可以看到,左下角一个齿轮状的设置图标。我们可以定制自己喜欢的形式,例如更改地图类型,在飞机图标上放置标签,添加地图日/夜线等。
Step 4:雷达视图观察你周围的飞机
以下是你打开APP在主界面看到的标准视图。视图中的飞机已用不同类型的图标为你标出,想要获取目标航班更多的信息,只需点击相应的飞机图标即可。
你可能已经注意到Flightradar24,并未对一些较小型的飞机进行标注,如Cessnas和Pipers也被称为通用航空。这是因为它们是以单独的978 MHz频率运行,而不是1090 MHz的商用飞机,Flightradar24和FlightAware等应用程序都不会对该频率的流量解码。
Step 5:AR视图效果
现在我们可以使用应用程序中最酷的部分。点击左上角的AR选项卡,并赋予APP使用你相机的权限。你也可以通过校准屏幕来提高其准确度。
这里应用程序在手机中使用惯性测量单元(IMU),与GPS配合使用,以估计你的位置。目前Flightradar24的数据库支持查看全球约 60 %的航班信息,其中七成为欧洲航班,其它为美国航班。通过在overview和details之间的切换,可以帮助我们更好的获取航班信息。
Step 6:3D视图效果
另一个更酷的功能是,Flightradar24还可以为我们模拟类似于驾驶舱看到的视觉体验。在地图或AR视图中选择飞机后,点击左下角的3D视图即可。
Step 7:开源威胁情报收集
如果你想了解更多有关特定航班的信息,你只需点击“更多信息”图标。
随后我们将获取到一个曲线视图,其中包含了飞机的类型,速度和高度。
实际上,除了以上直观的数据外,通过简单的分析我们还可以得到一些其它的信息,比如他们到达巡航高度的时间(高度线变平),以及由于头/尾风导致的飞行速度的减慢或加速。
Step 8:跟踪全球的飞机
点击底部栏上的 “Route” 图标,它会为你显示航班的位置。
值得一提的是,Flightradar24尝试使用了多点定位技术(MLAT),来尽可能的避免之前提到的一些漏洞,特别是对于欺骗的防范,并提供最准确的飞机线路图。
MLAT(Multilateration,多点定位技术)利用多个地面接收机接收到机载应答机信号的时间差,计算得出飞机位置。机载应答机在T0发出信号,由于飞机距地面多个地面接收机的距离不同,会导致多个地面接收机接收到应答机信号的时间也不同,接收机1/2/3/4接收到信号的时间分别为T1/T2/T3/T4,这就表示,飞机到接收机1/2/3/4的距离分别为(T1-T0)*C(光速),(T2-T0)*C,(T3-T0)*C,(T4-T0)*C。知道了飞机到4个点的距离,就可以计算出飞机的位置了。(这样解释是为了便于理解,但事实上不是这么计算的,因为我们无法获知T0。实际的计算方式,是利用T1/T2/T3/T4之间的时间差,从而计算出飞机到4个接收机间的距离差,再计算出飞机的位置。多点定位是一种很常用的定位方式,在各行业都有应用,GPS也是一种多点定位,可以将MLAT想象为将GPS放到地上了)。
Flightradar24在其网站中声称:“欧洲和北美的大部分地区如今都覆盖着大约3,000-10,000英尺的MLAT。在墨西哥,巴西,南非,印度,中国,日本,台湾,泰国,马来西亚,印度尼西亚,澳大利亚和新西兰地区也有MLAT覆盖。未来将会有更多的地区覆盖MLAT,我们将继续向我们的网络添加新的接收器。“
Step 9:搜索特定航班信息
通过点击主界面顶部的搜索栏来查询数据库。通过该功能你可以实时的查看和跟踪,亲人或朋友的航班是否已准时到达。或者你也可以像那位无聊的波音飞行员一样,花费18个小时在美国版图上画出一架波音787客机。
Step 10:添加提醒
在主界面,你还可以在底部栏的中央添加提醒。由于是免费试用版,因此自定义提醒功能无法使用,我们可以勾选”Squawk 7700 General Emergency”(紧急情况)选项。
通过本文,我们对ADS-B及其漏洞有了初步的了解。在我的下篇文章中,我将教大家使用Rasberry Pi和RTL-SDR加密狗来构建我们自己的ADS-B接收机,尽请关注!