比葫芦娃还可怕的百度全系APP SDK漏洞 - WormHole虫洞漏洞分析报告 (转载)

瘦蛟舞 · 2015/11/02 10:50

作者:瘦蛟舞,蒸米

”You can’t have a back door in the software because you can’t have a back door that’s only for the good guys.“ - Apple CEO Tim Cook

”你不应该给软件装后门因为你不能保证这个后门只有好人能够使用。” – 苹果CEO 库克

0x00 序



最早接触网络安全的人一定还记得当年RPC冲击波,WebDav等远程攻击漏洞和由此产生的蠕虫病毒。黑客只要编写程序扫描网络中开放了特定端口的机器,随后发送对应的远程攻击代码就可以控制对方主机,在控制对方主机后,程序可以继续扫描其他机器再次进行攻击。因为漏洞出在主机本身,想要修复漏洞必须安装补丁才行,但因为很多人并不会及时升级系统或者安装补丁,所以漏洞或者蠕虫会影响大量的机器非常长的时间,甚至有的蠕虫病毒可以感染全世界上亿的服务器,对企业和用户造成非常严重的损失。

Android发布后,我们就一直幻想着能发现一个像PC上的远程攻击一样厉害的漏洞,但是Android系统默认并没有开放任何端口,开放socket端口的APP也非常稀少,似乎出现像PC那样严重的漏洞是不太可能的。但可惜的是,世界上并没有绝对的安全,就在这么几个稀少的端口中,我们真的找了一个非常严重的socket远程攻击漏洞,并且影响多个用户量过亿的APP,我们把这个漏洞称之为WormHole虫洞漏洞。

0x01 影响和危害



WormHole虫洞漏洞到底有多严重呢?请看一下我们统计的受影响的APP列表(还没有统计全):

百度地图 检测版本8.7
百度手机助手 检测版本6.6.0
百度浏览器 检测版本6.1.13.0
手机百度 检测版本6.9
hao123 检测版本6.1
百度音乐 检测版本5.6.5.0
百度贴吧 检测版本6.9.2
百度云 检测版本7.8
百度视频 检测版本7.18.1
安卓市场 检测版本6.0.86
百度新闻 检测版本5.4.0.0
爱奇艺 检测版本6.0
乐视视频 检测版本5.9
...完整列表见附录

这个列表是2015年10月14号统计的百度系APP的最新版,理论上所有小于等于检测版本的这些百度系的APP都有被远程攻击的危险。根据易观智库的统计排行:

可以看到手机百度、百度手机助手、百度地图等百度系APP有着上亿的下载安装量和加起来超过三亿的活跃用户。

安装了百度的这些APP会有什么后果和危害呢?

  1. 无论是 wifi 无线网络或者3G/4G 蜂窝网络,只要是手机在联网状态都有可能受到攻击。攻击者事先无需接触手机,无需使用DNS欺骗。
  2. 此漏洞只与app有关,不受系统版本影响,在google最新的android 6.0上均测试成功。
  3. 漏洞可以达到如下攻击效果:
    • 远程静默安装应用
    • 远程启动任意应用
    • 远程打开任意网页
    • 远程静默添加联系人
    • 远程获取用用户的GPS地理位置信息/获取imei信息/安装应用信息
    • 远程发送任意intent广播
    • 远程读取写入文件等。

下面是视频DEMO:

俺们做的视频效果太差,下面demo视频是从雷锋网上看到的:

http://www.leiphone.com/news/201510/abTSIxRjPmIibScW.html

0x02 漏洞分析



安装百度系app后,通过adb shell连接手机,随后使用netstat会发现手机打开了40310/6259端口,并且任何IP都可以进行连接。

原来这个端口是由java层的nano http实现的,并且这个http服务,百度给起名叫immortal service(不朽/不死的服务)。为什么叫不朽的呢?因为这个服务会在后台一直运行,并且如果你手机中装了多个有wormhole漏洞的app,这些app会时刻检查40310/6259端口,如果那个监听40310/6259端口的app被卸载了,另一个app会立马启动服务重新监听40310/6259端口。

我们继续分析,整个immortal service服务其实是一个http服务,但是在接受数据的函数里有一些验证,比如 http 头部remote-addr字段是否是”127.0.0.1”,但是会一点web技巧的人就知道,只要伪造一下头部信息就可把remote-addr字段变成”127.0.0.1”。

