GPU恐成最大幫兇未來病毒運行技術(shù)前瞻_第1頁
GPU恐成最大幫兇未來病毒運行技術(shù)前瞻_第2頁
GPU恐成最大幫兇未來病毒運行技術(shù)前瞻_第3頁
GPU恐成最大幫兇未來病毒運行技術(shù)前瞻_第4頁
GPU恐成最大幫兇未來病毒運行技術(shù)前瞻_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1/1GPU恐成最大幫兇未來病毒運行技術(shù)前瞻GPU恐成最大幫兇未來病毒運行技術(shù)前瞻惡意軟件的編寫者們不斷地在尋找新的方法來偽裝他們的代碼,以求逃過殺毒軟件的檢測。

目前有兩種新的代碼偽裝技術(shù)對現(xiàn)有的惡意代碼檢測分析系統(tǒng)形成了挑戰(zhàn),這就是脫殼(unpacking)和運行時多態(tài)(runtimep01yITlorphism)。

更為危險的是,脫殼和運行時多態(tài)都可以利用GPu進行加速。

這樣一來,之前困擾惡意軟件編寫者的那些高負荷計算運行方法,都可以利用GPU強大的并行計算能力進行處理。

這將導(dǎo)致我們在未來而臨破壞力更為強大、狡猾而令人防不勝防的惡意軟件。

加殼和變身惡意軟件感染計算機的方法本文中將提到多次有關(guān)汁算機病毒、僵尸客戶端、木馬程序、后門程序以及惡意軟件等諸多對電腦經(jīng)常程序運行產(chǎn)生危害的非法軟件。

為了方便起見,本文全部將其稱呼為懷有惡意性質(zhì)的軟件或惡意軟件。

在正常情況下,這些懷有惡意性質(zhì)的軟件,會悄悄地插入你的系統(tǒng)進程中,并在后臺執(zhí)行一些不可告人的操作。

從硬件角度來分析,傳統(tǒng)計算機系統(tǒng)中,只有CPU能完成這樣的任務(wù)。

原因首先是CPU可以執(zhí)行任意類型的代碼,可編程性極強;其次,CPU是系統(tǒng)的核心,擁有執(zhí)行任務(wù)相當高的權(quán)限;其三,現(xiàn)代CPU性能都很不錯,多核心技術(shù)的普及讓這些懷疑惡意性質(zhì)的軟件即使運行起來,用戶也很難察覺因為你的CPU某些核心往往不會滿載,NVlDIA,已經(jīng)分別針對其GPU發(fā)布了相應(yīng)的SDK(softwaredevelopmentkits,軟件開發(fā)包),用于幫助程序員執(zhí)行可以在GPUJL運行的通用代碼。

這些代碼甚至可以使用傳統(tǒng)的C語言來編寫,比較常見的有NVIDIA和CUDA或者AMD的Stream。

目前,最新一代的GPU(比如支持DirectX11的NVIDIAGeForceGTX500系列),已經(jīng)允許CPU和GPU上運行的代碼完全相同(如NVIDIA所推出的CUDA-X86計劃)。

在這種情況下,GPU通用計算被廣泛應(yīng)用于各類計算任務(wù)中。

當然,這部分計算任務(wù)還包括那些雄心勃勃的惡意軟件代碼編寫者。

考慮到通用計算的巨大潛力,做出惡意軟件編寫者們將利用現(xiàn)代GPU的強大性能,來為自己牟利的預(yù)測就是很自然的事情了。

當然,如果惡意軟件需要正常的運行,必須有兩個先決條件:

1.躲避現(xiàn)有反惡意軟件的防御能力;2.超越分析人員人工解析的能力。

很多情況下,對惡意軟件的人工解析是確定、部署相應(yīng)的檢測并開發(fā)反制軟件的先決條件。

為了達到這個目的,惡意軟件往往使用兩種手段來阻止各種反惡意軟件發(fā)現(xiàn),并防御自己的運行這就是加殼和多態(tài)性,這是使用最為廣泛的、用于逃避反惡意軟件掃描和防御的技術(shù)。

