蕭力誠 - 專業實習報告


工作內容

工作環境介紹

  • 上班時間:9a.m~6p.m
  • 使用硬體:筆記型電腦、螢幕
  • 使用軟體:virtualbox、mobelxtern、wireshark
  • 使用開放原始碼: FREE5GC、UERANSIM、5GREPLAY
  • 研究協議:ngap、sctp、gtp

工作詳述

了解5g的運作模適合架構,並利用5g模擬核網進行觀察,並嘗試進行如: D0S攻擊、MITM攻擊,並進行觀察和生成報告,
並且5G通訊過程中有需多協議(NGAP、GTP、DHCP…)、通道(N1、N2、N6..)、虛擬化硬體(AMF、UPF、SMF…)進行研究。  

實習期間完成的進度

(1)free5gc(核網)、UERANSIM(基地台、使用者)、5greplay(重放封包工具)虛擬機架設,並撰寫文件
(2) 5g核心架構、通道、協議的知識學習
(3) 5greplay程式碼研究
(4) 5greplay程式碼修改,增加可改動欄位
(5) 鑑別NGAP封包中可修改欄位和會對核心網路造成的影響
(6) ut-lab進行dos後的封包流量分析
(7) linux指令
(8) 撰寫bash檔、gitlab使用

期望從中學習到

(1) 5g相關知識,如:規範、架構
(2) 封包的流量監控和分析
(3) 封包協定和欄位
(4) 基本資安和網路知識
(5) 程式能力的提升
(6) 專案的參與

未來發展

(1) 考取證照:cc、cissp、cpe
(2) 提高python、c++程式能力
(3) 加強資安軟體使用能力,如:nessus、owasp

初始研究

5g核心架構、通道、協議的知識學習

5g架構圖

  • 以上為5g架構圖,可以看到5g由許多虛擬化容器組成其中虛線以上為核心網 路,其中包含
  1. AMF:Access and Mobility Management Function。負責為用戶存取時提 供認證、權限等。
  2. SMF:Session Management Function。負責通話通道維護、IP分配和管理、UPF的選擇等。
  3. UPF:User plane Function。負責用戶封包的路由和轉發、與DN的交互、User plane的QoS處理、流量管控的實施等。

在連網前UE會透過N1通道(UE->AMF)和N2通道(GNB->AMF)對AMF發起註冊請求以及安全驗證性,其通道進行SCTP連線,使用NAGP協議,發送NGSETUP、INITIALUEMESSAGE等封包,其中包含PLMN、IMSI、TAC、GUTI(UE 的臨時識別證)等值,使AMF能夠註冊成功。

一旦註冊成功,SMF會將消息發給UPF,建立N3通道,使用GTP協議,使UE能夠連上DN(DATA NETWORK),其中規範皆按照3GPP規範執行,而我住要研究的部分為N1、N2、N6這三個通道,並嘗試可能的攻擊方案,如DOS、MITM、REPLAY等攻擊方式,並產生相關報表。

當然,5GC還有許多可以研究的地方,如AKA(5G加密)、PLMN的註冊方式等

NGAP封包

N2封包
N1封包

5greplay程式碼研究

5greplay為專為5g開發的重放封包工具,藉由修改NGAP欄位,如:Peocedure_code、AMF_UE_ID、RAN_UE_ID等欄位後進行重放,來對AMF造成影響。

5greplay程式流程圖(部分)
修改前後流程

5greplay程式碼修改,增加可改動欄位

5greplay替換mmt-dpi.deb

Mmt-dpi為5greplay同公司一研發的函式庫,在5greplay中,負責修改ngap封包欄位的函式: update_ngap_data便是在mmt-dpi中。 因此如果需要對修改ngap函式做更動,需另外修改mmt-dpi,更動完後做成deb檔去安裝。

修改概略

  • 在replay.c新增兩變數char proto_att_id[50]、int new_val_num 來接收-s –v 數值
  • 在message_t結構中新增兩變數Char ngap_proto_id[50]、Int new_val ,將proto_att_id、new_val_num 放入,與封包一同傳送到rule
  • rule檔中用if、if else來判斷輸入的ngap_proto_id為預設中5個哪一個,確認後傳入mmt-dpi
  • mmt-dpi中define NGAP_UEMESSAGE_5GEA0為5, NGAP_ATT_PROCEDURE_CODE為1
  • update_ngap_data的switch中,增加NGAP_UEMESSAGE_5GEA0的case

新增指令

  • -s(set) <欲修改欄位>
