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