基礎(chǔ)知識(shí)
VirtualApp(簡稱:VA)它是一款運(yùn)行于Android系統(tǒng)的沙盒引擎框架產(chǎn)品,可以理解為輕量級(jí)的“Android虛擬機(jī)”。VA它具有免安裝、多開、內(nèi)外隔離及對(duì)于目標(biāo)App完全控制的能力。
VA從表現(xiàn)形式上屬于動(dòng)態(tài)加載,但是從技術(shù)本質(zhì)上來說還是通過增加VAMS對(duì)啟動(dòng)Intent進(jìn)行修改,攔截和代理Android系統(tǒng)消息,并且通過自定義的ClassLoader加載和構(gòu)造未在VA的AndroidManifest.xml中聲明的組件,以達(dá)到對(duì)目標(biāo)App的控制效果。
VA的虛擬引擎技術(shù)一般是為了實(shí)現(xiàn)輕量級(jí)版本快速迭代、功能更新、bug修復(fù)和特定安全防護(hù),但是惡意和流氓應(yīng)用使用該技術(shù)一般是為了逃避安全檢測,延長生命周期,獲取更大的利益。
無論是動(dòng)態(tài)加載的插件化技術(shù),還是基于VA的虛擬化引擎技術(shù),從安全屬性上而言,都在一定程度上挑戰(zhàn)了Android系統(tǒng)的安全要求,谷歌和蘋果對(duì)上架應(yīng)用都有對(duì)應(yīng)的規(guī)定——禁止使用動(dòng)態(tài)加載功能。雖然如此,仍然有大量開發(fā)者對(duì)VA技術(shù)有需求,包括在Windows平臺(tái)上,也有官方API提供特定窗口和消息的Hook機(jī)制,用來滿足開發(fā)者的應(yīng)用開發(fā)需求,可見這種技術(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)用(通過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)程可以理解為Launcher,主要負(fù)責(zé)用戶界面和應(yīng)用管理。
io.virtualapp:pN 啟動(dòng)目標(biāo)應(yīng)用的進(jìn)程,我們每點(diǎn)擊一個(gè)雙開應(yīng)用都會(huì)為其創(chuàng)建一個(gè)對(duì)應(yīng)的:pN子進(jìn)程
io.virtualapp:x 虛擬服務(wù)子進(jìn)程,雙開應(yīng)用沒有直接與真實(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)用場景為App雙開。
2、免安裝功能
它除了克隆已安裝之外,VA可以直接在內(nèi)部安裝(外部無感知)apk,并在內(nèi)部直接運(yùn)行。典型應(yīng)用場景為插件化,獨(dú)立應(yīng)用市場等。
3、多開功能
VA不僅可以“雙開”,獨(dú)特的多用戶模式(獨(dú)立的虛擬空間)支持用戶在內(nèi)部無限多開同一個(gè)APP。
多開工具一直倍受微商、刷量工作室、羊毛黨的青睞。通過明碼標(biāo)價(jià),服務(wù)于意向商家,以低成本甚至零成本換取了高額利潤。
4、內(nèi)外隔離功能
VA是一個(gè)標(biāo)準(zhǔn)的沙盒,或者說“虛擬機(jī)”,提供了一整套內(nèi)部與外部的隔離機(jī)制,包括但不限于(文件隔離/組件隔離/進(jìn)程通訊隔離),簡單的說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ì)無法實(shí)現(xiàn)的。
開發(fā)者利用VA自帶的JAVA層Hook,開發(fā)了改機(jī)工具,包括修改設(shè)備參數(shù),虛擬定位等工具。以虛擬定位工具為例,該應(yīng)用通過遙感設(shè)置虛擬位置,能夠?qū)崿F(xiàn)虛擬定位的功能。
App中安裝過去中需要獲取當(dāng)前的位置,通過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ù)目前也有用于正常用途的,比如部分游戲愛好者擁有多個(gè)賬號(hào),部分白領(lǐng)由于工作原因需要對(duì)于個(gè)人社交軟件和工作用戶社交軟件進(jìn)行隔離,這一類的需求一直很旺盛。但是 運(yùn)行在VA中的App也帶來不可忽視的安全風(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)用任意讀寫,所以不能夠保護(hù)應(yīng)用免遭惡意代碼的注入;所加載的DEX文件易被惡意應(yīng)用替換或者注入代碼,如果沒有對(duì)外部所加載的DEX文件做完整性校驗(yàn),應(yīng)用將會(huì)被惡意代碼注入,那么攻擊者編寫的任意惡意代碼將會(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)檢測,VA框架也被黑灰產(chǎn)用于開發(fā)多開工具、改機(jī)工具等等方式實(shí)施惡意作弊行為。并且由于它具有免root的功能,所以它偽裝起來對(duì)數(shù)據(jù)獲取更加權(quán)限功能。VA框架上運(yùn)行的插件應(yīng)用程序也被引入了代碼修改風(fēng)險(xiǎn),重打包的應(yīng)用程序存在隱私泄露、被植入廣告等危害。
編輯:黃飛
?
評(píng)論
查看更多