除此之外,在實際應(yīng)用中,代碼偽裝和反調(diào)試技巧常常被用于阻礙對惡意軟件代碼所實施的逆向分析工程。

所謂加殼,就是將自己真正需要運行的內(nèi)容保護起來。

打比方來說,炸彈外面包上鮮花,然后放在郵包里,郵包放在旅行箱里,旅行箱被放在運輸飛機的某一處。

在加了三層殼子后,炸彈看起來像個正常的旅行箱,但一旦飛機上天,爆炸后的后果就不堪設(shè)想。

惡意軟件往往將自己偽裝成正常執(zhí)行的程序,騙取系統(tǒng)或者反病毒軟件,甚至是用戶本人的信任,最終實現(xiàn)其不可知的目的。

而多態(tài)性,是指惡意軟件在執(zhí)行時,不將自己全部暴露在內(nèi)存中如果全部暴露,就可能難以逃脫反惡意軟件的掃描。

因此,惡意軟件將自己的一小部分暴露在內(nèi)存中,然后在需要的時候再暴露另一部分。

簡而言之就是化整為零,按需調(diào)用。

這個看起來相當有效率的方法,帶來了惡意軟件非常難以防御的特性。

因為程序不是人,它們只能機械地執(zhí)行掃描和對比的任務(wù)。

如果反病毒程序已經(jīng)確定了幾種惡意軟件變身的方法,那么只要惡意軟件下次改變一下暴露順序,或者掩蓋一下自己的執(zhí)行目標,反病毒軟件就可能無法偵測。

迄今為止,這些所有的惡意軟件都利用了目前程序執(zhí)行環(huán)境的復(fù)雜性,盡可能隱秘地逃脫反惡意軟件的偵測。

更糟的是,大部分研究反惡意軟件的安全研究人員們只關(guān)注于IA-32架構(gòu),因為絕大多數(shù)惡意軟件都運行在X86系統(tǒng)上。

但令人擔心的是,GPU通用計算的來臨,為惡意軟件的編寫者們帶來了一扇機會之窗,因為大多數(shù)安全研究者對于GPU的執(zhí)行環(huán)境和指令集架構(gòu)并不熟悉。

利用GPU通用計算,惡意軟件可能會有效對抗現(xiàn)有的防御手段。

機會還是威脅GPU通用計算的發(fā)展接下來,讓我們先暫停一下對惡意軟件的恐懼,進入GPU的世界。

GPU通用計算最近幾年來飛速發(fā)展,當GPU本身可編程性和靈活性大大提高后,很多人開始著手探索如何利用GPU架構(gòu)進行大規(guī)模的并行計算,畢竟GPU擁有系統(tǒng)中最為強勁的浮點計算能力,僅僅作為3D計算顯然相當可惜。

但GPU通用計算需要專用API才能在GPU上完美運行。

一般的圖形APIMDlrectX和OpenGL等,都不能很好地進行通用計算。

對傳統(tǒng)GPU來說,無論是GPU本身設(shè)計還是調(diào)用方式都盡可能為GPU需要執(zhí)行的圖形計算優(yōu)化。

因此你如果想利用GPU龐大的計算資源,那些需要計算的數(shù)據(jù)和變量,必須映射為圖形學(xué)對象,算法處理必須被表述為像素和頂點處理的形式,假裝是在進行圖形計算一樣。

這種假裝的形式讓程序員感到很束縛。

因為傳統(tǒng)GPU缺乏方便的數(shù)據(jù)類型,基本的計算函數(shù),以及一個一般化的內(nèi)存訪問模型,使得它對于習慣于工作在傳統(tǒng)編程環(huán)境下的程序員們來說沒有多少吸引力。

進入DirectX10時代后,NVIDIA提出了CUDAfComputeUnifiedDeviceArchitecture)這樣一個相當富有創(chuàng)造力的通用運算API架構(gòu)。

有了這個API之后,程序員就不需要在自己的大腦中映射各種數(shù)據(jù),APl作為溝通橋粱已經(jīng)承擔了數(shù)據(jù)轉(zhuǎn)換、程序編譯等任務(wù)。

這樣一來,GPU就能很好地發(fā)揮計算效能。

