亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        虛擬機軟件保護技術綜述

        2022-07-06 01:41:20李成揚陳夏潤文偉平
        信息安全研究 2022年7期
        關鍵詞:提取

        李成揚 陳夏潤 張 漢 文偉平

        1(北京大學軟件與微電子學院 北京 102600)

        2(武漢十月科技有限責任公司戰(zhàn)略規(guī)劃部 武漢 430073)

        自20世紀40年代至今,計算機(馮·諾依曼體系架構)的發(fā)展和應用已取得巨大成功[1],對其進行分析,應包含如下幾點:1)足夠的抽象性.可以被應用于各種實際場景,并進一步解放生產力.2)信息載體的便捷性.更低的存儲成本,以及更快的傳播速度.3)不可替代性.目前沒有一個更好的可替代實體可以行使目前計算機的功能.而作為計算機的“核心”——軟件,在發(fā)展的過程中始終處于攻與防的軍事備賽中.一方面軟件面臨著盜版(software piracy)、逆向工程(reverse engineer)、代碼篡改(code tamper)的威脅;另一方面是代碼混淆(code obfuscation)、軟件水印(software watermarking)、軟件防篡改(software tamper-proofing)等保護措施[2].而虛擬機軟件保護(virtual machine protection,VMP)[3-4]較大程度上阻止了針對軟件的靜態(tài)和動態(tài)分析,可將其表述為:針對程序中待保護的代碼(源碼或者二進制段),將其抽離轉變?yōu)樽远x指令,并同對應的解釋器一起嵌入程序中,在程序運行時,通過解釋器對自定義指令解釋執(zhí)行,在不暴露原有指令的前提下實現(xiàn)程序原有的語義.

        在進一步討論VMP的細節(jié)前,需要對進程級虛擬機和所處的攻擊語境作一個鋪墊說明.

        1) 為了屏蔽硬件層的設計差異,進一步復用計算機資源,軟件層級的虛擬化技術為使用者提供了更多的可能性.根據(jù)虛擬化對象的層級,可以進一步將虛擬機分為系統(tǒng)級虛擬機和進程級虛擬機[5],前者實現(xiàn)操作系統(tǒng)的虛擬化,后者實現(xiàn)單個應用的虛擬化,僅針對當前進程生效,如圖1所示.虛擬機在實現(xiàn)虛擬化的過程中,實現(xiàn)的是將虛擬的客戶系統(tǒng)映射到真實主機,本身并不涉及對細節(jié)的隱藏[5].但在代碼保護領域提及的虛擬機軟件保護(virtual machine protection)或者虛擬混淆(virtualization-based obfuscation),實現(xiàn)的是虛擬指令到真實指令的映射,同樣的未隱藏、也未缺失某些指令功能,但對基于模式或者經驗開展分析工作的自動化工具或分析人員而言,因其對虛擬指令集的不熟悉,可以實現(xiàn)代碼邏輯或實現(xiàn)細節(jié)上的保護.本文語境下的VMP是進程級別的虛擬機,致力于提高軟件安全性.

        2) Collberg等人[6]指出惡意的終端用戶在軟件安全保護中應當受到足夠的重視,因為合法的用戶也可以對軟件程序進行次數(shù)或者時間上無限制的調試,甚至是修改.MATE攻擊(man-at-the-end attack)[7]和具體化的白盒攻擊(white box attack)[8],對軟件擁有完全訪問權和控制權的用戶,可以執(zhí)行任意類型和次數(shù)的靜態(tài)或動態(tài)分析,從而獲得軟件運行的內部信息或結果,所以如何在諸如此類的攻擊場景中保證軟件的安全,便是VMP試圖解決的問題.

        其次,對于VMP保護思路最早被提出的時間節(jié)點并沒有統(tǒng)一的定論.文獻[9-10]認為VMP保護最早可以追溯到Maude等人[11]提出抽離核心的代碼放在硬件單元中保護執(zhí)行;文獻[12]認為Collberg在首次對代碼混淆進行分類的文章中提出的“table interpretation”便是今日虛擬機軟件保護的雛形,因為在相關的章節(jié)中已經明確提出“將代碼轉變?yōu)椴煌奶摂M機代碼,并通過解釋器進行解釋執(zhí)行”[13].雖然對于起源的時間節(jié)點沒有明確的定論,但商業(yè)軟件的成功推廣,如VMProtect[14],Themida[15],Code Virtualizer[16]等,讓工業(yè)界和學術界更多地關注于該領域的發(fā)展.同時開源的VMP項目,如VMPROTECT(https://github.com/eaglx/VMPROTECT),rewolf-x86-virtualizer(https://github.com/rwfpl/rewolf-x86-virtualizer),也進一步推動了相關技術的研究.

        為了有效梳理現(xiàn)有的研究和工作成果,我們首先確定了virtual machine protection,virtualization-based obfuscation,emulation-based obfuscation,software protection,虛擬機軟件保護,虛擬機等關鍵詞,然后通過如下論文數(shù)據(jù)庫進行檢索:The DBLP Computer Science Bibliography(https://dblp.uni-trier.de),Web of Science(https://apps.webofknowledge.com),Scopus(https://scopus.com),Semantic Scholar(https://www.semanticscholar.org),中國知網(https://www.cnki.net).

        最后確定了直接相關的期刊論文共46篇(截至2022年1月).不同年份論文發(fā)表數(shù)量統(tǒng)計如圖2所示,可以看出雖然每年的數(shù)量不一,但從總體看是呈上升趨勢的,特別是近幾年在文章數(shù)量上有了較大的增長.從研究機構看,國內西北大學、南開大學、國防科技大學等均在此領域有對應的研究成果,但發(fā)表在高質量的國內外期刊上的文章數(shù)量還較少,同時針對VMP的綜述文章更少,僅在ARES(https://www.ares-conference.eu/)上有1篇針對VMP還原的綜述[12],因此本文匯總整理目前國內外在VMP的研究成果,并對VMP的發(fā)展給出一個探討說明.

        本文的貢獻在于梳理匯總了國內外目前的VMP研究,針對VMP的架構和安全性分析給出了闡述說明,有助于對該領域的進一步研究.

        1 問題與挑戰(zhàn)

        為了有效標識文獻內容,對其進行關鍵詞提取,如圖3所示,可得出如下結論:

        1) 攻擊和保護方案均從不同的維度有對應的研究成果,其中左側為攻擊方式的研究,右側為保護方式的研究;

        2) 相較于攻擊的方式,增強保護呈現(xiàn)出多元化的狀態(tài),對于安全性增強的研究多于攻擊一方;

        3) 相較于保護或者攻擊維度的多元化,在效果的評估指標上并沒有針對VMP的特定統(tǒng)一指標,基本上沿用了程序分析的指標,包括安全性的理論分析和性能分析.

        雖然從統(tǒng)計的文章中可以看出對安全研究的文章從數(shù)量上多于攻擊研究的文章,但是因為沒有統(tǒng)一的客觀評估指標,針對眾多的安全加固方法,其真實效果是欠缺真實考量的.同時結合年份進行分析,從圖4可以得到如下結論:

        1) 近幾年針對VMP的研究更為密集,無論是保護層面還是攻擊層面;

        2) 攻擊層面,更多地專注于基于語義的攻擊模式;保護層面相較于早期并沒有較大的理論創(chuàng)新,更多地是針對現(xiàn)有方法在某一層面上的加固或強化.

        現(xiàn)有的VMP發(fā)展中,無論是攻擊層面還是保護層面均有不同的學術成果的產出,但仍然存在一些不足和挑戰(zhàn):一方面是保護層面有待新理論的提出,在性能開銷的降低和保護效果的增強上取得更好的效果;另一方面是對于方法的評估模型或指標的構建,結合方法本身的特性給出可量化的評估方案.

        2 虛擬機結構

        VMP作為軟件保護的一種方法,被認為是代碼混淆的一種延伸發(fā)展,歸結于2點原因:其一,在處理手法上同混淆相似,對源程序進行變形處理,在保證原有語義的前提下,使得程序中核心的內容被有效隱藏;其二,VMP和混淆方法的親和性,VMP中可以使用混淆方法進行自身效果的加強[17-18].從本質上講,作為邏輯實體的VMP本身構成包括:虛擬機指令集(virtualization instruction set,VIS)、虛擬機解釋器(virtualization interpreter)和虛擬上下文(virtualization context),其結構如圖5所示.

        2.1 虛擬機指令集

        虛擬機指令集約定了本地指令和虛擬指令的映射關系,作為解釋器的輸入,指定了程序原生的語義邏輯.現(xiàn)有的虛擬機實現(xiàn)中,包括基于棧(stack-based)和基于寄存器(register-based)的實現(xiàn)方式[17,57],這里的分類依據(jù)便是指令集的設計.基于棧式的虛擬機實現(xiàn)中,將原生的指令轉變?yōu)榛诙褩5牟僮?,對虛擬機上下文傳入的數(shù)據(jù)以堆棧的形式進行計算,通過壓棧和出棧實現(xiàn)對應的邏輯運算.從虛擬機的設計上分析,棧式虛擬機是簡單易于實現(xiàn)的,因為沒有寄存器的分配問題,簡化了指令集的設計難度,如VMProtect的指令架構便是基于棧;基于寄存器的虛擬機,使用類似精簡指令集的形式,模擬出原生的指令功能,因此,在單條指令的長度上長于基于棧的指令,但實現(xiàn)相同的功能點時,對應的總體指令數(shù)量會少于棧式實現(xiàn).因此,文獻[17]對2種實現(xiàn)方式進行對比,通過實驗證明,基于寄存器的解釋器相較于基于棧的實現(xiàn)方式,能有效減少虛擬指令數(shù)量,獲得更小的運行時間開銷.

        在指令集的設計上,考慮到虛擬機本身的開銷較大[13,33],以及因為一些原生指令的使用頻率較低,如x86架構的一些平臺相關的指令,鑒于對原生指令全部模擬的不必要性,所以一般自定義的指令并不是圖靈完備的,因此必然涉及虛擬機環(huán)境和宿主機真實環(huán)境的切換,包括寄存器、堆棧信息和標志位的狀態(tài)切換.

        2.2 虛擬機解釋器

        虛擬機解釋器和虛擬機指令集是VMP的核心,整體的安全性和執(zhí)行效率均受解釋器影響.虛擬機解釋器是以虛擬機指令為輸入,使用解釋器內部的邏輯處理實現(xiàn)對應的原生語義.內部的處理方式歸結于2個主要組件:分發(fā)器(dispatcher)和處理例程[34](handler,也稱之為原子處理函數(shù)[56]).基于程序指令的取指-譯碼-執(zhí)行的模式,當解釋器面對接收到的虛擬指令時,首先通過dispatcher找到對應的handler處理單元,handler再從虛擬機上下文環(huán)境中提取對應的數(shù)據(jù),完成相應的邏輯處理[41].

        現(xiàn)有dispatcher的設計可以分為2大類:基于譯碼-執(zhí)行(decode-dispatcher)的方式和基于線索化的方式[17,57].前者的架構圖如圖6(b)所示,解釋器接收到虛擬機指令,通過分發(fā)器進行譯碼,確定對應的handler進行處理執(zhí)行,重復這個過程,直至處理完虛擬機指令或者遇到錯誤,記錄此時的虛擬機上下文中的數(shù)據(jù),從虛擬機環(huán)境返回到宿主機環(huán)境,并重新對程序的堆棧、寄存器和標志位等信息進行賦值.一般的實現(xiàn)方式為while循環(huán)內部嵌套switch結構,通過switch case進行有效的分發(fā),好處是具有跨平臺性,移植性更好,但對應的是處理邏輯上因為使用switch存在較多的跳轉,包括dispatcher和handler之間的跳轉,原生程序同dispatcher之間的跳轉.所以為了提高程序的執(zhí)行效率,另一種實現(xiàn)方式是使用線索化(threaded).

        基于線索化的解釋器是將原本dispatcher內的間接跳轉替換為handler尾部添加的直接跳轉,在執(zhí)行完對應的handler邏輯后,直接跳轉到下一個handler進行處理,為用空間換取時間的策略,VMProtect中便有該技術的使用[42],如圖6(c)所示.但對于復雜的指令序列,涉及多handler處理的情況下,這種空間開銷反而成為一種負擔,因此出現(xiàn)了混合式,即對于簡單的指令序列使用線索化的方式,對于復雜的指令使用分發(fā)的方式,即文獻[56]中提到的分派式加鏈式結構,亦即圖6(d)所示.

        3 虛擬機安全性分析

        VMP保護的安全性涉及2種安全實體:首先是保護后的程序是否足夠安全,以抵抗MATE等攻擊形式;其次是VMP保護程序本身是否足夠安全、是否可以抵抗外在的分析攻擊.應當說,前者的安全是后者安全的超集,因為VMP還可以結合其他保護方法進行效果的強化,如結合加密[18,30-32,35],防篡改[37],但VMP自身軟件的安全性對于程序的整體安全性而言是重要的.

        3.1 針對虛擬機的攻擊方式

        目前已有的針對虛擬機的破解方法主要有2類:1)基于虛擬機結構;2)基于語義分析.

        基于虛擬機結構的破解方式指代的是利用虛擬機本身的結構特性,如譯碼-執(zhí)行模式下handler與dispatcher的跳轉關系,識別出具體的handler范圍;使用switch對應的跳轉變量識別出虛擬機的執(zhí)行流[43];使用虛擬機上下文試圖推導虛擬機在切換過程中的數(shù)據(jù)流等措施[44].相應地,也有眾多的文獻[9,19,22-23]基于上述的分析手法進行了加強保護.

        Rolles[53]首次提出基于虛擬機結構的攻擊,分為6步逐步將x86架構的虛擬機代碼還原為x86指令:1)對虛擬機進行逆向分析.獲取虛擬機的執(zhí)行語義,并構建等價的中間語言.這個過程只執(zhí)行1次.2)檢測虛擬機的入口.3)構建反匯編器.識別基于同套指令模板的指令集異同,并使用正則匹配約簡指令的差異.4)將虛擬機操作碼轉變?yōu)橹虚g代碼.5)對生成的中間代碼進行優(yōu)化處理.6)生成x86代碼.雖然是基于VMProtect的軟件特性設計了具體的步驟,但是提供了一種破解虛擬機的范式.類似地,文獻[54]也是基于虛擬機結構對VMP進行靜態(tài)分析,以實現(xiàn)功能上的破解.

        基于語義分析的攻擊[45],不需要針對虛擬機的架構有前提假設,以程序中的數(shù)據(jù)流和控制流為基準,使用動態(tài)的符號執(zhí)行、污點分析跟蹤程序中變量的執(zhí)行流[46-47],從而實現(xiàn)虛擬機指令與實際指令映射關系的重構.Coogan[48]基于惡意軟件必須使用系統(tǒng)調用這一前提,針對虛擬化后的軟件,以系統(tǒng)調用的相關參數(shù)為基準,對其相關的指令進行遞歸處理,從而實現(xiàn)對原生程序中重要指令的識別.特別地,在指令的識別過程中,基于用戶-使用鏈(use-define chains),為了減小指令對解釋器的依賴作用,先通過對虛擬化的指令進行數(shù)據(jù)分析,再基于識別出的指令結合匯編級指令語義的方程式推理進行控制流分析.不同于其他文章力求還原出源程序的結構,該文在對解釋器無任何前提假設的情況下,致力于有效識別出程序中重要的指令.文獻[49]針對switch分發(fā)模式的虛擬機保護,使用前后向的數(shù)據(jù)流分析、污點分析對虛擬機保護后的程序進行分析,通過識別變量、歸類變量和對指令進行語義約簡實現(xiàn)將自定義的指令逐步還原為x86指令,并構造出程序控制流圖.同時考慮到現(xiàn)有的VMP安全性增強實現(xiàn)中,對于符號執(zhí)行會有一定的抵抗作用,因此一些攻擊方案中針對符號執(zhí)行作了強化處理,使用符號執(zhí)行結合時間戳的實現(xiàn)方案進行破解[50];文獻[51]借助于編譯器的作用從而實現(xiàn)對虛擬指令的有效約簡.需要注意的是基于語義的分析并不只是動態(tài)的分析方式,也可以結合靜態(tài)方法以提高指令的識別效率[52].

        除了上述提到的方法外,針對VMP的破解方式也有結合頻率分析的,如文獻[44]提出針對虛擬機的頻率攻擊,實現(xiàn)對虛擬指令和本地指令映射關系的還原;但對于頻率分析的使用場景,受限于指令映射的復雜性,正如文獻[12]指出的,如果對指令進行分割、合并或者重復等混淆操作,頻率分析便會受到一定的沖擊.同時,在探究VMP安全性時,更多的文章關注的是機密性,而忽視了其完整性,而文獻[55]對此通過實驗驗證,現(xiàn)有的VMP完整性方面易受攻擊.

        3.2 解釋器:一個核心

        如果VMP保護的程序可以脫離解釋器進行執(zhí)行,則自定義指令集的優(yōu)勢必然消失,因為可以借助其他語言,如中間語言,重新優(yōu)化代碼組織形式,建立更直接的接近于宿主機指令的映射關系,因此,如果可以繞過解釋器對虛擬機指令進行轉換或者去除,本質上相當于脫殼后的程序.因此,眾多的文獻研究重點在于加強解釋器的安全性.而解釋器由dispatcher和handler構成,進而安全性的加強落于這兩者安全性的增強.進一步講,解釋器實現(xiàn)的任務是對約定的映射關系進行有效的處理,所以這種保護又可以歸于2階段的映射關系,即虛擬指令和dispatcher之間的映射,dispatcher和handler之間的映射,因此眾多的文章在指令層級實現(xiàn)了多種增強方案.如文獻[24]提出設計防篡改指令、反調試指令以增強指令的安全性.文獻[27-29]均從指令多樣化和隨機化入手,以期復雜化映射關系,提高安全性.另一方面,為了提高抵抗污點分析和符號執(zhí)行的能力,文獻[25]通過提出使用污點漂白和異常機制處理等針對性的設計.也有結合有限狀態(tài)機實現(xiàn)對指令語義進行隱藏[33]的處理方案.

        同時,因為指令層級的保護方案帶來的一定開銷,一些文章試圖以基本塊為基本單位進行保護[30-32],在兼顧效率的同時,使用塊級的加解密提供更高的安全性.以及犧牲一部分性能,使用嵌套虛擬機[38-39]或多套虛擬機解釋器[34]的實現(xiàn)方式,而為了更有效地隱藏解釋器內的映射關系,文獻[36]提出不依賴于混淆,而是通過將分發(fā)器隱藏在CPU中實現(xiàn)對dispatcher的有效隱藏,從而實現(xiàn)對現(xiàn)有虛擬機破解方法的抵抗.

        目前國內外的文獻所討論的虛擬機方案大多作用于x86架構,有少數(shù)文章致力于跨平臺的實現(xiàn)方案,如文獻[40]提出基于LLVM實現(xiàn)虛擬機,從而實現(xiàn)跨平臺性.

        最后需要補充說明的是,在軟件保護及相關的應用[20-21]中,VMP的應用領域不僅可以針對可執(zhí)行文件,也可以如源代碼層級的保護,如針對C#,在源碼層級實現(xiàn)了虛擬化混淆的工具[58];對JavaScript代碼進行虛擬機保護,將JavaScript代碼轉變?yōu)閃ebAssembly,然后針對WebAssembly代碼進行虛擬化處理[59]等方案,在實現(xiàn)安全的解釋器的同時提供可靠的虛擬機安全性.

        4 未來研究方向

        作為軟件保護技術的VMP,其未來的研究方向可以歸為以下幾點:

        1) 統(tǒng)一的評估指標.雖然文獻[12]從預期效果、使用方法的類別、自動化程度和方法的通用性層面對已有的虛擬機破解方法給出了一種評判標準,但針對虛擬機保護還沒有形成統(tǒng)一的評判標準.現(xiàn)有的眾多的方案設計中,僅從軟件的可用性、時空開銷或者單一的handler數(shù)量進行效果的評定,缺乏整體性和針對性.借鑒代碼混淆的評估指標或者密碼學的形式化證明,可能更有助于效果的評估.

        2) 開銷和保護的粒度.結合硬件加密或軟件加密,一定程度上取得了更高的安全性.而如果將VMP本身的處理邏輯視為一種加解密方式,嵌套虛擬機便是加密算法的疊加使用.但兩者均面臨程序帶來的不可忽視的運行開銷.合理地選擇保護的粒度,如指定保護范圍,針對基本塊而非每條指令,可降低開銷,但對應的安全性是否仍足以抵抗現(xiàn)有的語義攻擊,粒度的選擇上對安全性的影響還需具體的實驗論證.

        3) 同機器學習的結合.VMP本身的優(yōu)勢在于自定義指令集的難理解,如果可以有效利用機器學習生成指令集和解釋器,利用其本身的不可解釋性,將是VMP未來自動化和市場化中可以研究的方向.

        4) 跨平臺性.目前的軟件和硬件平臺愈發(fā)呈現(xiàn)出多樣化的趨勢,針對于具體的平臺進行逐個開發(fā)的難度和時間成本都不容小覷,因此,借助于LLVM等平臺,利用中間語言的特性實現(xiàn)跨平臺的方案存在具體的實際需求.但如何在缺失平臺特性的情況下,開發(fā)高可用的VMP仍是目前的難點.

        5 結 論

        虛擬機軟件保護有助于提高軟件的安全性,防止被惡意的靜態(tài)和動態(tài)分析.基于國內外目前的研究成果,本文首先論述了目前虛擬機保護面臨的問題,包括評估指標和優(yōu)化方法上的創(chuàng)新局限性,隨后介紹了虛擬機結構,并通過引述文獻,分析了其安全性,最后總結現(xiàn)有成果,對未來進行了展望.

        猜你喜歡
        提取
        射擊痕跡的尋找和提取
        法制博覽(2016年12期)2016-12-28 18:50:33
        植物基因組DNA提取
        濱州市沾化冬棗核中活性多糖的提取
        綠色科技(2016年20期)2016-12-27 18:10:47
        茶色素生物活性及制備技術研究進展
        木犀草素提取工藝的研究概況
        現(xiàn)場勘查中物證的提取及應用
        淺談涂料墻面上汗液手印的顯現(xiàn)和提取
        土壤樣品中農藥殘留前處理方法的研究進展
        中學生開展DNA“細”提取的實踐初探
        淺析城市老街巷景觀本土設計元素的提取與置換
        男女啪啪免费视频网址| 天天躁日日躁狠狠躁| 久久久国产精品黄毛片| 免费大片黄在线观看| 完整在线视频免费黄片| 亚洲一区二区三区1区2区| 噜噜中文字幕一区二区 | 亚洲av日韩精品一区二区| 久久婷婷综合缴情亚洲狠狠| 日本做受120秒免费视频| 国产精品国产成人国产三级| 国产精品系列亚洲第一| 大胸美女吃奶爽死视频| 一区二区三区精品亚洲视频| 粉嫩极品国产在线观看免费一区| 乱人伦中文视频在线| 永久免费观看国产裸体美女| 精品国产三级在线观看| 丰满少妇又紧又爽视频| 日本加勒比一道本东京热| 日韩精品免费一区二区三区观看| 国产精品美女久久久久av超清| 成年午夜无码av片在线观看| 丰满熟妇人妻av无码区| 亚洲二区三区四区太九| 天堂丝袜美腿在线观看| 乱老年女人伦免费视频| 夜夜高潮夜夜爽夜夜爱爱| av中文字幕少妇人妻| 国产精品国产三级农村妇女| 国产福利一区二区三区在线视频| 黑人巨大精品欧美一区二区| 九九九影院| 亚洲一区二区三区麻豆| 一级r片内射视频播放免费| 狠狠综合久久av一区二区| 无码人妻少妇久久中文字幕蜜桃 | 亚洲av高清一区二区| 在线精品亚洲一区二区动态图| 成人免费看片又大又黄| 麻豆国产成人av高清在线观看|