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.从服务器获取短信内容,发送出去 按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...
随机推荐
- JavaScript 运行机制详解:再谈Event Loop
原文地址:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 一年前,我写了一篇<什么是 Event Loop?>,谈了我对Eve ...
- robotframework笔记15
资源和变量文件 用户关键字和变量 测试用例文件 和 测试套件 初始化文件只能用于文件在哪里 了,但 资源文件 提供一种机制来分享它们. 自 资源文件结构非常接近测试用例文件,它是 容易创建它们. 变量 ...
- GIT命令(急速学习)
用过sourceTree,egit(eclipse中的git插件),最后还是感觉git bash顺手:svn早已经不用: 先上几个原来看过的git 教程--书读百遍,其义自见.多看几篇文章才能总结 ...
- 离线网页制作器(beta1.0)
package hhuarongdao; /* *使用方法: 先选择保存路径,然后输入相应的网址, *然后会得到那个网页的离线版的 内容 * */ import java.awt.BorderLayo ...
- ARM指令集(下)
A.2.5 ARM 协处理器指令 ARM 支持协处理器操作,协处理器的控制要通过协处理器命令实现.表A-7给出全部的ARM协处理器指令. 表A-7 ARM 协处理器指令 CDP ...
- 集成 Apple Pay
作者感言 在中秋过后终于把国内的三大支付平台SDK集成都搞定了, 现在我们终于可以来研究Apple自家的支付Apple Pay最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考 ...
- C语言知识整理(1):简介
由于项目要求,需要学习iOS移动端开发.iOS开发的核心语言是Objective-C,Objective-C是在C语言的基础加了一层面向对象的语法.为了能够更好地掌握Objective-C,故先学习C ...
- ios基础篇(九)——自定义UITabBar
上一篇讲到了UITabBarViewController,接着说说UITabBarViewController中怎么自定义TabBar. 今天仿写了微博,发现底部tabbar中间的button和其他有 ...
- C#获取相对路径的方法
这八种C#获取相对路径的方法,包括获取和设置当前目录的完全限定路径.获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称等等内容. C#获取相对路径1. 获取和设置当前目录的完全限定路径. ...
- matlab c# 混合编程
MWArray错误: matlab 64位 vs 32位 1. visual studio没有专门的64位版.但32位版可以在64位系统上面正常使用.2.安装VS2010的时候,在安装选项里面,选择了 ...