百度安全論文入選IEEE TIFS,攻擊者難逃「楚門的世界」

導讀:近日百度安全發表的論文《Detecting Hardware-assisted Virtualization with Inconspicuous Features》入選國際TOP期刊IEEE TIFS,論文深度剖析了虛擬化檢測技術,並創新性提出一種最新硬件虛擬化檢測技術,無須提權就能實現對硬件虛擬化環境的檢測,本文將對這篇論文進行詳細的解讀。算法

虛擬化做爲雲計算系統中的一種基礎技術,近年來,虛擬化技術不只普遍應用於雲服務器,也普遍應用於我的桌面。那麼究竟虛擬化技術是什麼,又爲何起到這麼重要的做用呢?緩存

想象兩個場景:安全

空曠的廠房,整個樓層沒有固定的牆壁,從事各式工種的工人和機器設備扎堆彙集,沒法造成流水化的高效做業。

開放的冷藏庫裏,麪包、龍蝦和榴蓮裸露的存儲在一塊兒,沒有任何封裝和隔離,長久下去麪包有了龍蝦味兒,龍蝦有了榴蓮味。服務器

從這兩個例子裏,咱們不難看出,在空間資源必定的條件下,須要根據不一樣的需求進行從新規劃,已充分發揮最大的利用效率。在計算機領域,就存在一種技術能夠解決上面的問題,那就是"虛擬化技術"。網絡

虛擬化(Virtualization)技術最先出如今 20 世紀 60 年代的 IBM 大型機系統,在 70 年代的System 370 系列中逐漸流行起來,這些機器經過一種叫虛擬機監控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成許多能夠運行獨立操做系統軟件的虛擬機(Virtual Machine),再通俗點就是「把一臺電腦虛擬成N臺電腦」。性能

一樣的,虛擬化在雲計算的應用也是如此,雲計算自己就是把一個巨大無比的服務資源劃分紅不少小空間來使用,因此這也就解釋了,爲何虛擬化是雲計算最基礎的軟件設施。測試

虛擬化環境下的惡意程序分析

在計算機安全方面,虛擬化技術也有很普遍的應用,好比安全人員可以利用虛擬化環境進行安全分析測試。虛擬化技術的出現彌補了安全動態分析測試服務器資源不足,系統不純淨以及環境搭建週期長等問題,同時又不會「中傷」到本地操做系統,起到隔離做用,還可以嚴格控制運行在其中的程序行爲,可謂一舉多得。優化

有了虛擬化技術,安全人員便可以在一個孤立的環境中進行不一樣類型的安全動態分析。一般能夠在虛擬環境中運行樣本, 利用監控模塊提取樣本的進程、內存、文件、註冊表、網絡等行爲數據, 經過對這些行爲數據的彙總分析來推斷樣本的功能和惡意性。雲計算

這種測試聽起來合乎常理,沒有什麼大問題,然而有沒有可能上演這樣的一幕:spa

在電影《楚門的世界》裏,楚門從一出生,他的生活就被全球24小時直播,身邊全部的人都是演員,生活的城市就是一個巨大的攝影棚,連太陽月亮甚至大海都是人造機器所操控的。

可是,「人造的世界」開始出現異常,莫名其妙天上掉下個錄影棚燈,去世的父親變成乞丐從新回來,初戀女朋友莫名其妙消失不見……

隨着愈來愈多的異常出現,楚門開始主動檢測那個世界的異常,而且證實這就是一個「虛擬化環境」,最終躲開鏡頭,揚帆出海,得到自由···

沒錯,惡意程序的做者也和楚門同樣,意識到了虛擬化環境中的異常,爲了有效地逃避虛擬化分析測試、攻擊本地系統,他們掌握一種能夠反虛擬化環境的技術,利用這項技術能夠檢測虛擬運行環境的存在,並隱藏他們的惡意行爲,從而逃避安全研究員的分析。

也就是說,安全人員在虛擬化環境下分析惡意程序時,按照咱們前面介紹的虛擬化技術原理下,惡意程序就會覺得本身在一臺「真的機器」裏。

但如今存在一些檢測方法,可讓軟件識破本身實際上是在虛擬機裏,擁有了「上帝視角」的惡意程序,有的「裝傻賣乖」再也不搞破壞,企圖混過安全人員的分析,又或者是直接選擇自毀,總之無論採用哪一種辦法,最終目的只有一個,就是「讓安全研究員沒辦法研究我」惡意程序如是說。

