一种基于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)公司,盗取加密密钥,以便在未获得许可的情况下获取手机通信信息。
一种基于SDR实现的被动GSM嗅探的更多相关文章
- 一种基于RBAC模型的动态访问控制改进方法
本发明涉及一种基于RBAC模型的动态访问控制改进方法,属于访问控制领域.对原有RBAC模型进行了权限的改进和约束条件的改进,具体为将权限分为静态权限和动态权限,其中静态权限是非工作流的权限,动态权限是 ...
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
- <<一种基于δ函数的图象边缘检测算法>>一文算法的实现。
原始论文下载: 一种基于δ函数的图象边缘检测算法. 这篇论文读起来感觉不像现在的很多论文,废话一大堆,而是直入主题,反倒使人觉得文章的前后跳跃有点大,不过算法的原理已经讲的清晰了. 一.原理 ...
- 16种基于 CSS3 & SVG 的创意的弹窗效果
在去年,我给大家分享了<基于 CSS3 的精美模态窗口效果>,而今天我要与大家分享一些新鲜的想法.风格和趋势变化,要求更加适合现代UI的不同的效果.这组新模态窗口效果包含了一些微妙的动画, ...
- tmpfs:一种基于内存的文件系统
tmpfs是一种基于内存的文件系统, tmpfs有时候使用rm(物理内存),有时候使用swap(磁盘一块区域).根据实际情况进行分配. rm:物理内存.real memery的简称? 真实内存就是电脑 ...
- 一种基于重载的高效c#上图片添加文字图形图片的方法
在做图片监控显示的时候,需要在图片上添加文字,如果用graphics类绘制图片上的字体,实现图像上添加自定义标记,这种方法经验证是可行的,并且在visual c#2005 编程技巧大全上有提到,但是, ...
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(流浪小狗,六篇,附下载地址)
本文向大家介绍一种基于Qt的伸缩TCP服务实现.该实现针对C/S客户端-服务集群应用需求而搭建.连接监听.数据传输.数据处理均在独立的线程池中进行,根据特定任务不同,可安排负责监听.传输.处理的线程数 ...
- 一种基于Qt的可伸缩的全异步C/S架构server实现(一) 综述
本文向大家介绍一种基于Qt的伸缩TCP服务实现.该实现针对C/Sclient-服务集群应用需求而搭建. 连接监听.传输数据.数据处理均在独立的线程池中进行,依据特定任务不同,可安排负责监听.传输.处理 ...
- 一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法!
一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法! 对于大中型网站,为了增强用户体验,往往需要根据不同城市站点的用户推送或展现相应个性化的内容,如对于一些大型门户网站的新闻会有 ...
随机推荐
- HDu4794 斐波那契循环节
题意:Arnold变换把矩阵(x,y)变成((x+y)%n,(x+2*y)%n),问最小循环节 题解:仔细算前几项能看出是斐波那契数论modn,然后套个斐波那契循环节板子即可 //#pragma GC ...
- 【JS】【3】标签显示几秒后自动隐藏
$("#XXX").show().delay(2000).hide(0); 2000,0:可选,速度,(毫秒:"slow":"fast") ...
- java中String创建对象分析(转)
String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案 ...
- 第 4 章 用 HTML5 建立超链接
HTML 文件中最重要的应用之一就是超链接.—— 当鼠标单击一些文字.图片或其他网页元素时,浏览器会根据其指示载入一个新的页面或跳转到页面的其他位置. 超链接除了可链接文本外,也可链接各种媒体,如声音 ...
- Linux确认网口对应配置文件
服务器经常是多网卡多网口,我们在某个网口插上网线后,到/etc/sysconfig/network-scripts/下配置ip时需要确定插上网线的网口对应的是哪个配置文件(比如是eth0还是eth1) ...
- qml 设置tooltip,Customizing ToolTip
Button { id: btn text: "Tip" anchors.horizontalCenter: pa ...
- swagger访问api, TypeError: Failed to fetch
用swagger访问https://localhost:44360/api/ads/1, 得到的结果是 TypeError: Failed to fetch.一开始以为是后端代码问题,检查了好久,才发 ...
- Transactional参数说明
参数 说明 readOnly 该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false.例如:@Transactional(readOnly=tru ...
- easyui中如何为validatebox添加事件(onblur、onclick等)
在我们一般html的input标签,textbox事件可以直接使用onblur().onclick()事件,但是在easyui的validatebox没有onblur事件, 如果我们需要为valida ...
- Oracle.练习题
2018-07-31 ---练习3 ---创建sporter表 create table sporter( sporterid ) constraint sport_id primary key, s ...