GSM短信侦听的便宜方案

侦听GSM短信常用的是OsmocomBB + C118方案,主要是用luca/gsmmap分支。使用ccch_scan这个程序可以把通信封装成GSMTAP发给本机,然后用WireShark接收GSMTAP并作协议解析和短信解码。国内部分黑客写了Python或Perl脚本,替代WireShark解码,并打印输出或保存到MySQL数据库。还有人写了Web前端,来提高易用性。

针对OBB只支持PCH在TS0的情况,有人改了firmware,分别支持PCH在TS2,TS4和TS6,编译生成了4个firmware。然后又有人把这拿来做生意,用软件狗加密后做成LiveCD出售,这就是网上所谓3信道,4信道版本的由来。

这种泛泛的侦听所有短信的做法效率很低,用处也不大。

而且,ccch_scan只是一个演示程序,本身不是为了侦听所有短信而设计的,功能流程上有很明显的缺陷:程序守听PCH,收到任何的Immediate Assignment就会切换Timeslot跟随通信过程,如果是短信就继续侦听并输出,是话音等就返回PCH继续守听。问题在于离开PCH再到回来这期间可能丢失多个Imm Ass。这就是为什么总有人反映用ccch_scan会漏接短信的原因。

真正合理的设计,应该是master/slave结构,多个master对更多的slave,每个master固定守在一个PCH,收到Imm Ass就分配给一个slave去跟随,slave处理完毕就返回待命。

比如,一个典型的处于闹市的移动S333站型的基站的一个扇面,在ccch_conf=110的情况下,需要4个master和大约16个slave,就可以完整记录所有短信。

这个设计,我还没有看到国内有人实现出来。国外黑客有个半成品,我拿来改写了一部分,除了短信也想把语音通话全部记录下来,现在还没改写完。

相比于简单粗暴的无差别侦听,我个人对于侦听指定目标的短信更有兴趣。其实,ccch_scan有个-t参数可以指定特定的TMSI,基本满足需求,我就直接改写ccch_scan增加了短信解码输出,这样不用借助别的程序,自己就能解决问题

那么问题来了,已知特定目标的手机号码,怎么确定目标手机当前camping在哪个基站,以及TA的TMSI? 如果你确切知道TA在哪儿,只要到TA身边不远拿出Nokia Net Monitor看一下当前ARFCN以及相邻的ARFCN,通常跑不出这几个ARFCN,很容易拿下。

如果只知道大概位置,就需要先确定TA的TMSI,再穷举出TA所连接的基站。TMSI是在LAC范围内有效的,Paging也是在一个LAC里的所有基站同步广播的。而一个LAC覆盖的物理区域还是很大的,在一个城市里不需要切换太多LAC就应该能找到目标的TMSI。

发现目标TMSI比较好用的是Silent SMS。我修改过的mobile程序,可以按特定时序向目标手机发送Silent SMS,然后在PCH上侦听,按照时序和Paging的次数来排查,最终确定目标TMSI。

确定了TMSI之后,继续切换侦听不同基站的PCH,直到在有的基站侦听到了对应的Imm Ass和短信内容通信,就可以确定了。如果基站的ccch_conf不等于000,还需要用目标手机的IMSI算出paging group从而确定该手机所在的TS。

再说说上行短信的侦听。因为手机功率低,手机天线效率低,所以你通常要离目标很近才行,300米以内最好。你所处地势越高,越空旷,接收效果越好。一定要用外接天线,你既然都能忍受带着一台笔记本电脑,为什么不能带好一点的外接天线?天线应该尽量在室外,增益越高越好,最好用定向天线:八木或锅。没有定向天线,就要天线长度尽量长,能有2倍波长以上最好。馈线尽可能短,尽可能高品质。然后说接收设备,C118一定要去除滤波器和换巴伦,RTL-SDR和别的SDR效果也都不错。

然后,你想主动些,利用手机短信验证码重置TA的各个账户,登录进去偷取或修改资料,最好这些短信只有你能收到,TA收不到,这就要用到拦截短信的办法。

要了解短信拦截,先要谈谈鉴权。

通常运营商在Mobile Oriented业务上是要鉴权的,因为他们要计费。而Mobile Terminated业务因为是免费的,配置上就比较松,可能没有鉴权。

如果你运气比较好,还能发现一些基站在MO业务上只要求IMSI来鉴权。这就意味着你可以spoof任何手机号码。只需要去网上的HLR Lookup服务查一下该手机号对应的IMSI就可以了。

如果你通过特殊办法获得了TA的KI,只需要把TA从网络上detach了,你再attach就可以替代TA了。

