GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站
每次看到黑客在网上发布的那些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 ---raspbian-jessie-lite.zip
dd if=---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- libusb-1.0--dbg libusb-1.0--dev cmake automake
连接Nuand bladeRF x40
现在你就可以将bladeRF x40插入到树莓派的一个USB接口上,记得检查是否连接到设备。
root@raspberry:/home/pi# dmesg
[ 2092.437659] usb -1.2: New USB device found, idVendor=1d50, idProduct=
[ 2092.437679] usb -1.2: New USB device strings: Mfr=, Product=, SerialNumber=
[ 2092.437692] usb -1.2: Product: bladeRF
[ 2092.437704] usb -1.2: Manufacturer: Nuand
[ 2092.437716] usb -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.-git-unknown
libbladeRF version: 1.6.-git-unknown Firmware version: 1.8.
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=
Radio.C0=
Identity.MCC=
Identity.MNC=
Radio.PowerManager.MaxAttenDB=
Radio.PowerManager.MinAttenDB=
显然在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=
开启基站
执行以下命令开启基站
root@raspberry:/# yate -s
如果所有配置都正确,你可以看到如下信息
...
Release 5.0. formal build date Apr 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
GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站的更多相关文章
- GSM Hacking Part① :使用SDR扫描嗅探GSM网络
0×00 写在开头 近期,发现Crazy Danish Hacker在YouTuBe发布了一个挺不错的教程视频:使用SDR嗅探监听GSM网络的通信流量(GSM Sniffing Teaser – So ...
- 使用GnuRadio+OpenLTE+SDR搭建4G LTE基站(上)
0×00 前言 在移动互联网大规模发展的背景下,智能手机的普及和各种互联网应用的流行,致使对无线网络的需求呈几何级增长,导致移动运营商之间的竞争愈发激烈.但由于资费下调等各种因素影响,运营商从用户获得 ...
- GSM Hacking Part② :使用SDR捕获GSM网络数据并解密
0×00 在文章第一部分 GSM Hacking Part① :使用SDR扫描嗅探GSM网络 搭建了嗅探GSM流量的环境,在第二部中,我们来讨论如何捕获发短信以及通话过程中的流量,从捕获到的数据中解密 ...
- 树莓派VNC搭建相关教程+Ubuntu16.04连接vncserver灰屏问题!
树莓派VNC搭建相关教程: 为了节省money,于是我决定用VNC界面来代替显示器,为后面做C++ Qt以及Python Qt开发打下基础,我别无选择!下面开始进入正题: 1-- 下载VNC-View ...
- 树莓派3B搭建NODE-RED运行环境并构建数据流
树莓派3B搭建NODE-RED运行环境并构建数据流 树莓派搭建Node-RED环境 树莓派自2015年开始是默认就带NODE-RED的,但是如今已是2018年:)自带的版本已经很老了,可通过下面的命令 ...
- GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站
引文 如果你已经购买了Nuand(官方)BladeRF x40,那么就可以在上面运行OpenBTS并可以输入一些指令来完成一些任务.一般来说HackRF,是一款覆盖频率最宽的SDR板卡.它几乎所有的信 ...
- GSM Hacking:如何对GSM/GPRS网络测试进行测试
写在前面 这里需要介绍的是GSM / GPRS网络测试的一些方法,随着现在硬件设备连网现象的普遍存在,例如智能电表.自动变速箱控制单元(TCU).POS机.报警系统等.这些设备通常需要与网络连接,GS ...
- 树莓派上搭建基于Python+web.py+fastcgi+lighttpd的网站
最近在网上淘了一个树莓派,什么是树莓派?这里是他的官方网站你可以去看看. 简单的说就是一块使用了ARM11的CPU,具有256MB或512MB内存的具有两个USB接口,一个RJ45接口,HDMI输出和 ...
- 树莓派上搭建NAS
首先可以参考看看 搭建家庭 NAS 服务器有什么好方案?下载做NAS的系统也比较多,如FreeNAS.Openfiler等免费系统,或购买其它收费NAS系统.根据自己的需要从硬件到软件的搭建过程.参 ...
随机推荐
- FCKeditor jsp配置
FCKeditor jsp配置 FCKeditor是sourceforge.net上面的一个开源项目,主要是实现在线网页编辑器的功能,可以让web程序拥有如MS Word这样强大的编辑功能.官方网站为 ...
- CentOS下安装setuptools、pip和virtualenv
已经安装了Python,现在我们可以最终确定完成应用程序生产和部署的基础知识.为此,我们将设立两个最常用的工具:PIP封装经理和virtualenv中的环境管理. 一.安装setuptools set ...
- web 页面内容优化管理与性能技巧
回想一下,以前我们不得不花费大量时间去优化页面内容(图片.CSS等等),如今用户有更快速的互联网链接,我们似乎能够使用更大的图像或更大的闪存文件,里面包含的有视频或者图片.然而,随着移动开发的兴起,我 ...
- python获取文件时间
import time, os create_time = time.ctime(os.path.getctime(filename)) modify_time = time.ctime(os.pat ...
- 网络编程socket基本API详解(转)
网络编程socket基本API详解 socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...
- 张艾迪(创始人):拥抱单身与自由的Eidyzhang
拥抱单身与自由(Single+Freedom) 拥抱伟大的梦想与理想.年轻一代的张扬与自信 拥抱AOOOiA.Global.224C的一切是我对这个世界的态度 +AOOOiA.Global.224C创 ...
- iOS app性能优化的那些事
iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对 ...
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...
- 自定义Encoder/Decoder进行对象传递
转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...
- js刷新页面和跳转
javascript返回上一页: 1.返回上一页 history.go(-1); 返回上两个页面 history.go(-2); <a href="javascript:history ...