iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
IT管理

一個人的5G網路與資安小圈圈系列 第 13

DAY13 透過python scapy 抓取UE建立連線時的PFCP封包

  • 分享至 

  • xImage
  •  

DAY12抓取並轉送SMF與UPF註冊時的封包,接下來要來抓取UE註冊時的封包
首先先將核心網路元件的部屬起來
再用另一台機器啟動UERANSIM
而註冊時可以看到 UE認證完成後SMF會先送出一個establish的封包至UPF

因此我們要去檢查封包的內容

    if str(PFCP(data)[0]) == "PFCP / PFCPSessionEstablishmentRequest":
        proxy_socket.sendto(data, ("10.244.0.90", 8805))
    if str(PFCP(data)[0]) == "PFCP / PFCPSessionEstablishmentResponse":
        proxy_socket.sendto(data, ("10.244.0.88", 8805))

而這邊執行會發現,SMF會有錯誤訊息,這邊是因為PDUSESSION在建立的時候RESPONSE封包裡面會帶有要建立的服務的NODE ID(如下圖)

這邊這是跟free5gc的config有關,因為我們設定時是用FQDN(完整網域名稱),所以我們修改的也要用網域名稱,而長度我們先不改所以就設定為一樣長度的名稱即可。
**首先要修改/etc/hosts 並添加我們主機ip進去

並且去修改我們的欄位

        pfcp = PFCP(data)
        # pfcp[2].ipv4 = '10.20.1.22' # when using ip in upf config 
        pfcp[2].id = 'free5gc-n4i-svc' # when using fqdn in upf config 
        pfcp[4].ipv4 = '10.20.1.22'
        proxy_socket.sendto(bytes(pfcp), ("10.244.0.88", 8805))

若smf有成功進到下一步即可以看新的PFCP封包Modification_Request。

最後將封包在轉送給SMF和UPF即可
而這邊也可以看到UE被建立的IP

可以嘗試看看用UE去ping8.8.8.8,會發現怎麼沒辦法順利連線,這方面是因為目前SMF把我們的PFCP的程式當成UPF,而UE要連線時我們沒有去轉送GTPU的封包,因此DAY14 我們要來建立一個協助UE轉送GTPU的封包的程式


上一篇
DAY12 DLC 透過python scapy 抓取SMF註冊UPF的封包
下一篇
DAY14 GTPU-PROXY
系列文
一個人的5G網路與資安小圈圈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言