一种基于SDR实现的被动GSM嗅探

简介: 软件定义无线电(SDR)是一种无线电通信系统,简单来说,就是通过数字信号处理技术在通用可编程数字信号处理硬件平台上,利用软件定义来实现无线电台的各单元功能,从而对无线电信号进行调制、解调、测量。SDR架构放弃了传统无线电电路中所有的硬件单元,包括变频、混频、滤波器、放大器、检波器、解调器等,所有的处理,包括混混频,滤波,解调等都是用软件来完成的,完全是一种新的架构和技术。

软件定义无线电(SDR)是一种无线电通信系统,简单来说,就是通过数字信号处理技术在通用可编程数字信号处理硬件平台上,利用软件定义来实现无线电台的各单元功能,从而对无线电信号进行调制、解调、测量。SDR架构放弃了传统无线电电路中所有的硬件单元,包括变频、混频、滤波器、放大器、检波器、解调器等,所有的处理,包括混混频,滤波,解调等都是用软件来完成的,完全是一种新的架构和技术。

其实,SDR技术和架构的无线电产品在军用和商用无线电领域早已广泛使用,近年来SDR技术已经被应用到了与大众接触最为密切的移动电话中了。

使用SDR嗅探监听GSM网络的通信流量已经不是什么新鲜事了,只要调到到特定频率时,我们就可以使用SDR来捕获无线电波。可捕获的频率范围和带宽随不同的SDR设备而不同。本文中,我们将使用最便宜的RTL-SDR来嗅探GSM,RTL-SDR 是一个低廉的家用消费档次的 DVB-T USB 接口的接收机,这些 DVB-T 接收机基于 Realtek 的 RTL2832U 芯片外加一个诸如 Elonics E4000 一类的高频头而构成,价格低廉到 20 到 25 美元的 RTL-SDR,它们无疑是目前最低廉的SDR硬件设备。

在详细介绍之前,首先看看不同的GSM频段。GSM是由国际电信联盟指定的一组由GSM手机运行的预定频率进行的操作。

从上图可以看出,标注黄色的那两个频段正是印度所使用的GSM,但900频段的使用国家为8个,1800频段的使用国家为3个,这意味着其手机用户要和其他国家的用户共同使用同一频段。

为了嗅探到GSM,我们首先需要识别GSM下行链路信道,这样就需要知道你的手机正在运行的频率,你可以通过获得手机的绝对无线频道编号 (Absolute Radio Frequency Channel Number -ARFCN )来获得它。

ARFCN,是在GSM无线系统中,用来鉴别特殊射频通道的编号方案,阐述了GSM 无线网络系统的Um 接口上的两个物理无线电系统链路和通道。一个用于上行链路信号,一个用于下行链路信号。

下面以我使用的摩托罗拉G4为例来进行实例说明,在这款手机中,我可以通过在手机键盘上拨*#*#4636#*#*来获得服务模式。由于对2G(GSM简称2G)的分析要比3G或4G要容易得多,所以我将手机切换到2G模式,分析如下所示。

从上图的画红框的部分可以看出,我的ARFCN号是672,这样就可以使用ARFCN号码来计算出我的手机运行的确切频率。通过使用简单的ARFCN计算器,就可以知道我的手机正在运行的频率。

现在,让我们将RTL-SDR调整到特定频率,并找出我们需要看到的内容。

我们可以清楚地看到该频率上的GSM数据流,除此之外,我们还会扫描相关的所有GSM频率,以便我们确认下行链路信道。推荐大家使用kalibrate-rtl工具来扫描相关的GSM频率。

从上图中,可以看到我的手机的下行链路信道,同时,kalibrate-rtl也给我们算出了偏移值,这将有助于你更好地校准你的SDR。

由于SDR接收的数据只是原始数据,所以没有什么实际意义。我们可以使用GR-GSM来解码这些原始数据,并将其处理成有意义的信息。

与此同时启动wireshark,这样我们就将开始在wirehark中看到GSM数据包,我们也可以过滤出Gsmtap数据包。

如上图所示,这是一个系统信息类型3数据包。由于MS在空闲模式下,与网络设备间的联系是通过广播的系统消息实现的。所以借助这个数据包,网络设备向MS广播系统消息,使得MS知道自己所处的位置,以及能够获得的服务类型,在广播的系统消息中的某些参数还能用于MS的小区重选。

由于A5算法是一种序列密码,它是欧洲GSM标准中规定的加密算法,用于数字蜂窝移动电话的加密,加密从用户设备到基站之间的链路。A5算法包括很多种,主要为A5/1和A5/2。其中,A5/1为强加密算法,适用于欧洲地区;A5/2为弱加密算法,适用于欧洲以外的地区。所以我们只能看到一些没有加密过的控制通道。

AUC(鉴权中心)是GSM系统中的安全管理单元,存储鉴权算法和密钥,保证各种保密参数的安全性,向HLR(归属用户位置寄存器)提供鉴权参数。存储用以保护移动用户通信不受侵犯的必要信息。AUC一般与HLR合置在一起,在HLR/AUC内部,AUC数据作为部分数据表存在。鉴权参数包括三组:RAND(Random Number,随机数),SRES(Sign Response,符号响应),Kc(Ciphering Key,加密密钥)。

不过由于 Ki或Kc永远不会通过网络进行交换,因此无法通过空中嗅探加密密钥。此外,Kc会在每次呼叫设置之前更改。这意味着每呼叫一次,就会出现一次不同的加密密钥。如果我们有足够强的计算能力,旧版本的A5可能就会被破解。目前已有研究已经通过在云计算中建立了整个流程来破解A5 / 1加密, Kraken是可以用于此的一个工具。

我们无法使用RTL-SDR捕获语音数据,因为在通话期间,会发生信道跳频,而RTL-SDR的带宽不足以一次捕获整个范围。所以,我们需要一个更好的SDR,要具有更多的带宽,如HackRF或任何SDR设备。HackRF是一款由Michael Ossmann发起的开源软件无线电外设,支持从30MHz到6GHz,最大带宽20MHz。

我们的电话是如何被嗅探到的?

1.加密算法的降级

由于许多旧的手机没有足够的计算能力来使用新的加密算法,所以为了维持它们的运行,运营商必须支持旧的加密算法,这就造成了即使我们想使用强大的加密算法但迫于现实,也会被切换到较弱的加密算法。

2. 有意关闭加密方案

在电信安全漏洞评估中,我们发现有时运营商在网络上的负载增加时会完全关闭加密方案,从而降低流量的加载,以便可以轻松容纳更多的用户。

3. 中间人攻击

中间人攻击者可以创建伪造的手机发射塔,让附近的移动用户使用发射塔,这样就可以迫使MS根本不使用加密。

4.获取sim卡的加密认证

在2015年,有消息说,美英间谍机构曾入侵世界最大SIM卡制造商金雅拓(Gemalto)公司,盗取加密密钥,以便在未获得许可的情况下获取手机通信信息。

相关文章
|
Linux 网络安全
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
振弦采集模块的通讯速率和软件握手( UART)
模块开始一次测量时,从 UART 接口主动发送 XOFF 信号( 0x13), 表示模块开始忙于测量数据, 当测量完成时主动发送 XON 信号( 0x11), 表示模块本次测量完成,正处于空闲状态。在开启模块的软件握手功能后, 若需要向模块发送指令,建议 UART 的通讯流程为: 首先等待模块返回 XON 信号( 0x11),当收到 XON 信号或等待超时后立即向模块发送指令。
振弦采集模块的通讯速率和软件握手( UART)
|
缓存 网络协议