报告来源:趋势科技
目前,人们之所以称之为漏洞是基于 Moplus SDK 的访问权限控制以及应该如何限制这种访问的角度。因此,它虽然具有漏洞相关的概念而实际上是一个后门程序,如推送钓鱼网页,插入任意联系人,发送伪造短信,上传本地文件到远程服务器,未经用户授权安装任意应用到 Android 设备。而执行这些行为唯一的要求是该设备首先需要连接互联网。由于 Moplus SDK 已经被集成到众多的 Android 应用程序中,这就意味着有上亿的Android用户受到了影响。
<img src="https://images.seebug.org/1446731796747" hight="640" width="360"></img>
图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 中被删除
转载自 Freebuf, 参考来源 blog.trendmicro,译者:gh0stbo,VillanCh
参考链接:
http://blog.trendmicro.com/trendlabs-security-intelligence/setting-the-record-straight-on-moplus-sdk-and-the-wormhole-vulnerability/
全部评论 (4)