一种基于SDR实现的被动GSM嗅探
软件定义无线电(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)公司,盗取加密密钥,以便在未获得许可的情况下获取手机通信信息。