一. 概述
本文先介紹了5G環境下用戶注冊管理流程中的初始化注冊場景,再基于該場景中的注冊過程,分析了其可能存在的兩個威脅場景,在UERANSIM+free5gc的模擬環境中進行了復現,最后結合3GPP規范和開源代碼對模擬結果形成的原因進行了分析。
二. 背景
2.1
移動通信技術的前世今生
1G語音時代提供模擬語音業務,“大哥大”使用的就是1G網絡,1G網絡在我國于1987年正式商用,2001年底中國移動關閉模擬通信網[3],1G時代宣告結束。
2G文本時代完成了從模式制式向數字制式轉變,主要支持語音以及短信等低速數據業務,那個時代GSM的網速僅有9.6KB/s;
3G圖片時代采用碼分多址(CDMA)的技術,實現了移動多媒體業務,支持3G網絡的平板電腦應運而生,涌現出一大批的優秀產品;
4G移動互聯網時代以多輸入輸出(MIMO)以及正交頻分多址接入(OFDM)為核心技術,速度更快,能夠滿足用戶對無線服務的需求,由此開啟移動互聯網時代;
5G萬物互聯時代有著高速率、低時延、大連接的特點,并且更加安全,在有著豐富的工業應用場景的同時,虛擬現實(VR)、增強現實(AR)等對網絡時延、帶寬要求較高的應用也迅速走進了大家的生活。
2.2
5G核心網架構

圖1 5G網絡架構圖
如圖1所示,5G網絡由眾多網元構成,每個網元都有特定的功能,UE為用戶設備,(R)AN為(無線)接入網絡,DN為數據網絡,紅框內為核心網中的網元集合。
5G核心網采用基于服務的系統架構,在部署上采用虛擬機和容器的方式,采用軟件定義網絡(SDN)和網絡功能虛擬化(NFV)的技術,將控制與轉發分離,技術成本大幅降低,使網絡更加開放,且具有編程能力。
5G核心網中擁有眾多的網元,如AMF、UDM、NRF等,共同承擔起核心網的功能,其中與用戶注冊管理關系最密切的網元是AMF網元,從圖中也可看出,AMF網元與基站通過N2口進行通信。
2.3
AMF簡介
AMF全稱Access and Mobility Management Function,即接入與移動性管理功能,負責注冊、連接、可達性、移動性、安全訪問管理和業務授權。

圖2 5G系統架構中AMF與基站的連接方式
如圖2所示,在5G系統架構中,AMF與基站通過NG控制面接口連接,即5G核心網中的N2口,使用的協議為NGAP協議。
三. 用戶注冊管理
如圖3所示,用戶注冊管理是用于用戶和網絡之間進行注冊和注銷,在網絡建立上下文的過程,用戶想要獲取網絡提供的業務必須先向網絡進行注冊。

圖3 用戶注冊管理流程
用戶注冊管理有四個場景:
1 用戶初次注冊網絡
2 用戶周期性注冊網絡
3 用戶位置變更引起的網絡重新注冊
4 緊急業務引發的網絡注冊
本文以用戶初次注冊網絡為例對用戶注冊管理流程進行介紹。
3.1
5G終端初始注冊接入核心網及會話建立流程

圖4 終端初次注冊接入5G核心網及會話建立流程
如圖4所示,5G終端初始注冊接入核心網并建立會話的流程主要有以下幾個步驟:
1 UE開機,連接到5G基站,發送5G網絡注冊請求,基站在該過程中透明,只會轉發用戶的注冊請求到5G核心網。
2 在收到用戶的注冊請求時,因為是初始注冊,核心網沒有用戶的上下文信息,所以就會向用戶發送身份驗證請求。
3 用戶在驗證了驗證請求的真實性后,會向核心網發送身份驗證信息,再次發送注冊請求到核心網。
4 核心網收到用戶的身份驗證信息后,對用戶的信息進行驗證鑒權,如果通過,就返回注冊接收消息,并且發送用戶上下文初始化請求,根據用戶的回應設置用戶的上下文。
5 設置完成后,用戶會發送PDU會話建立請求。
6 核心網接受了PDU建立請求后,設置相應的PDU資源。
7 用戶可以與核心網進行通信,開始發送和接收數據,進行業務訪問。
3.2
5G-AKA認證流程

