0%

[行動網路安全] Project2 IPSec/SIP session Hijacking

Goals

  • Understand how to hijack an IPSec/SIP session
    • Non-3GPP network access of 4G/5G core network is protected by IPSec
  • You will learn about
    • the IPSec operation
    • using adb shell for development on smartphones
    • fabricating packets using raw socket
    • fabricating ESP headers and authentication data
    • fabricating TCP packets

介紹

IPSec 是什麼

Internet Protocol Security 是一安全的網路協定套件,而在傳輸層就是利用 TLS,IPSec 透過對 IP 協定的封包進行加密和認證來保護 IP 協定的網路傳輸協定族(一些相互關聯的協定的集合),簡單來說就是運用多種協定和演算法來保護 IP 封包。

  • 兩個主要功能
    • 封裝安全載荷(ESP),提供機密性、資料來源認證、無連接完整性、防重放和有限的傳輸流(traffic-flow)機密性
    • 網際網路金鑰交換(Internet Key Exchange,簡稱IKE或IKEv2),為 AH、ESP 操作所需的安全關聯(SA)提供演算法、封包和金鑰參數 –> 在這個 project 不會討論到這個,因為在 core network 中 key 來自於 SIM 卡

Security Association(SA)

SA 是資料庫(SAD)中的某一筆紀錄,登錄所需的安全機制,例如: 安全協定(AH 或 ESP)、操作模式(傳輸或通道模式)、認證演算法(HMAC-MD5等)、加密系統(DES-CBC等)、或共享秘密金鑰等。

更多關於 SA 細節可以參考: 連結

IPSec Primer

Security Associations
為 IPSec 內的安全關聯(SA)。

  • A key concept of IPSec
    • One-way relationship between a sender and a receiver: 如果有 bi-directional 通訊就需要 2-way Associations
    • Two-way secure exchange: two SAs are required
  • Uniquely identified by three parameters: 辨識每個 SA
    • Security parameter index (SPI)
    • IP destination address
    • Protocol identifier: AH or ESP: AH 目前已經很少在用了,因為可以被複製

Two IPSec Operation Modes
IPSec 的運作模式有兩種:

  • Transport mode: 像是 Vo-wifi
  • Tunnel mode: 兩個 router 或是 gateway 之間,假設公司有多個 branches,可以利用 IPsec 保護 branch 之間的通訊,而使用者不用安裝任何 IPSec 軟體,直接被 gateway 保護
    IPSec Modes

Encapsulating Security Payload(ESP)
ESP
Payload Data,可以是 TCP/UDP 或是 IP 封包,藍色框框中包含加密資料,所以要使用加密演算法來加密這些資料,紅色框框中包含需要提供的資料完整性保護。

Transport 和 Tunnel Mode 比較
IPSec 的兩種運作模式:

  • Transport mode
    • Protection: IP 封包的 payload
    • 常用於兩主機間端對端的通訊
    • ESP 保護 IP payload,不是 IP header
  • Tunnel Mode
    • Protection: 整個 IP 封包
    • 整個來源封包利用 tunnel 傳送到另一個點
    • 當其中一端的 SA 是 security gateway
    • 防火牆後面的網路上主機可以在不實作 IPSec 的情況下進行安全通訊。

AH+ESP
AH + ESP

VoWi-Fi Security
VoWi-Fi Security

  • Wi-Fi IF 與 ePDG 間是 IPSec Tunnel Mode
  • IMS VIF 與 IMS Core 間是 IPSec Transport Mode

    project 就是要 hijack 這個 Transport mode

IPSec Hijacking Attack
Hijacking

IPSec Hijack 實作步驟

前言

情境: UE(智慧手機)在傳輸中有 IPSec association,這個 association 承載 TCP 連接,與模擬的 IMS 伺服器(筆電或虛擬機)。
:::info
攻擊者開發一個攻擊程式來 hijack IPSec/TCP association
:::
Attack Scenario

如何進行

開啟一程序來建立 IPSec/TCP 關聯,並在 UE 上開發一個攻擊程序以劫持 IPSec/TCP 關聯,並用攻擊者程式向伺服器傳送特定旗標。

劫持成功後,伺服器會用正確的回應回覆(如上圖)。

設置環境

使用 Wi-Fi 將 UE 和 IMS 伺服器連接到同一個局域網,首先,下載 VM image,包含所有程式和範例程式碼。
Environment

如何攻擊

hijack

攻擊者程式要做什麼

  • 訊息即時監控和收集
    • 從 SIP/TCP header 中取得 session 訊息,例如 TCP sequence 和 ESP SPI
    • 從安全關聯資料庫(SAD)中檢索 IPSec 安全 context(如 ESP 驗證密鑰)
  • 製作(fabrication) IPSec/TCP 封包
    • 製作 TPC/IPSec/IP header,包括所有 field 和 checksum
    • 產生 ESP padding
      • Pad Length 和 Next Header field 必須與 4-byte word 右對齊(RFC4303 Section 2.4)
  • 產生 ESP 驗證資料
    • 使用 hmac_sha1_96

Todo List

File Description
./src/dev.c 填寫 struct sockaddr_ll addr,用於在函式 set_sock_fd 中 bind
./src/dev.c 把整個訊框儲存到 self->frame
./src/transport.c 完成 TCP checksum 計算
./src/transport.c 收集 segm 資訊
./src/transport.c 填寫 self->tcphdr
./src/net.c 完成 IP checksum 計算
./src/net.c 收集 pkt 資訊
./src/net.c 從 SAD dump 身份驗證密鑰
./src/esp.c 填寫 self->padself->pad_len(參考 RFC4303 Session 2.4)
./src/esp.c 把所有需要驗證的東西都放到 buff 並加上 nb
./src/esp.c 收集 esp_pkt 資訊
./src/esp.c 填寫 ESP headertailer
:::warning
更多詳細介紹參考: 連結
:::

驗證是否成功兩步驟

  • single handshake test with a flag (70%)
    • An example with an invalid flag and a valid flag
      single handshake
  • multiple handshake tests with three flags (30%)
    • An example with an invalid flag and two valid flags
      multiple handshake