伪造LTE地震海啸警报

前言

这是我在2019年的HITB和DEFCON China的议题的解读,现在同步到我的blog上

议题摘要

本议题将讨论LTE协议中与PWS(Public Warning System公共预警系统)相关的安全漏洞。 PWS是向公众播报地震海啸以及其他紧急事件的预警系统,在灾难发生前,PWS系统可以为人民的生命安全争取极其宝贵的时间。
我们仔细研究了LTE协议中与PWS相关部分,发现LTE空口中承载的预警信息是不经过加密以及完整性保护的,我们通过常用的软件无线电设备即可以仿造虚假的灾难预警信息,并且成功的迫使支持PWS的Android和iPhone手机发出灾难警报。通过对LTE协议中参数的精心配置,我们还实现了将灾难警报信息伪装成诈骗钓鱼以及广告短信的形式。最后我们提出了一些相应的解决办法,来防止PWS系统沦为摆设甚至成为电信诈骗的工具。

议题解析

3GPP协议中规定了4种公共警报系统,分别是日本的ETWS,美国的CMAS,韩国的KPAS以及欧洲的EU-Alert。由于各个国家的安全要求不同,因此标准化工作较为困难。为了避免系统复杂性,防止漫游到其他国家手机不能正常接收警报信息,目前的标准中并未加入对警报信息的签名等验证信息。


我们利用软件无线电设备USRP B210和开源的LTE测试平台srsLTE搭建LTE伪基站。为了不干扰正常用户的通信,我们的实验选择在了电磁屏蔽屋内进行。

为了能够使手机发起小区重选流程,我们搭建的伪基站的参数要尽量模仿合法基站的设置,可以利用一些常用的路测软件获取当前基站的参数,如TAC PCI以及下行频点号。

由于LTE的小区重选机制相对于GSM等系统较为严格,即使信号强度高于合法基站,仍然难以触发手机的小区重选,我们可以选在优先频点或者将物理小区号设置成与合法基站相同的以增加接入成功率。

为了避免手机发起鉴权流程,要将TAC设置成与合法基站一样的,手机无法发起位置区更新,则不会对伪基站的合法性进行甄别。

LTE协议中直接携带警报信息内容的是系统广播信息System information,其中SIB 10携带的是日本的ETWS的第一级警报信息,此信息仅包含固定的警报消息类型,如地震海啸或者其他紧急警报。SIB 11中携带的是ETWS的第二级警报信息,包含具体的警报内容,如地震中心,地震强度等,此信息是自定义的。SIB 12是携带的CMAS KPAS和EU-ALERT警报消息。
由于ETWS相较于其他系统分为两个等级的警报信息,较为复杂,我们以ETWS为例进行伪造警报消息。

除了SIB10 SIB11直接携带警报消息外,SIB 1负责对SIB10以及SIB11的调度,paging消息负责向用户手机提示有警报消息需要接收。

由于srsLTE中没有针对SIB10的定义与实现,我们需要比照协议对SIB10进行构造,其中messageIdentifer字段标识了消息类型,地震警报需要将此值设置为0x1102。其他参数的具体配置可以参看截图。

我们需要在srsLTE源码中添加对paging消息的修改,使paging消息中增加对ETWS警报信息的指示。

其实我们不仅可以利用ETWS消息发送地震警报,我们甚至可以它改造成一个广告诈骗等垃圾短信。将message identifier字段设置为0x1104就可以使手机不发出警报声,但是仍弹出信息内容。

以上是我们在Google Pixel手机上分别伪造的地震警报信息和添加了钓鱼电话的诈骗信息。

由于中国没有在手机移动网络中支持公共报警服务,因此国内版的Android手机并不会对伪造的警报信息作出响应,同时国行版的苹果手机也仅在MCC为001,MNC为01的测试网络中对警报信息作出响应。

公共警报信息的不加密造成的潜在安全威胁还是较大的,如果在人口密集处如满座的球场内发送警报信息有可能导致踩踏事件。2018年的夏威夷导弹误警报就是基于美国的PWS系统CMAS传播的,这导致了全城的恐慌和社会混乱。

目前可以利用非对称加密的机制对警报信息添加签名信息来防止恶意伪造的虚假警报。

由于各国对警报消息的要求不同,3GPP的警报的标准化进行较为困难,导致数字签名验证机制并没有作为一种强制执行要求,所以现在的手机均是不验证警报消息的合法性的。

攻击演示

参考链接

版权声明

本文作者为colorlight,首发于安全客
转载请注明出处 https://colorlight.github.io/2020/07/29/伪造LTE地震海啸警报/