成功的和http server进行通讯后,就可以通过url给APP下达指令了。拿百度地图为例,以下是百度地图APP中存在的远程控制的指令的反汇编代码:

  1. geolocation 获取用户手机的GPS地理位置(城市,经度,纬度)
  2. getsearchboxinfo 获取手机百度的版本信息
  3. getapn 获取当前的网络状况(WIFI/3G/4G运营商)
  4. getserviceinfo 获取提供 nano http 的应用信息
  5. getpackageinfo 获取手机应用的版本信息
  6. sendintent 发送任意intent 可以用来打开网页或者与其他app交互
  7. getcuid 获取imei
  8. getlocstring 获取本地字符串信息
  9. scandownloadfile 扫描下载文件(UCDownloads/QQDownloads/360Download...)
  10. addcontactinfo 给手机增加联系人
  11. getapplist获取全部安装app信息
  12. downloadfile 下载任意文件到指定路径如果文件是apk则进行安装
  13. uploadfile 上传任意文件到指定路径 如果文件是apk则进行安装

当我们看到这些远程指令的时候吓了一跳。你说你一个百度地图好好的导航行不行?为什么要去给别人添加联系人呢?添加联系人也就算了,为什么要去别的服务器下载应用并且安装呢?更夸张的是,安装还不是弹出对话框让用户选择是否安装,而是直接申请root权限进行静默安装。下图是代码段:

可以看到下载完app后会有三个判断:

  1. 手机助手为系统应用直接使用android.permission.INSTALL_PACKAGES权限静默安装应用
  2. 手机助手获得 root 权限后使用 su 后执行 pm install 静默安装应用
  3. 非以上二种情况则弹出引用安装的确认框

一般用户是非常相信百度系APP,如果百度系APP申请了root权限的话一般都会通过,但殊不知自己已经打开了潘多拉的魔盒。

如果手机没root就没法静默安装应用了吗?不是的,downloadfile和uploadfile可以选择下载文件的位置,并且百度系app会从”/data/data/[app]/”目录下动态加载一些dex或so文件,这时我们只需要利用downloadfile或uploadfile指令覆盖原本的dex或so文件就可以执行我们想要执行的任意代码了。比如说,利用dex或者so获取一个反弹shell,然后把提权的exp传到手机上执行获得root权限,接下来就可以干所有想干的任何事情了。

0x03 POC



因为影响过大,暂不公布,会在WormHole漏洞修复完后更新。

0x04 测试



简单测试了一下WormHole这个漏洞的影响性,我们知道3G/4G下的手机其实全部处于一个巨大无比的局域网中,只要通过4G手机开个热点,就可以用电脑连接热点然后用扫描器和攻击脚本对全国甚至全世界连接了3G/4G的手机进行攻击。在家远程入侵一亿台手机不再是梦。

我们使用获取包名的脚本,对电信的下一个 C 段进行了扫描,结果如下:

Discovered open port 6259/tcp on 10.142.3.25  "com.baidu.searchbox","version":"19"
Discovered open port 6259/tcp on 10.142.3.93  "packagename":"com.baidu.appsearch"
Discovered open port 6259/tcp on 10.142.3.135  "com.hiapk.marketpho","version":"121"
Discovered open port 6259/tcp on 10.142.3.163  "packagename":"com.hiapk.marketpho"
Discovered open port 6259/tcp on 10.142.3.117  "com.baidu.browser.apps","version":"121"
Discovered open port 6259/tcp on 10.142.3.43   "com.qiyi.video","version":"20"
Discovered open port 6259/tcp on 10.142.3.148  "com.baidu.appsearch","version":"121"
Discovered open port 6259/tcp on 10.142.3.196  "com.baidu.input","version":"16"
Discovered open port 6259/tcp on 10.142.3.204  "com.baidu.BaiduMap","version":"20"
Discovered open port 6259/tcp on 10.142.3.145  "com.baidu.appsearch","version":"121"
Discovered open port 6259/tcp on 10.142.3.188  "com.hiapk.marketpho","version":"21"
Discovered open port 40310/tcp on 10.142.3.53  "com.baidu.BaiduMap","version":"122"
Discovered open port 40310/tcp on 10.142.3.162  "com.ting.mp3.android","version":"122"
Discovered open port 40310/tcp on 10.142.3.139 "com.baidu.searchbox","version":"122"
Discovered open port 40310/tcp on 10.142.3.143 "com.baidu.BaiduMap","version":"122"
Discovered open port 40310/tcp on 10.142.3.176  "packagename":"com.baidu.searchbox"