與此同時,AMD也提供了對應(yīng)自家GPU產(chǎn)品的通用計算方法,被稱為Stream。

CUDA由一個C語言的極小擴展集和一個運行庫組成,這個運行庫提供的函數(shù)能夠控制GPU,以及設(shè)備專有函數(shù)和相應(yīng)的數(shù)據(jù)。

從相對宏觀的角度看,一個CUDA程序由兩部分組成,一個運行在CPU上,另一個稱之為kernel,是運行于GPU上的并行化部分。

不過GPU上的kernel是不能獨立運行的,它只能依賴于CPU上的父進程調(diào)用,因此,它不能被作為一個獨立的程序直接初始化。

CUDA中的kernel在運行時被劃分為多個線程來執(zhí)行,這些線程被組織成多個線程塊,然后交由GPU的CUDACore--也就是常說的流處理器來執(zhí)行。

在GeForceGPU中,每個處理單元會包含8個SIMD流處理器組。

這8個SIMD流處理器組會根據(jù)一個線程調(diào)度器的調(diào)配,令多個線程塊盡可能高效率、最大化地運作,保障整個GPU的運行效率。

除了編程執(zhí)行外,CUDA還提供了用于在主機和GPU問進行數(shù)據(jù)交換的函數(shù),所有的I/O動作都通過PCI-E總線進行。

不僅如此,存儲器操作還可以通過DMA進行,這樣就可以大幅度提高CPU和GPU工作的并行程度。

在內(nèi)存一致性方面,主機的分頁鎖定內(nèi)存中的一個塊可以被映射到GPU的地址空間里,使得在CPU上運行的普通程序和GPU上運行的kernel能夠直接訪問相同的數(shù)據(jù)。

總的來說,無論是CUDA還是Stream,都是盡可能利用GPU’性能的API。

惡意軟件要運行得有效率,就繞不開這兩個API。

下面就讓我們來看看惡意軟件是如何在GPU上搗鬼的。

上文說過,運行于GPU上的kernel必須依賴CPU上的父進程。

惡意軟件也是如此,那些能利用GPU超強性能的惡意軟件往往包含兩個部分--GPU部分和CPU部分。

說得更細致一些,那就是惡意軟件在執(zhí)行時,會裁入GPU端的設(shè)備代碼,分配CPU和GPU都可以訪問到的一塊內(nèi)存區(qū)域,先初始化數(shù)據(jù),然后調(diào)度GPU代碼開始執(zhí)行。

當然,和所有利用GPU的程序一樣,惡意軟件可以在GPU和CPU之前來回轉(zhuǎn)換,或者單獨讓GPU運行或者只讓CPU運行,也可以同時在GPU和GPU并行執(zhí)行。

當然,惡意軟件編寫者不僅僅看中了GPU的計算能力,他們還需要更自由、不被監(jiān)視的執(zhí)行空間。

恰好,在GPU這里,惡意軟件可以與CUDA庫靜態(tài)鏈接,成為一個獨立的可執(zhí)行程序,這樣一來,惡意軟件就不需要在被感染的系統(tǒng)中安裝額外軟件。

更令人難以接受的是,目前GPU端的代碼執(zhí)行,以及CPU和GPU之間的通訊,都不需要管理員特權(quán)。

這意味著,惡意軟件可以在任何用戶權(quán)限下成功運行它不需要任何權(quán)限,也沒人監(jiān)控它。

這就令惡意軟件隱蔽性更高、更容易被運行起來。

束手無策?惡意軟件如何利用GPU資源前文已經(jīng)描述了惡意軟件感染系統(tǒng)的方式,并且說明了它利用GPU進行并行加速的可能性。

接下來,研究人員將通過實例來模擬這個過程。

在模擬中使用的原型代碼不僅僅證明了惡意軟件利用GPU的可行性,而且已經(jīng)確信對現(xiàn)有的分析檢測系統(tǒng)構(gòu)成了不容忽視的挑戰(zhàn)。

研究人員選擇使用NVIDIACUDA來部署源代碼,當然攻擊者可以很容易地使用其他GPU代碼版本,甚至還能在不同GPU之間進行轉(zhuǎn)換。

