工作內容
工作環境介紹
- 上班時間: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由許多虛擬化容器組成其中虛線以上為核心網 路,其中包含
- AMF:Access and Mobility Management Function。負責為用戶存取時提 供認證、權限等。
- SMF:Session Management Function。負責通話通道維護、IP分配和管理、UPF的選擇等。
- 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封包
5greplay程式碼研究
5greplay為專為5g開發的重放封包工具,藉由修改NGAP欄位,如:Peocedure_code、AMF_UE_ID、RAN_UE_ID等欄位後進行重放,來對AMF造成影響。
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等等,而不同核網的驗證標準也不一樣,透過重放修改欄位的封包,可以觀察到核網有確實對哪些欄位進行驗證,或錯誤的資料是否會對核網造成問題:
從圖片可以了解,當每秒封包數達到2000時,核網會出現延遲,並且不再處理封包,觸發封包sack_retransmission機制
linux指令、撰寫bash檔
1. 由於相關5g虛擬機作業都需要在linux系統上操作,因此需要去學習linux相關的指令
1 | $ cd [file] |
1 | $ ls -a |
1 | $ ssh [account]@[ip] |
1 | $ scp [account]@[ip1]:[dir1]/[file1] [dir2] |
1 | $ mv [dir1]/[file1] [dir2] |
1 | $ cat [file] 搭配 |less |more |head |
1 | $ grep ex : cat [file] | grep [key] |
1 | $ touch [filename] |
2. 撰寫bash檔
1 | if []; then fi |
1 | -gt -lt -eq |
1 | while |
1 | for [item] in [items] |
1 | case |
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. 測試結果
由於free5gc的UPF是透過gtp連線,因此config檔需改為UDP連線:
- target-protocols = { SCTP, UDP}
- target-hosts = {“192.168.61.102”, “192.168.62.102”}
- target-ports = { 38412, 2152}
5. NRPPA初步解說
NGPPA為5G中(GNB<->AMF)(AMF<->LMF)通訊協議,用於定位用戶位置,透過下行線路(DOWNLINK)和上行線路(UPLINK)中的參考信號(PRS、SRS),偵測用戶位置
可能可用於竄改位置
- 不同核網可能使用不同偵測方式,主要有三種:
- DL-only:DL TDOA和DL AoD
- UL-only:UL TDOA和UL AoA
- 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. 實際場域相關攻擊
在實際公司場域進行攻擊測試,來查看是否有漏洞,以及封包
是否合規等等,實際場域環境:
- ARP spoofing
- DOS
- 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。 |