255个IP就有16手机有WormHole漏洞。

除此之外,我们发现华为,三星,联想,金立等公司的某些机型在中国出厂的时候都会预装百度系app,突然间感到整个人都不好了。。。

0x05 总结



我们已经在2015年10月14日的时候将WormHole的漏洞报告通过乌云提交给了百度,并且百度已经确认了漏洞并且开始进行修复了。但这次漏洞并不能靠服务器端进行修复,必须采用升级app的方法进行修复,希望用户得到预警后尽快升级自己的应用到最新版,以免被WormHole漏洞攻击。

0x06 受影响的app列表

足球直播
足球巨星
足彩网
卓易彩票
助手贴吧
中国足彩网
中国蓝TV
中国蓝HD
珍品网
掌上百度
悦动圈跑步
优米课堂
音悦台
移动91桌面
央视影音
修车易
小红书海外购物神器
侠侣周边游
物色
万达电影
贴吧看片
贴吧饭团
视频直播
生活小工具
上网导航
全民探索
穷游
途牛网 (新版本已经修复)
汽车之家 (新版本已经修复)
拇指医生(医生版)
萌萌聊天
美西时尚
么么哒
蚂蚁短租
旅游攻略
乐视视频
酷音铃声
口袋理财
经理人分享
购车族
歌勇赛
凤凰视频
风云直播Pro
多米音乐
都市激情飙车
懂球帝
蛋蛋理财
穿越古代
彩票到家
彩票365
爆猛料
百姓网
百度桌面Plus
百度云
百度游戏大全
百度音乐2014
百度新闻
百度团购
百度图片
百度贴吧青春版
百度贴吧简版
百度贴吧HD
百度输入法
百度手机助手
百度手机游戏
百度视频HD
百度视频
百度浏览器
百度翻译
百度地图DuWear版
百度地图
百度HD
百度
安卓市场
爱奇艺视频
VidNow
Video Now
T2F话友
Selfie Wonder
PPS影音
PhotoWonder
hao123特价
CCTV手机电视
91桌面
91助手
91爱桌面
91 Launcher
365彩票

PS:

1.文章是提前编辑好打算漏洞公开后再发布,趋势已经发文所以跟进.

http://blog.trendmicro.com/trendlabs-security-intelligence/setting-the-record-straight-on-moplus-sdk-and-the-wormhole-vulnerability/

2.网上公布的一些 app 列表大多是根据百度 moplus SDK 的特征指令静态扫描得来这样会有一定误报导致无辜 app 躺枪,比如漫画岛app 虽然集成了此 SDK 但是因为代码混淆策略,指令实现类名被混淆后 findClass 无法找到,所以 exp 都会提示404.

3.关联漏洞

WooYun: 百度输入法安卓版存在远程获取信息控制用户行为漏洞(可恶意推入内容等4G网络内可找到目标)

WooYun: WormHole虫洞漏洞总结报告(附检测结果与测试脚本)

时间: 2024-12-21 15:27:12

比葫芦娃还可怕的百度全系APP SDK漏洞 - WormHole虫洞漏洞分析报告 (转载)的相关文章

百度全系APP SDK漏洞–WormHole虫洞漏洞

0x00 我们以百度地图v8.7.0为例来分析百度蠕虫漏洞,apk下载地址为https://github.com/jltxgcy/AppVulnerability/Baidu_Maps_v8.7.0.apk. 使用Android Killer来打开这个apk,Android Killer下载地址为http://pan.baidu.com/s/1jGQUzwa. 我们先讲述如何在代码层利用这个漏洞,然后再分析其原理. 百度蠕虫漏洞利用代码地址: 0x01 1.首先要安装百度地图v8.7.0的apk

第4代乐视超级电视全系亮相,生态电视“王炸”来了