圖5 5G-AKA認證流程
5G-AKA認證是5G注冊管理流程中至關重要的一環,其具體過程在此前的文章5G安全:5G-AKA鏈接攻擊及對策及對策中已經具體分析過,此處不再介紹,此處有以下三點需要說明:
1 如圖5所示,圖5中紅色方框1部分對應圖4中的初始化注冊請求過程;
2 圖5中的紅色方框2中的流程對應于圖4中的核心網向UE發送身份認證請求過程;
3 圖5中的紅色方框3中的流程對應于圖4中的UE側驗證身份認證請求消息真實性的過程。
四. 威脅場景及模擬
本文主要借助free5gc[4]模擬5G核心網、UERANSIM[5]模擬UE和基站,在具體的威脅場景中,某些需要構造數據,偽造數據包的場景,本文通過Golang實現。
4.1
篡改N2接口消息,釋放用戶N2接口的會話
4.1.1
原理
已經接入的終端通過發送ueContextReleaseRequest消息至AMF,請求釋放會話,基站負責轉發該消息,AMF通過NGAP-ID信息釋放指定用戶的會話。
4.1.2
模擬過程
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接口的會話被再次非法釋放。
4.1.3
原因分析
通過對開源代碼free5gc中AMF網元HandleUEContextReleaseRequest函數相關代碼的分析,如圖10所示,由于對于UE上下文的查找方式是直接根據NGAP-ID在當前AMF已有的上下文中進行查找,沒有對基站的合法性進行驗證,且NGAP-ID等都是明文傳輸,因此可能會出現通過篡改N2接口消息,釋放用戶N2接口的會話的情況。

圖10 AMF查找UE上下文的代碼段
4.2
AKA-重放攻擊(鏈接攻擊)
4.2.1
原理
由于目標UE在收到偽基站產生的針對自身的攻擊信號時,會產生與其他UE不同的回應,具體原因分析見參考文獻[2]或者5G安全:5G-AKA鏈接攻擊及對策。
4.2.2
模擬過程
在模擬環境中,通過分別重放AMF發送給目標UE的Authentication Request消息至目標UE和其他UE,探測目標UE和其他UE的反應。
預期反應是目標UE回復Sync_Failure消息,而其他終端會回復MAC_Failure消息。
4.2.2.1
重放至目標UE
實際模擬過程中,首先重放Authentication Request消息至目標UE,如圖11所示,目標UE會返回Authentication failure(synch failure)消息,即SQN驗證失敗。如圖12所示,目標UE收到了Authentication Request消息,但是由于SQN不在規定范圍內,返回Authentication Failure消息。

圖11 目標UE返回的數據包(Synch failure)

圖12 目標UE的狀態
4.2.2.2
重放至其他UE
接下來重放同樣的Authentication Request消息至其他UE,探測其他UE的回應,如圖13所示,其他UE也同樣返回Authentication failure(synch failure)消息。查看該UE的狀態,如圖14所示,發現失敗原因相同。

圖13 其他UE返回的數據包(Synch failure)

圖14 其他UE的狀態
4.2.3
原因分析
到這里,可能大家會很奇怪,為什么模擬的結果跟預期效果有差異呢?
通過分析模擬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側驗證邏輯
中國信通院CAICT
安全牛
一顆小胡椒
CNCERT國家工程研究中心
嘶吼專業版
CNCERT國家工程研究中心
安全圈
虹科網絡可視化與安全
FreeBuf
中國信息安全
聚銘網絡
系統安全運維