GSM短信偵聽的便宜方案


偵聽GSM短信常用的是OsmocomBB + C118方案,主要是用luca/gsmmap分支。使用ccch_scan這個程序可以把通信封裝成GSMTAP發給本機,然后用WireShark接收GSMTAP並作協議解析和短信解碼。國內部分黑客寫了Python或Perl腳本,替代WireShark解碼,並打印輸出或保存到MySQL數據庫。還有人寫了Web前端,來提高易用性。

針對OBB只支持PCH在TS0的情況,有人改了firmware,分別支持PCH在TS2,TS4和TS6,編譯生成了4個firmware。然后又有人把這拿來做生意,用軟件狗加密后做成LiveCD出售,這就是網上所謂3信道,4信道版本的由來。

這種泛泛的偵聽所有短信的做法效率很低,用處也不大。

而且,ccch_scan只是一個演示程序,本身不是為了偵聽所有短信而設計的,功能流程上有很明顯的缺陷:程序守聽PCH,收到任何的Immediate Assignment就會切換Timeslot跟隨通信過程,如果是短信就繼續偵聽並輸出,是話音等就返回PCH繼續守聽。問題在於離開PCH再到回來這期間可能丟失多個Imm Ass。這就是為什么總有人反映用ccch_scan會漏接短信的原因。

真正合理的設計,應該是master/slave結構,多個master對更多的slave,每個master固定守在一個PCH,收到Imm Ass就分配給一個slave去跟隨,slave處理完畢就返回待命。

比如,一個典型的處於鬧市的移動S333站型的基站的一個扇面,在ccch_conf=110的情況下,需要4個master和大約16個slave,就可以完整記錄所有短信。

這個設計,我還沒有看到國內有人實現出來。國外黑客有個半成品,我拿來改寫了一部分,除了短信也想把語音通話全部記錄下來,現在還沒改寫完。

相比於簡單粗暴的無差別偵聽,我個人對於偵聽指定目標的短信更有興趣。其實,ccch_scan有個-t參數可以指定特定的TMSI,基本滿足需求,我就直接改寫ccch_scan增加了短信解碼輸出,這樣不用借助別的程序,自己就能解決問題

那么問題來了,已知特定目標的手機號碼,怎么確定目標手機當前camping在哪個基站,以及TA的TMSI? 如果你確切知道TA在哪兒,只要到TA身邊不遠拿出Nokia Net Monitor看一下當前ARFCN以及相鄰的ARFCN,通常跑不出這幾個ARFCN,很容易拿下。

如果只知道大概位置,就需要先確定TA的TMSI,再窮舉出TA所連接的基站。TMSI是在LAC范圍內有效的,Paging也是在一個LAC里的所有基站同步廣播的。而一個LAC覆蓋的物理區域還是很大的,在一個城市里不需要切換太多LAC就應該能找到目標的TMSI。

發現目標TMSI比較好用的是Silent SMS。我修改過的mobile程序,可以按特定時序向目標手機發送Silent SMS,然后在PCH上偵聽,按照時序和Paging的次數來排查,最終確定目標TMSI。

確定了TMSI之后,繼續切換偵聽不同基站的PCH,直到在有的基站偵聽到了對應的Imm Ass和短信內容通信,就可以確定了。如果基站的ccch_conf不等於000,還需要用目標手機的IMSI算出paging group從而確定該手機所在的TS。

再說說上行短信的偵聽。因為手機功率低,手機天線效率低,所以你通常要離目標很近才行,300米以內最好。你所處地勢越高,越空曠,接收效果越好。一定要用外接天線,你既然都能忍受帶着一台筆記本電腦,為什么不能帶好一點的外接天線?天線應該盡量在室外,增益越高越好,最好用定向天線:八木或鍋。沒有定向天線,就要天線長度盡量長,能有2倍波長以上最好。饋線盡可能短,盡可能高品質。然后說接收設備,C118一定要去除濾波器和換巴倫,RTL-SDR和別的SDR效果也都不錯。

然后,你想主動些,利用手機短信驗證碼重置TA的各個賬戶,登錄進去偷取或修改資料,最好這些短信只有你能收到,TA收不到,這就要用到攔截短信的辦法。

要了解短信攔截,先要談談鑒權。

通常運營商在Mobile Oriented業務上是要鑒權的,因為他們要計費。而Mobile Terminated業務因為是免費的,配置上就比較松,可能沒有鑒權。

如果你運氣比較好,還能發現一些基站在MO業務上只要求IMSI來鑒權。這就意味着你可以spoof任何手機號碼。只需要去網上的HLR Lookup服務查一下該手機號對應的IMSI就可以了。

如果你通過特殊辦法獲得了TA的KI,只需要把TA從網絡上detach了,你再attach就可以替代TA了。

收短信屬於MT業務,一般情況下,聯通大部分配置是不要鑒權的,或者簡單鑒權比如IMEI。移動老的基站不少也是不要鑒權的,新基站大部分都要SRES鑒權。

一個LAC里不同的基站配置可能不一樣,需要偵聽來確定。

短信攔截的原理基於race condition,即把響應Paging及收短信的代碼從Layer 23搬到Layer 1,這樣你就在GSM協議棧上比TA快了一倍,所以你就能先於TA代替TA響應paging和收取短信。

這個功能國外黑客有演示代碼,但是bug很多,連LAPDm協議流程都有問題,在國內運營商環境沒法正確運行。當然,我已經做了必要的修改。

目前,我正在做的GSM的MITM的實驗,即目標手機和基站之間插入一個自制基站和一部攻擊手機,誘導目標手機接入自制基站,用攻擊手機仿冒目標手機接入運營商網絡,從而實現短信的攔截。這種方式不管運營商有沒有鑒權,我們都能在不驚動目標的情況下實現短信攔截。

3G和4G短信的偵聽是也是要以GSM為基礎的,如何實現以后再單獨發帖講。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM