ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

GSM短信嗅探与A5加密破解:基于SDR的完整技术解析

GSM短信嗅探与A5加密破解:基于SDR的完整技术解析 简介围绕使用软件定义无线电SDR嗅探GSM短信这一主题压缩包整合了gsmsms_sdr开源项目源码及配套说明文档面向无线通信安全研究者、网络运维人员以及具备Python基础的开发者旨在帮助大家快速搭建GSM短信接收与解析环境。资源共包含11个文件以4个Python脚本为核心分别负责SDR信号接收、GSM解码、短信转发和MySQL数据库写入同时提供4张PNG运行截图、1张JPEG架构示意图、1份SQL建表脚本以及1份Markdown说明文档整体包体仅544KB结构清晰便于直接查阅。已有1163人学习该资源适合希望动手复现嗅探实验并验证GSM加密缺陷的读者。通过阅读源码与截图能够了解GNU Radio和gr-gsm等工具的基本用法掌握A5系列加密算法被破解后的短信解码流程并可以基于提供的脚本扩展短信转发或存储功能从而获得完整的SDR嗅探实验参考。1. 从一个2G时代的“历史遗留问题”说起做无线电安全和移动通信研究的朋友应该都听过“GSM嗅探”这个说法。简单讲就是用软件无线电SDR设备接收GSM基站的下行信号再通过开源软件对信号进行解调、解码还原出手机和基站之间的通信内容。这些年经常有人问我Python和SDR配合起来到底能不能把GSM短信“嗅探”出来这个标题里提到的“GSM在中国是没有加密的”到底是不是真的先说结论这句话有一定事实基础但表述上不够严谨。GSM网络在设计之初确实有加密机制也就是A5系列加密算法。问题在于这套算法诞生于上世纪80年代末受限于当时的算力水平和出口管制它的密钥长度、算法强度在今天看来都已经严重过时尤其是A5/1和A5/2算法早就在学术圈被公开破解。所谓“没有加密”更准确的说法是“加密形同虚设破解成本极低”。这也是为什么GSM安全研究至今仍是无线安全领域的热门话题也是很多安全从业者入门SDR和信号处理的第一个练手项目。这篇文章我尽量站在一个过来人的角度把GSM短信的传输链路、A5加密的来龙去脉、SDR工具链的选型以及合法合规的研究边界一次讲清楚。如果你是想入门的无线电安全爱好者或者对手机通信安全感兴趣的技术人这篇文章应该能帮你少走不少弯路。1.1 为什么这个话题值得单独拿出来讲把GSM短信嗅探单独拎出来说是因为它和WiFi抓包、蓝牙嗅探这类“近场安全测试”完全不同。GSM是蜂窝移动通信系统手机和基站之间的射频信号覆盖范围按公里计算基站又是运营商部署的公共基础设施。这意味着只要具备合适的设备和软件在一定地理范围内接收下行信号并非难事。而短信内容一旦被还原出来就是明文级别的敏感信息所以这个话题天然带有“双刃剑”属性。也正因为这样业内对GSM嗅探的态度非常审慎。我自己做相关研究时主要聚焦在协议分析、加密弱点验证和防御策略上而不是针对某个具体号码去做窃听。安全研究的价值在于“知其所以然”知道漏洞在哪、攻击路径是什么才能知道怎么防。这篇文章所有的实操内容我都会明确限定在合法边界内也就是分析自己的设备、自己的信号、实验环境中的基站模拟器而不是对任何人进行未经授权的监听。1.2 先说清楚GSM不是没有加密而是加密被破解了很多资料喜欢用“GSM明文传输”这个说法实际上不准确。GSM网络在空口手机到基站这一段确实有加密算法分为A5/1、A5/2、A5/3几代其中A5/1用于欧洲和中国等地区A5/2初期用于部分出口国家因为强度太低后来基本被弃用A5/3则是后来为兼容3GPP安全标准引入的。重点在于A5/1的密钥长度只有64位其中还有10位是固定置零的实际有效密钥仅54位。在1990年代这还算安全但在今天的硬件算力面前暴力穷举或预计算表攻击已经可以在分钟级甚至秒级完成。所以“GSM在中国是没有加密的”这句话我理解是很多安全科普博主为了强调“空口加密形同虚设”而做出的简化表达。真正的情况是GSM确实有加密但加密强度不足以抵御现代攻击再加上2G网络至今仍在全球范围内大规模部署短信内容在空口段被截获还原的风险是客观存在的。这不是耸人听闻而是通信协议演进过程中一个典型的“历史包袱”。2. GSM短信的传输链路与加密机制拆解要把这件事讲明白绕不开GSM网络的基本架构。一条短信从发送方手机到接收方手机大概经历这么几步发送方手机先通过空口把短信内容发给附近的基站BTS基站通过有线回传网络送到基站控制器BSC再经过移动交换中心MSC和短信中心SMSC最后寻呼到接收方所在的基站由基站通过空口下发给接收方手机。这里面最脆弱的一段就是“基站到手机”的下行空口。为什么因为下行信号是基站主动广播出来的覆盖范围内任何人都能用SDR设备接收到不需要和基站建立连接也不会被基站感知。相比之下上行信号手机发给基站虽然也可能被截获但手机发射功率小、信号弱接收难度大得多。所以绝大多数GSM嗅探研究都盯准了“下行链路”。2.1 一条短信从手机到基站经历了什么短信在GSM网络里不是直接发文本的而是先被封装成信令消息。GSM规范里短信走的是控制信道准确说是SDCCH独立专用控制信道或SACCH慢速随路控制信道通过这些信道传输的是三层信令消息短信内容被包裹在RP层Relay Protocol和CP层Connection Protocol的数据单元里。简单理解就是短信被套了好几层“信封”要一层层拆开才能看到正文。在空口这一段所有信令消息还会被拆成一个个突发脉冲Burst每个突发对应一个时隙再经过GMSK调制、交织、信道编码等处理后才发射出去。SDR做GSM嗅探本质上是把这套过程反过来接收射频信号、下变频到基带、GMSK解调、去交织、信道解码、解出信令帧最后从信令帧里提取短信内容。这里直接引出一个常识为什么很多人说“GSM嗅探难度不高”因为GSM协议栈是公开的信道编码、调制方式、帧结构都有明确的3GPP规范开源社区也早已把整个解调链路做成了工具。只要硬件能稳定接收信号软件能完成同步和解调剩下的就是协议解析的“体力活”。2.2 A5算法家族从A5/1到A5/3A5算法是GSM空口加密的核心。它分为A5/0不加密、A5/1强度较高、A5/2强度很低、A5/3基于KASUMI算法用于3G兼容几个版本。A5/0就是完全明文传输A5/2因为存在严重设计缺陷在1999年被学术界公开破解后来基本不再使用。A5/1虽然比A5/2强但在2010年前后也陆续被各路研究团队用不同的方法破解包括彩虹表攻击、时间-存储权衡攻击、近实时攻击等。实际破解A5/1的手段有很多主流方法之一是利用已知明文攻击先通过解调获得密文再结合已知的突发脉冲结构推测明文然后用已知明密文对去反推密钥流最终恢复出64位会话密钥。整个过程在普通PC上就能完成这也是为什么GSM空口加密在今天基本不构成实质防护。A5/3的安全性相对好一些但它不是所有2G网络都启用。很多地区的GSM网络早期部署时只启用了A5/1甚至有部分地区因为兼容性和设备老旧问题仍在部分场景回落A5/0。这也就是坊间“GSM没加密”说法的现实来源之一。2.3 关于“在中国是没有加密的”这句话要澄清什么严格来说国内GSM网络并非普遍使用A5/0不加密大部分城市网络还是开了A5/1的。但前面说过A5/1在今天的破解成本极低已经不能当作有效的隐私保护手段。如果从“能否被低成本截获还原”这个角度讲用“等同于没加密”来形容也不算全错。另一个更现实的场景是2G回落攻击。现在的手机默认优先4G/5G网络但在某些场景下比如信号覆盖差、VoLTE不可用、紧急呼叫等会回落到2G网络。攻击者可以先干扰4G/5G信号再用一个恶意基站把手机“诱捕”到2G从而强制开启A5/0或A5/1。这种降级攻击也是GSM安全研究中最常讲的威胁模型。所以就算某个网络平时开了A5/1也架不住主动降级。3. SDR与开源工具在GSM安全研究中的角色聊完技术背景来看看工具链。SDR软件无线电说白了就是把传统射频前端的很多功能搬到软件里实现硬件只负责信号的收发和初步变频后续的解调、滤波、解码全靠电脑里的软件算法。这样做的最大好处是灵活性极高同一块SDR设备今天可以听航空频段明天可以分析对讲机信号后天用来做GSM协议研究全靠软件决定“它是什么”。3.1 硬件选型RTL-SDR、HackRF、USRP怎么挑如果你是第一次接触GSM嗅探研究最常听到的硬件有三类RTL-SDR、HackRF One、USRP系列。RTL-SDR是入门首选一片基于RTL2832U芯片的USB电视棒几十到一百多元就能买到。它的工作频率范围大约在24MHz到1.7GHz正好覆盖GSM 900MHz、GSM 1800MHz频段带宽最大约2.4MHz对GSM单信道解调来说是够用的。但它的射频前端性能一般动态范围有限抗镜像干扰能力弱在信号复杂的城市环境下表现平平适合实验室环境或信号较好的场景。HackRF One是进阶方案频率范围从1MHz到6GHz带宽最高20MHz收发一体能做更多实验。对于GSM协议分析来说HackRF能够覆盖更多频段甚至可以做简单的信号发射实验比如搭建实验用的伪基站测试环境但它的接收灵敏度和时钟精度只能算中等直接用于实际信号抓取时也需要配合好的天线和滤波器。USRP是专业级设备价格从几千到几万不等性能和灵活性都是顶级适合科研机构或专业团队使用。普通爱好者入门不建议直接上USRP先用RTL-SDR跑通全流程再根据需求升级性价比最高。3.2 软件生态GNU Radio、gr-gsm、gqrx各管什么软件方面GNU Radio是SDR领域最核心的开源框架本质是一个基于流程图flowgraph的信号处理开发平台。你可以把GNU Radio理解成“信号处理的乐高积木”把各种信号处理模块滤波、混频、解调、解码等拖到画布上连起来就能搭出一个完整的接收机链路。gr-gsm是专门针对GSM信号解码的GNU Radio模块集合里面实现了GSM协议栈的解调和解码功能包括GMSK解调、时隙同步、信道解码、信令解帧等。早期版本还支持从解出的信道数据里提取短信内容。很多安全研究者做GSM分析都是基于gr-gsm进行二次开发。gqrx则是一个通用的SDR接收器软件可以把它理解成“可视化的收音机频谱仪”主要用来快速查看频谱、听广播、做简单的信号确认。它本身不做GSM协议解析但非常适合在开始抓取信号前先用它确认目标频点、观察信号强度再切换到gr-gsm做正式解调。在实际研究流程中我通常先用gqrx扫一遍频段找到运营商下行频点再用gr-gsm跑解调。这两步配合挺自然的一个负责侦察一个负责深度处理。3.3 Python在这里面到底有什么用Python在这个链条里的作用主要体现在两个层面。第一是写脚本去控制GNU Radio flowgraph、解析gr-gsm输出结果。比如监听GNU Radio运行产生的socket输出接收解调后的数据帧再用Python脚本去拆解帧结构提取短信内容或者信令信息。第二是数据后处理比如对采集下来的I/Q样本做频谱分析、信号质量评估或者用机器学习方法去做调制识别、频点自动检测等。但要注意Python不会直接参与GMSK解调或GSM信道解码这类计算密集型的实时任务那些工作还是由C写成的GNU Radio模块完成的。Python更像是“粘合剂”和“分析前端”这是很多初学者容易误解的地方。处理I/Q文件时可以用Python的numpy从文件中读原始采样数据绘制频谱图观察带宽和中心频率是否对准这就是典型的Python介入方式。4. 安全研究实测在合法边界内能做什么讲完工具最关键的实操环节来了。我必须先把话说在前头GSM嗅探相关的法律法规非常明确未经授权截取他人通信内容属于严重违法行为。所以下面分享的实测内容全部限定在“对自己设备和自己实验环境”进行研究的范围内请务必守住这条红线。4.1 方案一监听并分析自己手机所在小区的广播信道这个方案是我推荐给入门者的第一个实验目的是理解GSM下行的基本解调流程不会涉及任何第三方通信内容。具体怎么做呢先用手机工程模式很多安卓手机支持或gqrx扫描确认当前所在小区的下行频点然后用RTL-SDR配合天线接收该频点的信号再用gr-gsm跑解调。如果你能成功解出BCH广播信道上的系统消息比如MCC移动国家码、MNC移动网络代码、LAC位置区码这些小区参数就说明整条链路已经通了。这个实验有一个很妙的地方它解出来的只是基站广播的系统信息不包含任何用户的语音或短信内容所以安全风险和法律风险都很低但能让你完整跑通“接收、采样、解调、信道解码”的全流程。我当初跑通这个实验时对整个GSM协议的理解瞬间从“纸上谈兵”变成了“实体可见”。要做这个实验有几个常见的坑需要提前规避。第一是天线别乱用GSM 900MHz频段需要匹配天线一般随RTL-SDR附赠的小天线性能很差推荐自己买一根GSM专用天线或自己DIY一根半波偶极子天线。第二是接收增益不要一上来就拉满增益太大会导致接收机饱和、信号失真通常先设20dB到30dB再根据频谱图微调。第三是时钟漂移问题RTL-SDR的晶振精度不高解调时会出现频率偏差gr-gsm里有相关参数可以做频偏校正如果发现解调不出来优先检查这一步。4.2 方案二用基站模拟器做受控实验如果你想把实验做得更深比如完整走一遍“手机附着、寻呼、短信下发”的信令流程那就不能只靠接收真实基站信号了更合理的选择是搭建一个实验用的小型GSM基站模拟器。用开源软件OpenBTS配合SDR设备可以搭出一个独立的、覆盖范围很小的GSM实验网络。在这个网络里你可以用自己的手机正常入网然后在另一端用软件模拟下发短信再通过SDR抓取下行信号完整观察短信在整个空口链路上的封装和解调过程。这个方案最大的优势是100%可控实验环境里没有第三方用户所有数据都来源于你自己的设备法律风险极低。而且你能亲手修改加密配置比如分别测试A5/0、A5/1模式下信号的特征差异直观感受加密算法对信令帧的影响这种对比实验在真实网络里是做不了的。当然搭建OpenBTS不是零门槛。你需要一台性能还行的Linux电脑、一台支持收发的SDR设备HackRF One起步USRP更好还需要花时间理解GSM网络的信令流程、频率规划、SIM卡鉴权等概念。整个过程大概需要几天时间消化但收获非常大做完之后你再回头看gr-gsm的日志输出会觉得一切都清晰了很多。4.3 合规底线与风险清单这里必须把合规问题单独列一节因为GSM嗅探相关知识非常容易被误用。我可以很直白地说非法截取、窃听他人通信轻则违反《治安管理处罚法》重则触犯《刑法》中关于侵犯通信自由、侵犯公民个人信息的相关条款。这几年各地通报的“伪基站”案件就是最好的警示。对爱好者和安全从业者来说我认为需要守住三条底线不针对任何特定号码进行信号抓取和内容还原不在未授权的场所部署任何形式的基站或信号干扰设备不以任何形式传播、出售GSM嗅探工具链和操作方法。研究归研究敬畏红线。所有实验都在自己的设备、自己的SIM卡、受控的实验室环境中进行这是我一贯的原则。5. 常见问题与避坑经验记录这部分我把自己实测中踩过的坑和读者常问的问题整理一下想入门的可以直接对照排查。5.1 为什么RTL-SDR收不到GSM信号最常见的原因是频点没对准。GSM下行频点分布在935MHz到960MHzGSM900和1805MHz到1880MHzGSM1800不同运营商的频点不一样每个城市的具体频点还要看实际部署。先用gqrx扫频找到连续的强信号区域再做精调。另一个原因是天线性能太差室内环境常常收不到清晰的GSM信号建议把天线靠近窗户或者到室外试试。最后RTL-SDR的直采样模式在高频段容易镜像干扰如果用的是低端电视棒最好在软件里打开镜像抑制相关选项。5.2 为什么解出来的数据是乱码gr-gsm输出乱码通常不是协议解析逻辑错了而是解调环节没对齐。GSM解调最关键的步骤是时隙同步和频率同步如果频偏校正参数设置不对解出来的比特流就是乱的。建议先检查你输入的频率偏移值看看是否和gqrx观察到的实际信号中心频点一致。另外信道编码里的交织和突发格式匹配也很重要不同信道类型对应不同的格式gr-gsm会根据信令自动判断但如果软件版本太老或配置不对也会导致乱码。如果你在解SDCCH信道里的短信需要确认当前小区是否把短信指派到了SDCCH还是走了SACCH不同信道解析方式不一样。5.3 这套东西现在还能不能用来做防御研究答案是肯定的而且我认为“防御研究”才是这类技能最值得投入的方向。理解GSM的加密弱点可以帮你更客观地评价“短信验证码”这类认证手段的安全性也能帮你弄清为什么安全专家一直建议用基于时间的一次性密码应用或者加密即时通信工具而不是依赖短信验证。往大了说GSM协议安全研究是5G安全研究的基础课。很多信令安全、身份管理、降级攻击的思路在GSM里就已经定型了。做一轮GSM安全研究对你理解移动通信系统的整体安全模型有很强的启发意义这是单纯读协议文档得不到的体感。6. 给普通用户的防御建议如果你不是安全研究者只是普通手机用户看到这里可能有点担心。其实不必过度恐慌GSM空口监听虽然技术上可行但攻击者需要物理上靠近目标区域还要部署专用设备实际操作门槛和对目标位置的限定都不小。对绝大多数普通人来说真正需要做的是提升自己的安全意识而不是整天疑神疑鬼。6.1 能用4G/5G VoLTE就别回落2G最有效的防御手段就是让手机不落到2G网络。现在大部分智能手机都可以在设置里关闭2G网络或者强制使用LTE/CDMA网络。关闭2G后手机在4G/5G信号不可用时也不会回落到GSM这就直接切断了攻击者通过降级攻击把手机拖入2G网络的路径。如果你所在的地区4G/5G覆盖很稳定关掉2G对日常使用基本没有影响。这项操作在iPhone上位于“设置-蜂窝网络-蜂窝数据选项-语音与数据”里安卓手机通常在“设置-网络和互联网-SIM卡-首选网络类型”里。每部手机路径不同但关键词就是“2G”或“网络类型”自己找一下就能看到。6.2 短信验证码为什么现在这么不安全想明白GSM加密弱点之后你就知道为什么越来越多平台在逐步放弃短信验证码了。短信验证码本身依赖短信的机密性而GSM空口加密并不可靠再加上伪基站短信拦截、SIM卡克隆、运营商侧转售漏洞等攻击路径短信验证码已经从“安全因素”退化成了“便利因素”。所以我现在个人的建议是能用硬件安全密钥的用硬件密钥能用认证应用的用认证应用短信验证码只作为最后的兜底选项。6.3 个人经验与最后的小建议GR-GSM这套工具链我第一次完整跑通的时候感叹了很久。一个三十多年前设计的通信协议在今天用一个一百多块钱的USB电视棒和一个开源软件就能把它的“安全底裤”看得清清楚楚这种冲击感是任何论文和文档都给不了的。但恰恰也是这种冲击感让我更坚定一个观点越容易获得的能力越要用来做建设性的事情。如果你准备入门这个方向我最后再分享几个小技巧。第一先把GNU Radio的基础教程过一遍不要直接上来跑gr-gsm对采样率、增益、频点这些概念有一点底子再上手会顺畅很多。第二善用日志输出gr-gsm跑起来后大量调试信息会打到终端很多人嫌吵直接关掉其实这些日志包含了同步状态、信道分配、解码成功率等关键信息本文还有配套的精品资源点击获取
返回列表