所以,爲了對抗惡意程序的反虛擬化問題,須要安全研究人員掌握更高效便捷的虛擬化環境檢測技術,從而構建起更難以被檢測,更透明的分析系統,在本篇論文中百度安全研究員就對此作出了深刻探索,並研究出了最新硬件虛擬化檢測技術,可以無須提權就能實現對硬件虛擬化環境的檢測。

傳統硬件輔助虛擬化檢測技術存在缺陷

首先,咱們先來看看,目前惡意程序使用了哪些虛擬化檢測方法。總結來講,他們普遍使用了兩種虛擬化檢測方法。第一種方法是查找虛擬機監視器或虛擬機自己留下的特定痕跡。另外一種則是對硬件引發的計時差別進行分析,以用來標記。

然而第一種方法存在很大的侷限性,這種方法的原理主要依靠查找虛擬機監視器或虛擬機自己留下的特定痕跡,一般僅用於識別傳統的基於軟件的虛擬化。爲了給用戶操做虛擬機提供方便,一些虛擬機監視器將主機插入Guest OS中,但這些痕跡能夠輕易被惡意軟件發現。常見的痕跡包括,Guest OS中運行的進行和服務、文件或註冊表鍵值等,像CryptoWall、shi和Kronos這樣流行的惡意軟件都可以經過利用這些痕跡來檢測虛擬化的存在。

而目前,隨着X86處理器性能的提升和應用的普及,市面上主流的虛擬化更多依託的是硬件輔助虛擬化,論文中百度安全研究員重點對已知的硬件輔助虛擬化檢測技術作了實驗分析,結果可見表一。       

表一:硬件輔助虛擬化檢測技術效果對比

從表1可見,目前已知的硬件輔助虛擬化檢測技術均存在可被移除、須要特權帳戶或觸發大量可疑的VM退出事件等缺陷。針對這些問題,百度安全研究員推出了全新的虛擬化硬件檢測技術,可以實如今非特權狀態下,不引起大量可疑事件,極具隱藏性的全新檢測技術。

百度安全獨創新型硬件輔助虛擬化檢測技術

那麼,究竟百度安全所提出的新型硬件輔助虛擬化檢測技術是如何實現的呢?接下來,咱們就一塊兒跟隨論文中的闡述具體來看。

整個工做分爲兩個階段:(1)offline階段和(2)online階段(例如圖1)。Offline階段主要是採集特徵屬性在虛擬化環境(virtualized)和非虛擬化環境(native)的不一樣。這些數據能夠保存起來,用於online階段的檢測。在online檢測階段,針對不一樣屬性的劃分,能夠很容易的判斷當前運行環境是否跑在了虛擬化緩解。

圖一: 虛擬化檢測的兩個階段

爲了驗證方法的有效性,百度安全研究員進行了實驗研究,經過三臺本地機器驗證三種檢測技術以及三家主流雲供應商,結果詳見表二。

表二:每一個主流雲提供程序上的三個本地機器和三個虛擬機的系統配置

接下來,咱們將採用三個特徵屬性來給你們展現如何檢測虛擬化環境。

一、利用TLB的延遲來檢測

爲了最大程度地減小兩層的內存佔用地址轉換,現代處理器在虛擬環境中有兩種類型的TLB,即hPT-TLB和組合的TLB。如圖2所示,hPT-TLB用於將地址從GPA加速到HPA。組合式TLB存儲GVA之間的映射和HPA,相似於本機環境中的TLB,而且緩存從VA到PA的地址轉換。

直觀地講,一種可能的方法是測量內存訪問(僅致使TLB丟失)並肯定閾值,虛擬化能夠在閾值之上被檢測到。閾值能夠經過比較肯定本機和虛擬系統上的時間延遲。若是延遲被測得高於閾值,而後人們認爲環境是虛擬的;不然它是本地的。可是,這種方法存在着偏差,即內存訪問所花費的時間因每一個微體系結構而異。

