每次看到黑客在網上發布的那些GSM技術相關文章我都十分驚訝。然而在沒有Software Defined Radios (SDRs)之前,玩GSM並不便宜,除此之外想要好好玩你得下大功夫。
拓展閱讀
GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站
在閱讀多篇有關GSM基站的文章之后,我注意到有關GSM基站這個話題有許多的不一致或者是講的不夠細致。
基於這一點,我決定寫下今天這篇文章,進行手把手教學。
在文章開始之前,我要感謝所有開創GSM技術的黑客以及研究人員
尤其我要感謝Karsten Nohl(這哥們就是Ninja)出版的有關GSM Hacking的書籍(可以去看看他所使用的SS7協議),以及感謝Simone Margaritelli寫下的“How To Build Your Own Rogue GSM BTS For Fun And Profit“(中文版本可以參考 極客DIY:如何構建一台屬於自己的基站 )譯文,讓我第一次實現了GSM基站的搭建。
硬件及價格
A Nuand bladeRF x40 USB 3.0 Software Defined Radio. Price: $420.00
Two Quad-band Cellular Duck Antennas SMA. Price: $15,9
A Raspberry Pi 3 Model B Kit. Price: $69,99
A Anker Astro E7 26800mAh Portable Charger (optional). Price: $54,99
樹莓派操作系統及初始配置
首先我們要做的就是下載,解壓,安裝RASPBIAN Jessie Lite(Version: March 2016, Release date: 2016-03-18, Kernel version 4.1)鏡像到存儲卡中。
wget -c http://vx2-downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2016-03-18/2016-03-18-raspbian-jessie-lite.zip unzip 2016-03-18-raspbian-jessie-lite.zip dd if=2016-03-18-raspbian-jessie-lite.img of=/dev/Your_MicroSD_Device
在SD卡中完成安裝后就可以將其插入到樹莓派中了,啟動該設備並進行初始化配置。
注意:你需要知道樹莓派分配的IP地址,在本文中樹莓派分配的IP地址為192.168.0.10
blog@strcpy.info:/home/blog/$ ssh pi@192.168.0.10 pi@192.168.0.10's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Apr 22 15:00:30 2016 from strcpy.info pi@raspberry:~ $
注意:在樹莓派中默認的用戶名為pi,默認的密碼為raspberry
現在你登錄到樹莓派中,使用超級用戶運行配置命令
我們首先從文件系統開始:
pi@raspberry:~ $ sudo su
root@raspberrypi:/home/pi# raspi-config
樹莓派重啟之后你就可以開始安裝依賴包的進程了。
安裝依賴關系
你必須將這些必要的依賴包安裝到環境中去
blog@strcpy.info:/home/blog/$ ssh pi@192.168.0.10 pi@raspberry:~ $ sudo su root@raspberry:/home/pi# apt-get update root@raspberry:/home/pi# apt-get install git telnet apache2 php5 libusb-1.0-0 libusb-1.0-0-dbg libusb-1.0-0-dev cmake automake
連接Nuand bladeRF x40
現在你就可以將bladeRF x40插入到樹莓派的一個USB接口上,記得檢查是否連接到設備。
root@raspberry:/home/pi# dmesg [ 2092.437659] usb 1-1.2: New USB device found, idVendor=1d50, idProduct=6066 [ 2092.437679] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2092.437692] usb 1-1.2: Product: bladeRF [ 2092.437704] usb 1-1.2: Manufacturer: Nuand [ 2092.437716] usb 1-1.2: SerialNumber: 4c132c8ba43e0c4d922418a29a1ce207
Nuand bladeRF源代碼
下載並安裝 Nuand bladeRF源代碼
root@raspberry:/home/pi# cd /tmp root@raspberry:/tmp# wget -c https://github.com/Nuand/bladeRF/archive/master.zip root@raspberry:/tmp# unzip master.zip root@raspberry:/tmp# cd bladeRF-master root@raspberry:/tmp/bladeRF-master# cd host root@raspberry:/tmp/bladeRF-master/host# mkdir build root@raspberry:/tmp/bladeRF-master/host# cd build root@raspberry:/tmp/bladeRF-master/host/build# cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DINSTALL_UDEV_RULES=ON ../ root@raspberry:/tmp/bladeRF-master/host/build# make -j4 root@raspberry:/tmp/bladeRF-master/host/build# make install > install.log root@raspberry:/tmp/bladeRF-master/host/build# ldconfig
Yate以及YateBTS (SubversiveBTS)源代碼
為了創建GSM基站你需要下載並安裝Yate和YateBTS,他們都是開源軟件
感謝Simone Margaritelli,你不用去找兼容bladeRF x40的Yate和YateBTS版本。他在Github上分享了一份清單
root@raspberry:/tmp/bladeRF-master/host/build# cd /tmp root@raspberry:/tmp# git clone https://github.com/strcpyblog/SubversiveBTS.git root@raspberry:/tmp# cd SubversiveBTS/yate root@raspberry:/tmp/SubversiveBTS/yate# ./autogen.sh root@raspberry:/tmp/SubversiveBTS/yate# ./configure --prefix=/usr/local root@raspberry:/tmp/SubversiveBTS/yate# make -j4 root@raspberry:/tmp/SubversiveBTS/yate# make install > install.log root@raspberry:/tmp/SubversiveBTS/yate# ldconfig root@raspberry:/tmp/SubversiveBTS/yate# cd /tmp/SubversiveBTS/yatebts root@raspberry:/tmp/SubversiveBTS/yatebts# ./autogen.sh root@raspberry:/tmp/SubversiveBTS/yatebts# ./configure --prefix=/usr/local root@raspberry:/tmp/SubversiveBTS/yatebts# make -j4 root@raspberry:/tmp/SubversiveBTS/yatebts# make install > install.log root@raspberry:/tmp/SubversiveBTS/yatebts# ldconfig
Nuand bladeRF x40固件
下載並安裝 Nuand bladeRF x40 firmware v1.8.0
root@raspberry:/tmp/SubversiveBTS/yatebts# cd /tmp root@raspberry:/tmp/# wget -c http://www.nuand.com/fx3/bladeRF_fw_v1.8.0.img root@raspberry:/tmp/# bladeRF-cli -f bladeRF_fw_v1.8.0.img -v verbose
安裝完后,從樹莓派USB口拔下Nuand bladeRF x40,之后再重新插入。
現在我們是時候檢測安裝的bladeRF-cli, libbladeRF, Nuand bladeRF x40 firmware以及Nuand bladeRF x40 FPGA版本。
root@raspberry:/tmp/# bladeRF-cli -i bladeRF> version bladeRF-cli version: 1.3.1-git-unknown libbladeRF version: 1.6.1-git-unknown Firmware version: 1.8.0 FPGA version: Unknown (FPGA not loaded) bladeRF>
從bladeRF退出,直接鍵入‘quit’
Network in a Box (NIB) Web GUI
在Apache WWW目錄中給NIB Web GUI創建一個symlink,並賦予配置文件的寫權限
root@raspberry:/tmp/# cd /var/www/html root@raspberry:/var/www/html# ln -s /usr/local/share/yate/nib_web nib root@raspberry:/var/www/html# chmod -R a+w /usr/local/etc/yate
配置GSM基站系統
現在你就可以通過瀏覽器訪問Network in a Box (NIB) Web GUI,並開始基站的配置
注意:在瀏覽器鍵入http://192.168.0.10/nib
對於GSM基站系統,你需要設置以下值
Radio.Band=900 Radio.C0=75 Identity.MCC=001 Identity.MNC=01 Radio.PowerManager.MaxAttenDB=35 Radio.PowerManager.MinAttenDB=35
顯然在YateBTS的公開版本中,設置“Identity.ShortName” 值是沒有影響的。根據社區反饋信息,我們得知只有一個商業版本設置這個值是有影響的。
在OpenBTS中,設置這個值能夠很好的完成工作。
因此設置“Identity.ShortName=SubversiveBTS”的值也是沒有影響的
支持訂閱者
你可能需要允許訂閱者的手機連接到GSM基站
注意:* 正則表達式
Tapping選項
你可以激活GSM and GPRS,啟用這些選項你可以通過GSMTAP的L1/L2接口抓取GSM (發信號) 和GPRS (發信號和通信)
至此,這個簡化版的配置就完成了。
接下來你需要配置GPRS提供數據連接(互聯網)
相信我,GPRS的數據連接非常慢
配置GPRS BTS Operability
首先我們需要使用IPTABLES配置GPRS的網絡連接
root@raspberry:/var/www/html# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
注意:改變樹莓派連接的wlan0網絡接口
對於GPRS operability,我們需要設置以下值
Firewall.Enable=no firewall MS.IP.Base=192.168.1.20 MS.IP.MaxCount=5
開啟基站
執行以下命令開啟基站
root@raspberry:/# yate -s
如果所有配置都正確,你可以看到如下信息
... Release 5.0.1 formal build date Apr 22 2016 rev Starting MBTS... Yate engine is initialized and starting up on GhostBTS RTNETLINK answers: File exists MBTS ready
連接手機
你要手動在網絡列表中選擇“Test ID PLMN 1-1”網絡ID來連接到GSM基站
在本文中,網絡ID為“Test ID PLMN 1-1”是由於我們之前在“Identity.MCC =001”和 “Identity.MNC =01”中進行設置的
注意:MCC 和 MNC的值可以在這里找到
手機成功連接到GSM基站之后,會通過短信發送一條包含分配號碼的歡迎信息。
注意:你可以通過編輯/usr/local/share/yate/scripts/nib.js文件修改歡迎信息
訂閱者
在本節中你可以詳細管理基站的訂閱者
在這里你可以看到在線的訂閱者
真實測試
在“Test ID PLMN 1-1” GSM基站上進行短信測試
在“Test ID PLMN 1-1”GSM基站上進行通話測試
在“Test ID PLMN 1-1”GSM基站上進行GPRS測試
參考資料
- http://wiki.yatebts.com/index.php/Main_Page
- https://github.com/Nuand/bladeRF/wiki/Setting-up-Yate-and-YateBTS-with-the-bladeRF
- https://imjuanpablo.wordpress.com/2015/02/14/should-you-need-openbts-on-your-bladerf
- https://evilsocket.net/2016/03/31/how-to-build-your-own-rogue-gsm-bts-for-fun-and-profit
- http://linux.net.pk/blog/poor-mans-gsm-bts-nuands-bladerf-openbts-5-setup-instructions
- https://discourse.criticalengineering.org/t/howto-gsm-base-station-with-the-beaglebone-black-debian-gnu-linux-and-a-usrp/56
- https://github.com/Nuand/bladeRF/wiki/Minimalistic-build-and-run-test-for-OpenBTS-5
- https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
- http://www.circuitbasics.com/raspberry-pi-basics-setup-without-monitor-keyboard-headless-mode/
*原文鏈接:strcpy