比葫蘆娃還可怕的百度全系A(chǔ)PP SDK漏洞
"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
“你不應(yīng)該給軟件裝后門因為你不能保證這個后門只有好人能夠使用。” – 蘋果CEO 庫克
0x00 序
最早接觸網(wǎng)絡(luò)安全的人一定還記得當年RPC沖擊波,WebDav等遠程攻擊漏洞和由此產(chǎn)生的蠕蟲病毒。黑客只要編寫程序掃描網(wǎng)絡(luò)中開放了特定端口的機器,隨后發(fā)送對應(yīng)的遠程攻擊代碼就可以控制對方主機,在控制對方主機后,程序可以繼續(xù)掃描其他機器再次進行攻擊。因為漏洞出在主機本身,想要修復(fù)漏洞必須安裝補丁才行,但因為很多人并不會及時升級系統(tǒng)或者安裝補丁,所以漏洞或者蠕蟲會影響大量的機器非常長的時間,甚至有的蠕蟲病毒可以感染全世界上億的服務(wù)器,對企業(yè)和用戶造成非常嚴重的損失。
Android發(fā)布后,我們就一直幻想著能發(fā)現(xiàn)一個像PC上的遠程攻擊一樣厲害的漏洞,但是Android系統(tǒng)默認并沒有開放任何端口,開放socket端口的APP也非常稀少,似乎出現(xiàn)像PC那樣嚴重的漏洞是不太可能的。但可惜的是,世界上并沒有絕對的安全,就在這么幾個稀少的端口中,我們真的找了一個非常嚴重的socket遠程攻擊漏洞,并且影響多個用戶量過億的APP,我們把這個漏洞稱之為WormHole蟲洞漏洞。
0x01 影響和危害
WormHole蟲洞漏洞到底有多嚴重呢?請看一下我們統(tǒng)計的受影響的APP列表(還沒有統(tǒng)計全):
百度地圖 檢測版本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號統(tǒng)計的百度系A(chǔ)PP的最新版,理論上所有小于等于檢測版本的這些百度系的APP都有被遠程攻擊的危險。根據(jù)易觀智庫的統(tǒng)計排行:

可以看到手機百度、百度手機助手、百度地圖等百度系A(chǔ)PP有著上億的下載安裝量和加起來超過三億的活躍用戶。
安裝了百度的這些APP會有什么后果和危害呢?
無論是 wifi 無線網(wǎng)絡(luò)或者3G/4G 蜂窩網(wǎng)絡(luò),只要是手機在聯(lián)網(wǎng)狀態(tài)都有可能受到攻擊。攻擊者事先無需接觸手機,無需使用DNS欺騙。
此漏洞只與app有關(guān),不受系統(tǒng)版本影響,在google最新的android 6.0上均測試成功。
漏洞可以達到如下攻擊效果:
遠程靜默安裝應(yīng)用
遠程啟動任意應(yīng)用
遠程打開任意網(wǎng)頁
遠程靜默添加聯(lián)系人
遠程獲取用用戶的GPS地理位置信息/獲取imei信息/安裝應(yīng)用信息
遠程發(fā)送任意intent廣播
遠程讀取寫入文件等。
下面是視頻DEMO:
俺們做的視頻效果太差,下面demo視頻是從雷鋒網(wǎng)上看到的:
http://www.leiphone.com/news/201510/abTSIxRjPmIibScW.html
0x02 漏洞分析
安裝百度系app后,通過adb shell連接手機,隨后使用netstat會發(fā)現(xiàn)手機打開了40310/6259端口,并且任何IP都可以進行連接。

原來這個端口是由java層的nano http實現(xiàn)的,并且這個http服務(wù),百度給起名叫immortal service(不朽/不死的服務(wù))。為什么叫不朽的呢?因為這個服務(wù)會在后臺一直運行,并且如果你手機中裝了多個有wormhole漏洞的app,這些app會時刻檢查40310/6259端口,如果那個監(jiān)聽40310/6259端口的app被卸載了,另一個app會立馬啟動服務(wù)重新監(jiān)聽40310/6259端口。

我們繼續(xù)分析,整個immortal service服務(wù)其實是一個http服務(wù),但是在接受數(shù)據(jù)的函數(shù)里有一些驗證,比如 http 頭部remote-addr字段是否是”127.0.0.1”,但是會一點web技巧的人就知道,只要偽造一下頭部信息就可把remote-addr字段變成”127.0.0.1”。

成功的和http server進行通訊后,就可以通過url給APP下達指令了。拿百度地圖為例,以下是百度地圖APP中存在的遠程控制的指令的反匯編代碼:

geolocation 獲取用戶手機的GPS地理位置(城市,經(jīng)度,緯度)
getsearchboxinfo 獲取手機百度的版本信息
getapn 獲取當前的網(wǎng)絡(luò)狀況(WIFI/3G/4G運營商)
getserviceinfo 獲取提供 nano http 的應(yīng)用信息
getpackageinfo 獲取手機應(yīng)用的版本信息
sendintent 發(fā)送任意intent 可以用來打開網(wǎng)頁或者與其他app交互
getcuid 獲取imei
getlocstring 獲取本地字符串信息
scandownloadfile 掃描下載文件(UCDownloads/QQDownloads/360Download...)
addcontactinfo 給手機增加聯(lián)系人
getapplist獲取全部安裝app信息
downloadfile 下載任意文件到指定路徑如果文件是apk則進行安裝
uploadfile 上傳任意文件到指定路徑 如果文件是apk則進行安裝
當我們看到這些遠程指令的時候嚇了一跳。你說你一個百度地圖好好的導(dǎo)航行不行?為什么要去給別人添加聯(lián)系人呢?添加聯(lián)系人也就算了,為什么要去別的服務(wù)器下載應(yīng)用并且安裝呢?更夸張的是,安裝還不是彈出對話框讓用戶選擇是否安裝,而是直接申請root權(quán)限進行靜默安裝。下圖是代碼段:

