网络架构安全与网元交互安全:5G核心网网元服务异常检测( 二 )


5GC网元服务异常检测原型
数据解析部分采用了Pyshark所提供的方法 。tshark是wireshark下的解包工具 , 而Pyshark是针对tshark的Python封装器 , 利用Pyshark可以通过Python程序将数据包中各层的各个字段解析出来 。
在数据包中 , HEADER帧与DATA帧有时是分开的 , 由此会引发数据包的截断问题 , 即header与body不在同一数据帧中 。那么在提取参数结构之前 , 首先需要解决参数的归属问题 。使用http2 stream id与tcp stream id可以将同一请求的信息关联起来 。
为解决高并发下的数据包归属问题 , 需要从解析后的数据集中提取用户信息 。这里的用户信息主要是指用户设备在核心网中的身份标识 , 根据3GPP TS23.502 , 用户设备在核心网中的身份标识包括用户永久标识符(SUPI)、用户隐藏标识符(SUCI)、永久设备标识符(PEI)、5G全球唯一临时标识符(5G-GUTI)等 。通过对已有数据集的分析处理 , 用户设备的身份标识主要包含在请求的URL中的请求参数与响应参数中 。因此 , 在这几个字段下 , 采用关键字符匹配的手段 , 可提取出用户设备的身份标识 , 并将其作为一项特征存储进数据集中 。
判断两次通信是否属于同一序列的一项重要标准为:这两次通信间是否存在“响应等待” 。以核心网对用户设备的鉴权流程为例 , 此流程的网元调用序列为AMF-AUSF-UDM-UDR , 映射到数据包中体现为AMF向AUSF发起请求 , AUSF向UDM发起请求 , UDM向UDR发起请求 , UDR向UDM返回响应 , UDM向AUSF返回响应 , AUSF向AMF返回响应 。由此看来 , 序列存在的一项关键特征为 , 序列前置位的网元发送通信请求后 , 不会立刻收到响应回复 , 需要等待序列后置位的网元以序列逆序依次返回响应 。
* * *
5GC网元服务安全异常检测原型的核心技术在于参数结构提取算法、序列还原算法以及参数筛选模型 。通过实验验证 , 检测原型可以有效检测出5GC网元服务异常 。
在协议安全方面 , 下一步还需要对N1、N2、N4接口协议可能存在的脆弱性进行分析和验证 。此外 , 尚需要将5GC的业务行为引入检测机制 , 建立更细粒度的基线 。
盼望5GC作为万物互联的基础设施之一 , 可以高效且安全地为大家提供便利 。
(辛冉系中国信息通信研究院安全研究所工程师 , 高深、阮博男系绿盟科技集团股份有限公司安全研究员)