收短信属于MT业务,一般情况下,联通大部分配置是不要鉴权的,或者简单鉴权比如IMEI。移动老的基站不少也是不要鉴权的,新基站大部分都要SRES鉴权。

一个LAC里不同的基站配置可能不一样,需要侦听来确定。

短信拦截的原理基于race condition,即把响应Paging及收短信的代码从Layer 23搬到Layer 1,这样你就在GSM协议栈上比TA快了一倍,所以你就能先于TA代替TA响应paging和收取短信。

这个功能国外黑客有演示代码,但是bug很多,连LAPDm协议流程都有问题,在国内运营商环境没法正确运行。当然,我已经做了必要的修改。

目前,我正在做的GSM的MITM的实验,即目标手机和基站之间插入一个自制基站和一部攻击手机,诱导目标手机接入自制基站,用攻击手机仿冒目标手机接入运营商网络,从而实现短信的拦截。这种方式不管运营商有没有鉴权,我们都能在不惊动目标的情况下实现短信拦截。

3G和4G短信的侦听是也是要以GSM为基础的,如何实现以后再单独发帖讲。

时间: 2024-10-08 18:24:59

GSM短信侦听的便宜方案的相关文章

Android短信监听(三)——利用Loader实现短信监听

MainActivity如下: package cc.c; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; import android.content.Loader; import android.database.Curs

Android短信监听(二)——利用ContentObserver实现短信监听

MainActivity如下: package cc.testsmslistener; import cc.testsmslistener.SMSContentObserver.MessageListener; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; import android.app.Activity; /** *

Android短信监听(一)——利用BroadcastReceiver实现短信监听

MainActivity如下: package cc.testsmsbroadcastreceiver; import cc.testsmsbroadcastreceiver.SMSBroadcastReceiver.MessageListener; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; /** * Demo描述: * 利用BroadcastReceiver实现

内容观察者实现短信监听

内容观察者实现短信监听 通过内容观察者监听短信是否发生变化,如果发生变化,就用内容提供者读取短信的内容. 原理: 当短信发生变化(比如说来短信),短信应用就会通知内容观察者我的短信发生了变化,并把变化位置短信的uri传过来,有uri之后,内容提供者就可以很方便的读取短信内容了,不过肯定要保证权限够. package com.example.duanxinjianting; import android.app.Activity; import android.database.ContentOb

Android实战简易教程-第四十枪(窃听风云之短信监听)

近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台服务,将监听到的短信自己主动上传到bmob数据库中. 一.代码实现: 1.首先实现javabean对象. package com.example.messagecut; import cn.bmob.v3.BmobObject; public class MsgContent extends Bmo

单口GSM短信猫USB接口带DLL开发包

产品简介: 单口GSM短信猫,采用法国wavecom Q2303A模块(可定制其他模块比如Q2403A.Q2406A.Q2358C等)USB接口带DLL开发包,支持不同语言开发平台如VB.VC.Delphi等开发语言做二次开发. 提供USB驱动程序,支持不同电脑.服务器.笔记本等使用. 硬件参数: 产品类型:无线通讯模块 产品介绍:法国WAVECOM Q2303A GSM短信模块 产品特征 双频GSM/GPRS MODEM模块 执行ETSI GSM Phase 2+的标准 类别4(2W @ 90

wemall app商城源码Android短信监听接收器

wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中短信监听接收器,用于自动获取短信验证码,然后自动填写到验证码区域代码,供技术员参考学习. package cn.smssdk.gui; import android.content.BroadcastReceiver; import android.content.Context; import a

Android 编程下短信监听在小米手机中失效的解决办法

相信很多人写的短信监听应用在小米手机上是拦截不到短信的,这是因为小米对短信的处置权优先分给了系统.我们可以在短信的[设置]→[高级设置]→[系统短信优先]中发现短信的优先处理权默认是分给系统的,只要关闭这个系统优先权,短信监听应用就可以正常的拦截到短信了.   

GSM 短信相关AT指令(转)

// AT+CSMS 选择消息业务AT+CSMS=0 // SMS 的AT 命令兼容GSM 07.05 Phase 2AT+CSMS=1 // SMS 的AT 命令兼容GSM 07.05 Phase 2+ // AT+CMGF 选择消息格式AT+CMGF? // 查询当前值 AT+CMGF=0 // PDU: 0AT+CMGF=1 // TXT: 1 // AT+CMGL 列举短消息,AT+CMGF=0 PDU模式AT+CMGL=0 // 接收未读 AT+CMGL=1 // 接收已读AT+CMG