















摘要: 近年來隨著手游市場的高度發展,市面上誕生了很多手游模擬器,它們給使用者提供更好的體驗,但是手游模擬器本身在軟件安全層面的建設并不完善。針對現有的主流手游模擬器提出了兩種克隆攻擊的方法,一種是竊取存儲在模擬器本地的用戶憑證的方法,另一種是針對手游模擬器的克隆攻擊方法。同時,針對所提出的攻擊方法,給出基于側信道方法檢測硬件指紋的防御方案,并進行了實驗驗證。結果表明,即使細微的底層硬件差異也可以在應用層檢測到不同的指紋信息,因而此類防御方法可以有效抵擋針對模擬器的克隆攻擊。
關鍵詞: Android模擬器; 克隆攻擊; 賬號安全; 側信道
中圖分類號: TP309
文獻標志碼: A
文章編號: 1671-6841(2024)05-0020-11
DOI: 10.13705/j.issn.1671-6841.2023046
Cloning Attacks and Defenses Against Mobile Game Emulators
HAN Zhehao1,2, PENG Guojun1,2
(1.Key Laboratory of Aerospace Information Security and Trusted Computing of Ministry of Education,
Wuhan University, Wuhan 430072, China;
2.School of Cyber Science and Engineering, Wuhan University, Wuhan 430072, China)
Abstract: Recent years, with the rapid development of the mobile game market, many mobile game emulators have been released. Compared with traditional mobile devices, the emulators could provide better experience. But the construction of mobile game emulators in terms of software security was not perfect. Two cloning attack methods were proposed for existing mainstream mobile game emulators. One was stealing user′s credentials stored locally in the emulator. The other was cloning attack to mobile game emulators. At the same time, for the proposed attacks, a defense scheme based on the side channel method was given to detect hardware fingerprints and conducts experimental verification. The experimental results showed that even slight differences in the underlying hardware could detect different fingerprint information at the application layer. So this kind of defense method could effectively resist the cloning attack against the emulator.
Key words: Android emulator; clone attack; account security; side channel
0 引言
自移動互聯網飛速發展以來,移動設備成為人們日常生活中交互的主要終端,以游戲為代表的傳統互聯網應用也紛紛將移動平臺作為主要市場,其中Android作為主流手機操作系統,在2020年期間就已經占據了中國88.9%的手機市場份額[1]。但對很多游戲玩家而言,移動設備屏幕小、發熱大、續航差等缺點大大地影響了用戶體驗,同時對于需要高配置的游戲而言,普通移動設備往往難以達到流暢的游戲體驗。與此相比,PC設備不存在這些問題,它們擁有更大的屏幕、更強的處理器、更多的外設來提升用戶體驗,因此使用PC上的手游模擬器來操作手機端的游戲成為一種兩全其美的選擇。
現有PC中的Android模擬器可以分為面向開發研究人員的模擬器和面向普通用戶的商業模擬器,前者以Android Studio中的模擬器為代表;后者以“騰訊手游助手”為代表,它們為用戶提供了一個虛擬化的Android環境來運行App。手游模擬器已經形成了龐大的用戶市場,僅2020年,中國Android手游模擬器用戶規模就達到1.3億[2],手游模擬器的市場規模呈上升趨勢。
由于模擬器本身運行在PC環境中,所以模擬器也會面對PC端中存在的各類軟件安全問題,而這些問題又可能影響模擬器內運行的App,帶來如賬號安全、隱私泄露等風險。由于移動設備具有更高的物理安全性,App在設計初始就有自動登錄的環節,避免每次打開App都要再次登錄,從而提升用戶體驗。為了實現這一功能,Android設備中會存儲App的登錄憑證,這些憑證一旦被攻擊者竊取就很容易實施克隆攻擊。與真實移動設備環境相比,手游模擬器具有更多的不確定性,也更容易遭到克隆攻擊。針對以上問題,本文系統地研究了針對手游模擬器的克隆攻擊及防御方法,主要貢獻有:
1) 提出了竊取手游模擬器內登錄憑證的克隆攻擊方法與針對手游模擬器本身的克隆攻擊方法,其中后者為全新的攻擊維度;
2) 對1)中的克隆攻擊方法進行驗證,發現大多數手游App無法抵擋竊取憑證類的克隆攻擊,且所有的App都不能防御針對模擬器的克隆攻擊;
3) 針對2)中的攻擊方法,提出了詳細的防御方案,通過側信道的方法在應用層感知模擬器外部的環境變化,根據感知結果采取相應的防御策略。同時也證明了防御方法的可靠性,本文的方法可以抵御各類克隆攻擊,提升App的安全性。
1 相關工作與預備知識
1.1 相關工作
針對模擬器安全的研究是近年才有的熱門話題,雖然Barham等[3]早在2003年就提出了在PC當中構建虛擬化環境的解決方案,但在移動端領域,針對操作系統的虛擬化沒有PC端應用廣泛,因此Android系統的虛擬化工作發展較慢。BlueStacks在2010年率先提出了商用的PC端Android模擬器產品,讓用戶可以在PC上運行Android App[4]。Andrus等在2011年也提出了Cell,它能使多個虛擬環境在同一臺移動物理設備上運行[5]。
隨著手游市場的發展,手游模擬器用戶規模快速擴大,針對手游模擬器本身的安全研究也逐漸引起重視。Yoon等[6]針對手游模擬器安全問題進行了研究,發現手游模擬器本身會引入很大的安全風險,因而提出了對當時市面上主流的幾款Android手游模擬器的檢測方法,從客戶端、服務端、網絡等多個角度檢測手游模擬器的存在。Xu等[7]針對Android手游模擬器本身的安全性進行了研究,分析了Android模擬器本身引入的安全威脅,并指出模擬器內的惡意應用會對其他良性應用造成很大的威脅。
在檢測模擬器方面,已有大量的研究和檢測手段。Morpheus[8]大量分析了模擬器環境與真實設備環境的不同,采用了啟發式的方法來檢測Android模擬器,生成了超過10 000種檢測模擬器的啟發式方法。Proteus[9]則直接針對Android模擬器的指令級特征進行了研究,分析了在CPU指令層面模擬器與真實環境的不同,并提出了以此為根據的模擬器檢測方法。Alzaylaee等[10]和Guerra-Manzanares等[11]研究表明,許多Android惡意軟件能有效檢測基于Android模擬器打造的分析環境,并執行相應的逃避措施。
在移動應用克隆攻擊方面,2018年騰訊安全玄武實驗室率先披露了“應用克隆”移動攻擊威脅模型,利用Android系統中WebView控件的漏洞竊取用戶登錄憑證(https:∥www.cnvd.org.cn/webinfo/show/4365),在用戶無感知的情況下用克隆應用冒充用戶身份進行操作,給用戶的數據、財產等造成巨大威脅。文獻[12-14]的研究也披露了App自動登錄環節可能存在的風險,攻擊者可以利用竊取登錄憑證的方式實施克隆攻擊。針對這類克隆攻擊,應用的開發者可以通過在每次啟動應用時都進行設備一致性檢查和安全環境檢查來避免攻擊。與已有的克隆攻擊不同,本文提出的竊取憑證類的克隆攻擊針對的是模擬器內運行的App。此外,本文提出的針對模擬器的克隆攻擊是一種全新維度的攻擊,App無法通過已有的克隆攻擊防御方法進行防御,實驗結果也表明,現有的主流手游模擬器和App都難以避免此類攻擊。
1.2 Android App自動登錄的實現
Android系統基于Linux核心打造,其系統目錄結構也與之相似。系統根目錄包含了“/init”“/bin”“/system”“/data”等文件夾,用戶安裝的App會保存到“/data”文件夾下,其中“/data/app”文件夾是普通程序的安裝目錄,而“/data/data”文件夾中則存放著每個App的私有數據,其他App無權訪問。
自動登錄功能的原理是在本地保存用戶的登錄憑證,避免用戶在打開App時反復輸入賬號密碼等內容。利用Android中的SharedPreferences類或SQLite可以實現這個功能。通過這兩種方法,App可以保存用戶登錄憑證和登錄狀態,每次啟動時直接跳過登錄界面進入主界面。
1.3 Simpleperf
Simpleperf是Android NDK軟件包中的一款分析工具,用于執行應用程序的CPU分析等工作,它是Android系統中Native層的分析工具。現代CPU中通常都會有一個性能監控單元(PMU),PMU通過硬件計數器記錄如CPU周期數、緩存命中情況等事件信息,同時通過系統調用的方法將上述信息提供給App使用。PMU是Simpleperf的技術基礎,因而Simpleperf提供的性能監測信息具有很高的可靠性和參考價值。
2 克隆攻擊的方法
2.1 竊取憑證的克隆攻擊
登錄憑證是確認用戶身份的重要依據,通常App啟動時會將本地憑證發送給遠程服務器進行驗證,驗證成功則跳過用戶登錄環節。通過竊取憑證的克隆攻擊,攻擊者可以以受害者的身份操作App,獲取受害者敏感信息或是危害其財產安全。這種攻擊的基本原理就是攻擊者訪問受害者的設備并克隆其存儲在本地的登錄憑證信息,然后將克隆得到的憑證信息移植到攻擊者自己的模擬器環境中實現登錄。
與一般的真實Android設備相比,模擬器開啟了adb調試功能,同時也具有root權限,所以攻擊者可以使用簡單的adb pull指令,輕而易舉地從受害者設備上克隆出任意路徑下的App登錄憑證。由于登錄憑證的數據量極小,所以完成克隆的整個過程在短短數秒內就能實現并不易被察覺。此外,由于模擬器并非真實設備,所以自然也不需要數據線等物理介質進行連接。具體的攻擊流程如圖1所示。
對于手游模擬器而言,實施憑證竊取攻擊的難度要遠低于真機。首先,模擬器中的Android系統已經root,直接使用adb pull方法就可以克隆出受害者模擬器中App的登錄憑證;其次,整體攻擊流程可自動化的程度高,且完成克隆憑證的速度快,攻擊對目標模擬器的影響小,攻擊過程并不會影響模擬器和其中App的正常運行。
完成攻擊流程的另一環是移植,攻擊者在準備好的環境中,利用adb push指令將竊取的用戶憑證移植到對應路徑中即可完成。攻擊者只需要在攻擊環境中預先下載好對應版本的App,然后用竊取的用戶憑證替換原本的用戶憑證即可。在App下一次啟動時,App會將受害者的用戶憑證發送至遠程服務器進行身份驗證,通過驗證后,攻擊者就可以隨意操控受害者的賬戶了。
2.2 針對模擬器的克隆攻擊
現有的手游模擬器大多基于VirtualBox實現,安裝手游模擬器時就會自動安裝相應的虛擬化組件。以雷電模擬器為例,在其程序目錄中,運行模擬器的虛擬機及其配置文件被單獨存放在vms文件夾中,存儲格式與一般的VirtualBox虛擬機類似,模擬器中的App存放在.vmdk 格式的磁盤鏡像中。
模擬器的整體克隆攻擊可以分為兩步,第一步是從受害者的PC中克隆目標模擬器的虛擬機,第二步是將得到的克隆虛擬機移植到攻擊者準備好的環境中,完成克隆攻擊。與竊取憑證類的克隆攻擊相比,此類克隆攻擊的目標是手游模擬器,將目標模擬器的全部內容進行打包竊取。
現有的主流手游模擬器還提供了應用多開的功能,在安裝模擬器時也會自動安裝多開器,但此多開方法與安卓設備上的應用多開不同。安卓設備上有 OEM 廠商提供的應用多開方法,也有第三方的多開軟件如VirtualApp,前者在安卓系統中復制原有 App 并分配新的 UID,后者在應用層創建沙箱,沙箱內再次安裝App。手游模擬器的多開方法更為直接,采用了創建新虛擬機的方法,所以手游模擬器的多開就是虛擬機的多開,不同的多開環境間互相隔離,并無聯系,在 PC 本地以不同的目錄存儲虛擬機文件,例如第一個模擬器在“leidian0”目錄下,第二個在“leidian1”目錄下,以此類推。本文研究發現,所有支持多開的主流手游模擬器均采用了類似的方法,因而具有相同的文件結構,多開器本質上是一個虛擬機管理程序,可以啟動、關閉任意一個手游模擬器環境。在實施針對模擬器的克隆攻擊時,攻擊者可以對受害者環境中的一個或多個手游模擬器進行克隆攻擊,竊取受害者的敏感信息,危害賬戶安全,具體攻擊流程如圖2所示。
由于各大手游模擬器中提供的虛擬環境都是高度定制的Android系統,虛擬機設置也大相徑庭,攻擊者的移植只能在同類型的手游模擬器中進行。因此,實施此類克隆攻擊時,攻擊者需要準備與受害者相同的手游模擬器環境作為移植載體,但對于已經能實施克隆的攻擊者而言,獲取受害者的模擬器信息并準備相應的同款模擬器環境并不難實現。
與竊取憑證的克隆攻擊相比,此類克隆攻擊威脅程度更大,也更難以防范。首先,被克隆的虛擬環境中保存著全部App的登錄憑證、個人隱私等信息,一旦攻擊實施成功,攻擊者將獲得受害者手游模擬器中的全部個人信息。其次,對于模擬器中的App而言,它們并不能感知所處環境的變化,因為作為容器的模擬器虛擬環境設置并未發生任何變化,改變的只是模擬器所處的外部PC環境,因而App無法通過簡單的設備一致性檢查方法來實現設備校驗,也很難發現外部PC環境的改變。
3 攻擊實驗結果與分析
3.1 主流手游模擬器屬性
目前手游模擬器的國內市場中騰訊手游助手占據了主要地位,市場規模同為前6名的手游模擬器還有網易MuMu、雷電模擬器、夜神模擬器、逍遙模擬器和藍疊模擬器。而在全球市場中,藍疊模擬器則占據了半壁江山[2]。本文對現有的6款主流Android手游模擬器屬性進行研究,發現它們均開啟了adb調試,且系統已經被root,其中藍疊模擬器的root權限默認關閉,但可以通過修改cfg文件來開啟root權限。在實驗過程中,我們也注意到主流手游模擬器除了可以定制模擬器的手機型號外,也對用戶開放了一些系統敏感信息的定制功能,如IMEI、電話號碼等。定制化的手機型號能夠讓游戲App針對手機型號設置更高的刷新率和畫質,而對于敏感信息的定制,我們推測這些功能的推出一定程度上可以讓用戶直接使用設備信息登錄某些App,提升用戶體驗。
3.2 竊取憑證的克隆攻擊結果
本文收集了國內各大安卓應用市場和模擬器內置應用市場(豌豆莢、應用寶等)中的游戲類App前10名,收集不重復的游戲App共46個,除去無法在模擬器中運行的手游外共獲得42個樣本,將這42款游戲分別安裝到雷電模擬器中作為被攻擊對象,并提前登錄賬戶,同時將另一臺PC設備上的雷電模擬器作為攻擊者環境,然后通過第2節中的方法竊取被攻擊對象的登錄憑證。如圖3所示,在受害者的模擬器內登錄了游戲App“我的世界”后對其實施竊取憑證攻擊,在攻擊者的模擬器中利用竊取的憑證成功繞過了登錄檢查環節,直接獲得了受害者賬戶的控制權。
實驗結果發現,42款游戲App中有38款不能成功抵抗竊取憑證的克隆攻擊,僅有4款游戲App在啟動環節會對此類攻擊進行防御,無法直接登錄已保存的用戶狀態,需要重新登錄。
3.3 針對模擬器的克隆攻擊結果
本實驗同樣利用3.2節中的游戲App數據集進行測試,與之搭配的還有6款主流的手游模擬器。在受害者和攻擊者環境中都安裝這6款模擬器,并選擇3.2節實驗中能抵抗竊取憑證的克隆攻擊的4款游戲App和其他6款不能抵抗克隆攻擊的游戲App共10款進行測試。由于很多游戲App可以用社交軟件賬號(如微信、QQ等)作為登錄方式,所以大多數用戶在模擬器上也會登錄自己的社交軟件賬號并保存登錄狀態[2],因此本次實驗也將QQ和微信兩款社交類App作為測試對象。
我們利用前面提到的克隆攻擊方法對實驗對象進行針對模擬器的克隆攻擊,在6個受害者模擬器中提前登錄這12款App并保存登錄狀態,然后對模擬器實施克隆攻擊。攻擊者與受害者采用兩套不同的硬件設備。實驗發現6款手游模擬器均不能抵抗此類克隆攻擊,被攻擊的模擬器中的10款游戲App和2款社交App,在受到攻擊后仍保持著賬戶登錄的狀態,并且如QQ等App可以在攻擊者和受害者設備上同時處于登錄狀態,受害者不易通過登錄狀態察覺是否受到攻擊。實驗說明,此類攻擊方法對于現有游戲App而言具有更大的威脅,現有的游戲App面對此類攻擊都無法有效進行防御。盡管攻擊者使用的PC環境與受害者不同,但被攻擊的App缺乏對外層PC環境的感知能力,因而不能有效抵抗這類攻擊。
4 防護方案
4.1 針對竊取憑證攻擊的防護方案
抵御竊取憑證類的克隆攻擊可以借鑒已有的Android環境感知手段,因為發生此類攻擊時,攻擊者的模擬器或者真機環境很難與受害者的完全一致,即便是攻擊者使用了與受害者完全相同的模擬器,但模擬器中仍有大量用戶可以自定義的設置,這些設置也會在模擬器系統中留下大量的定制痕跡,因而采用環境感知的方法進行一致性判斷就能較好地防御此類攻擊。Costamagna等[15]對已有的Android模擬器進行了大量調研,發現了存在許多的模擬器特征(如聯系人、短信等),這些特征結合形成的指紋就可以協助App進行環境一致性檢查,從而達到防范竊取憑證的克隆攻擊。從第3節的實驗結果也可以看出,部分App廠商已經實現了對此類克隆攻擊的防御,因而此類克隆攻擊的防御可以基于一些已有工作進行實現。
4.2 針對克隆模擬器的防護方案
對于更難檢測的針對模擬器的克隆攻擊,通過直接檢測模擬器特征進行防御能力十分有限。但通常攻擊者的物理設備環境與受害者很難保證完全一致,因而我們可以通過側信道的方式來對運行App的模擬器的外部硬件數據進行采集,從而形成物理設備的側信道數據指紋,利用指紋來鑒別模擬器外部環境的改變從而實現防御策略。指紋檢測的模塊可以融入App中,在登錄環節實施采集并保存在服務端中,從而幫助開發者在App層面實現防護。
這里的指紋信息可以包括但不限于模擬器的CPU性能、內存讀寫性能、存儲讀寫性能以及GPU性能等。底層的物理設備差異會導致這些性能數據的差異,利用這些特征組成的指紋信息可以判斷App是否遭到了克隆攻擊,同時,越多的特征越能提高判別的準確性。
在選取特征時主要考慮三個方面的因素,第一是特征需要具備代表性,同一特征在不同的硬件平臺上需要表現較大的差異性,例如CPU主頻就可以作為特征之一,因為在不同硬件平臺上CPU主頻往往會具有一定的差異性;第二是特征需要能在模擬器內進行采集,考慮采取防御措施的主體是運行在模擬器內的App,因而所有的特征收集工作都應能在模擬器內進行實現,有些參數信息雖然極具辨識度(例如具體的硬件型號等),但無法在模擬器中進行獲取,因而也不能作為特征;第三是特征需要具備穩定性,穩定的特征可以避免頻繁的波動,減小最終結果的誤判率。
考慮以上三方面的因素,初步選取了單核性能、多核性能、頁錯誤速率、上下文切換速率、CPU遷移速率作為CPU特征,選取讀、寫速度作為內存特征,選取順序讀、順序寫、隨機讀、隨機寫速度作為存儲特征,選取OpenGL測試結果作為GPU特征。最終防護方案的檢測流程如圖4所示。
我們在每次App啟動的自動登錄環節加入指紋檢測的模塊,對所有特征進行采集并按一定的權重進行加權得到新的指紋。如果App是第一次啟動,那么只進行指紋保存。將前后兩次采集的指紋進行比較,得到的差異結果如果小于特定的閾值,那么可以認為模擬器所處環境并未發生改變,可以更新指紋并進入App后續環節,反之一旦出現了新指紋與原有指紋差異較大的情況,則不予登錄并清空用戶憑證等相關信息,從而保障用戶的賬戶安全。
接下來,我們將通過一系列實驗來對各項特征進行考察,根據不同特征的可靠性、穩定性和靈敏度賦予相應權重,最終形成一套準確可靠的指紋,同時也將根據具體的實驗結果,選取用于區分不同指紋的合理閾值,形成完整的防護方案。
5 防護實驗驗證
我們設計了多個實驗來驗證4.2中防護方案的有效性。首先,對四大類特征進行實驗,分別測試每一項具體特征在不同PC環境中表現的差異,拋棄不合適的特征,選取具有代表性的特征形成指紋;其次,考慮攻擊者的PC也可能采用與受害者完全相同的硬件型號,我們也將測試這些特征在完全相同型號的PC環境中是否產生較大差異;最后,我們根據實驗結果對特征設置權重并組成指紋,選取合適的閾值以保證能夠準確檢測出克隆攻擊導致的模擬器外部環境變化,同時不產生誤判。
我們在5臺PC設備上的雷電模擬器中展開測試,其中PC1~PC4在硬件方面存在差異,PC4與PC5硬件規格相同,以此模擬不同的攻擊情景。具體屬性如表1所示。
考慮主板、電源等因素會導致硬件實際工作頻率與標定頻率存在差異,因此在實驗環節中,通過BIOS修改CPU主頻和內存頻率進行了多次實驗,測試硬件所有可能的工作狀態并統計結果。同時,為了使實驗環境接近真實的用戶環境,在實驗過程中也會考慮模擬器外的PC中運行的其他程序對模擬器內的性能影響。我們進行對比實驗來分別觀察模擬器外的程序造成的影響,并找到對于每一項特征合適的權重。
5.1 CPU特征實驗
對單核性能與多核性能的測試,采用安兔兔(https:∥soft.antutu.com)中的CPU測試模塊對不同PC平臺中的模擬器進行CPU性能測試,測試內容分為單核性能與多核性能兩項。我們對每塊CPU進行了修改主頻的多次測量,得到了單核與多核的性能測試結果,如圖5所示。從圖5可以看出,無論是單核還是多核性能測試,每塊CPU都表現出了較大的差異,且頻率越接近CPU的正常工作頻率時差異越大。同時也發現即使PC3的CPU單核性能比PC2更優秀,但多核性能卻不如后者,因此可以將單核性能測試結果和多核性能測試結果作為兩個不同的特征。
利用Simpleperf測量CPU其他三項特征:頁錯誤、上下文切換、CPU遷移,結合壓力測試工具StabilityTest。我們使用壓力測試工具使模擬器內的CPU使用一直處于滿負荷狀態,同時監測CPU的變化情況,得到平均每秒發生的頁錯誤、上下文切換、CPU遷移數量,同時結合CPU的不同頻率進行了多次實驗,得到了如圖6所示的實驗結果。
實驗表明頁錯誤速率與CPU遷移速率表現出了與單核、多核類似的特點,不同CPU在不同主頻下均會有差異明顯的表現,且頻率越接近CPU的正常工作頻率時差異越明顯,所以可以將這兩項指標作為特征。而上下文切換速率方面,多臺PC的CPU表現出了相近的結果,不適合作為指紋特征。
考慮模擬器外部運行的其他程序可能造成的性能影響,我們進行了外部PC不同負載下的對比實驗。我們使用Super PI程序讓CPU的若干個核心處于滿負載狀態,得到了如圖7所示的結果,其中橫坐標的值表示PC中滿負載的CPU線程數量,縱坐標的值代表在該負載情況下,特征的性能表現占無負載情況下的百分比。實驗在4臺不同的PC中進行,取其中下降幅度最大的作為實驗結果。實驗發現,當滿負載的線程數量與模擬器占用線程數量(模擬器通常為4個)之和小于CPU的總線程數量時,單核性能的下降幅度較小,均在8%以內。而多核測試結果受外部影響較大,在外部負載為6時下降了16.5%,因此單核性能具有更好的穩定性。與單核、多核性能不同的是,外部程序的高負載對頁錯誤和CPU遷移速率的影響不大,結果下降不明顯。
除模擬器外部程序的影響外,CPU特征本身的測量也會存在一定的波動。我們統計了不同CPU特征的波動情況,對每項特征進行了10次測量,將所有測量結果進行歸一化,在PC1中測量的CPU特征波動情況如圖8所示。可以看出除多核性能外的三項特征波動都很小,均在5%以內,多核性能的波動可能超過5%但不超過10%。對其他幾臺PC也進行實驗,得到了相同的實驗結果。
考慮PC在實際使用過程中很少能夠同時運行大量的高CPU占用程序,且根據已有的玩家硬件調查報告數據(https:∥store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam?l=schinese)來看,截至2023年6月,Windows平臺下CPU物理核心數小于4的用戶僅占8.43%。線程小于4的用戶數量僅占0.15%,絕大多數玩家的硬件配置可以保障測試結果的穩定性。綜合上述實驗結果,我們可以將穩定性較好、區分度較大的單核性能特征的權重設為15,與之對應的多核設為10。另一方面雖然頁錯誤速率與CPU遷移速率具有不錯的穩定性,但這兩項特征與單核性能具有一定的相關性,且靈敏度較低,因此不適合作為大權重的特征項。綜合比較后我們將頁錯誤速率和CPU遷移速率的權重設為5。
5.2 內存特征實驗
在內存特征方面,影響內存讀、寫速度的因素有很多,內存條的顆粒質量、頻率、容量、位寬和時序等因素都會影響最終的讀和寫的速度,因而即便是同一廠商的內存產品也會存在性能差異。此外,在實際環境中使用的內存頻率也與主板等其他硬件相關,因此我們針對每個內存條都進行了多次不同頻率的測試。我們采用安兔兔中的內存測試模塊對四臺PC設備中的模擬器進行內存讀、寫性能測試,得到了如圖9所示的結果。其中PC4所用的內存頻率最高為3 000MHz,其余為3 200MHz。可以看出,對于同一內存其性能測試結果與頻率呈較為明顯的正相關,而不同內存即使在同一頻率下也會有較為明顯的性能差異,特征具有較大的區分度。
在特征穩定性方面,我們進行了多次重復實驗,實驗結果表明內存讀、寫速度的測量波動均小于3%,穩定性較好。考慮模擬器外部應用程序可能產生的影響,我們也對比測試了PC內存高負載的情況,發現了外部應用程序的確會影響模擬器內的內存性能測試結果。當PC環境中除模擬器外的內存占用少于20%時,實驗結果幾乎無變化,當內存占用達到70%時,內存性能會產生11%~15%的下降,但差異仍小于圖9中不同內存之間的差異。考慮實際情況中內存很少出現接近滿占用的情況,我們可以將內存讀、寫性能作為特征,且設置15的權重。
5.3 存儲特征實驗
在測試存儲特征方面,我們主要從以下四個維度進行:順序讀、順序寫、隨機讀、隨機寫。這四個維度可以作為模擬器存儲的評測指標。由于模擬器存儲的實際介質是PC中的硬盤,因而實際物理硬盤的性能將直接影響測試的結果。PC中使用的硬盤大體上可以分為機械硬盤和固態硬盤兩類,前者相較于后者容量更大但速度更慢。同時,已使用時長、硬件存儲介質(機械硬盤的磁盤和固態硬盤的顆粒)的質量都會影響讀、寫的實際速度,因此存儲特征會有較大的區分度。我們對四臺PC分別在模擬器內進行了存儲能力的測試,多次實驗后取每項速度的平均值作為結果,實驗結果如表2所示。
從實驗結果可以看出與存儲相關的四項特征在不同PC的模擬器中均表現出較大的差異,如隨機讀速度方面PC3與PC4的速度相差很大。各項數據之間并不存在完全的相關性,如PC1的順序讀速度幾乎是PC3的三倍,而隨機讀卻不及PC3的一半,實際環境中不同硬盤間的性能也的確存在較大差距。這也和實際環境中硬盤屬性相關較大相符。
在穩定性方面,經過多次重復測試,發現四項特征均存在一定的測量波動,但波動幅度均不超過8%。同時,考慮模擬器外部的磁盤占用對性能的影響,我們又測試了在進行模擬器外部數據讀、寫時的模擬器內存儲性能。我們利用移動硬盤等設備與PC交互進行讀、寫,模擬真實的磁盤高占用情況。當磁盤全速讀、寫時,模擬器內的存儲性能發生了較為明顯的下降,在順序讀、寫方面分別下降了14%~26%、8%~12%,而隨機讀、寫方面的性能下降均小于5%。考慮不同存儲設備性能本身可能存在多達數倍的差異,不宜設置過大的權重,綜合考量后,我們將存儲的四項特征權重設為5、5、10、10。
5.4 GPU特征實驗
在GPU測試方面,不同PC間的測試結果同樣展現出了較大的差異,我們利用OpenGL測試程序對四臺PC中的雷電模擬器進行GPU測試,如表3所示。從實驗結果我們可以看出,GPU硬件差異對模擬器的性能有著較大的影響,即便是實際性能非常接近的Nvidia MX450與AMD RX560,在測試中也表現出了一定的差異。
與CPU不同,GPU產品的性能跨度非常大,即使是市面上同時在售的GPU產品,也會存在巨大的性能差異,因此GPU特征具有較高的靈敏度。考慮用戶正常使用模擬器時,模擬器是使用GPU的主要程序,PC中存在的其他后臺程序對GPU的影響可以忽略,結合不同GPU之間較大的差異情況,我們將GPU測試的權重設為20。結果發現即使是普通GPU,在運行手游模擬器時仍能表現出高于各類旗艦手機的性能,這也再次證明了使用手游模擬器的確能給用戶帶來性能提升的體驗。
5.5 相同型號的硬件實驗
考慮實際情況中可能出現攻擊者與受害者PC硬件型號相同的情況,我們對與PC4硬件型號完全相同的PC5再次進行了各項實驗,平均結果如圖10所示(將PC4正常工作時的性能視為100%)。
從結果中我們可以發現,即使完全相同的硬件型號,也可能因為諸如芯片體質、使用壽命損耗、散熱情況等多方面復雜因素而表現出不同的性能,差別較為明顯。因此在我們的防護方案下,即使攻擊者采用了與受害者完全一致的硬件環境,我們通過檢測特征變化仍能檢測到環境變化。
5.6 實驗評估
為了確保各項實驗數據的可靠性以及模擬真實環境中時間對硬件設備的影響,我們在間隔2周后重復了上述實驗,所有的實驗結果數據與原數據相差均不超過5%,除存儲特征外其他特征數據與原數據相差均不超過3%,這表明了在一定時間內,我們提出的方法具有很高的可靠性。根據上述實驗結果,對每個特征賦予的權重如表4所示。
根據4.2節中的防御思路,可以通過表4中的權重計算數值化差異s,即
s=∑wi×min(Δi,Δmax),
其中:wi為每一項的權重;Δi為相對變化量(百分比)并取其絕對值,同時為了避免在特殊情況下某一項特征過大的變化差異導致防護方案的誤判,在計算s時我們對每一項特征的變化量設置最大值Δmax為0.5,當Δi的絕對值超過Δmax時取Δmax。根據實驗結果,同一臺PC中的模擬器由于時間變化而導致的s均小于5,而不同型號硬件的環境下s最小也超過了20,且即使完全相同硬件型號的PC環境s也達到了14以上,因此我們將設定閾值為10,當s小于閾值時可以認為模擬器的外部硬件環境沒有發生變化,同時更新指紋,反之則認為外部硬件環境發生改變,從而采取相應的防御措施(取消用戶自動登錄憑證等)。
我們將PC1~PC5分別作為受害者與攻擊者再次進行實驗,根據表4中的權重計算s,實驗結果如表5所示,表中行及列相同時沒有進行攻擊,但也進行了檢測以表明每次檢測中可能產生的正常浮動。
我們更換不同的其他5款手游模擬器再次進行實驗,也得到了類似的結果,均未出現誤報與漏報的情況。實驗結果表明,不同PC中的s變化均超過14,大于閾值;同一PC的s變化在一定時間(2周)內均不超過9,小于閾值。其中3.3節中的攻擊實驗的重復實驗攻擊前后的s變化達到了32.6,遠高于閾值,這些都證明了我們閾值的合理性。
實驗中PC2未受到攻擊時出現了s達到8.7,接近閾值的情況,因而在實際環境下,我們的防御方案有可能會出現克隆攻擊誤判的結果,但從保障用戶賬戶安全的角度出發,減少漏報更為關鍵,因為一旦漏報攻擊,賬戶就可能面臨不可挽回的巨大損失。綜合來看,我們設置較小的閾值(10)的確可能會在某些未發生攻擊的情況下取消自動登錄,降低用戶體驗,但這樣保守的策略大幅提升了App在面臨克隆攻擊時的防御能力。在開發者將我們的防御方案應用到App中時,也可以根據實際情況再次調整差異化閾值,以滿足安全性和用戶體驗間平衡的需要。此外,對于超過2周未進行連續登錄的情況,可能出現的其他方面的賬號安全隱患也很多,這種情況下即使s小于閾值,讓用戶重新進行登錄操作也是一種更加安全的策略。
6 其他可行的防護方案
在手游模擬器側進行防御也是一種可行的防御方案,模擬器既可以通過采集環境指紋并在啟動時進行設備一致性判斷來進行防御,也可以采用與傳統PC軟件類似的防盜版手段[16-18]來防止自身被克隆盜用。在面對克隆攻擊時,模擬器本身也可能是被攻擊的對象,因而模擬器的開發人員也理應對克隆攻擊進行積極防御。
7 總結與展望
本文提出了兩種克隆攻擊方式,竊取手游模擬器內App憑證的克隆攻擊和針對模擬器的克隆攻擊。同時本文也提出了基于側信道方法檢測硬件指紋的防御方案。實驗證明,現有App并不能很好地防御克隆攻擊,而本文提出的防御方案有效、可靠,可以在App層面進行實現。未來我們的方案是進行更多特征維度的拓展,可以加入更多的特征來提高指紋的精確性,降低誤報率。
參考文獻:
[1] 孫彥博. 中國手機操作系統行業研究報告[R]. 南京: 頭豹研究院, 2021.
SUN Y B. Research report on China′s mobile operating system industry [R]. Nanjing: Toubao Research Institute, 2021.
[2] 廖旭華. 手游模擬器市場綜合分析2020[EB/OL]. (2021-01-21)[2023-01-02]. https:∥www.analysys.cn/article/detail/20020032.
LIAO X H. Comperhensive analysis of bobile game emulator market 2020 [EB/OL]. (2021-01-21)[2023-01-02]. https:∥www.analysys.cn/article/detail/20020032.
[3] BARHAM P, DRAGOVIC B, FRASER K, et al. Xen and the art of virtualization[J]. ACM SIGOPS operating systems review, 2003, 37(5): 164-177.
[4] BARR K, BUNGALE P, DEASY S, et al. The VMware mobile virtualization platform[J]. ACM SIGOPS operating systems review, 2010, 44(4): 124-135.
[5] ANDRUS J, DALL C, VAN′T HOF A, et al. Cells: a virtual mobile smartphone architecture[C]∥Proceedings of the 23rd ACM Symposium on Operating Systems Principles. New York: ACM Press, 2011: 173-187.
[6] YOON J, LEE S J. A Study on android emulator detection for mobile game security[J]. Journal of the Korea institute of information security and cryptology, 2015, 25(5): 1067-1075.
[7] XU F H, SHEN S Y, DIAO W R, et al. Android on PC: on the security of end-user android emulators[C]∥Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. New York: ACM Press, 2021: 1566-1580.
[8] JING Y M, ZHAO Z M, AHN G J, et al. Morpheus: automatically generating heuristics to detect Android emulators[C]∥Proceedings of the 30th Annual Computer Security Applications Conference. New York: ACM Press, 2014: 216-225.
[9] SAHIN O, COSKUN A K, EGELE M. Proteus: detecting android emulators from instruction-level profiles[M]∥Research in Attacks, Intrusions, and Defenses. Cham: Springer International Publishing, 2018: 3-24.
[10]ALZAYLAEE M K, YERIMA S Y, SEZER S. Emulator vs real phone: android malware detection using machine learning[C]∥Proceedings of the 3rd ACM on International Workshop on Security and Privacy Analytics. New York: ACM Press, 2017: 65-72.
[11]GUERRA-MANZANARES A, BAHSI H, NMM S. Differences in android behavior between real device and emulator: a malware detection perspective[C]∥International Conference on Internet of Things: Systems, Management and Security. Piscataway: IEEE Press, 2019: 399-404.
[12]CHO J, KIM D, KIM H. User credential cloning attacks in android applications: exploiting automatic login on android apps and mitigating strategies[J]. IEEE consumer electronics magazine, 2018, 7(3): 48-55.
[13]CHOI J, CHO H, YI J. Personal information leaks with automatic login in mobile social network services[J]. Entropy, 2015, 17(6): 3947-3962.
[14]PARK S, SEO C, YI J H. Cyber threats to mobile messenger apps from identity cloning[J]. Intelligent automation & soft computing, 2016, 22(3): 379-387.
[15]COSTAMAGNA V, ZHENG C, HUANG H Q. Identifying and evading android sandbox through usage-profile based fingerprints[C]∥Proceedings of the First Workshop on Radical and Experiential Security. New York: ACM Press, 2018: 17-23.
[16]曾文獻, 和志強, 孫立輝. 淺析軟件產品防盜版技術及實現[J]. 河北省科學院學報, 2004, 21(2): 54-56, 61.
ZENG W X, HE Z Q, SUN L H. Elementary analysis of technology and reality of preventing piratic software[J]. Journal of the Hebei academy of sciences, 2004, 21(2): 54-56, 61.
[17]魯寧. 軟件防拷貝技術研究與應用[J]. 河北工業科技, 2008, 25(4): 247-249.
LU N. Technology research and application of preventing pirate software[J]. Hebei journal of industrial science and technology, 2008, 25(4): 247-249.
[18]雷尊國. 軟件版權保護技術的研究及應用實踐[D]. 成都: 電子科技大學, 2012.
LEI Z G. Research and implemention of software copyright protection[D]. Chengdu: University of Electronic Science and Technology of China, 2012.