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为基础的,如何实现以后再单独发帖讲。
GSM短信侦听的便宜方案的更多相关文章
- Android 编程下短信监听在小米手机中失效的解决办法
相信很多人写的短信监听应用在小米手机上是拦截不到短信的,这是因为小米对短信的处置权优先分给了系统.我们可以在短信的[设置]→[高级设置]→[系统短信优先]中发现短信的优先处理权默认是分给系统的,只要关 ...
- Android短信监听软件
本案例是在android手机中运行,是一个没有界面的短信监听软件.主要是用BroadcastReceiver来接受短信广播,当接收到短信后就跳转到service中来转发短信.哈哈,不是用来干坏事的.这 ...
- Android短信监听(二)——利用ContentObserver实现短信监听
MainActivity例如以下: package cc.testsmslistener; import cc.testsmslistener.SMSContentObserver.MessageLi ...
- wemall app商城源码Android短信监听接收器
wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...
- Android实战简易教程-第四十枪(窃听风云之短信监听)
近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台 ...
- Android 短信监听及用途分析
监听系统短信这个只能作为一个技术点来研究下,读者可能在工作中可能不会哦涉及到,一般的应用软件也不会有这个需求 但是作为程序员呢,多了解一下也是好的. Android 监听系统短信有什么用? 1.对系统 ...
- Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站
此文章PDF文档下载地址:点击下载 0x00 写在前面 大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的s ...
- GSM 短信相关AT指令(转)
// AT+CSMS 选择消息业务AT+CSMS=0 // SMS 的AT 命令兼容GSM 07.05 Phase 2AT+CSMS=1 // SMS 的AT 命令兼容GSM 07.05 Phase ...
- Android短信监听实现,及Android4.4之后短信机制变更
前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去 按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...
随机推荐
- WinForm应用程序之注册模块的设计与实现
Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好 ...
- 怎么在Form1调用Form2中的成员?
第一种情况,form1和form2有关系,也就可以说成是form1里面有个事件,通过这个事件来打开form2在这个情况下这么写form2 f2 = new form2(这里写form1中的变量值)f2 ...
- html5重定义标签
1.details: 可以同details与figure一同使用,定义包含文本 <details> <dd>无限互联1</dd><dd>无限互联1< ...
- jqury.jqzoom插件--放大镜
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- [redis] Redis 常用命令
redis命令文档:http://doc.redisfans.com/index.html 1. redis查看当前所有的key KEYS * 模糊匹配keykeys 模糊字符串* 2. 查看当前 ...
- 数据库中Schema(模式)概念的理解
在学习SQL的过程中,会遇到一个让你迷糊的Schema的概念.实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不 ...
- Pinyin4Net
.net使用的汉字转拼音库.Pinyin4Net 是直接从 Pinyin4J 翻译过来的,很多代码甚至是直接copy的. 用法与pinyin4j完全相同,具体请查阅pinyin4j文档. —— 查看更 ...
- System.OutOfMemoryException: 内存不足。(转)
主要是网站生成水印图片的时候遇到的 原文地址:http://www.cnblogs.com/longgel/archive/2010/03/24/1693776.html 今天调试asp.net 程序 ...
- C#运算除法和求整
在C#与法中,“/”除后所得的值的类型,跟他的除数和被除数的类型有关.如: int a=4; int b=5 ...
- hdu5878 I Count Two Three(二分+ 打表)
题目链接:hdu5878 I Count Two Three 题意:给出一个整数n, 找出一个大于等于n的最小整数m, 使得m可以表示为2^a * 3^b * 5^c * 7^d. 题解:打表预处 ...