利用hackRF嗅探GSM網(wǎng)絡(luò)流量
在本文中,我們將講述如何使用hackRF嗅探GSM網(wǎng)絡(luò)的特定頻率信號,并能夠獲取到解碼之后的GSM網(wǎng)絡(luò)流量。
背景介紹
前段時(shí)間,當(dāng)我的朋友兼同事Simone訪問我們的ZIMPERIUM(一個(gè)企業(yè)移動(dòng)安全TLV辦公室)時(shí),剛好手頭上有一個(gè)HackRF,所以就和他一起嘗試黑掉一個(gè)不設(shè)防的無線電頻率設(shè)備。Simone很有耐心地嘗試并向我解釋復(fù)數(shù)以及其他無聊的東西(有關(guān)更多),通過一遍又一遍的努力,還是填補(bǔ)了跟上Simone步伐的這一缺口,并通過不斷努力最終達(dá)到成功。本教程是我們共同進(jìn)行GSM攻擊的結(jié)果,在這里分享出來給大家,希望它能對別人有所幫助。
所用工具
1、hackrf-kalibrate
2、gnuradio-companion
3、gr-gsm
4、gqrx
5、wireshark
安裝要求
首先,需要確保已經(jīng)安裝了所有必需的軟件,可以使用發(fā)行版包管理器來安裝大多數(shù)需要的軟件以及相應(yīng)的依賴文件。下面,我們先從hackRF所依賴的工具和庫文件開始,在Debian或Ubuntu發(fā)行版上,可以通過下面指令安裝它們:
sudo apt-get install hackrf libhackrf-dev libhackrf0
一旦成功安裝這些庫之后,就可以將hackrf插入到一個(gè)USB端口上,并執(zhí)行指令hackrf_info,此時(shí),應(yīng)當(dāng)會(huì)看到類似下面的內(nèi)容:
# hackrf_info
Found HackRF board.
Board ID Number: 2 (HackRF One)
Firmware Version: 2014.08.1
Part ID Number: 0x00574746 0x00574746
Serial Number: 0x00000000 0x00000000 0x14d463dc 0x2f4339e1
接下來,通過下面的指令安裝軟件gnuradio,利用它可以解碼射頻信號,并安裝工具gqrx,利用該工具可以將特定頻率信號的功率可視化,以及一切需要的東西。
sudo apt-get install gnuradio gnuradio-dev gr-osmosdr gr-osmosdr gqrx-sdr wireshark
經(jīng)過gr-gsm處理之后,GnuRadio模塊會(huì)解碼GSM數(shù)據(jù)包:
sudo apt-get install git cmake libboost-all-dev libcppunit-dev swig doxygen liblog4cpp5-dev python-scipy
git clone https://github.com/ptrkrysik/gr-gsm.git
cd gr-gsm
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
現(xiàn)在創(chuàng)建文件~/.gnuradio/config.conf,并將下面的內(nèi)容粘貼在該文件中:
[grc] local_blocks_path=/usr/local/share/gnuradio/grc/blocks
最后,安裝kalibrate-hackrf,它能夠在已知的GSM頻率之間跳動(dòng),并能夠識別到你的國家所使用的頻率:
git clone https://github.com/scateu/kalibrate-hackrf.git
cd kalibrate-hackrf
./bootstrap
./configure
make
sudo make install
確定GSM 頻率
每個(gè)國家所采用的每個(gè)操作碼都使用GSM頻率段中的不同的頻率,通常是從900 Mhz開始。你可以使用hackrf_kalibrate找到你想嗅探的頻率:
./kal -s GSM900 -g 40 -l 40
注意上面的兩個(gè)增益值,它們對于得到相應(yīng)結(jié)果非常重要。讓kalibrate運(yùn)行一段時(shí)間,然后你應(yīng)該可以看到類似下圖所示的輸出內(nèi)容:
為了對應(yīng)于當(dāng)?shù)氐倪\(yùn)營商,你必須使用適當(dāng)?shù)腉SM參數(shù)(‘-s’),可以參考這個(gè)列表清單以確保正確。
有時(shí)候,為了確保hackrf_kalibrate獲得了正確的結(jié)果,或者為了免于自己計(jì)算hackrf_kalibrate提供的正確頻率(注意每個(gè)結(jié)果中的+/-Khz,它意味著峰值為對應(yīng)的功率,但并不能100%確保為正確的頻率),你可能需要查看一下獲取的頻率值。運(yùn)行g(shù)qrx并將其調(diào)節(jié)到hackrf_kalibrate獲得的第一個(gè)頻率,例如940.6Mhz,那么接下來你將會(huì)看到如下圖所示的畫面:
在上面的截圖中可以看到大約是945 Mhz。
一旦確定了GSM信道頻率,那么就可以通過運(yùn)行python腳本./airprobe_rtlsdr.py來啟動(dòng)gr-gsm,或者使用gnuradio-companion加載airprobe_rtlsdr.grc文件,然后在你所發(fā)現(xiàn)的頻率帶內(nèi)設(shè)置其中一個(gè)信道頻率。不過,不要忘記添加增益值,然后返回到頻率帶內(nèi),并按壓你鍵盤上的上/下方向箭頭開始以200Khz的步進(jìn)值掃描頻率,直到在控制臺窗口上看到一些數(shù)據(jù)為止。整個(gè)過程看起來應(yīng)該是這樣:
現(xiàn)在你只需要利用下面的指令從另一個(gè)終端啟動(dòng)wireshark:
sudo wireshark -k -Y 'gsmtap && !icmp' -i lo
如果gr-gsm運(yùn)行順利,那么你將能夠看到hackrf嗅探到的解碼之后的GSM流量。