百度moplus SDK的一个被称为虫洞(Wormhole)的漏洞被报导后“一石激起千层浪”,它被植入到14000款app当中,这些app有接近4000个都是由百度出品的。该漏洞被中国的一个漏洞报告平台wooyun.org所发现。
然而,根据我们对这个安全漏洞的研究,发现Moplus SDK具有后门功能,这不一定是由于漏洞或跟漏洞相关。目前,人们之所以称之为漏洞是基于Moplus SDK的访问权限控制以及应该如何限制这种访问的角度。因此,它虽然具有漏洞相关的概念而实际上是一个后门程序,如推送钓鱼网页,插入任意联系人,发送伪造短信,上传本地文件到远程服务器,未经用户授权安装任意应用到Android设备。而执行这些行为唯一的要求是该设备首先需要连接互联网。由于Moplus SDK已经被集成到众多的Android应用程序中,这就意味着有上亿的Android用户受到了影响。我们的研究结果还表明,已经有恶意软件在利用Moplus SDK的漏洞了。
在这篇文章中,我们揭示了Moplus SDK的恶意代码和对Android设备造成的风险。
图1.恶意软件使用的Moplus SDK来进行静默安装
通过Moplus SDK挖掘
Moplus SDK是由中国的搜索引擎巨头百度开发的。在我们的研究中,我们研究了两个不同的应用程序,百度地图(com.baidu.BaiduMap,8.7.0)和“奇闻异录”(com.ufo.dcb.lingyi,1.3)。他们使用的Mo+ SDK的版本虽不同,但大部分代码是相同的
图2 com.ufo.dcb.lingyi使用的Moplus SDK
图3 com.baidu.BaiduMap使用的Moplus SDK
它是如何集成到应用程序?
从应用程序的Manifest文件中可知Moplus SDK被包含在一个独立的进程中。其main service叫做com.baidu.android.moplus.MoPlusService,可以通过不同的广播事件触发,其中包括系统启动的广播。
图4. Moplus被集成到一个独立的背景。实际上,该恶意程序会自动启动
Moplus SDK的后门功能
当用户启动一个应用程序,Moplus SDK会偷偷地在设备上自动设置一个本地HTTP服务器,用来监控通过socket的消息。为了实现这一点,它在代码中集成并修改了用Java编写的一个简单的开源HTTP服务器NanoHttpd。
图5. Moplus SDK在代码中集成并修改了NanoHttpd
绑定到这个HTTP服务器的TCP端口并不总是一样的。在我们的例子中,我们发现com.ufo.dcb.lingyi绑定的端口是6259,而com.baidu.BaiduMap绑定的端口是40310。
图6.绑定到本地的HTTP服务器的TCP端口并不总是一样的
HTTP服务器保持监听TCP端口。它将接收和解析从远程客户端发送的消息。一旦有新的HTTP请求时,它会获取和解析消息头和消息体,并通过覆盖NanoHttpd文档中指定的“server”功能开始执行自己的恶意功能。
图7.从socket连接中监控HTTP请求
图8.调用自己的恶意行为覆盖“server”功能
这是一个典型的命令与控制(C&C)攻击模式。与传统的C&C攻击比较,唯一不同的是在这种情况下,服务器在用户端,而攻击客户端可以在任何地方。有很多恶意功能包含在SDK中,如下载和上传文件等。每个行为都是单独的一个类文件。
图9. Moplus SDK支持的恶意功能
图10.恶意命令及源代码类之间的对应关系
从上述截图可以看出,攻击者可以从用户设备远程获取位置信息,搜索框信息,包信息和其它敏感数据。它可以在用户设备上远程添加联系人,扫描下载文件,上传特定文件。所有这些行为只需简单的通过发送HTTP请求便可以完成。
图11.批量插入任意联系人
“sendintent”是一个特殊的命令,可以用来在设备上发送本地意图。攻击者可以利用它来远程拨打电话,发送虚假消息,并在未经用户同意的情况下安装任意应用。
图12. “sendintent”命令可以被攻击者用于在用户设备上执行恶意控制行为
该SDK还可以检测设备是否root并且静默安装APK
图13.支持静默安装应用
图14.区分root用户以便进行更多的恶意攻击
这些细节清楚地证明了这是一个后门恶意软件。一个攻击者可以攻击已经被Moplus SDK感染的任意设备。我们在Nexus 6 最新的Android 6.0系统上有一个简短的演示(见图16-18)。当百度地图启动后,我们可以发现恶意服务(bdservice_v1)总是在后台运行。
图15.恶意服务bdservice_v1一直在后台运行
图16-18在这一组图中,我们展示了如何自动添加联系人到移动设备上的
因为在本地HTTP服务(由Moplus SDK建立的)中没有进行身份认证,使得攻击行为不仅可以通过app开发者,也可以由任何其它人来触发。只需一个命令,攻击者或者网络罪犯就可以远程控制感染的设备。此外,他们只需要使用nmap进行全网段扫描,测试TCP端口6259或40310的状态,端口状态为OPEN的所有Android设备都可能被远程控制。需要注意的是在同一个局域网内,以及在同一个的3G / 4G网络的所有设备都可以被攻击。
这是一个严重的漏洞,也许甚至比需要包含有钓鱼链接的web网页或用于发送恶意彩信的电话号码才能利用的Stagefright漏洞更糟糕。对于这个安全漏洞,攻击者只需简单地扫描网络IP,不需要用户终端的任何行为或任何社会工程学攻击。
其它的发现
我们已经检测到恶意软件(ANDROIDOS_WORMHOLE.HRXA)在使用Moplus SDK来自动和定期下载用户不需要的应用。当这些应用被下载到用户设备后,如果用户设备已经root了,则应用程序将被自动安装。
SHA1:2FA40A5302D92FB0C5C64CF6197F2D671BA7C30D
集成Moplus SDK的应用程序有哪些?
Moplus SDK是一个开放的SDK,根据我们的数据,总共有14112个应用程序集成了这个SDK,其中4014个是百度官方的应用程序。在受影响的应用中排名前20位的应用如下:
com.qiyi.video com.baidu.video com.baidu.BaiduMap com.baidu.browser.apps com.baidu.appsearch com.nd.android.pandahome2 com.hiapk.marketpho com.baidu.hao123 com.baidu.searchbox tv.pps.mobile com.mfw.roadbook com.tuniu.app.ui com.ifeng.newvideo com.baidu.netdisk com.quanleimu.activity com.dragon.android.pandaspace com.yuedong.sport com.dongqiudi.news air.fyzb3 com.managershare
百度在最新的更新中已经移除了Moplus SDK中的恶意代码,并在其最新的产品中解决了该问题。经审查,百度地图最新的代码,我们发现,他们仍然在用户设备中开启了绑定40310开放端口的NanoHttpd服务。
图19.在最新Moplus更新中本地HTTP服务仍保留与原来相同的TCP端口
虽然删除了部分恶意命令及相应的代码,包括在root手机中自动静默安装应用的恶意代码部分。然而,如图21所示,并非所有的恶意功能都已经被删除,用户设备仍处于危险之中。
图20.部分恶意命令仍保留在最新Moplus SDK
图21.只有红色部分的恶意代码在最新的Moplus SDK中被删除
从外媒的观点中,我们可以看出:
1.虫洞的各种可怕的功能在root的手机上会翻倍:各种静默安装,加载url,消耗话费流量。
2.在非root的手机上可能会出现确认信息(这样就可以发现后门正在运行)。
3.出问题的是Moplus SDK以及出问题的简单原因(HTTP server)
4.为什么国外的安全研究对此漏洞敢于公开?
5.国内对虫洞的报道缺乏客观性。
* 作者:gh0stbo,VillanCh,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)