技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
基于OpenBTS+USRP B210搭建GSM漏洞验证环境
Nerad
安全工具
136浏览 · 2025-03-18 10:18
返回文档
写在前面
最近需要在SDR环境中验证目标终端中的GSM协议实现漏洞,本文记录下环境的搭建(踩坑)过程。最开始是尝试根据Grant大佬的
博客
尝试安装,其中对于GSM环境的搭建原文采用的是YateBTS+BladeRF或者USRP N210的组合,然而,在根据文章安装YateBTS时访问不了官方的SVN库,并且似乎最新版的YateBTS不再支持UHD驱动,因此最后选择了使用OpenBTS+USRP B210的方式。
参考:
●
https://www.twblogs.net/a/5b8661f72b71775d1cd52363/?lang=zh-cn
●
https://blog.white-alone.com/OpenBTS使用指南/
●
https://www.miralishahidi.ir/resources/Open
BTS Application Suite.pdf
注:本文所有搭建过程均在实验室环境内展开且目的仅用于蜂窝协议实现的安全研究,切勿用于非法目的!
背景知识
首先在SDR方面比较小白,先去了解了下当前主流的集中SDR软件+硬件的组合,其中常见硬件有:
●
HackRF
●
BladeRF
●
LimeSDR
●
PlutoSDR
●
USRP
●
...
这些硬件支持的频率范围、带宽等不仅相同,价格也有高有低,根据具体需求选择即可。此外,对于开源的基站项目,由于横跨2G-5G的不同版本,具体选取哪个开源实现也是根据需求而定
2G:
●
YateBTS+BladeRF
●
OpenBTS+USRP
●
OpenBSC + (USRP、Fairwaves UmTRX、LimeSDR)
3G:
●
Accelerate3g5
●
OpenBTS
4G
●
Open Air Interface (OAI) +USRP
●
OpenLTE (BladeRF USRP)
●
SRSRAN+USRP
5G
●
OAI-5G
最后由于前边的尝试,最后选择OpenBTS+USRP B210进行安装
GSM SDR环境搭建
系统-Ubuntu16.04 LTS
选择使用Ubuntu16.04 LTS的虚拟机作为安装系统(最好选择纯净系统+原始的源,我这边换了国内源之后出现了有些依赖包找不到的问题,手动一个个寻找巨麻烦)
安装UHD
●
首先从github上clone UHD的开源项目,并将其切换为3.14.0.0的分支
●
其次就是编译和安装了
●
设置环境变量
●
测试是否安装成功
安装OpenBTS
参考官方的安装文档,首先安装依赖
编译安装OpenBTS
在make这里我遇到了一些报错,修改了如下两个地方
●
将下边代码中的
(BctbxLogFunc)
删掉
●
将下边代码中的强制类型转换中的
(void *)
删掉
然后即可成功编译,运行固件
设置流量转发
配置iptables规则,/etc/OpenBTS/iptables.rules 配置规则文件内容如下:
根据情况设置为自己的网卡
启动OpenBTS
上述组件全部安装完毕后,需要启动以下组件以连接USRP B210以及手机
配置数据库
启动transceiver连接SDR硬件
执行OpenBTS启动基站
启用短信服务
启动鉴权服务
启动OpenBTS终端控制台
根据参考链接,刚搭建完成的基站由于天线功率过大以及手机跟基站的距离太近等原因,可能会导致手机不能正常加入到基站,这时需要配置加入基站的条件以及设置天线功率:
开启任意终端准入
设置天线功率
如果手机可以搜索到基站,就表明网络状态良好,但如果有较强的无线干扰,也就是噪声干扰俗称底噪,手机和基站的链路就可能会有问题。可以用noise命令检查噪声强度:
表示检测到的背景噪声RSSI信号强度为-71dB,这个数值越小表明底噪越少。配置的RSSI信号强度为-50dB,也就是说,基站所能提供的最高信号强度为 21 dB。一个好的差值意味着上行链路质量不错。两个数据的差值不同反馈信息也不同,如果差值小于10db,那么就会像前一个反馈的警告信息,提示噪声干扰强度已经接近所配的RSSI,上行链路质量非常有限。如果差值小于0db,会有警告提示噪声干扰比配置的RSSI信号还强,无法建立上行链路。
设置频段
设置欢迎短信
终端管理
查看注册的手机:
我理解这个步骤应该只是为接入的的中断在当前网络注册相应的电话号。前边设置允许任意终端准入时,只需要把蜂窝网络设置为仅GSM即可接入当前OpenBTS
短消息测试
启动短消息服务时, 我们就可以给任意终端发送短信,并且在设备初次接入网络时,收到我们上述设置的欢迎短信。在手机中,写一条短信发给411。这是smqueue中的一个简码处理流程,只管回显,不管其他接收、网络及用户信息等整个流程所用任何信息。发送给411的短信的可以是任意内容,可以是任意的文字或者数字或者字母。这个可以用来帮你确认哪条消息在回应时候出错。编写一条发往411短信,点击发送,几秒钟之后,应该会出现应答
使用命令行发送短信
其中XXXXXXX是设备的IMSI号码,AAAAAA是虚拟的手机号(显示为发送方),注意不支持中文内容
互相发送短信:
●
设备之间也可以互相发送短信,比如两台都在该网络中注册的手机设备,通过手机号即可向对方发送消息
电话测试
Asterisk配置
拨打电话600在经过一段语音后,会回传你发送过去的语音信息
两个手机通话
这里默认使用apt安装的Asterisk,在/etc/asterisk下的配置文件看起来非常不好配置,网上找的博客也没有介绍,后来偶然间发现github上有人配置好的
文件
,配合前文参考链接,在sip.conf添加
在extensions.conf添加
GSM抓包和重放
捕获GSM报文
根据[手册](
https://www.miralishahidi.ir/resources/Open
BTS Application Suite.pdf) 6.5章节中的提示,需要手动开启GSM流量转发才能用wireshark捕获到GSM流量。因此需要运行以下命令:
但是我这里只能捕获到RR协议的报文以及SMS协议的报文,MM、CC等L3层的报文还是捕获不到(大概是因为具体的payload都是在sip协议里边发过去的)。
报文篡改
●
OpenBTS的官方手册
[[
https://www.miralishahidi.ir/resources/Open%20BTS%20Project.pdf]]
(
https://www.miralishahidi.ir/resources/Open
BTS Project.pdf])(
https://www.miralishahidi.ir/resources/Open
BTS Project.pdf)
根据架构推测OpenBTS是这样实现通话逻辑的:发起通话请求是手机1->BTS->手机2,其中手机1->BTS用GSM消息通信,BTS将SETUP请求解析并包装成SIP报文,根据asterisk的配置找到手机2,基于解析的SIP报文,包装成GSM报文发送给手机2。
由上可知一个可行的思路为直接修改BTS代码,让其直接发送加了payload的报文。
日志监控
●
拨打
*#9900#
可以进入三星的日志系统sysdump,可以dump一些有意思的日志(暂未深入研究),这篇
文章
说了下怎么本地激活sysdump中的两个特殊功能(暂时没用到)
●
使用adb的logcat(FIRMWIRE作者曾在talk中用这个观察到设备崩溃)
真机调试?
可以参考Synacktiv的文章,通过TEE的漏洞,重写modem固件,将一个调试器写到不用的代码段中实现调试功能:
●
SSTIC 2020
How to design a baseband debugger
0
人收藏
1
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
飞塔防火墙漏洞深度利用及调试环境搭建
2
Linux Shellcode开发(Stager & Reverse Shell)
3
Windows Shellcode开发(x64 stager)
4
Fuzz挖掘sudo提权漏洞:一次堆溢出如何逆向分析出提权思路
5
1.6K主机全域沦陷实录:从单点突破到域控接管的终极横向渗透链
近期热点
一周
月份
季度
1
飞塔防火墙漏洞深度利用及调试环境搭建
2
Linux Shellcode开发(Stager & Reverse Shell)
3
Windows Shellcode开发(x64 stager)
4
Fuzz挖掘sudo提权漏洞:一次堆溢出如何逆向分析出提权思路
5
1.6K主机全域沦陷实录:从单点突破到域控接管的终极横向渗透链
暂无相关信息
暂无相关信息
优秀作者
1
一天
贡献值:18800
2
T0daySeeker
贡献值:18700
3
1174735059082055
贡献值:15000
4
Yale
贡献值:14000
5
1674701160110592
贡献值:13000
6
LeeH
贡献值:10000
7
MeteorKai
贡献值:9000
8
熊猫正正
贡献值:8000
9
lufei
贡献值:8000
10
Bu0uCat
贡献值:8000
目录
写在前面
背景知识
GSM SDR环境搭建
系统-Ubuntu16.04 LTS
安装UHD
安装OpenBTS
设置流量转发
启动OpenBTS
配置数据库
启动transceiver连接SDR硬件
执行OpenBTS启动基站
启用短信服务
启动鉴权服务
启动OpenBTS终端控制台
终端管理
短消息测试
使用命令行发送短信
电话测试
Asterisk配置
两个手机通话
GSM抓包和重放
捕获GSM报文
报文篡改
日志监控
真机调试?
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板