-s 修改欄位 說明
NGAP_ATT_PROCEDURE_CODE 修改封包procedure code
NGAP_ATT_PDU_PRESENT 修改PDU_PRESENT//EX:initiatingMessage
NGAP_ATT_RAN_UE_ID 修改封包RAN-UE-NGAP-ID
NGAP_ATT_AMF_UE_ID 修改封包AMF-UE-NGAP-ID
NGAP_USMESSAGE_5GEA0 修改INITUEMESSAGE封包的5GEA0
  • -v(value) <欲將欄位修改成的數值>
-s 修改欄位 -t 可修改範圍
NGAP_ATT_PDU_PRESENT 0(initiatingMessage)、1(successfulOutcome)、2(unsuccessfulOutcome)
NGAP_ATT_RAN_UE_ID 0(00 00) ~ 65535(FF FF)
NGAP_ATT_AMF_UE_ID 0(00 00) ~ 65535(FF FF)
NGAP_USMESSAGE_5GEA0 0(not support 5G-EA0)、1(support 5G-EA0)

鑑別NGAP封包中可修改欄位和DOS會對核心網路造成的影響

5g核網在註冊時需要驗證許多欄位,如:plmn、guti等等,而不同核網的驗證標準也不一樣,透過重放修改欄位的封包,可以觀察到核網有確實對哪些欄位進行驗證,或錯誤的資料是否會對核網造成問題:

核網記憶體錯誤
修改封包中security_header_type(負責對封包加密和完整性保護)會被核網拒絕註冊
修改封包中5G-EA0(支援加密演算法)也會被核網拒絕註冊

也有修改後不會對核網造成影響的欄位AMF_UE_ID、RAN_UE_ID(GNB和AMF標記UE的標示符)
對核網做DOS攻擊

從圖片可以了解,當每秒封包數達到2000時,核網會出現延遲,並且不再處理封包,觸發封包sack_retransmission機制

SCTP Retransmission

linux指令、撰寫bash檔

1. 由於相關5g虛擬機作業都需要在linux系統上操作,因此需要去學習linux相關的指令

指定路徑
1
$ cd [file]
列出目錄
1
$ ls -a
遠端連線
1
$ ssh [account]@[ip]
虛擬機間傳送檔案
1
2
$ scp [account]@[ip1]:[dir1]/[file1] [dir2]
$ scp [dir2] [account]@[ip2]:[dir1]/[file1]
移動
1
$ mv [dir1]/[file1] [dir2]
印出檔案
1
$ cat [file] 搭配 |less |more |head
關鍵字搜索
1
$ grep ex : cat [file] | grep [key]
建立檔案
1
$ touch [filename]

2. 撰寫bash檔

if 條件式
1
if []; then fi 
大於、小於、相同
1
-gt -lt -eq
if while 迴圈
1
2
3
4
while
do
...
done
for 迴圈
1
2
3
4
for [item] in [items]
do
...
done
case
1
2
3
4
case 
a);;
b);;
esac
第一位參數往左移
1
$ -#0 shift

3. GTP(N3)封包測試

從今年資安大會對5g趨勢來看,最近傾向於攻擊核網的UPF(負責轉發封包)
測試過程:
free5gc與UERANSIM連線後,會透過uesimtun0網卡連線DN(192.168.0.95),192.168.0.95只能透過uesimtun0連線,其餘主機無法PING,成功連線候用UERANSIM ping 192.168.0.95並錄製,獲取gtp封包,回到5greplay主機,使用scp獲取封包檔案後,用tcpreplay和5greplay重放。

圖解

ip:

  • UE:10.60.0.1
  • N2:192.168.61.112
  • N3:192.168.62.112
  • DN:192.168.0.95

4. 測試結果

tcpreplay成功發送封包
free5gc成功接收封包並轉發給DN,DN也正常回覆icmp封包
UERANSIM成功接收到DN的回傳封包

由於free5gc的UPF是透過gtp連線,因此config檔需改為UDP連線:

  • target-protocols = { SCTP, UDP}
  • target-hosts = {“192.168.61.102”, “192.168.62.102”}
  • target-ports = { 38412, 2152}

5Greplay重放
ens224(N3)
DN(192.168.0.95)
GNB(192.168.61.113)
UE(10.60.0.1)

5. NRPPA初步解說

NGPPA為5G中(GNB<->AMF)(AMF<->LMF)通訊協議,用於定位用戶位置,透過下行線路(DOWNLINK)和上行線路(UPLINK)中的參考信號(PRS、SRS),偵測用戶位置

可能可用於竄改位置

  • 不同核網可能使用不同偵測方式,主要有三種:
    1. DL-only:DL TDOA和DL AoD
    2. UL-only:UL TDOA和UL AoA
    3. Multi-RTT
  • 下行到達時差(DL-TDOA):

定位參考信號(PRS)的參考信號,用於UE對每個基站的PRS執行下行參考信號時差(DL RSTD)測量。這些測量結果將報告給位置服務器

