GSM Hacking:使用BladeRF、樹莓派、YatesBTS搭建便攜式GSM基站


每次看到黑客在網上發布的那些GSM技術相關文章我都十分驚訝。然而在沒有Software Defined Radios (SDRs)之前,玩GSM並不便宜,除此之外想要好好玩你得下大功夫。

拓展閱讀

GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站

極客DIY:如何構建一台屬於自己的基站

在閱讀多篇有關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測試

參考資料

*原文鏈接strcpy


免責聲明!

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



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