APP检测GSM伪基站方案探索

GSM伪基站如果用于钓鱼,危害就会很大。所以我就有一个想法,希望在APP层面检测伪基站。因为伪基站隐蔽且容易流动,如果不在手机端检测伪基站就不能及时发现异常。

创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元弥勒做网站,已为上家服务,为弥勒各地企业和个人服务,联系电话:18982081108

虽然APP与伪基站对抗不在一个层级,但一定可以在APP层找到破绽——毕竟,伪基站要做到100%模拟正常基站难度也是很大的。比如通过OpenBTS、GNURadio和USRP实现的伪基站,默认都有好多独有特性。

这就有点类似在应用层检测系统的rootkit,虽然困难,但也并非完全不可能。我记得有一个简易的检测办法,本地看系统开放了哪些端口,然后远程扫描开放端口,两个数据不一致,那就是有rootkit了。

可见,100%的虚拟现实是非常困难的。那么回到这个场景,伪基站的破绽在哪里?

尝试

第一步很容易想到从OS层面能拿到的基站信息入手,看看获得的信息能否有效甄别假基站。

Android SDK里面提供了类android.telephony.gsm.GsmCellLocation来获取基站信息,可以得到Cid、Lac、Psc、hashCode,不过这些信息都很容易随意伪造,看来得换个思路。

接下来我们又想到,在伪基站里电话和短信是不通的。虽然伪基站可以实现劫持,但是我目前见过的网上公开案例来看,伪基站都没有做这个事。拨打电话这个操作太重,我们就在APP层发短信。如果网络信息变化后,短信不能正常发出就说明可能存在伪基站。

发短信会涉及到费用,感觉不是很靠谱。不过我们想到给运营商号码发是免费的,比如移动就给10086,联通就给10001,电信的2G不是GSM,就先不管了。

于是,我们设想的方法是一旦发现基站信息发生变化,APP就发送一条短信给运营商,运营商收到后会答复,我们就看一定时间内是否有固定的回复内容,如无就认为当前接入的是伪基站。

不过后来考虑到收发短信权限太敏感,同时Android4.4及以后版本对APP的短信权限做了更严格地控制,所以这个方案我们也放弃了。

最后我们聚焦到网络上。APP一旦发现基站信息发生变化,就调用GPRS获取IP,如果得不到IP,就认为是伪基站——当然伪基站也可以搞个DHCP分配IP,如果发生对抗,我们还可以继续从IP的范围、网关IP等信息再来深入对抗。

demo演示

老规矩,在Android上实现了一个demo,以下是测试效果图。后面这个demo会放到腾讯安全应急响应中心官网“实验室”栏目,欢迎大家关注。

一些想法

这个方法还没有考虑周全。比如漫游到境外的情况;还有,目前见到的伪基站都是发了短信后迅速将用户踢出网络,用户则会重新回到正常网络,整个过程只有短短几分钟,所以实际检测效果还待测试。

如果有安装量大的手机终端软件,倒可以把手机附近的基站信息都上报到云端,如果伪基站出现,或许就可以及时发现。

后记

仍然感谢其他小伙伴popey、HuangJacky和riusksk的工作。

最后,一个有意思的想法是,如果这个“现实”世界是在一个“虚拟机”里运行的,你能从“应用层”找到破绽吗?

新闻名称:APP检测GSM伪基站方案探索
分享网址:http://www.shufengxianlan.com/qtweb/news18/149768.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联