一、关于无线钓鱼攻击
想必各位喜欢钻研安全技术的小伙伴们,对于WIFI网络的钓鱼攻击套路已经非常熟悉了。攻击者通过在例如星巴克之类的公共WIFI网络,使用同样的预共享秘钥,同样的SSID搭建一个恶意wifi,通过DNS spoof的方式将受害者访问的站点重定向到自己做的钓鱼站点,从而获取用户的密码等关键信息[1]。
然而,最近披露的一个4G协议漏洞,对于LTE网络,也可以达到与WIFI钓鱼攻击类似的攻击效果,甚至威胁更大。下面且看360独角兽安全团队对该漏洞及攻击技巧的详细解析。
二、关于LTE用户面漏洞
GSMA 名人堂6月27日发布了该漏洞,独角兽团队第一时间对该漏洞进行了分析,以便各位同行能快速理解该漏洞精髓。
图 1 GSMA CVD 披露
该漏洞是LTE协议标准漏洞,产生原因是LTE标准在制定时为了提高短报文带宽利用率,对于用户面的数据,空口层面仅仅启用了加密,并没有像控制面数据一样,强制进行完整性保护。 这使得通过对运营商LTE网络中eNodeB与终端(手机等)之间的无线链路进行攻击,远程利用此漏洞,可以篡改用户的IP数据报文,作者将这个漏洞命名为ALTER攻击[2]。威胁更大的是,可以在无线电波层面,对LTE用户进行DNS spoof攻击。
三、关于LTE空口的用户面与控制面
LTE的控制面用于传输信令,而数据面则用于传输用户的业务数据,例如承载语音通话,网页浏览的IP报文数据。
LTE中加密和完整性保护在PDCP层实现,下面两个图分别为LTE 空中接口(uu接口)控制面和用户面PDCP层功能示意图。
图 2 LTE 控制面PDCP层功能示意图
图 3 LTE 用户面 PDCP 层功能示意图
对比这两个图,我用红框标记部分,可以看到在LTE空中接口的控制面有加密和完整性保护,而在用户面则只有加密。事实上这个用户面加密在LTE标准中是可选的,当然运营商在部署时通常都会启用加密,但是该漏洞却与是否加密没有任何关系,即便运营商启用了用户面的加密,攻击依然可以成功进行。
四、攻击过程及原理
4.1 硬件平台
图 4 LTE 恶意中继示意图
实现这个攻击核心组件是LTE中继(Relay),即在运营商eNodeB 和手机之间插入一个LTE恶意中继,恶意中继由一个伪eNodeB和一个伪UE(终端,类似手机)组成。下行链路中,运营商eNodeB给真实UE(用户手机)发送的数据被伪UE接收,通过伪eNodeB发送给真实UE。上行链路中,真实UE给运营商eNodeB发送的数据则被伪eNodeB接收,通过伪UE发送给运营商的eNodeB。 这样所有真实UE与运营商之间的数据都会通过中继。
4.2 实现原理
当LTE网路启用用户面加密时,要发起攻击,首先需要解决的是在空口上绕过加密算法,修改IP报文数据。
4.2.1 LTE加密原理
从常规思维看,分组对称加密算法的密文只要被修改一个bit,会导致在解密时,分组中至少一半以上的bits放生变化,这是评价加密算法好坏的一个标准。从这个角度看,在LTE用户面启用加密时,似乎针对密文进行修改,并不会带来什么危害,数据顶多在恶意中继那透明的通过,恶意中继也无法解密,也无法受控的通过篡改密文达到修改明文的目的。然而这个思路对于流式加密并不适用,而LTE用户面数据恰好采用的是流式加密。
图 5 LTE 用户面数据加密/解密示意图
如图所示,LTE 的流式加密过程中,秘钥流生成器利用AS key等一系列的参数产生密钥流,秘钥流与明文流异或后得到密文c。解密时则用秘钥流和密文流c异或得到明文m。
加密
Keystream XOR m = c;
解密
Keystream XOR c= m;
发送端和接收端使用相同的AES key 即相同的算法产生keystream。
4.2.2 绕过加密任意篡改数据包
图 6 插入攻击者之后的 LTE 用户面数据加密/解密示意图
图6为插入攻击者之后的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数据包。
4.2.3 定位DNS数据包
DNS请求数据一般比较短,可以尝试通过长度来区分,但是需要注意的是如何将同样短的TCP SYN请求与DNS请求区分开来,作者通过大数据的方式,统计了移动网络中DNS请求的长度分布,分布图如下
图 7 PDCP IP 报文长度分布图
从这个图中可以看到下行DNS请求回应的长度与PDCP其他帧的长度有非常明显的区分度,毫不费力的可以区分出来,而对于上行的DNS请求,则可以通过猜测的方式,即对疑似DNS请求报文修改目标IP地址到自己控制的恶意DNS服务器,观察是否检测到DNS请求回应,如果收到回应,则说明修改的是一个DNS包,这个方法准确率很高。
4.2.4 IP头检验和的处理
修改IP后,会导致IP包的校验和改变,这里还得处理校验和,这里作者使用了修改TTL去补偿IP变动以保证整个IP头校验和不变的方法。我们知道TTL会随着IP包经过的路由逐跳减小。而对于上行链路空口截获的IP包从UE出来之后显然还没有经过任何路由,所以TTL还是默认值,这个默认值可以从UE操作系统的TCP/IP协议栈的默认设置中得到。而对于下行链路,我们不知道IP报文从我们的恶意DNS服务器发出后经过了多少路由,修改TTL补偿校验和的方式行不通,这里作者通过修改IP头中的标识区域来做补偿。
4.2.5 UDP校验和处理
对于上行链路,由于最终计算UDP校验和的程序显然在攻击者控制的恶意DNS 服务器上,因此可以通过修改协议栈源码的方式直接忽略。
对于下行链路,修改DNS服务器协议栈将UDP校验和直接设为0,DNS回应依然有效。
到此校验和问题解决。篡改LTE用户面数据的坑已经填完,整个攻击的原理也阐述完毕。
五、攻击演示
下面是攻击视频关键部分,即获取到受害者用户名,密码的部分
图 8 攻击结果图片,获取到受害者用户名及密码
原始视频地址:https://www.youtube.com/watch?time_continue=1&v=3d6lzSRBHU8
六、威胁范围
由于该漏洞由LTE标准引入,针对于所有从LTE 演变而来的其他网络,例如NB-IOT, LTE-V, 以及未来的5G(依然没有启动强制性的用户面完整性保护),都有影响。
与WIFI下的DNS spoof钓鱼攻击相比,LTE空口DNS spoof实现难度虽然要大得多,但攻击范围却比WIFI要大,LTE攻击并不需要像WIFI攻击一样,需要先破解预共享秘钥,因此抛开实现难度问题,成功率和覆盖面都比WIFI下的钓鱼攻击要强,威胁也更大。
由于该攻击发生于数据链路层,任何上层协议针对DNS可用的防护措施,例如DNSSEC,DTLS等在这里都将失效。唯一解决方案是修改LTE标准。
参考文献
[1] 360 PegasusTeam, 聊聊wifi攻击
http://www.freebuf.com/articles/wireless/145259.html
[2] Breaking LTE on Layer Two David Rupprecht等
https://www.alter-attack.net/media/breaking_lte_on_layer_two.pdf
[3] LTE用户面介绍 华为技术有限公司
审核人:yiwang 编辑:边边