嗅探手機與基站通信數據的中間人攻擊教程
前言
本文將介紹如何嗅探手機與基站通信數據以實施中間人(MitM)攻擊,其實這並不是什麼新的研究,但我希望這可以幫助那些沒有通信背景的人了解手機與基站通信數據背後的安全原理,以提高自我保護。應該說,了解其中原理可以讓我們對如今很多生活場景下的連接都有所防範,因為我們家裡面,就有許多需要連接到後端的帶有SIM卡(因為手機用的就是SIM卡)的物聯網設備。本文,我會以使用2G和GPRS的SIM卡為例,進行詳細介紹。
嗅探手機信號的可能性
今年2月,已經有新聞曝出,不到50塊做出的手機信號嗅探器可以獲取你的手機號碼。追蹤手機信號可能比你想像得更容易、成本更低廉,事實上來自丹麥的黑客「IT pro Keld Normal」,只用了價值7美元(約合人民幣47元)的USB設備,就能夠嗅探到周圍基站的信號和連接此基站的手機。
雖然很多操作涉及到Ubuntu系統和Python編程語言,但並不複雜。因為,USB硬體基本上就是一個天線,能夠接收到基站的信號及數據,物理距離越接近、就能獲得更多數據。然後,軟體會對資料庫進行分析,最終獲得IMSI。
另外,利用偽基站對周圍的手機進行中間人攻擊已不是什麼新鮮事了,比如警方使用的信號基站模擬器(又稱為Stingray),Stingray會偽裝成基站不斷向附近手機發送信號,而且會窺探用戶數據和隱私。
目前能夠嗅探手機信號的場景
目前在很多物聯網設備中,很多設備都是通過SIM卡連接到其後端的。這些設備小到咖啡機、智能手錶、智能眼鏡,大到智能汽車、關鍵醫療設備等。如果有攻擊者想要對你的物聯網設備下手,只需嗅探到你的物聯網設備和後端伺服器之間的信號流量即可。
測試環境的設置
為了向大家展示如何嗅探手機與基站通信數據,從而實施中間人攻擊,我使用了USRP(Universal Software Radio Peripheral,通用軟體無線電外設)硬體製作一個簡單的偽基站。
從本質上講,USRP充當了一個無線電通訊系統的數字基帶和中頻部分。
硬體要求
帶有天線和數據線(USB 3)且連接到PC的 USRP B210;
一部 智能手機或舊的GSM手機;
SIM卡;
一台筆記本電腦;
軟體要求
OpenBTS;
SipauthServ;
如果你想測試一下簡訊,可選Smqueue;
如果你想測試一下通話,可選Asterisk;
Ubuntu 16.04操作系統;
什麼是OpenBTS
OpenBTS示意圖
OpenBTS.org是一個開源軟體項目,致力於通過互聯網協議和靈活的軟體架構來製作電信協議和傳統複雜的專有硬體系統。 OpenBTS軟體是一個Linux應用程序,它使用軟體定義的無線電向用戶設備呈現標準的3GPP空中介面,同時將這些設備作為SIP端點呈現給互聯網。這就構成了新型無線網路的基礎,該網路承諾將覆蓋範圍擴大至所有網路服務市場,同時釋放創新平台,包括為新興網路技術提供支持,例如針對物聯網的新興網路技術。
創建偽基站
安裝示意圖
首先要做的是建立一個運行的OpenBTS,其中所使用的源代碼,都來自這個鏈接。不過其中會有一些缺失的代碼依賴項,需要進行修復。除此之外,還需要建立OpenBTS所需的具體設置。首先,我需要兩個主要的服務,即OpenBTS本身和SipauthServe。從源代碼構建OpenBTS和SipauthServe後,在終端中啟動這兩個服務。不夠在上面的源代碼鏈接中,還有其他組件,例如Smqueue和Asterisk,這是讓通話和簡訊功能正常進行所必需的。但是,由於測試的重點主要是移動數據(這裡是GPRS),所以我並不關心在這裡是否設置了這些組件,但感興趣的讀者可以嘗試一下。
運行OpenBTS
1. 使用USB 3數據線將USRP設備連接到電腦。
2. 在本文中,由於我創建了一個虛擬機,所以我可以構建測試時所必需的軟體。如果你也有一台虛擬機,要確保你的USB 3介面可用。在virtualbox中,你可以通過 USB > Devices > Ettus Research USRP B210啟用USB 3。
3. 使用 uhd_usrp_probe命令,可以讓USRP在linux中提供相應的硬體驅動程序,一旦它檢測B210設備,立馬就會進行下載。
4. 運行SipauthServe:
home/dev/subscriberRegistry/apps$ sudo ./sipauthserve
5.運行OpenBTS:
home/dev/openbts/apps$ sudo ./OpenBTS
6.運行OpenBTSCLI:
home/dev/openbts/apps$ sudo ./OpenBTSCLI
偽基站的配置
在上面的步驟中,你會注意到運行了OpenBTSCLI。這主要是為了配置我的OpenBTS。下面是我在OpenBTSCLI中進行的主要配置,以便我們得到一個正常運行的模型:
1.允許手機在無需任何身份驗證的情況下連接到基站,這意味著任何手機都可以在該基站中進行註冊。
OpenBTS> config Control.LUR.OpenRegistration .*
2.啟用GPRS:
OpenBTS> config GPRS.Enable 1
3.啟用IP轉發:
echo 1 > /proc/sys/net/ipv4/ip_forward
4.安裝iptables,你可以點此進行完整的GPRS和IPtables設置。
讓手機連接到基站
如果你用的是智能手機進程測試,則必須更改一些設置才能使手機連接到基站。如果你用的是物聯網,則測試的挑戰性會更大,因為在物聯網設備中幾乎沒有配置「移動網路」的選項。
設置Android手機,設置Android手機的過程和在iPhone中差不多:
1.啟用2G:這是從4G降級到2G,設置步驟為「設置>蜂窩網路>首選網路類型> 2G」。
2.添加APN:設置步驟為「設置>蜂窩網路>訪問點名稱」。添加時,請確保將MCC和MNC設置為與SIM卡相同的值。如果是在德國,MCC是262,跨國公司將根據自己手機的提供商進行變更。除此之外,APN和Name值可以任意設置。另外,保持身份驗證的選項為none。
設置APN
3.搜索我的基站並手動進行連接,步驟為「設置>蜂窩網路>搜索網路」,通常出現的數字包含MCC和MNC的值。
註冊到基站的消息
如果你看到該消息,說明你的電話已在網路上註冊成功,可以通過在OpenBTSCLI中進行檢查確認。
OpenBTS> tmsis
這將顯示註冊到你的基站的SIM卡的IMSI,如果你成功做到了這一步,你就已經有了第一個發現,那就是SIM卡的IMSI。 IMSI是你SIM卡的私有標識符。具有IMSI的攻擊者可以識別並跟蹤用戶的網路,甚至可以嘗試執行模擬攻擊。
嗅探移動數據
一旦GPRS正常工作,你應該能夠在你的手機中看到「LTE」或移動數據符號的標識「G」。你也可以在你的智能手機瀏覽器中嘗試使用谷歌,不過速度非常慢。
在你的OpenBTS VM中打開Wireshark,你將能夠看到嗅探到的數據包。
在wireshark中嗅探到的流量
※教你如何玩轉piVPN,保護網路隱私安全
※macOS又爆出密碼漏洞:App Store系統偏好設置可被任意密碼解鎖
TAG:嘶吼RoarTalk |