所以,很難肯定合理的絕對閾值。相反,咱們使用致使TLB的miss和hit直接的差值來肯定這個相對閾值。咱們還所以設計了一個Prime+probe的算法完成此事(詳細算法參見發表的論文https://ieeexplore.ieee.org/abstract/document/9122497/)。

圖二:TLB的在地址轉化過程當中的流程

圖三:在Amazon EC2,Microsoft Azure以及Google Cloud上面的檢測結果。咱們很容易看到虛擬化和本地系統在TLB miss方面的巨大差別

二、利用LLC Miss Penalty來判斷

在現代操做系統中,訪問GVA時硬件會走頁面表進行地址轉換。對於每一個Guest頁表遍歷,硬件也遍歷host頁表肯定相應的HPA。爲方便訪問,不只相關的地址轉換將被緩存到TLB中,並且訪問的四級頁表條目(PTE)將存儲到CPU緩存中。如圖2所示,虛擬化環境將使用緩存以總共存儲16個主機PTE和4個Guest PTE,而本機環境僅須要4個PTE。若是再次發生相同的訪問,將首先查找TLB。若是發生TLB缺失(即沒有TLB條目均不包含地址翻譯層),則將進行頁表遍歷。因爲最近的PTE在CPU cache中,所以硬件將查找cache以檢查其存在。若是不是在cache中,而後硬件從主設備獲取它們內存。在這種狀況下,兩頁的頁表清晰可見與在本機環境。相似於基於TLB的測量,咱們使用致使TLB和PTE引發的訪問延遲

LLC  miss減去hit的等待時間,並把結果存儲做爲閾值。若是其餘減去結果明顯超出閾值,那麼能夠得出結論,環境是虛擬化。

圖四:在Amazon EC2,Microsoft Azure以及Google Cloud上面的檢測結果。咱們很容易看到虛擬化和本地系統在LLC miss方面的巨大差別

三、利用L1D緩存的不穩定性進行檢測

在本機環境中,進程調度容許進程競爭一個物理CPU。 在虛擬化在環境中,CPU虛擬化容許物理CPU在多個虛擬CPU之間共享。 它容許多個在一臺計算機上運行的不一樣操做系統。 在同時,不只進程競爭虛擬CPU,並且虛擬CPU競爭共享的物理CPU,從而加重了競爭,致使L1D緩存的不穩定性加重。 此外,虛擬CPU是一般會遷移到不一樣的物理核心以優化負載平衡。 考慮到L1D緩存是物理設備專用的CPU,而且L1D緩存的大小很是有限,攻擊者能夠預計多少個entry被evict出L1D。這個數字在有虛擬化的環境下,將會大大提升。

圖五:在Amazon EC2,Microsoft Azure以及Google Cloud上面的檢測結果。咱們很容易看到虛擬化和本地系統在L1D 不穩定性方面的巨大差別。

總結來講,實驗結果充分驗證了三種方法的有效性,咱們所提出的檢測技術不會觸發任何可疑係統,並獨立於操做系統。這一技術研究並不僅僅只是爲了緩解惡意程序對於虛擬化環境的檢測,而是致力於在深刻研究相關檢測技術的基礎之上,有針對性的防範惡意程序入侵對虛擬化安全的威脅,爲制定合理有效的對抗思路提供將來方向,甚至是讓虛擬化環境變得更加「真實」,對於這一領域的前沿研究的推進和發展具備積極的指導做用。

針對以上的狀況,雲廠商能夠作如下的一些緩解方案:(1)採用performance counter進行監控,發現異常的TLB,L1D以及LLC的活動,進行及時報警。可是這個方法噪音很大,具備很高的誤報率。(2)進行二進制代碼掃描,尋找可疑的代碼片斷。最後雲廠商還能夠採用定製機器的方式,對機器的TLB以及cache進行深度改造,從根本上消除這些方面的影響。

這次論文入選IEEE TIFS,再次展示了百度在前沿安全研究的技術沉澱和國際水準。截止2020年上半年,百度安全已經有14篇論文發表在包括Usenix、ASPLOS,、IEEE TDSC,、IEEE TIFS、 MICRO、ICSE等在內的國際頂級會議和期刊。將來,百度安全也將繼續深度投入智能安全、雲安全、工業互聯網、車聯網安全各個細分領域的前瞻性安全研究,產研結合推進技術創新,用實打實的「成績單」起舞於國際安全舞臺。

相關文章
相關標籤/搜索