目前攻擊者只要掌握了CUDA和Stream,就能基本上掌握100%的GPU惡意軟件攻擊范圍。

還有更令人恐懼的OpenCL是一個跨平臺的GPGPU框架,致力于提供統(tǒng)一的API,如果它得到廣泛引用,那么就連插入不同版本的代碼也完全沒有必要,只要平臺支持OpenCL,就可能被惡意軟件利用你電腦中的GPU加速運行。

1.自脫殼GPU加速前文已經(jīng)簡單介紹了惡意軟件的加殼技術(shù)。

當然,飛機上放炸彈的例子只是用于破壞性的炸彈。

在軟件這里,經(jīng)過多層加殼偽裝后的代碼,需要脫殼解秘,才能變成真正的惡意代碼危害系統(tǒng)。

一般情況下,惡意軟件設(shè)計有自脫殼程序,這個程序在運行時會首先解包被隱藏的代碼,然后將控制權(quán)移交給已在主機內(nèi)存中變形為真實代碼的惡意軟件。

當然,一種惡意軟件可能不止使用一種加殼程序,使用不同的變換方法或者改變解包程序的代碼,攻擊者可以容易地制造同一個惡意軟件的全新變種,還能有效地躲避檢測程序。

目前傳統(tǒng)惡意軟件的自脫殼算法都不特別復(fù)雜,因為要考慮到CPU的計算能力,一旦顯著拖累系統(tǒng),惡意軟件不但容易被察覺,還給自己的運行帶來了不利影響。

但利用GPU強大的并行計算能力后,惡意軟件的作者能夠利用極其復(fù)雜的加密算法給惡意軟件加殼,這些復(fù)雜的加密算法最終將被GPU大規(guī)模并行架構(gòu)快速而有效地處理。

這種高強度的加殼、脫殼操作,為現(xiàn)有的惡意軟件分析檢測系統(tǒng)制造了不容忽視的障礙。

許多反惡意軟件中用于檢測自動脫殼的部分有先天缺陷,沒辦法應(yīng)對基于GPU的自解包惡意軟件。

比如常用的PolyUnpack,在脫殼時依賴單步執(zhí)行和動態(tài)反匯編,但這種技術(shù)在GPU上的動態(tài)和靜態(tài)分析還很不成熟,當然也沒有獲得惡意軟件分析系統(tǒng)的支持。

另外一些反惡意軟件的脫殼系統(tǒng),比如Renovo,依賴于在虛擬機中監(jiān)控惡意軟件的執(zhí)行過程,但顯而易見的是,目前的虛擬機還僅僅只能做到虛擬圖形設(shè)備而已,只能執(zhí)行簡單的3D計算,根本不能執(zhí)行GPU通用計算任務(wù),也沒有這方面的功能。

這樣一來,利用虛擬機監(jiān)控惡意軟件的脫殼也將成為泡影。

當然,還有一些檢測軟件脫殼的技術(shù)比如omniUnDack,這種技術(shù)理論上可能會對惡意軟件在GPU中的操作起到一定的檢測作用,但實際上它在應(yīng)用中還是和虛擬機聯(lián)合部署的,也就是說,實際應(yīng)用中也不能檢測到GPU中的脫殼運行情況。

2.運行時多態(tài)技術(shù)不過,前一頁研究人員的演示可能并不能讓人信服,有人肯定會說,無論加殼脫殼的設(shè)備是CPU還是GPU、無論殼算法多么復(fù)雜,最終都將惡意代碼直接存放在主機內(nèi)存中。

這樣一來只要反惡意軟件掃描系統(tǒng)內(nèi)容,就能很輕松地發(fā)現(xiàn)惡意軟件執(zhí)行意圖并給予相應(yīng)防御措施。

實際上這種情況只能代表部分惡意軟件的運行方法。

正像本文開頭解釋運行時多態(tài)技術(shù)時說的那樣,惡意軟件在運行時,往往不會暴露自己的全部代碼,它可能重新加殼,或者只是按需分配、重復(fù)加殼脫殼那些當前需要的代碼。

