你看到的APP排行不一定是真的 揭秘手機軟件惡意刷榜推廣

隨著移動端應用市場數(shù)量爆炸式增長,App推廣和曝光率也越來越難。哪里有需求哪里就有生財之道,自然,App刷榜也就形成了一條產(chǎn)業(yè)鏈,它能夠在短期內(nèi)大幅提高下載量和用戶量,進而提高應用的曝光率。當你打開應用市場想要下載一個功能性的APP,搜索結果出來后是不是都要看一下旁邊的下載量?有時候還會看一下用戶評論,那么,下載量大的就是好的嗎?真的大家都在下嗎?今天為你揭秘一個APP捆綁病毒木馬利用你的手機惡意刷榜的案例,揭秘這個行業(yè)不為人知的一面。
近期,阿里移動安全發(fā)現(xiàn)一款名叫“魔百Wi-Fi”應用,該應用官方的一個版本捆綁了多個病毒,目的是對GooglePlay 商店應用刷榜和刷大量未知應用安裝量。
該病毒在該設備鎖屏時對設備root,root成功后向系統(tǒng)目錄植入“刷榜僵尸”病毒,“刷榜僵尸”對指定應用在 GooglePlay商店上惡意刷量,同時還會誘騙用戶安裝“下載者”病毒,“下載者”病毒會在設備屏幕亮起狀態(tài)會彈出廣告頁面,若用戶觸碰廣告頁面推廣的應用將會自動安裝運行。該病毒技術相當成熟,root 提權使用最高廣的漏洞(CVE-2014-3153 TOAWELROOT、CVE-2015-3636 PINGPONG和PUTUSER 等),2015年10月之前的設備全部受影響。我們對惡意應用的證書對比,驚人的發(fā)現(xiàn)并非被重打包!
“魔百Wi-Fi”在2015年末首次發(fā)布,向用戶打著安全Wi-Fi 旗號,短短半年用戶安裝量已高達300萬。我們發(fā)現(xiàn)它具備專業(yè)的應用推廣團隊,目前已在國內(nèi)知名渠道發(fā)布多篇宣傳文章,并與國內(nèi)多家應用商店合作,下圖是”魔百Wifi” 前不久的一篇文章,文中還提到“截至目前,魔百WiFi擁有超過2億的國內(nèi)外熱點,已覆蓋商場、酒店,熱點全線接入”。
“魔百Wifi”目前最新版本為2.3.18。根據(jù)應用證書md5(5919ee638614c467152ab4d07c9cc2dc) 排查,發(fā)現(xiàn)版本2.3.5~2.3.10被官方插入了惡意代碼。值得注意的是,官方發(fā)布的2.3.8 版本打了兩個不同的包,一個增加root提權向系統(tǒng)目錄植入“刷榜僵尸”,另外一個包和2.3.10版本應用都捆綁了“下載者”病毒。捆綁了“刷榜僵尸”和“下載者”的“魔百 Wifi”,利用自身的用戶量對應用刷榜和安裝,進而非法牟利。以下是對“魔百Wi-Fi”2.3.8帶 root包的應用分析。
一、主包分析:
該病毒捆綁了多個子包,以下是各個模塊關系圖:
1. 解密assets目錄下sdk.data、__image 數(shù)據(jù),解密后sdk.data是一個目錄,目錄下包括MainJson.txt、dexhostinjection.jar 、libDaemonProcess.so, __image是apk文件;
2. 喚起PushDexService、PushJobService完成dexhostinjection.jar 加載,以及執(zhí)行dexhostinjection.jar的com.hostinjectiondex.external.ExternalInterfaces類的startExternalBody 方法,子包下載“下載者”病毒update,并誘導用戶安裝。
3. 開啟后臺服務利用libgodlikelib.so進行root提權,提權成功將libgodlikelib.so 提權工具庫寫入系統(tǒng)庫文件;__image解密的apk文件植入系統(tǒng)目錄,取名AndroidDaemonFrame.apk 即是“刷榜僵尸”病毒;
二、root提權
該樣本是基于開源的RUN_ROOT_SHELL 改寫而成,可以對2015年10月份之前的全部設備root ,主要利用了以下漏洞進行提權:
(1) CVE-2012-4220
影響設備:Android2.3~4.2
使用的QualcommInnovation Center(QuIC)Diagnostics內(nèi)核模式驅(qū)動程序diagchar_core.c在實現(xiàn)上存在整數(shù)溢出漏洞 ,通過向diagchar_ioctl內(nèi)傳遞特制的輸入,遠程攻擊者可利用此漏洞執(zhí)行任意代碼或造成拒絕服務。
(2) /dev/graphics/fb0
fb0設備mmap漏洞(觸發(fā)參數(shù)FBIOGET_FSCREENINFO)
(3) /dev/hdcp
hdcp設備mmap漏洞
(4) CVE-2013-6282
影響版本:linux kernel3.2.1、Linux kernel3.2.2、Linux kernel3.2.13
Linux kernel對ARM上的get_user/put_user缺少訪問權限檢查,本地攻擊者可利用此漏洞讀寫內(nèi)核內(nèi)存,獲取權限提升。
(5) /dev/msm_acdb
高通設備漏洞
(6) CVE-2013-2595
/dev/msm_camera/config0高通設備MMAP漏洞。
(7) CVE-2013-2094
影響版本:linux kernel3.8.9之前開啟了PERF_EVENT的設備
利用該漏洞,通過perf_event_open系統(tǒng)調(diào)用,本地用戶可以獲得系統(tǒng)的最高權限。
(8) CVE-2015-3636
影響設備:2015年9月份之前的設備
pingpong該漏洞是Linux kernel的ping套接字上存在的一個Use-After-Free 漏洞。
(9) CVE-2014-3153
影響設備:2014年6月以前的設備
漏洞利用了futex_requeue、futex_lock_pi、futex_wait_requeue_pi 三個函數(shù)存在的RELOCK漏洞和REQUEUE漏洞,造成了對內(nèi)核棧上的數(shù)據(jù)修改。
對設備成功提權后,會將解密的__image植入/system/priv-app目錄并命名為AndroidDaemonFrame.apk ,將libgodlikelib.so提權工具庫植入/system/lib目錄。下圖提權并向系統(tǒng)目錄植入惡意文件。
三、AndroidDaemonFrame.apk“刷榜僵尸”分析
AndroidDaemonFrame應用是主包解密后植入到系統(tǒng)目錄的應用,該應用是一款轉(zhuǎn)用于惡意刷榜的病毒,利用用戶設備賬戶信息作為刷榜僵尸,完成對C&C控制端指定應用的惡意刷榜。“刷榜僵尸”工作流程如下:
1.“刷榜僵尸”C&C控制端配置keywords和package_name。
2.“刷榜僵尸”向googleplay發(fā)起認證,通過獲取的設備googleplay賬號和密碼,或authtoken。
3. 模擬googleplay協(xié)議對目標應用搜索、瀏覽和下載。
刷榜僵尸病毒在設備啟動、屏幕解鎖和網(wǎng)絡改變觸發(fā)BootReceiver組件執(zhí)行,隨后啟動核心服務DispatcherService,該服務創(chuàng)建updateTask和googlePlayTask定時任務。
定時任務googlePlayTask
googlePlayTask每3小時執(zhí)行一次,對配置文件里的keywords 和package_name指定的應用從GooglePlay爬取。下圖root提權重定向設備賬戶文件。
病毒通過GooglePlay驗證有兩種方式,一使用authtoken ,全稱authentication token,有了它病毒無須每次操作都向google服務器發(fā)送密碼, 執(zhí)行語句:sql.rawQuery(“select type,authtoken from authtokens where type like \’com.android.vending%\’ and accounts_id=”+ accounts_id, null);二是獲取 google賬戶name、password 和_id值。執(zhí)行語句:sql.rawQuery(“select * from accounts where type = ?”, new String []{“com.google”}) 。如下圖。
成功與google play服務器連接后,通過配置文件提供的keywords和package_name完成應用搜索、瀏覽和下載
當前配置文件如下圖,發(fā)現(xiàn)病毒正在對package_name是com.felink.shine的應用刷量。
病毒完全模擬google play下載協(xié)議,包括設置cookie(AndroidId + authToken)、User-agent(AndroidDownloadManager)等,GooglePlay應用下載請求流程大致如下圖(https://github.com/egirault/googleplay-api/issues/30 github已屏蔽,但我想既然你看到這里,應該知道怎么打開):
“刷榜僵尸”病毒的GooglePlayRequester工具類模擬了以上過程,實現(xiàn)google play商店應用下載。
四、子包dexhostinjection.jar
子包dexhostinjection.jar由assets目錄下sdk_data文件解密得到,完成了以下幾個功能:
4.1 服務保活解析主包傳遞的000(m_pkgname)、001(m_class_name)、002(m_sdk_data)、003(libDaemonProcess)、004(1.apk)參數(shù),利用libDaemonProcess庫服務?;?,在底層執(zhí)行am startservice啟動主包傳遞的service,也就是主包中的com.hostinjectionmain.control.DexService。如下圖。
4.2 下載“下載者”病毒
主包004參數(shù)傳遞的應用名,并拷貝到設備sdcard/database目錄命名為5supdate.apk,同時配置“下載者”病毒相關文件,存放目錄在sdcard/database目錄下。包括actiondown記錄包名以及啟動服務名、actionsuk應用最近一次運行時間、install.ab服務器推廣應用安裝情況、mychannel應用渠道,這些文件數(shù)據(jù)全部都AES加密存放。Actiondown記錄下載者病毒包名以及入口服務。
actiondown:{“downLoadPackageName”:”com.android.ucgmap”,”downLoadVersionKey”:1,”downLoadStartMethod”:”com.android.ucgmap\/com.android.ucgmap.AimService”}
4.3 誘騙用戶安裝,并啟動“下載者”病毒子包動態(tài)注冊監(jiān)聽android.intent.action.PACKAGE_ADDED、android.intent.action.USER_PRESENT消息廣播。處理包安裝完畢消息,若此次安裝包名是actiondown里downLoadPackageName字段記錄的“下載者”病毒,讀取downLoadStartMethod字段啟動“下載者”。
使用兩種策略誘騙用戶安裝“下載者”病毒(其應用名為update),一默認模式以應用更新誘騙用戶點擊安裝;二由服務器設置,彈出系統(tǒng)更新誘騙用戶點擊安裝。
4.4 子包自更新
子包的連接并不是直接暴露的,而是做了兩層跳板。配置下一跳轉(zhuǎn)訪問地址http://dispatch.smartchoiceads.com/v2.1/2000,參數(shù)設備aid、imsi、gaid、mac(wifi),request和response數(shù)據(jù)全部AES加密。服務端會根據(jù)上傳的設備信息返回次設備對應的url地址,隨后設備會使用該地址下載服務端推廣的應用。 下圖訪問url_1(http://dispatch.smartchoiceads.com/v2.1/2000)返回加密的數(shù)據(jù),經(jīng)AES解密提取data值獲取當前設備的對應訪問的服務器地址url_2。
解密后的數(shù)據(jù)為:{“upstream”:”http:\/\/sdk.smartchoiceads.com”},這樣獲取了下一跳板的地址。 訪問跳板地址,下載、加載和運行最新版子包。 訪問服務器配置的url_2,服務器同樣返回AES加密數(shù)據(jù),解密后的數(shù)據(jù)如下:
{“solib_name”:”libDaemonProcess.so”,”download_url”:”http:\/\/u.smartchoiceads.com\/sdk\/HostDex_20160623163035.jar”,”classname”:“com.hostinjectiondex.external.ExternalInterfaces”,”filename”: “dexhostinjection.jar”,”start_method”:“startExternalBody”,”solib_url”:”http:\/\/u.smartchoiceads.com\/sdk\/libDaemonProcess_20160520175142.so”,”stop_method”:“stopExternalBody”,”request_interval”:”1800″,”version”:”8″}。
根據(jù)解密獲取的字段,下載新版本的dexhostinjection.jar包,以及l(fā)ib庫,目前服務器最新版本dexhostinjection_8.jar。子包通過向主包的DexService發(fā)送com.injection.action.RELOAD_DEX消息意圖,完成子包更新加載。
五、“下載者”分析
子包dexhostinject.jar下載的5supdate.apk存放位置在sdcard/database目錄下,既是“下載者”病毒安裝包,通過應用更新或系統(tǒng)更新誘騙用戶安裝,安裝后dexhostinject.jar啟動“下載者”導出服務AimService。“下載者”病毒工作流程圖如下:
5.1 ChatActivity組件,強制激活設備管理
dexhostinject.jar啟動應用的參數(shù)會喚起ChatActivity組件運行。ChatActivity進行設備管理激活,一旦用戶激活設備管理,應用將很難被卸載。用戶在取消截獲設備管理時,AdminReciver會進行鎖屏操作并跳轉(zhuǎn)到桌面。
5.2 組件AimService
1. 加載target.jar子包,保護“下載者”核心服務AimService不死
2. 啟動ApsService,組件ApsService是云端推送服務,注冊時鐘廣播每10分鐘發(fā)送廣播轉(zhuǎn)交給ApsAdReceiver處理
3. onStartCommand處理消息意圖,包括:
a)com.injection.action.RELOAD_DEX,更新target.jar子包;
b)com.injection.action.stopJobService,停止JobScheduler并進程自殺;
c)-a com.android.startadmin –es isadmin true,喚起ChatActivity組件,進行激活設備管理。該意圖消息是dexhostinject.jar發(fā)送給AimService的。
5.3“下載者”應用推送分析應用下載、安裝和啟動由ApsService和ApsAdReceiver聯(lián)合完成。當update 應用處于后臺運行,并且屏幕處于亮起狀態(tài),“下載者”向C&C服務器發(fā)起請求,下圖訪問C&C控制。
“下載者”病毒會每隔10分鐘訪問http://www.gamecpi.com/tapcash/com.android.ucgmap/control.json,返回數(shù)據(jù)結構如下。
該數(shù)據(jù)結構信息是當前推廣應用的信息,隨后通過消息handler轉(zhuǎn)交給startAdWork函數(shù)處理。
每隔120分鐘請求控制端下載推廣應用,http://www.gamescpa.com/SDKManager/cpa/downloadlink.php?country=cn&packageName=com.android.ucgmapC&C,控制端返回推送的應用信息,包括packgae(應用包名)、url(應用下載鏈接)、size(應用大小),返回數(shù)據(jù)轉(zhuǎn)交給消息handler處理,進行應用下載安裝。
再配合之前注冊的時鐘廣播ApsAdReceiver,完美完成推廣應用啟動。
六、 病毒sha1:
01b3e575791642278b7decf70f5783ecd638564d
5900fabbe36e71933b3c739ec62ba89ac15f5453
7ebdd80761813da708bad3325b098dac9fa6e4f5
ea781498268ced8dbb892d02aeaad23f4b87a510
44e81be6f7242be77582671d6a11de7e33d19aca
34b7b38ce1ccdd899ae14b15dd83241584cee32b
74a55e9ea67d5baf90c1ad231e02f6183195e564
4e5af777fe28f450a670e789b23fb3669dc6e6b6
d59f97297de38db7f85349c9486413e914ff35b5
b219db613284a3dd0e87edea67da744be59e7732
9b9109ecfa38d9664084a513392ffc3f41349f02
2b1da376212e63cb25a19900642c4bbca6e49c01
18d9546193a354aec0c76d141dd66fbf99181bad
63c20ee3c1e1b39921d2b3d86aade39de738ea9b
5d2a08d7c1f665ea3affa7f9607601ffae387e8b
70105591ea9f2b42534062278f31dbf9788575b3
34b7b38ce1ccdd899ae14b15dd83241584cee32b
78e9c7e0510b0c28abf28dd46910ab14c56ab4df
88745ecb3114fc0539ca05db388e1c77d3e76109
885fe0dca39d0fe281aad78cbce2fb73f27f3aea
50bdc0195ed3c6f9909e62d4926f26d312cc39fa
{
"isOpened":true,
"isOpenHideNativeAd":true,
"fid":"",
"fnid":"558734714274962_641985812616518",
"aid":"ca-app-pub-2499265864844132/2514086206",
"bnid":660078,
"solaid":5011,
"soltid":1000171,
"ad_interval":10,
"no_ad_start":0,
"no_ad_end":6
}
七、總結
該病毒應用通過版本更新,進行惡意版本下發(fā),在完成“刷榜僵尸”和“下載者”病毒后又利用版本更新替換成線上安全版本,如此在各大應用市場上期存活。阿里移動安全建議,用戶下載此類App請認準大廠商品牌應用;謹慎點擊軟件內(nèi)的推送廣告;來源不明的應用不要隨意點擊;請定期使用阿里錢盾等手機安全軟件查殺病毒。
這個版本不知道是否含有以上說的刷榜病毒,但是如果不點擊廣告,應該沒什么問題,就等它自己更新成安全版本也不錯。需要的可以試試。
相關文章
怎么用Fuzz技術巧妙的挖掘Android漏洞?Android漏洞該如何防御?
Android系統(tǒng)服務即由Android提供的各種服務,比如WIFI,多媒體,短信等等,幾乎所有的Android應用都要使用到系統(tǒng)服務。系統(tǒng)服務在為用戶提供便利的同時,也存在著一些風險2017-03-14- 通過電池在特定時間內(nèi)的消耗對手機用戶的物理位置進行定位,他們把這種追蹤方法命名為PowerSpy,準確度高達90%,PowerSpy利用了蜂窩傳輸服務塔消耗電量速度的不同這一點,2016-08-08
- 如何保護手機安全,我今天想和大家分享一下,希望讓這些可惡的病毒,再也不能危害到大家,我總結了5個方面,今天和大家分享一下希望有所幫助吧2016-08-03
- 最近參加了一個夜跑活動,活動結束后到終點掃描二維碼搖一搖,所有人都搖到了紀念獎??墒俏蚁胍坏泉劙?!誰不想在搖一搖里得到一等獎?一起來看看下面這位黑客的做法,能2016-07-23
- 當你打開應用市場想要下載一個功能性的APP,搜索結果出來后是不是都要看一下旁邊的下載量?有時候還會看一下用戶評論,那么,下載量大的就是好的嗎?真的大家都在下嗎?今2016-07-13
精靈寶可夢go游戲可能存在風險 軟件需要google賬號完整權限
《Pokémon Go》是任天堂 Pokémon(中譯名口袋妖怪、寵物小精靈、精靈寶可夢)系列目前最火的游戲,可是這款游戲在國外網(wǎng)友眼中手機上要的權限未免過大了,我想這篇文章你2016-07-12- 現(xiàn)在想換個手機越來越麻煩,很多APP要重新下,手機里保存的寶貝也要轉(zhuǎn)移,有時候這些事情甚至讓我放棄了換個更好的手機的想發(fā),更不用說換手機號了。各種網(wǎng)站、郵箱、賬號2016-07-11
- 本以為有了手機短信驗證應該很安全了,沒想到銀行卡里的錢還是能被刷走,關鍵是一條短信都沒收到。到底是怎么回事?原來是手機木馬搞得鬼,很多奇怪的第三方軟件作為木馬攔2016-06-13
手機里的信息到底安不安全?手機數(shù)據(jù)泄露大揭秘
如果你給自己的手機設置了PIN碼,甚至忘記了連自己也解不開;又或者設置了比劃甚至指紋解鎖,然后以為這樣的手機就是安全的了。是的,對于一般的人來說算安全了,可是對于2016-06-03- 在缺乏大量預算的前提下要怎樣追蹤網(wǎng)絡入侵者?這里有一個廉價的解決辦法:一旦架構建立并且數(shù)據(jù)開始收集,網(wǎng)絡防御者可以在這些被動DNS數(shù)據(jù)上執(zhí)行大范圍的分析來追蹤網(wǎng)絡2016-06-01