可以看到下載完app后會有三個判斷:
手機助手為系統(tǒng)應(yīng)用直接使用android.permission.INSTALL_PACKAGES權(quán)限靜默安裝應(yīng)用
手機助手獲得 root 權(quán)限后使用 su 后執(zhí)行 pm install 靜默安裝應(yīng)用
非以上二種情況則彈出引用安裝的確認框
一般用戶是非常相信百度系A(chǔ)PP,如果百度系A(chǔ)PP申請了root權(quán)限的話一般都會通過,但殊不知自己已經(jīng)打開了潘多拉的魔盒。
如果手機沒root就沒法靜默安裝應(yīng)用了嗎?不是的,downloadfile和uploadfile可以選擇下載文件的位置,并且百度系app會從”/data/data/[app]/”目錄下動態(tài)加載一些dex或so文件,這時我們只需要利用downloadfile或uploadfile指令覆蓋原本的dex或so文件就可以執(zhí)行我們想要執(zhí)行的任意代碼了。比如說,利用dex或者so獲取一個反彈shell,然后把提權(quán)的exp傳到手機上執(zhí)行獲得root權(quán)限,接下來就可以干所有想干的任何事情了。
0x03 POC
因為影響過大,暫不公布,會在WormHole漏洞修復(fù)完后更新。
0x04 測試
簡單測試了一下WormHole這個漏洞的影響性,我們知道3G/4G下的手機其實全部處于一個巨大無比的局域網(wǎng)中,只要通過4G手機開個熱點,就可以用電腦連接熱點然后用掃描器和攻擊腳本對全國甚至全世界連接了3G/4G的手機進行攻擊。在家遠程入侵一億臺手機不再是夢。
我們使用獲取包名的腳本,對電信的下一個 C 段進行了掃描,結(jié)果如下:
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漏洞。
除此之外,我們發(fā)現(xiàn)華為,三星,聯(lián)想,金立等公司的某些機型在中國出廠的時候都會預(yù)裝百度系app,突然間感到整個人都不好了。。。
0x05 總結(jié)
我們已經(jīng)在2015年10月14日的時候?qū)ormHole的漏洞報告通過烏云提交給了百度,并且百度已經(jīng)確認了漏洞并且開始進行修復(fù)了。但這次漏洞并不能靠服務(wù)器端進行修復(fù),必須采用升級app的方法進行修復(fù),希望用戶得到預(yù)警后盡快升級自己的應(yīng)用到最新版,以免被WormHole漏洞攻擊。
0x06 受影響的app列表
足球直播
足球巨星
足彩網(wǎng)
卓易彩票
助手貼吧
中國足彩網(wǎng)
中國藍TV
中國藍HD
珍品網(wǎng)
掌上百度
悅動圈跑步
優(yōu)米課堂
音悅臺
移動91桌面
央視影音
修車易
小紅書海外購物神器
俠侶周邊游
物色
萬達電影
貼吧看片
貼吧飯團
視頻直播
生活小工具
上網(wǎng)導(dǎo)航
全民探索
窮游
途牛網(wǎng) (新版本已經(jīng)修復(fù))
汽車之家 (新版本已經(jīng)修復(fù))
拇指醫(yī)生(醫(yī)生版)
萌萌聊天
美西時尚
么么噠
螞蟻短租
旅游攻略
樂視視頻
酷音鈴聲
口袋理財
經(jīng)理人分享
購車族
歌勇賽
鳳凰視頻
風云直播Pro
多米音樂
都市激情飆車
懂球帝
蛋蛋理財
穿越古代
彩票到家
彩票365
爆猛料
百姓網(wǎng)
百度桌面Plus
百度云
百度游戲大全
百度音樂2014
百度新聞
百度團購
百度圖片
百度貼吧青春版
百度貼吧簡版
百度貼吧HD
百度輸入法
百度手機助手
百度手機游戲
百度視頻HD
百度視頻
百度瀏覽器
百度翻譯
百度地圖DuWear版
百度地圖
百度HD
百度
安卓市場
愛奇藝視頻
VidNow
Video Now
T2F話友
Selfie Wonder
PPS影音
PhotoWonder
hao123特價
CCTV手機電視
91桌面
91助手
91愛桌面
91 Launcher
365彩票
PS:
1.文章是提前編輯好打算漏洞公開后再發(fā)布,趨勢已經(jīng)發(fā)文所以跟進.
http://blog.trendmicro.com/trendlabs-security-intelligence/setting-the-record-straight-on-moplus-sdk-and-the-wormhole-vulnerability/
2.網(wǎng)上公布的一些 app 列表大多是根據(jù)百度 moplus SDK 的特征指令靜態(tài)掃描得來這樣會有一定誤報導(dǎo)致無辜 app 躺槍,比如漫畫島app 雖然集成了此 SDK 但是因為代碼混淆策略,指令實現(xiàn)類名被混淆后 findClass 無法找到,所以 exp 都會提示404.
3.關(guān)聯(lián)漏洞
WooYun: 百度輸入法安卓版存在遠程獲取信息控制用戶行為漏洞(可惡意推入內(nèi)容等4G網(wǎng)絡(luò)內(nèi)可找到目標)
WooYun: WormHole蟲洞漏洞總結(jié)報告(附檢測結(jié)果與測試腳本)






















