文/葛善兵
針對LTE核心網(wǎng)Diameter協(xié)議進(jìn)行安全缺陷檢測,采用可以黑盒的自動化測試方法——模糊測試法,進(jìn)行LTE核心網(wǎng)設(shè)備的自動化、全面化的安全缺陷檢測,確定高效的fuzz策略,合理設(shè)計(jì)完整性、可用性良好的LTE核心網(wǎng)Diameter協(xié)議的fuzz測試框架,確保電信網(wǎng)絡(luò)的運(yùn)行安全可靠性。
LTE核心網(wǎng)實(shí)現(xiàn)了控制與承載分離,通過網(wǎng)元合并無線側(cè)功能,趨使核心網(wǎng)結(jié)構(gòu)的扁平化,降低設(shè)備處理延遲,實(shí)現(xiàn)控制與用戶平面的拆分,靈活地實(shí)現(xiàn)用戶面網(wǎng)關(guān)的分布式部署。在LTE核心網(wǎng)絡(luò)架構(gòu)之中,eNodeB是唯一的無線側(cè)網(wǎng)元,鏈接用戶終端UE和核心網(wǎng),確保S1-MME邏輯接口與MME的連接,實(shí)現(xiàn)對用戶的移動性管理和安全管理,并通過與HSS的溝通,與用戶簽約數(shù)據(jù)進(jìn)行交互管理。同時,LTE核心網(wǎng)的不同網(wǎng)元之間通過接口實(shí)現(xiàn)通信,接口之間采用TCP、UDP、SCTP等協(xié)議,其中:S1-MME接口是eNodeB和MME之間控制平面的接口,負(fù)責(zé)尋呼、切換、用戶上下文管理、控制信令傳送等,應(yīng)用層和傳輸層分別采用S1AP協(xié)議和SCTP協(xié)議。S11接口是MME和SGW之間控制平面的接口,實(shí)現(xiàn)對資源的合理分配及管理,應(yīng)用層和傳輸層的協(xié)議分別為GTPv2、UDP協(xié)議。S5/S8接口負(fù)責(zé)SGW和PGW之間的通信,用于單個用戶創(chuàng)建、刪除、變更等管理,應(yīng)用層和傳輸層協(xié)議分別為GTPv2、UDP。S1-U接口是eNodeB和S-GW之間用戶平面的接口,用于圖片、視頻、文本的傳輸,應(yīng)用層和傳輸層分別采用GTP、UDP協(xié)議。S6a接口是MME和HSS間負(fù)責(zé)通信的接口,應(yīng)用層和傳輸層分別采用Diameter、SCTP/TCP協(xié)議。
Diameter協(xié)議是AAA協(xié)議的拓展和更新,承載于TCP或SCTP之上,負(fù)責(zé)核心網(wǎng)元MME和HSS的數(shù)據(jù)交互,是一種基于問答的消息協(xié)議,它保留原RADIUS協(xié)議的向后兼容性,并突破了單向的客戶端/服務(wù)器模式,成為面向連接的傳輸協(xié)議,實(shí)現(xiàn)流量、消息確認(rèn)、消息重傳等功能,體現(xiàn)出網(wǎng)絡(luò)安全接入的性能。同時,Diameter協(xié)議還支持用戶接入核心網(wǎng)的認(rèn)證和簽約,利用HSS數(shù)據(jù)庫服務(wù)器處理所有用戶簽約數(shù)據(jù),如:鑒權(quán)信息、授權(quán)信息、位置信息、用戶業(yè)務(wù)屬性等,并采用SCTP流控制傳輸協(xié)議實(shí)現(xiàn)可靠傳輸和安全數(shù)據(jù)保護(hù)。另外,Diameter協(xié)議還有不同類型的節(jié)點(diǎn),即:客戶節(jié)點(diǎn)、服務(wù)器節(jié)點(diǎn)、代理節(jié)點(diǎn),其中:客戶節(jié)點(diǎn)通過服務(wù)器節(jié)點(diǎn)獲取服務(wù);代理節(jié)點(diǎn)負(fù)責(zé)消息的轉(zhuǎn)發(fā),極大地提升LTE核心網(wǎng)的運(yùn)營性能和效率。
Diameter消息由公共報(bào)頭和上層應(yīng)用協(xié)議構(gòu)成,其中:公共報(bào)頭部分涵蓋與上層應(yīng)用無關(guān)的通用消息和通用AVP數(shù)據(jù);上層應(yīng)用協(xié)議涵蓋基于Diameter協(xié)議應(yīng)用部分消息、信令流程和特定AVP數(shù)據(jù),它們都是由TCP/SCTP協(xié)議作為傳輸層,實(shí)現(xiàn)消息的有序傳送和差錯重傳,適用于基于Diameter協(xié)議的不同場景的擴(kuò)展應(yīng)用。
Diameter數(shù)據(jù)包的主要字段包括有:1字節(jié)長度的Version字段;3字節(jié)長度的Message Length字段;3字節(jié)長度的Command Code字段等,數(shù)據(jù)包的數(shù)據(jù)部分也即AVP數(shù)據(jù),包 括 有AVP碼、AVP Flag、AVP length、實(shí)際的值。數(shù)據(jù)包的消息路由主要是依靠代理節(jié)點(diǎn)Diameter Proxy加以實(shí)現(xiàn)。另外,不同Diameter類型的數(shù)據(jù)包還涵蓋有其他類型的AVP數(shù)據(jù),如:全局標(biāo)識一個Diameter會話的Session-ID;用于標(biāo)識消息的發(fā)起方主機(jī)的Origin-Host。
S6a接口的Diameter協(xié)議是上層Diameter應(yīng)用協(xié)議,主要實(shí)現(xiàn)MME和HSS間的信息交互,完成鑒權(quán)管理、安全管理、移動性管理、用戶簽約數(shù)據(jù)管理等流程,具體包括有不同的信令流程,其中:
(1)位置管理流程。主要有:Diameter信令中的位置更新流程Update Location主要通過使用Update Location Request/Answer兩條消息實(shí)現(xiàn);取消更新流程Cancel Location主要采用Cancel Location Request/Answer兩條消息實(shí)現(xiàn);清除用戶流程Purge UE主要采用Purge UE Request/Answer兩條消息實(shí)現(xiàn)。
(2)簽約數(shù)據(jù)處理流程。其中,插入用戶簽約數(shù)據(jù)采用Insert Subscriber Data Request/Answer兩條信令實(shí)現(xiàn);刪除用戶簽約數(shù)據(jù)采用Delete Subscriber Data Request/Answer兩條信令消息加以實(shí)現(xiàn)。
(3)鑒權(quán)流程。MME通常會向HSS申請鑒權(quán)參數(shù),主要采用Authentication Information Request/Answer兩條信令實(shí)現(xiàn)。
(4)故障恢復(fù)流程。該流程通過HSS重啟的方式實(shí)現(xiàn)觸發(fā),并向MME發(fā)出Reset Request/Answer的兩條通知消息,意指網(wǎng)絡(luò)故障重啟狀態(tài)會導(dǎo)致信令交互無法完成,MME獲悉之后將有影響的用戶狀態(tài)修改為無附著狀態(tài)。
(5)通知流程。主要完成MME與HSS之間的業(yè)務(wù)參數(shù)調(diào)整,包括終端信息、終端SRVCC能力變更、PGW分配及變更等調(diào)整內(nèi)容,使用信令為Notify Request/Answer兩個消息。
基于上述Diameter協(xié)議在核心網(wǎng)S6a接口的業(yè)務(wù)場景和流程,可以生成面向LTE核心網(wǎng)Diameter協(xié)議的fuzz測試算法,在Diameter協(xié)議數(shù)據(jù)包依循流程方面的特征以及數(shù)據(jù)字段特征的前提下,可以進(jìn)行如下fuzz測試算法流程的操作:
(1)通過CER/CEA消息建立傳輸層的連接,避免發(fā)出的測試Diameter數(shù)據(jù)包被遺失。
(2)結(jié)合發(fā)送的Diameter消息的不同類型,選擇不同的fuzz策略:對于長度固定字段而言,要確保每個字段優(yōu)先滿足自身的約束條件并進(jìn)行位變異;對于不確定長度字段而言,要優(yōu)先使用特殊長度實(shí)現(xiàn)變異,然后再使用。
(3)在生成變異數(shù)據(jù)時,要將Diameter消息的長度固定字段放入位變異隊(duì)列,將不固定長度字段放入長度變異隊(duì)列;并監(jiān)測連接狀態(tài),對于連接斷開的異常情況要記錄并發(fā)送;最后要對變異隊(duì)列中的字段進(jìn)行逐一變異測試。
為了避免測試過程不被打擾,fuzz安全缺陷測試框架要進(jìn)行正確的變異,較好地封裝協(xié)議數(shù)據(jù)包,并接受待測試設(shè)備反饋的結(jié)果,為后續(xù)動作做出決策。總體架構(gòu)設(shè)計(jì)主要包括以下模塊:連接建立模塊、數(shù)據(jù)包變異模塊、數(shù)據(jù)包發(fā)送模塊、結(jié)果保存及分析模塊。
3.2.1 連接建立模塊
主要實(shí)現(xiàn)框架與被測試對象的通信鏈接,包括建立傳輸層TCP連接、建立傳輸層SCTP連接、建立應(yīng)用層連接,并采用套接字(socket)的方式,以clinet/server的方法進(jìn)行通訊。同時,選擇按照面向?qū)ο蟮姆绞綄B接實(shí)現(xiàn)封裝處理,使程序具有更強(qiáng)的可讀性和可擴(kuò)展性。
3.2.2 數(shù)據(jù)包變異模塊
該模塊主要基于Diameter協(xié)議的協(xié)議棧生成不同類型的Diamerter數(shù)據(jù)包,并根據(jù)變異算法實(shí)現(xiàn)數(shù)據(jù)包的變異。
3.2.3 數(shù)據(jù)包生成模塊
該模塊將變異數(shù)據(jù)進(jìn)行打包,使之由數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為網(wǎng)絡(luò)流,并被對端接收。
3.2.4 結(jié)果保存與分析模塊
準(zhǔn)確發(fā)送構(gòu)造的fuzz測試變異數(shù)據(jù)包后,要對fuzz測試結(jié)果進(jìn)行監(jiān)聽、響應(yīng)和保存,可以通過封裝的Socket類的數(shù)據(jù)接收方法,監(jiān)聽服務(wù)器的返回值,獲悉服務(wù)器的有回應(yīng)狀態(tài)、無回應(yīng)狀態(tài)和異常狀態(tài),當(dāng)發(fā)生崩潰異常狀態(tài)時,要對異常數(shù)據(jù)包進(jìn)行保存和分析,可以選擇序列化的方式對Diameter對象進(jìn)行處理,使復(fù)雜的數(shù)據(jù)結(jié)構(gòu)序列化,完成復(fù)雜數(shù)據(jù)的傳輸和存儲。
綜上所述,LTE核心網(wǎng)Diameter協(xié)議采用fuzz測試數(shù)據(jù)包生成算法,構(gòu)建基于Diameter協(xié)議的fuzz測試框架,通過不同的功能模塊如:連接建立、數(shù)據(jù)包變異、數(shù)據(jù)包生成、結(jié)果存儲與分析等,對Diameter協(xié)議核心網(wǎng)設(shè)備進(jìn)行安全缺陷檢測,較好地提升fuzz測試生成數(shù)據(jù)的有效性。未來還要進(jìn)一步優(yōu)化模糊測試的數(shù)據(jù)生成算法,并延伸到除核心網(wǎng)S6a接口之外的高層應(yīng)用,拓展Diameter應(yīng)用的fuzz測試技術(shù)領(lǐng)域。