IT技术互动交流平台

“极光”暗影:极光推送(JPush SDK)存在被恶意开发者利用风险

作者:佚名  发布日期:2016-05-10 22:31:14

引言
都说,有阴影的地方必定会有光;殊不知,有光的地方也会有阴影。宇宙万物既是对立又是统一的,正如移动互联网的发展,在给人们带来各种便利的同时,也不可避免地产生了一定的风险。
近期,AVL移动安全团队截获了一款利用“极光推送”(JPushSDK,一款消息推送第三方SDK)进行远程控制的恶意程序。该恶意程序以“极光推送”的消息推送平台作为其远程控制命令信道,通过简单、隐蔽的方式来实现控制用户手机群发、定向发送短信或拦截用户接收的短信,进而通过网络上传受害用户的联系人、短信等隐私信息。
1.恶意行为分析
1.1样本基本信息

      
从基本信息来看,该应用伪装成电子代金券(electronicvoucher)。一方面,作为一般用户,可能会将其认为是某程序的插件而予以忽略。另一方面,由于其使用了JPush SDK等第三方模块,其申请的敏感权限很可能被认为是第三方SDK申请,进而忽略了其安全风险。实际上,这却是一个具备较强远程控制能力和隐私上传能力的恶意应用。
1.2集成JPush SDK实现控制功能
该应用使用JPush SDK标准的集成方法,在程序的AndroidManifest文件中申请SDK正常运行时的用户权限并注册了自定义监听推送消息的接收器。由于这些权限都属于JPush申请,很可能被误认为是JPush作为广告、应用等常见的推送行为所需,从而忽略其安全风险。

图1 恶意程序中使用JPush SDK申请的必备用户权限
JPushSDK提供了一种通过“自定义消息”进行消息推送并允许在客户端应用中接受消息,并将消息交给开发者处理。这就导致恶意开发者在对服务器端推送的信息进行监听后,能够获取推送的消息内容和附加字段,并得以解析出远程指令,从而利用JPush SDK完成远程指令推送。最后根据不同的指令执行相应的操作。
该恶意应用正是利用了这一点,从而以JPush的“自定义消息”作为其远程控制的信道。

图2 恶意程序中使用JPush SDK自定义接收器中接收的指令信息
恶意应用在注册自定义接收器后,将通过JPushSDK接口接收远程推送的自定义消息,并将接收到的自定义消息传递到恶意应用的自定义接收器中。之后,在自定义接收器中解析远程推送的自定义消息,完成相关远程控制功能。
我们发现恶意程序作者利用JPush SDK的EXTRA_MESSAGE、EXTRA_EXTRA字段,自行设定了远程控制消息指令和附加内容,并实现了相应的功能。能够通过JPush服务器云端控制推送指令完成一系列的远程控制功能,包括群发短信、拦截短信、定向发送短信、上传信息等。当前恶意程序当中的远程控制指令以及相应的功能对应关系如下表所示:

 
1.3其它恶意行为
恶意应用在JPush SDK广播接收器功能模块当中还调用了自实现的网络回传功能。在远程指令控制操作结束后,会将远程指令控制发送的短信和拦截到的用户短信通过网址hxxp://www[.]vivott[.]com:8090/ServletTest/servlet/ReceiveInterceptSmsServlet上传到远程服务器。

图3 上传受害用户被远程控制发送和拦截的短信的网址
同时,恶意应用还会将远程指令控制发送的短信和拦截到的用户短信进行删除处理,清理相关的短信操作数据,防止被用户发现。

图4 删除被远程控制后台发送的相关短信

图5 删除被远程控制拦截到的用户短信
恶意程序作者除了通过JPush SDK远程控制用户手机进行上述操作外,还会在程序安装运行后隐藏图标并在后台私自向主控手机号码发送受害用户手机IMEI信息,诱导用户输入身份证信息并收集相关的隐私信息。

图6 恶意程序运行时的现象
同时,恶意程序还会通过以下远程服务器联网上传受害用户联系人,身份证号码,手机号码和运营商等相关信息。
hxxp://www[.]vivott[.]com:8090/ServletTest/servlet/AddressBookServlet
hxxp://www[.]vivott[.]com:8090/ServletTest/servlet/ImeiAndNumberServlet