5月31日,乐视在北京举办"玩大的"发布会,基于开放闭环的乐视生态系统又推出三款生态电视:第4代超级电视X55(超4 X55).超4 X43以及超4 X40,其中超4 X55标配乐视无线游戏手柄尚酷版.会上还宣布乐视超级电视联手乐视互娱共同打造大屏游戏生态,并与育碧达成生态级战略合作.而就在5月中旬,乐视宣布超级电视日均CV已连续一周破亿,超越乐视PC端.移动端.M站成为乐视第一大流量终端平台,并基于独创的开放闭环乐视生态在超级电视上推出生态级产品--乐视大屏购.短短半月,乐视在大屏购

【C语言】在全系1000个学生中,征集慈善捐款当总数达到10万的时候,停止捐款,统计人数,并输出平均捐款数

//在全系1000个学生中,征集慈善捐款当总数达到10万的时候,停止捐款,统计人数,并输出平均捐款数 #include <stdio.h> int main() { float sum=0; float amount; int count=0; int i; for(i=0;i<1000;i++) { printf("请输入捐款金额:"); scanf("%f",&amount); sum=sum+amount; count++; if(s

【c语言】 在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目

// 在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目 #include <stdio.h> #define MAX 100000 int main() { int i; float sum = 0; float ave,mei; for( i = 1; i <= 1000; i++) { printf("请输入要捐款的金额:"); scanf("%f",&mei); sum = s

【百度之星2014~初赛(第二轮)解题报告】JZP Set

声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~初赛(第二轮)解题报告]JZP Set>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=668 前言 最近要毕业了,有半年

百度云离线下载含有违规内容检测方法分析

最近国家开始一轮净网行动,清除网上的淫秽***信息.各大互联网厂家纷纷开始行动,比如当年很好用的百度云离线下载就一度关闭.后来再次开启后,就出现了这句经典词,因含有违规内容被屏蔽无法下载. 其实被屏蔽的不一定都是不健康视频,有些仅仅是因为文件名含有一些字眼而已,比如一些美国大片的枪版就几乎都不能通过百度云的离线下载检测.据说这种方法还在迅雷等地方都有检测,因此我们来分析一下,这个检测到底是如何进行的. 首先上传了一个BT文件,BT文件里面的内容为大闹天宫的电影,但是我把文件名改成了含有敏感词汇的

关于调用百度和高德APP

由于需要,要调用高德和百度地图的APP. 1.判断是否存在高德和百度地图,但是又没有用到它们的SDK包,方式就是检测手机上有没有安装APP.首先要知道APP的包名.然后通过以下代码判断: private boolean isInstallByread(String packageName) { return new File("/data/data/" + packageName).exists(); } 2.调用APP.通过Intent.但是可以指定和不指定具体包名.(百度:com.

百度MUX:APP动效之美需内外兼修

移动互联网时代已经到来,APP已如天空的繁星,数也数不清.随着手机硬件的不断升级,实现炫酷且流畅的动效不再是遥远的梦想.如果你是APP达人,喜欢试用各种APP,你肯定会发现越来越多的APP开始动效化. 一个真正的美女一定是同时兼具外在美和内在美,评价一段动效也是如此.一段真正"美"的动效需要同时具备两个条件,首先它需要是生动且有趣的,既好看又流畅;再次它不是可有可无的,需要具备优化交互和提升体验的作用. 1.APP动效的外在美 一段动效首先需要是生动且有趣的,不仅要有好看的外观还要有流

百度DMA+小度App的蓝牙语音解决方案入局

前记 ? 人机交互经历了三个阶段键鼠.触屏和语音交互.在国外,谷歌.亚马逊.苹果等巨头的竞争已经到达白热化状态:在国内,百度的DuerOS凭借着入局早,投入大,已经成为国内语音互交的一面旗帜.无论是从技术实力,还是商用步伐,它都走在国内AI公司的前列.想做AI语音的公司,跟着百度走,也算是一条路吧. 蓝牙智能语音现状 ? 目前绝大多数蓝牙语音设备面临很多问题,包括需要触碰或按键触发,这在在车载上使用很不方便:在使用语音交互设备时,语音输入延时明显,甚至存在App串扰等问题.这也使得现在基于蓝牙协