不僅如此,惡意軟件開發(fā)人員還會控制解碼部分的粒度,也就是每次解碼的數(shù)最,這個數(shù)量越小,在內(nèi)存中暴露真實代碼的區(qū)域就越小,被偵測的可能性也就越低,也越難以被發(fā)現(xiàn)和防御。

這種代碼分割算法給反惡意軟件帶來了明顯的困擾。

在加入了GPU后,這些重復(fù)脫殼加殼的算法,都使用GPu執(zhí)行,并且整個需要脫殼和加殼的部分代碼也全部存在GPUAc。

CPU的職責僅是在每個部分的代碼執(zhí)行前和執(zhí)行后,將控制權(quán)交還給GPu上的調(diào)度代碼,去做按需的解密變換和加密變換。

也就是說,在執(zhí)行期間,控制權(quán)在CPU和GPU之間不斷地轉(zhuǎn)換。

同樣,GPU和CPU也擁有一個可以同時訪問的內(nèi)存區(qū)域用于保持數(shù)據(jù)一致性和及時刷新。

不僅如此,在這種技術(shù)中,解密密匙被保存在較為保密的、無法從CPU端訪問的CUDA設(shè)備存儲器當中,更有甚者,在每個部分執(zhí)行后的重加密過程中,還可以使用隨機生成的不同密匙,這導(dǎo)致了惡意軟件能夠在存儲器中以不可預(yù)測的方式不斷地發(fā)生變異。

而這些解密方法和變異都是不能被檢測或者預(yù)測到的,將直接導(dǎo)致目前依賴抽取密鑰和相應(yīng)加密解密區(qū)域等方法的反惡意軟件運行失敗。

當然從理論上來說,雖然原始代碼的完整抽取仍然是可能被分析人員做到的,但是如果考慮現(xiàn)有的反調(diào)試技術(shù),這種有GPu從旁協(xié)助的運行時多態(tài)會使得整個逆向工程分析過程變得異常地漫長和艱難。

未來更危險?GPU上惡意軟件的發(fā)展方向在先前的章節(jié)中,研究人員為我們展示了惡意軟件將自己在CPU和GPU之間分離執(zhí)行的具體方式。

雖然現(xiàn)代GPU的性能已經(jīng)足夠強大,但是目前的技術(shù)僅僅使用了其中的一小部分。

未來惡意軟件作者可能會開始廣泛利用GPU的圖形和通用計算能力。

GPU提供了,大規(guī)模并行處理的能力,可以被用來加速CPU負載較重的運算。

例如,一些惡意軟件開發(fā)人員往往使用僵尸網(wǎng)絡(luò)進行大規(guī)模的密碼暴力破解,而這正是GPU通用計算的專長。

通過對GPU通用計算的支持,僵尸電腦的能力可以很容易地獲得延伸,可以使用被感染主機的GPU來分攤密碼破解的負載。

這不僅帶來了整體破解效率的顯著提升,而且還隱藏了正在進行的惡意活動因為GPU的工作無法被實時監(jiān)控,無法鑒別正在運行的代碼,所以難以確認GPU上是否有密碼破解程序的代碼出現(xiàn)。

另外,由于GPU的加入,在這種計算任務(wù)中,CPU幾乎不會占用,所以CPU負載監(jiān)視程序?qū)τ跈z測惡意活動也無能為力。

除了惡意軟件在GPU上的運行外,還有其他的一些危險也可能和GPU掛鉤。

比如GPU的幀緩沖區(qū),屏幕上所顯示的內(nèi)容往往存放在幀緩沖區(qū)內(nèi)。

不過目前系統(tǒng)對幀緩沖區(qū)的訪問沒有施加限制,這可能會帶來一系列攻擊手段。

比如,GPU上運行的惡意代碼能夠周期性地訪問這一緩沖區(qū),將用戶屏幕上出現(xiàn)的私人數(shù)據(jù)收入囊中,這個做法比現(xiàn)有的屏幕截圖的手段更加隱蔽。

而更老練的惡意軟件甚至會試圖在用戶訪問虛假網(wǎng)站時,在屏

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論