图7 上传用户隐私信息的网络数据包
2. JPush平台分析
2.1 JPush背景介绍
从“极光推送”官方【1】对JPush有如下介绍:极光推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验。平台提供整合了Android推送、iOS推送的统一推送服务。许多知名的应用如途牛旅游,乐视视频,迅雷看看,虾米音乐,聚美优品,东方航空,考拉FM电台,爱卡汽车等都使用了该消息推送平台和SDK。

通过“极光推送”官方网站,我们了解到这类SDK包含了“发送通知”, “自定义消息”,和“富媒体”三种推送形式。任意一位开发者注册后都可以得到一个JPUSH_APPKEY,只需要在自己开发的应用中按照官方的要求嵌入JPush SDK,即可以发布并使用JPush SDK。
通过JPush的消息推送信道,开发者可以在JPush的web平台上发布消息,并通过JPush平台向所有相同的JPUSH_APPKEY(即开发者自己开发和发布)的应用推送“自定义消息”功能。

图 8 JPush消息推送原理图【2】     
2.2 验证推送消息指令
我们通过注册JPush SDK的开发者并获取到appkey后,使用JPush官方的控制台,并利用“自定义消息”推送功能向目标程序推送内容为“sendsms”,附加字段为“phone=10010” 、“phonecontent=cxgprs”的消息指令信息,来实现一个自定义的发送短信查询流量的功能进行验证性分析。

 
图9 通过自定义消息设备推送的内容

图10 推送的信息的历史记录信息
安装到测试手机当中的验证性程序接收到JPush SDK通过服务器端推送的自定义消息“sendsms”后,在没有推送提示的情况下在后台会自动向“10010”发送短信“cxgprs”来查询流量来完成的开发者自定义功能,相关结果信息如下图所示。

图11 验证程序运行结果
2.3 验证总结
从验证的结果来看,JPush SDK在集成的过程中申请了较多的用户权限。SDK当中的自定义推送功能给予开发者较大的自由发挥空间,因而很容易被恶意开发者所利用并以此来完成远程控制的功能。
恶意开发者正是看中了JPush SDK等第三方SDK便捷的特点,从而可以简单方便的实现自己实时控制所有受感染的用户设备。
据此,AVL移动安全团队认为可以采取以下措施:
1、 可以对JPushSDK申请的权限进行精简,裁剪掉有安全风险的权限。
2、 建立对集成JPush SDK应用的审核机制,采用实名注册机制,必要时可对集成该SDK的应用进行安全检测。
3、 通过后台统计数据对开发者推送的内容进行分析和安全审查,发现可疑的内容及时进行相关应用安全性的鉴定和处理。
 
3. 总结和建议
早在2013年5月,就有媒体报道过相关新闻事件:某国外手机杀毒厂商错误地将国内第三方推送插件“个推”SDK报告成包含有间谍功能【3】。最后经过分析,虽然判定是一场乌龙,但消息推送SDK的便捷性无疑给用户留下了一些安全风险的遐想。
2015年11月,某安全研究人员发现的WormHole【4】(又名“虫洞”)让我们对第三方SDK的安全性有了一个新的认识。一旦第三方SDK存在漏洞,使用其的应用便会大范围出现安全风险。
以上出现的JPush SDK相关案例,非常清楚的证明恶意代码作者已经盯上第三方SDK。这些恶意代码作者会利用第三方SDK的便利功能以及不严格的开发者审核和监管机制,进而开发出各类恶意代码功能,危害用户安全。同时,由于第三方SDK往往不是开发者自身进行维护,因此存在信息和资源的协同风险,一旦出现安全风险和问题,其修复成本和时效往往可能是不确定的。
虽然不使用这些第三方SDK,恶意代码也可以达到其恶意目的。但引入和利用相关SDK的一些特性进行各类恶意代码功能开发,这种行为无疑极大地降低了恶意代码作者的开发成本。
随着远程控制的恶意代码使用的控制手段越来越丰富。从传统的远程服务器到手机特有的短信控制再到利用其它网络相关媒介,如第三方SDK云端推送功能。
因此,针对提供第三方SDK服务的企业,AVL移动安全团队建议:加强对开发者使用SDK相关功能的审核和监管,避免过度使用权限,以此提高SDK本身的安全性,在一定程度上避免被恶意开发者利用,从而帮助用户和企业减少损失。

 

Tag标签: 极光   暗影   开发者  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规