基礎(chǔ)知識(shí)
VirtualApp(簡(jiǎn)稱:VA)它是一款運(yùn)行于Android系統(tǒng)的沙盒引擎框架產(chǎn)品,可以理解為輕量級(jí)的“Android虛擬機(jī)”。VA它具有免安裝、多開(kāi)、內(nèi)外隔離及對(duì)于目標(biāo)App完全控制的能力。
VA從表現(xiàn)形式上屬于動(dòng)態(tài)加載,但是從技術(shù)本質(zhì)上來(lái)說(shuō)還是通過(guò)增加VAMS對(duì)啟動(dòng)Intent進(jìn)行修改,攔截和代理Android系統(tǒng)消息,并且通過(guò)自定義的ClassLoader加載和構(gòu)造未在VA的AndroidManifest.xml中聲明的組件,以達(dá)到對(duì)目標(biāo)App的控制效果。
VA的虛擬引擎技術(shù)一般是為了實(shí)現(xiàn)輕量級(jí)版本快速迭代、功能更新、bug修復(fù)和特定安全防護(hù),但是惡意和流氓應(yīng)用使用該技術(shù)一般是為了逃避安全檢測(cè),延長(zhǎng)生命周期,獲取更大的利益。
無(wú)論是動(dòng)態(tài)加載的插件化技術(shù),還是基于VA的虛擬化引擎技術(shù),從安全屬性上而言,都在一定程度上挑戰(zhàn)了Android系統(tǒng)的安全要求,谷歌和蘋(píng)果對(duì)上架應(yīng)用都有對(duì)應(yīng)的規(guī)定——禁止使用動(dòng)態(tài)加載功能。雖然如此,仍然有大量開(kāi)發(fā)者對(duì)VA技術(shù)有需求,包括在Windows平臺(tái)上,也有官方API提供特定窗口和消息的Hook機(jī)制,用來(lái)滿足開(kāi)發(fā)者的應(yīng)用開(kāi)發(fā)需求,可見(jiàn)這種技術(shù)本身也是具有兩面性的。
VA關(guān)鍵原理解析
Android應(yīng)用隔離是基于Linux系統(tǒng)的多用戶機(jī)制實(shí)現(xiàn)的,即每個(gè)應(yīng)用在安裝時(shí)被分配了不同的Linux用戶uid/gid。而在VirtualApp中,client應(yīng)用(通過(guò)VirtualApp安裝的應(yīng)用)與host應(yīng)用(即VirtualApp本身)是具有相同用戶uid的。
VA啟動(dòng)后默認(rèn)會(huì)創(chuàng)建三個(gè)進(jìn)程分別為如下:
io.virtualapp:vapp應(yīng)用啟動(dòng)的進(jìn)程,該進(jìn)程可以理解為L(zhǎng)auncher,主要負(fù)責(zé)用戶界面和應(yīng)用管理。
io.virtualapp:pN 啟動(dòng)目標(biāo)應(yīng)用的進(jìn)程,我們每點(diǎn)擊一個(gè)雙開(kāi)應(yīng)用都會(huì)為其創(chuàng)建一個(gè)對(duì)應(yīng)的:pN子進(jìn)程
io.virtualapp:x 虛擬服務(wù)子進(jìn)程,雙開(kāi)應(yīng)用沒(méi)有直接與真實(shí)系統(tǒng)服務(wù)交互,而是與虛擬服務(wù)進(jìn)行交互。虛擬服務(wù)實(shí)現(xiàn)了真實(shí)系統(tǒng)服務(wù)的能力。
啟動(dòng)原理
VirtualApp實(shí)現(xiàn)了對(duì)原本APP路徑的替換,在java層傳入需要重定向的所有路徑
VA的強(qiáng)大功能應(yīng)用
1、克隆功能
它可以克隆外部系統(tǒng)中已經(jīng)安裝的App,并在內(nèi)部運(yùn)行,互不干擾。典型應(yīng)用場(chǎng)景為App雙開(kāi)。
2、免安裝功能
它除了克隆已安裝之外,VA可以直接在內(nèi)部安裝(外部無(wú)感知)apk,并在內(nèi)部直接運(yùn)行。典型應(yīng)用場(chǎng)景為插件化,獨(dú)立應(yīng)用市場(chǎng)等。
3、多開(kāi)功能
VA不僅可以“雙開(kāi)”,獨(dú)特的多用戶模式(獨(dú)立的虛擬空間)支持用戶在內(nèi)部無(wú)限多開(kāi)同一個(gè)APP。
多開(kāi)工具一直倍受微商、刷量工作室、羊毛黨的青睞。通過(guò)明碼標(biāo)價(jià),服務(wù)于意向商家,以低成本甚至零成本換取了高額利潤(rùn)。
4、內(nèi)外隔離功能
VA是一個(gè)標(biāo)準(zhǔn)的沙盒,或者說(shuō)“虛擬機(jī)”,提供了一整套內(nèi)部與外部的隔離機(jī)制,包括但不限于(文件隔離/組件隔離/進(jìn)程通訊隔離),簡(jiǎn)單的說(shuō)VA內(nèi)部就是一個(gè)“完全獨(dú)立的空間”。在此基礎(chǔ)之上,稍作定制即可實(shí)現(xiàn)一部手機(jī)上的“虛擬手機(jī)”。當(dāng)然您也可以發(fā)揮想象,定制成應(yīng)用于數(shù)據(jù)加密,數(shù)據(jù)隔離,隱私保護(hù),企業(yè)管理的應(yīng)用系統(tǒng)。
5、對(duì)于內(nèi)部App的完全控制功能
VA對(duì)于內(nèi)部的App具有完全的監(jiān)控和控制能力,這點(diǎn)在未Root的外部環(huán)境中是絕對(duì)無(wú)法實(shí)現(xiàn)的。
開(kāi)發(fā)者利用VA自帶的JAVA層Hook,開(kāi)發(fā)了改機(jī)工具,包括修改設(shè)備參數(shù),虛擬定位等工具。以虛擬定位工具為例,該應(yīng)用通過(guò)遙感設(shè)置虛擬位置,能夠?qū)崿F(xiàn)虛擬定位的功能。
App中安裝過(guò)去中需要獲取當(dāng)前的位置,通過(guò)va可以設(shè)置虛擬的位置,從而欺騙APP的位置信息。
更多強(qiáng)大的功能,可以基于以下Github代碼進(jìn)行對(duì)virtaulAPP進(jìn)行深入挖掘?qū)W習(xí):
https://github.com/asLody/VirtualApp
https://github.com/ServenScorpion/VirtualApp
https://github.com/darkskygit/VirtualApp
https://gitcode.net/mirrors/aslody/virtualapp?utm_source=csdn_github_accelerator
VA的安全風(fēng)險(xiǎn)
VA技術(shù)目前也有用于正常用途的,比如部分游戲愛(ài)好者擁有多個(gè)賬號(hào),部分白領(lǐng)由于工作原因需要對(duì)于個(gè)人社交軟件和工作用戶社交軟件進(jìn)行隔離,這一類的需求一直很旺盛。但是 運(yùn)行在VA中的App也帶來(lái)不可忽視的安全風(fēng)險(xiǎn),即APP的運(yùn)行環(huán)境完全被VA控制,安卓的沙盒隔離機(jī)制被突破,并導(dǎo)致不必要的攻擊入口和風(fēng)險(xiǎn)面暴露。
VA技術(shù)動(dòng)態(tài)加載可以在運(yùn)行時(shí)動(dòng)態(tài)加載,并解釋和執(zhí)行包含在JAR或APK文件內(nèi)的DEX文件。外部動(dòng)態(tài)加載DEX文件的安全風(fēng)險(xiǎn)源于:Anroid4.1之前的系統(tǒng)版本容許Android應(yīng)用動(dòng)態(tài)加載存儲(chǔ)在外部目錄中的DEX文件,同時(shí)這些文件也可以被其他應(yīng)用任意讀寫(xiě),所以不能夠保護(hù)應(yīng)用免遭惡意代碼的注入;所加載的DEX文件易被惡意應(yīng)用替換或者注入代碼,如果沒(méi)有對(duì)外部所加載的DEX文件做完整性校驗(yàn),應(yīng)用將會(huì)被惡意代碼注入,那么攻擊者編寫(xiě)的任意惡意代碼將會(huì)被自動(dòng)執(zhí)行,從而進(jìn)一步實(shí)施欺詐、獲取賬號(hào)密碼或其他惡意行為。
VA技術(shù)是在虛擬空間中安裝、啟動(dòng)和卸載APK,是應(yīng)用級(jí)的虛擬化技術(shù),VA中運(yùn)行的惡意應(yīng)用軟件可以逃避殺毒軟件的靜態(tài)檢測(cè),VA框架也被黑灰產(chǎn)用于開(kāi)發(fā)多開(kāi)工具、改機(jī)工具等等方式實(shí)施惡意作弊行為。并且由于它具有免root的功能,所以它偽裝起來(lái)對(duì)數(shù)據(jù)獲取更加權(quán)限功能。VA框架上運(yùn)行的插件應(yīng)用程序也被引入了代碼修改風(fēng)險(xiǎn),重打包的應(yīng)用程序存在隱私泄露、被植入廣告等危害。
編輯:黃飛
?
評(píng)論
查看更多