一、概述
本文先介绍了5G环境下用户注册管理流程中的初始化注册场景,再基于该场景中的注册过程,分析了其可能存在的两个威胁场景,在UERANSIM+free5gc的模拟环境中进行了复现,最后结合3GPP规范和开源代码对模拟结果形成的原因进行了分析。
二、背景
- 移动通信技术的前世今生
1G语音时代提供模拟语音业务,“大哥大”使用的就是1G网络,1G网络在我国于1987年正式商用,2001年底中国移动关闭模拟通信网[3],1G时代宣告结束。
2G文本时代完成了从模式制式向数字制式转变,主要支持语音以及短信等低速数据业务,那个时代GSM的网速仅有9.6KB/s;
3G图片时代采用码分多址(CDMA)的技术,实现了移动多媒体业务,支持3G网络的平板电脑应运而生,涌现出一大批的优秀产品;
4G移动互联网时代以多输入输出(MIMO)以及正交频分多址接入(OFDM)为核心技术,速度更快,能够满足用户对无线服务的需求,由此开启移动互联网时代;
5G万物互联时代有着高速率、低时延、大连接的特点,并且更加安全,在有着丰富的工业应用场景的同时,虚拟现实(VR)、增强现实(AR)等对网络时延、带宽要求较高的应用也迅速走进了大家的生活。
- 5G核心网架构
图1 5G网络架构图
如图1所示,5G网络由众多网元构成,每个网元都有特定的功能,UE为用户设备,(R)AN为(无线)接入网络,DN为数据网络,红框内为核心网中的网元集合。
5G核心网采用基于服务的系统架构,在部署上采用虚拟机和容器的方式,采用软件定义网络(SDN)和网络功能虚拟化(NFV)的技术,将控制与转发分离,技术成本大幅降低,使网络更加开放,且具有编程能力。
5G核心网中拥有众多的网元,如AMF、UDM、NRF等,共同承担起核心网的功能,其中与用户注册管理关系最密切的网元是AMF网元,从图中也可看出,AMF网元与基站通过N2口进行通信。5G网络的具体架构可以阅读之前
- AMF简介
AMF全称Access and Mobility Management Function,即接入与移动性管理功能,负责注册、连接、可达性、移动性、安全访问管理和业务授权。
图2 5G系统架构中AMF与基站的连接方式
如图2所示,在5G系统架构中,AMF与基站通过NG控制面接口连接,即5G核心网中的N2口,使用的协议为NGAP协议。
三、用户注册管理
如图3所示,用户注册管理是用于用户和网络之间进行注册和注销,在网络建立上下文的过程,用户想要获取网络提供的业务必须先向网络进行注册。
图3 用户注册管理流程
用户注册管理有四个场景:
- 用户初次注册网络
- 用户周期性注册网络
- 用户位置变更引起的网络重新注册
- 紧急业务引发的网络注册
本文以用户初次注册网络为例对用户注册管理流程进行介绍。
3.1 5G终端初始注册接入核心网及会话建立流程
图4 终端初次注册接入5G核心网及会话建立流程
如图4所示,5G终端初始注册接入核心网并建立会话的流程主要有以下几个步骤:
- UE开机,连接到5G基站,发送5G网络注册请求,基站在该过程中透明,只会转发用户的注册请求到5G核心网。
- 在收到用户的注册请求时,因为是初始注册,核心网没有用户的上下文信息,所以就会向用户发送身份验证请求。
- 用户在验证了验证请求的真实性后,会向核心网发送身份验证信息,再次发送注册请求到核心网。
- 核心网收到用户的身份验证信息后,对用户的信息进行验证鉴权,如果通过,就返回注册接收消息,并且发送用户上下文初始化请求,根据用户的回应设置用户的上下文。
- 设置完成后,用户会发送PDU会话建立请求。
- 核心网接受了PDU建立请求后,设置相应的PDU资源。
- 用户可以与核心网进行通信,开始发送和接收数据,进行业务访问。
3.2 5G-AKA认证流程
图5 5G-AKA认证流程
5G-AKA认证是5G注册管理流程中至关重要的一环,其具体过程在此前的文章5G安全:5G-AKA链接攻击及对策中已经具体分析过,此处不再介绍,此处有以下三点需要说明:
- 如图5所示,图5中红色方框1部分对应图4中的初始化注册请求过程;
- 图5中的红色方框2中的流程对应于图4中的核心网向UE发送身份认证请求过程;
- 图5中的红色方框3中的流程对应于图4中的UE侧验证身份认证请求消息真实性的过程。
四、威胁场景及模拟
本文主要借助free5gc[4]模拟5G核心网、UERANSIM[5]模拟UE和基站,在具体的威胁场景中,某些需要构造数据,伪造数据包的场景,本文通过Golang实现。
4.1 篡改N2接口消息,释放用户N2接口的会话
- 原理
已经接入的终端通过发送ueContextReleaseRequest消息至AMF,请求释放会话,基站负责转发该消息,AMF通过NGAP-ID信息释放指定用户的会话。
- 模拟过程
1、如图6所示,通过在AMF上抓包,获取NGAP-ID=2
图6 抓包获取NGAP-ID
2、使用NGAP-ID构建ueContextReleaseRequest消息,从模拟基站发送该消息至AMF
图7 发送正确格式的ueContextReleaseRequest消息,使得NGAP-ID=2 的UE连接释放,进入CM-IDLE(空闲)状态
3、观察NGAP-ID的用户会话是否被释放
图8 一段时间后,模拟UE会自动重连
图9 更改NGAP-ID=3后,再次发送release指令。NGAP-ID=3的UE消失
如图6至图9所示,NGAP-ID=2的UE连接被释放后,模拟UE在一段时间后又自动重新连入网络,此时NGAP-ID为3,将伪造消息中的NGAP-ID更改为3后再次发送,会发现UE在N2接口的会话被再次非法释放。
- 原因分析
通过对开源代码free5gc中AMF网元HandleUEContextReleaseRequest函数相关代码的分析,如图10所示,由于对于UE上下文的查找方式是直接根据NGAP-ID在当前AMF已有的上下文中进行查找,没有对基站的合法性进行验证,且NGAP-ID等都是明文传输,因此可能会出现通过篡改N2接口消息,释放用户N2接口的会话的情况。
图10 AMF查找UE上下文的代码段
4.2 AKA-重放攻击(链接攻击)
- 原理
由于目标UE在收到伪基站产生的针对自身的攻击信号时,会产生与其他UE不同的回应,具体原因分析见参考文献[2]或者5G安全:5G-AKA链接攻击及对策。
- 模拟过程
在模拟环境中,通过分别重放AMF发送给目标UE的Authentication Request消息至目标UE和其他UE,探测目标UE和其他UE的反应。
预期反应是目标UE回复Sync_Failure消息,而其他终端会回复MAC_Failure消息。
- 重放至目标UE
实际模拟过程中,首先重放Authentication Request消息至目标UE,如图11所示,目标UE会返回Authentication failure(synch failure)消息,即SQN验证失败。如图12所示,目标UE收到了Authentication Request消息,但是由于SQN不在规定范围内,返回Authentication Failure消息。
图11 目标UE返回的数据包(Synch failure)
图12 目标UE的状态
- 重放至其他UE
接下来重放同样的Authentication Request消息至其他UE,探测其他UE的回应,如图13所示,其他UE也同样返回Authentication failure(synch failure)消息。查看该UE的状态,如图14所示,发现失败原因相同。
图13 其他UE返回的数据包(Synch failure)
图14 其他UE的状态
- 原因分析
到这里,可能大家会很奇怪,为什么模拟的结果跟预期效果有差异呢?
通过分析模拟UE的源码可以发现,如图15所示,在模拟UE的AKA验证逻辑中,先验证SQN的合法性,再对MAC值进行验证。
图15 模拟UE的验证过程代码
而在《3GPP 33.102 v17.0.0》(2022-05发布)中,如图16所示,UE侧的验证逻辑是先验证MAC,后验证SQN的新鲜度,因此就形成了链接攻击的根本原因,即“目标UE在收到伪基站产生的针对自身的攻击信号时,会产生与其他UE不同的回应”,而模拟UE没有严格按照3GPP规范来实现,将SQN的验证和MAC的验证更换了顺序,因此避免了上述的链接攻击。
图16 3GPP 33.102 v17.0.0(2022-05) UE侧验证逻辑
五、总结
本文基于《3GPP TS 33.102》[1]标准中定义的用户注册管理流程,结合UERANSIM+free5gc的模拟环境,介绍了5G用户初始化注册管理流程。根据该用户初始化注册管理流程,分析了2个可能面临的威胁场景,在模拟环境中进行了复现,并对复现结果进行了分析和解读。
参考文献
[1] 3GPP TS 33.102 v17.0.0 (2022-05)
[2] Privacy-Preserving and Standard-Compatible AKA Protocol for 5G,USENIX Security 2021.
[3] https://zhuanlan.zhihu.com/p/68920984
[4] https://github.com/free5gc/free5gc
[5] https://github.com/aligungr/UERANSIM
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。