軟體定義無線電(SDR)是一種無線電通信系統,簡單來說,就是通過數字信号處理技術在通用可程式設計數字信号處理硬體平台上,利用軟體定義來實作無線電台的各單元功能,進而對無線電信号進行調制、解調、測量。SDR架構放棄了傳統無線電電路中所有的硬體單元,包括變頻、混頻、濾波器、放大器、檢波器、解調器等,所有的處理,包括混混頻,濾波,解調等都是用軟體來完成的,完全是一種新的架構和技術。
其實,SDR技術和架構的無線電産品在軍用和商用無線電領域早已廣泛使用,近年來SDR技術已經被應用到了與大衆接觸最為密切的行動電話中了。
使用SDR嗅探監聽GSM網絡的通信流量已經不是什麼新鮮事了,隻要調到到特定頻率時,我們就可以使用SDR來捕獲無線電波。可捕獲的頻率範圍和帶寬随不同的SDR裝置而不同。本文中,我們将使用最便宜的RTL-SDR來嗅探GSM,RTL-SDR 是一個低廉的家用消費檔次的 DVB-T USB 接口的接收機,這些 DVB-T 接收機基于 Realtek 的 RTL2832U 晶片外加一個諸如 Elonics E4000 一類的高頻頭而構成,價格低廉到 20 到 25 美元的 RTL-SDR,它們無疑是目前最低廉的SDR硬體裝置。
在詳細介紹之前,首先看看不同的GSM頻段。GSM是由國際電信聯盟指定的一組由GSM手機運作的預定頻率進行的操作。

從上圖可以看出,标注黃色的那兩個頻段正是印度所使用的GSM,但900頻段的使用國家為8個,1800頻段的使用國家為3個,這意味着其手機使用者要和其他國家的使用者共同使用同一頻段。
為了嗅探到GSM,我們首先需要識别GSM下行鍊路信道,這樣就需要知道你的手機正在運作的頻率,你可以通過獲得手機的絕對無線頻道編号 (Absolute Radio Frequency Channel Number -ARFCN )來獲得它。
ARFCN,是在GSM無線系統中,用來鑒别特殊射頻通道的編号方案,闡述了GSM 無線網絡系統的Um 接口上的兩個實體無線電系統鍊路和通道。一個用于上行鍊路信号,一個用于下行鍊路信号。
下面以我使用的摩托羅拉G4為例來進行執行個體說明,在這款手機中,我可以通過在手機鍵盤上撥*#*#4636#*#*來獲得服務模式。由于對2G(GSM簡稱2G)的分析要比3G或4G要容易得多,是以我将手機切換到2G模式,分析如下所示。
從上圖的畫紅框的部分可以看出,我的ARFCN号是672,這樣就可以使用ARFCN号碼來計算出我的手機運作的确切頻率。通過使用簡單的ARFCN電腦,就可以知道我的手機正在運作的頻率。
現在,讓我們将RTL-SDR調整到特定頻率,并找出我們需要看到的内容。
我們可以清楚地看到該頻率上的GSM資料流,除此之外,我們還會掃描相關的所有GSM頻率,以便我們确認下行鍊路信道。推薦大家使用kalibrate-rtl工具來掃描相關的GSM頻率。
從上圖中,可以看到我的手機的下行鍊路信道,同時,kalibrate-rtl也給我們算出了偏移值,這将有助于你更好地校準你的SDR。
由于SDR接收的資料隻是原始資料,是以沒有什麼實際意義。我們可以使用GR-GSM來解碼這些原始資料,并将其處理成有意義的資訊。
與此同時啟動wireshark,這樣我們就将開始在wirehark中看到GSM資料包,我們也可以過濾出Gsmtap資料包。
如上圖所示,這是一個系統資訊類型3資料包。由于MS在空閑模式下,與網絡裝置間的聯系是通過廣播的系統消息實作的。是以借助這個資料包,網絡裝置向MS廣播系統消息,使得MS知道自己所處的位置,以及能夠獲得的服務類型,在廣播的系統消息中的某些參數還能用于MS的小區重選。
由于A5算法是一種序列密碼,它是歐洲GSM标準中規定的加密算法,用于數字蜂窩行動電話的加密,加密從使用者裝置到基站之間的鍊路。A5算法包括很多種,主要為A5/1和A5/2。其中,A5/1為強加密算法,适用于歐洲地區;A5/2為弱加密算法,适用于歐洲以外的地區。是以我們隻能看到一些沒有加密過的控制通道。
AUC(鑒權中心)是GSM系統中的安全管理單元,存儲鑒權算法和密鑰,保證各種保密參數的安全性,向HLR(歸屬使用者位置寄存器)提供鑒權參數。存儲用以保護移動使用者通信不受侵犯的必要資訊。AUC一般與HLR合置在一起,在HLR/AUC内部,AUC資料作為部分資料表存在。鑒權參數包括三組:RAND(Random Number,随機數),SRES(Sign Response,符号響應),Kc(Ciphering Key,加密密鑰)。
不過由于 Ki或Kc永遠不會通過網絡進行交換,是以無法通過空中嗅探加密密鑰。此外,Kc會在每次呼叫設定之前更改。這意味着每呼叫一次,就會出現一次不同的加密密鑰。如果我們有足夠強的計算能力,舊版本的A5可能就會被破解。目前已有研究已經通過在雲計算中建立了整個流程來破解A5 / 1加密, Kraken是可以用于此的一個工具。
我們無法使用RTL-SDR捕獲語音資料,因為在通話期間,會發生信道跳頻,而RTL-SDR的帶寬不足以一次捕獲整個範圍。是以,我們需要一個更好的SDR,要具有更多的帶寬,如HackRF或任何SDR裝置。HackRF是一款由Michael Ossmann發起的開源軟體無線電外設,支援從30MHz到6GHz,最大帶寬20MHz。
我們的電話是如何被嗅探到的?
1.加密算法的降級
由于許多舊的手機沒有足夠的計算能力來使用新的加密算法,是以為了維持它們的運作,營運商必須支援舊的加密算法,這就造成了即使我們想使用強大的加密算法但迫于現實,也會被切換到較弱的加密算法。
2. 有意關閉加密方案
在電信安全漏洞評估中,我們發現有時營運商在網絡上的負載增加時會完全關閉加密方案,進而降低流量的加載,以便可以輕松容納更多的使用者。
3. 中間人攻擊
中間人攻擊者可以建立僞造的手機發射塔,讓附近的移動使用者使用發射塔,這樣就可以迫使MS根本不使用加密。
4.擷取sim卡的加密認證
在2015年,有消息說,美英間諜機構曾入侵世界最大SIM卡制造商金雅拓(Gemalto)公司,盜取加密密鑰,以便在未獲得許可的情況下擷取手機通信資訊。