RPS由GNB中RRC協議傳輸

  • 上行到達時差(UL-TDOA):
    與下行到達時間差相反,上行到達時差為UE發出訊號
  • 下行偏离角(DL AoD):
    測量報告用於根據每個gNB的UE波束位置確定AoD。 然後,位置伺服器使用AoD來估計UE的位置。参考信号接收功率

暑期實習期間完成工作

1. 5g實際場域布置

初始5g測試都是在本機電腦中虛擬機做相關測試,當然,並沒有說不好,但需要實際的場域驗證實,可能會因為環境的差異而導致錯誤的結果,而由於這次公司需要參展的緣故,因此幫忙布置完整的5g場域,從開始的USER、RAN、核心網路,以及串流所需要的SERVER。
完整場域示意圖 :

學習到的相關技術:
1. streaming server的架設與其相關的使用協議
- wowza的使用與設定
- obs中影像位元率對整體直播的影響
- 防火牆的規則新增
2. 網段與環境硬體的規劃與設定
- Switch、AP的設定
- 整體環境結構規劃

2. 實際場域相關攻擊

在實際公司場域進行攻擊測試,來查看是否有漏洞,以及封包
是否合規等等,實際場域環境:實際場域核心網路

  1. ARP spoofing
  2. DOS
  3. Fuzzzing

結果 :

測試項目 使用工具 使用原因
網路端口服務檢測 nmap 檢查主機開啟哪些服務,得知服務內容與版本,可對相關服務進行攻擊
掃描 SSL/TLS 伺服器的支援協議版本 sslscan 評估主機加密套件的安全性
系統弱點掃描分析 nessus 對主機做弱點掃描分析
資料庫分析 sqlmap 測試是否有 sql injection 漏洞
暴力破解密碼 hydra 是否有使用過於簡單的密碼規則
檢查網站伺服器漏洞 nikto 檢查網站伺服器是否有過時的套件或漏洞
檢查網站伺服器漏洞 0WASP ZAP 檢查網站伺服器是否有過時的套件或漏洞

3. 應用端攻擊練習

使用工具

測試項目 測試結果
N3 call N6 DOS (TIE情境1) UE 播放影片中斷
N2 / N3 ARP (TIE情境2) UE 播放影片中斷
N2 Fuzz 生成封包 (TIE情境3) 沒有影響
N3 DOS 5gc / gNB 沒有影響
N3攻擊機 ping CPE / UE 理論上不行,但ping成功。因場域有設定 route,UPF將封包包成 GTP 轉發
N6攻擊機 ping CPE 理論上不行,但ping成功。在場域因為有設定 route。

4. 暑期實習間感想

到進入公司為止,已經過了半年,對於所做的事已逐漸嫻熟於心,對我而言,這條路絕對一場挑戰,但也是一次難得的學習機會,因緣際會進入了資安合5g這個領域,重開始的懵懂無知,到如今也能和別人討論的上一些技術相關的知識,並且看懂5g 協議的規格書,對我自己來講也是個很大的突破,當然我也很感激我的主管和同事,當我遇到難題時,他們總是樂於分享他們的經驗,並給予我鼓勵。這讓我認識到團隊合作的重要性,這段工作中,讓我明白需要在這條路上持續走下去,還有更多需要學習的東西。

自我評估及心得感想

對我而言,為期一年的實習經驗是十分寶貴的,從前雖然在餐廳打工過,但這是我第一次踏入相關業界,對於我而言,這是一次學習的機會也是確定我未來發展方向的轉折點,在實習前,其實已經有做好心理建設,但到了之後才發現,自己以前學習的東西十分淺薄,很多事情都要從頭學起的,甚至有其他人只比你大一些,卻擁有豐富的經驗和實力,並且職場上的東西和學校也有很大的差別,需要網路查閱許多文件,也需要實際去操作,實習的開始也讓我開始了解自我學習的重要性,工作時你並沒有很多時間去學習,因此必須要趁其他時間去了解更多東西,才能快速的適應手上的工作,我認為我的學習速度不算太快,5g相關文件不算太多,有些還需要用英文去查,虛擬機的操作,封包的使用都要自己去學習,沒有人會像老師一樣慢慢指導你,但也如此,能夠學習到各方面的知識,如網路通訊、c語言的編成、linux的環境等等。
5g為近幾年開始出現的通訊網路,雖然其架構已經很完整,但至今為止,其規範3GPP仍在持續增加,就之前發生的5g資安問題,如:驗證程序的紕漏、虛擬化硬體容易招受到dos攻擊等,5g的資安需求沒有如網頁資安 、工控資安那麼普及,但仍是十分重要,因此能夠完整的學習好5g相關知識,能夠對5g的資安能力,有進一步的強化

Author: 蕭力誠
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source 蕭力誠 !
  TOC