LTE空口用户面数据任意篡改漏洞分析报告
2018-07-02 17:23

enter image description here

报告编号: B6-2018-070201

报告来源: 360无线电安全研究部

报告作者: 郑玉伟、张婉桥

更新日期: 2018-07-02

0x00 漏洞背景

6月27日GSMA CVD漏洞发布平台公布了一个新的漏洞。独角兽团队第一时间对该漏洞进行了分析。

该漏洞由LTE标准中的缺陷引入,因为没有使用强制性的用户面数据的完整性保护,使得LTE链路上的数据可被篡改。例如可以篡改DNS请求和响应。由于该攻击发生于数据链路层,任何上层协议针对DNS可用的防护措施都将失效。唯一解决方案是修改LTE标准,目前3GPP正在研究如何修复该漏洞。

alt

图 1 GSMA CVD 披露

该漏洞是LTE协议标准漏洞,产生原因是LTE标准在制定时为了提高短报文带宽利用率,对于用户面的数据,空口层面仅仅启用了加密,并没有像控制面数据一样,强制进行完整性保护。 这使得通过对运营商LTE网络中eNodeB与终端(手机等)之间的无线链路进行攻击,远程利用此漏洞,可以篡改用户的IP数据报文,作者将这个漏洞命名为ALTER攻击。威胁更大的是,可以在无线电波层面,对LTE用户进行DNS spoof攻击。

关于LTE空口的用户面与控制面

LTE的控制面用于传输信令,而数据面则用于传输用户的业务数据,例如承载语音通话,网页浏览的IP报文数据。

LTE中加密和完整性保护在PDCP层实现,下面两个图分别为LTE 空中接口(uu接口)控制面和用户面PDCP层功能示意图。

alt

图 2 LTE 控制面PDCP层功能示意图

alt

图 3 LTE 用户面 PDCP 层功能示意图

对比这两个图,可以看到在LTE空中接口的控制面有加密和完整性保护,而在用户面则只有加密。事实上这个用户面加密在LTE标准中是可选的,当然运营商在部署时通常都会启用加密,但是该漏洞却与是否加密没有任何关系,问题在于没有使用完整性保护。

0x01 攻击过程及原理

硬件平台

alt

图 4 LTE 恶意中继示意图

实现这个攻击核心组件是LTE中继(Relay),即在运营商eNodeB 和手机之间插入一个LTE恶意中继,恶意中继由一个伪eNodeB和一个伪UE(终端,类似手机)组成。下行链路中,运营商eNodeB给真实UE(用户手机)发送的数据被伪UE接收,通过伪eNodeB发送给真实UE。上行链路中,真实UE给运营商eNodeB发送的数据则被伪eNodeB接收,通过伪UE发送给运营商的eNodeB。 这样所有真实UE与运营商之间的数据都会通过中继。

实现原理

当LTE网路启用用户面加密时,要发起攻击,首先需要解决的是在空口上绕过加密算法,修改IP报文数据。

LTE加密原理

从常规思维看,分组对称加密算法的密文只要被修改一个bit,会导致在解密时,分组中至少一半以上的bits放生变化,这是评价加密算法好坏的一个标准。从这个角度看,在LTE用户面启用加密时,似乎针对密文进行修改,并不会带来什么危害,数据顶多在恶意中继那透明的通过,恶意中继也无法解密,也无法受控的通过篡改密文达到修改明文的目的。然而这个思路对于流式加密并不适用,而LTE用户面数据恰好采用的是流式加密。

alt

图 5 LTE 用户面数据加密/解密示意图

如图所示,LTE 的流式加密过程中,秘钥流生成器利用AS key等一系列的参数产生密钥流,秘钥流与明文流异或后得到密文c。解密时则用秘钥流和密文流c异或得到明文m。

加密
Keystream XOR m = c;
解密
Keystream XOR c= m;

发送端和接收端使用相同的AES key 即相同的算法产生keystream。

绕过加密任意篡改数据包

alt

图 6 插入攻击者之后的 LTE 用户面数据加密/解密示意图

