百度 WormHole 漏洞分析

还记得9月份 Xcode 曝 XcodeGhost 漏洞的时候,网络上一片哗然,大家纷纷叹息一直以安全性著称的 iOS 系统也不再安全了,像微信、网易云音乐等安装量过亿的 APP 纷纷中枪。接着是各种漏洞利用的分析,分析一轮下来,最令人咋舌的就是可以通过这个漏洞来获取用户 appleID 了。

然而事过两个月之后百度 Android APP 被爆出了 WormHole 虫洞漏洞,与其说这是一个漏洞,倒不如说这是百度自己留下的一个后门。百度全系APP连同使用了百度地图的APP纷纷中枪,影响用户同样过亿。该后门之流氓程度与XcodeGhost相比有过之而无不及,包括静默下载任意文件、后台上传用户文件等各种流氓行径。

下面就来分析一下 WormHole 漏洞吧

1. 反编译

首先我从网上公开资料得知在百度地图8.7.0上存在该漏洞,所以我就从『安卓市场』找到了这个版本的百度地图apk,下载下来之后解压得到 classes.dex 文件,接下来需要反编译这个 dex 文件。

使用 dex2jar 反编译这个 dex 文件之后,得到了反编译之后的 jar 文件。

接下来使用 JD-GUI 就可以查看反编译后的 jar 的代码了。

2. 代码分析

查看 jar 代码之后发现百度其实作了代码混淆工作,然并卵。

从公开资料得知 APP 开了一个 http 服务器,监听 40310/6259 端口,而且 APP 中存在geolocation等字符串,通过查找功能,我找到了相关的代码位置。

WormHole

可见文件是在 moplus 的包下的,这个 moplus 其实就是该后门的根源。

通过这个 e.class 我们可以看到,百度做了一个动态调用,通过接口名映射到对应的类里面去,再看这几个类名,惊出一身冷汗,各种权限都有相应的功能接口。

3. 后续

网络上该漏洞利用的相关视频已经不少了,包括静默下载/上传、增加联系人等,都有相关视频。百度在10月28日官方发表声明称已经修复该漏洞,现在是11月4日,我写了个脚本测试内网环境下依然存在该漏洞的机器数目,扫描了255*3个IP,发现了13台机器依然存在该后门。可能会觉得目前存在该后门设备并不算太多,但是公司觉大部分人都是 iPhone 用户,相比于 Android 用户来说,这个数目应该已经算不少了。

目前已经有文章披露百度地图确实在利用此后门在获取用户隐私信息,而且该文章指出这个 moplus 应该是为百度统计服务的。类似获取用户隐私的不光百度一家,包括搜狗、高德地图同样也在通过类似方式获取用户隐私数据。看来对于安卓平台来说,各大厂商暗地获取用户隐私早已成为大家的共识。

另外今天乌云上面又公布了一个 NanoHttpd 的一个相关漏洞,看来是屋漏偏逢连夜雨啊,连工具都出问题了~

百度
搜狗
高德

参考

有关 XcodeGhost 的问题和解答
比葫芦娃还可怕的百度全系APP SDK漏洞 - WormHole虫洞漏洞分析报告
WormHole分析第二弹
Setting the Record Straight on Moplus SDK and the Wormhole Vulnerability
NanoHttpd一处设计不当可导致remote-hddr被覆盖