上图为插入攻击者之后的LTE用户面数据加解密示意图,假定用特定的掩码mask和密文流c异或的到密文流c’,解密的时候得到的明文流为m’。

这个过程可以描述为

mask XOR c = c’;
Keystream XOR c’ = m’;

经过简单推导

Keystream XOR c’ XOR m = m’ XOR m;
Keystream XOR c’ XOR ( Keystream XOR c) = m’ XOR m;
Keystream XOR (Mask XOR c) XOR ( Keystream XOR c) = m’ XOR m;

可得到

Mask = m’ XOR m;

如果知道数据报文的原始明文,就可以得到篡改掩码Mask。 而对于移动数据网络,同一个运营商,同一个区域的DNS一般是固定的,很容易得到,所以大致可以猜测出DNS数据包的明文。然而,要做到DNS spoof攻击,只需要修改UE发送的DNS请求中的IP地址而已,而IP地址在PDCP数据包中的偏移也是固定的,这使得修改操作更容易。现在遗留的问题变为怎么在众多PDCP帧中定位到DNS数据包。

定位DNS数据包

DNS请求数据一般比较短,可以尝试通过长度来区分,但是需要注意的是如何将同样短的TCP SYN请求与DNS请求区分开来,作者通过大数据的方式,统计了移动网络中DNS请求的长度分布,分布图如下:

alt

从这个图中可以看到下行DNS请求回应的长度与PDCP其他帧的长度有非常明显的区分度,毫不费力的可以区分出来,而对于上行的DNS请求,则可以通过猜测的方式,即对疑似DNS请求报文修改目标IP地址到自己控制的恶意DNS服务器,观察是否检测到DNS请求回应,如果收到回应,则说明修改的是一个DNS包,这个方法准确率很高。

IP头检验和的处理

修改IP后,会导致IP包的校验和改变,这里还得处理校验和,这里作者使用了修改TTL去补偿IP变动以保证整个IP头校验和不变的方法。我们知道TTL会随着IP包经过的路由逐跳减小。而对于上行链路空口截获的IP包从UE出来之后显然还没有经过任何路由,所以TTL还是默认值,这个默认值可以从UE操作系统的TCP/IP协议栈的默认设置中得到。而对于下行链路,我们不知道IP报文从我们的恶意DNS服务器发出后经过了多少路由,修改TTL补偿校验和的方式行不通,这里作者通过修改IP头中的标识区域来做补偿。

UDP校验和处理

对于上行链路,由于最终计算UDP校验和的程序显然在攻击者控制的恶意DNS 服务器上,因此可以通过修改协议栈源码的方式直接忽略。

对于下行链路,修改DNS服务器协议栈将UDP校验和直接设为0,DNS回应依然有效。

到此校验和问题解决。篡改LTE用户面数据的坑已经填完,整个攻击的原理也阐述完毕。

0x02 威胁范围

由于该漏洞由LTE标准引入,针对于所有从LTE 演变而来的其他网络,例如NB-IoT, LTE-V,以及未来的5G(依然没有启动强制性的用户面完整性保护),都有影响。

与WIFI下的DNS spoof钓鱼攻击相比,LTE空口DNS spoof实现难度虽然要大得多,但攻击范围却比WIFI要大,LTE攻击并不需要像WIFI攻击一样,需要先破解预共享秘钥,因此抛开实现难度问题,成功率和覆盖面都比WIFI下的钓鱼攻击要强,威胁也更大。

由于该攻击发生于数据链路层,任何上层协议针对DNS可用的防护措施,例如DNSSEC,DTLS等在这里都将失效。唯一解决方案是修改LTE标准。目前已有部分运营商和设备商表示,要推动LTE标准修复这个漏洞。

0x03 时间线

2018-06-27 GSMA CVD披露漏洞

2018-07-02 360无线电安全研究部完成分析报告

0x04 参考链接

  1. https://www.alter-attack.net/

  2. https://www.alter-attack.net/media/breaking_lte_on_layer_two.pdf