• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      利用虛擬內(nèi)存快照檢測惡意代碼

      2015-03-10 08:10:28徐定強
      關(guān)鍵詞:分析器快照調(diào)用

      徐定強

      (廣東松山職業(yè)技術(shù)學(xué)院,廣東韶關(guān)512000)

      利用虛擬內(nèi)存快照檢測惡意代碼

      徐定強

      (廣東松山職業(yè)技術(shù)學(xué)院,廣東韶關(guān)512000)

      據(jù)美國計算機安全緊急響應(yīng)小組US-CERT數(shù)據(jù)庫消息,緩沖區(qū)溢出已經(jīng)成為最關(guān)切且極為常見的軟件漏洞之一。攻擊者經(jīng)常利用這些漏洞注入惡意的shellcode以控制目標(biāo)主機。不同于具有獨立功能的惡意軟件,惡意shellcode是作為正常輸入數(shù)據(jù)偽裝在二進制代碼片段中的。它們被注入到目標(biāo)進程的虛擬內(nèi)存,并劫持進程控制流;更重要的是,它們能夠在制造破壞之前,可以實現(xiàn)安全隱藏。當(dāng)前,已提出了許多針對惡意shellcode的入侵檢測方法,從檢測的時間上看,大致分為兩大類:其一,在處理輸入數(shù)據(jù)的過程中進行檢測,簡稱DDC;其二,處理輸入數(shù)據(jù)之間進行檢測,簡稱DBC。本文將介紹怎么利用這兩種方法來檢測惡意Shellcode。

      虛擬內(nèi)存;Shellcode;DBC

      一、基于DBC技術(shù)的檢測介紹

      在入侵檢測方法分類中,輸入數(shù)據(jù)在目標(biāo)進程對其處理(執(zhí)行)之前對它們進行檢測,其大致流程如圖1所示。我們對這一類檢測又進行了細分:靜態(tài)分析和動態(tài)分析。

      圖1 基于DBC技術(shù)的檢測流程

      1.靜態(tài)分析

      首先對輸入數(shù)據(jù)進行反匯編,然后通過代碼級的模式分析與匹配進行篩選。模式可以是復(fù)雜的簽名或根據(jù)已知的惡意代碼進行簡單啟發(fā)式自學(xué)習(xí)。Toth和kruegel在文章《AccurateBufferOverflowDetectionviaAbstract PayloadExecution》中通過檢測NOPsleds的方式來鑒定exploit代碼。然而,攻擊者可不采用nopsleds技術(shù)或者使用多態(tài)(polymorphic)技術(shù)繞過這種檢測(譯注:NOP sleds即當(dāng)shellcode不能準(zhǔn)確定位時,為了使執(zhí)行路徑“滑行”到shellcode而填充的一串無意義的指令串,通常為一串連續(xù)的NOP指令)。當(dāng)然總體而言,靜態(tài)分析還是有效的,只是在檢測的準(zhǔn)確性和完整性上存在一定的局限;因為二進制混淆技術(shù)可有效阻擾代碼的模式匹配分析。

      2.動態(tài)分析

      通過網(wǎng)絡(luò)仿真技術(shù),將輸入數(shù)據(jù)反匯編成一些可能的執(zhí)行匯編代碼鏈,然后模擬執(zhí)行每個鏈。在仿真過程中,若任何一鏈存在惡意行為,則整個數(shù)據(jù)塊都被列為惡意代碼。盡管網(wǎng)絡(luò)仿真相比靜態(tài)分析能實現(xiàn)更好的完整性檢測,它依舊容易擺脫。其問題在于它沒有足夠的進程上下文信息,故必須在其初始化和仿真執(zhí)行時進行假定。

      二、基于DDC的檢測技術(shù)介紹

      DDC的檢測技術(shù)是在進程處理輸入數(shù)據(jù)的過程中進行檢測,若惡意的運行行為被檢測到,進程會執(zhí)行并發(fā)出警報。輸入的數(shù)據(jù)及其目標(biāo)進程狀態(tài)日志會被記錄下來以作進一步分析。流跟蹤(Flowtracking)技術(shù)使用一種基于感染的方式來檢測輸入信息是否為惡意數(shù)據(jù)。通過地址空間隨機化可有效地抵御利用內(nèi)存錯誤的攻擊方式。操作系統(tǒng)擴展方式即在系統(tǒng)內(nèi)核或庫文件中插入一個檢查點以確定調(diào)用的脆弱庫函數(shù)是否安全??傮w而言,DDC檢測方式是一種基于廣泛性使用進程上下文的良好完整性檢測,但其檢測效率偏低。

      與DDC檢測相比,DBC檢測方法則具有較高的檢測效率,但它在檢測的全面性上又不如DDC。這是因為DBC檢測方法沒有使用目標(biāo)進程在虛擬內(nèi)存中的運行時信息。

      三、新DBC檢測方法

      1.系統(tǒng)設(shè)計

      進程在處理輸入數(shù)據(jù)之前,系統(tǒng)首先對目標(biāo)進程虛擬內(nèi)存快照處理,然后將快照信息作為輸入?yún)?shù),送入DBC檢測系統(tǒng),大致流程如圖2所示。此時,DBC檢測器存在新的數(shù)據(jù)信息,即目標(biāo)進程在虛擬內(nèi)存的運行時信息。虛擬內(nèi)存快照記錄了一個進程的虛擬內(nèi)存當(dāng)前狀態(tài),包括目標(biāo)進程的地址空間和寄存器值。此系統(tǒng)中快照以下面兩種方式使用:

      (1)初始化虛擬執(zhí)行環(huán)境。在目標(biāo)進程處理數(shù)據(jù)之前的瞬間,其控制流即被定位到我們的系統(tǒng)。此時已經(jīng)獲取到虛擬內(nèi)存快照,并立刻激活檢測程序,同時初始化輸入數(shù)據(jù)被執(zhí)行和監(jiān)控的虛擬環(huán)境??煺沼脕沓跏蓟颂摂M環(huán)境并提供兩個好處。其一,快照對觀察輸入數(shù)據(jù)的真實行為至關(guān)重要,因為它們詮釋了真實的執(zhí)行流。為了準(zhǔn)確地揭露shellcode的行為,此環(huán)境盡可能地模仿指定進程處理輸入數(shù)據(jù)的過程。在惡意shellcode里,進程狀態(tài)可用來重定位執(zhí)行流。若沒有與進程相關(guān)的虛擬內(nèi)存信息,shellcode的執(zhí)行流可能會發(fā)生改變或者甚至被中斷。其二,虛擬內(nèi)存快照很集中,容易獲取,而且系統(tǒng)的虛擬環(huán)境是輕量型的。在已存在的DBC檢測方法中,很難在檢測系統(tǒng)中獲取到真實的shellcode行為,因為其虛擬內(nèi)存信息要么被消耗要么被忽略了。

      圖2 獲取快照信息,將其輸入到目標(biāo)進程的檢測器中

      (2)方便基于系統(tǒng)調(diào)用的檢測。虛擬內(nèi)存快照可以讓系統(tǒng)及時發(fā)現(xiàn)shellcode的其中一種行為,即系統(tǒng)調(diào)用的觸發(fā),這對檢測而言極為重要。惡意shellcode借助系統(tǒng)調(diào)用以切換到內(nèi)核模式運行操作系統(tǒng)相關(guān)操作。無論其偽裝性多好,它總會使用系統(tǒng)調(diào)用來啟動攻擊行為。不同的系統(tǒng)調(diào)用是通過系統(tǒng)調(diào)用號和參數(shù)來區(qū)分的,其存放在寄存器中。如在IA-32體系架構(gòu)中,系統(tǒng)調(diào)用號存放在eax中,其函數(shù)參數(shù)則存放在ebx、ecx、edx、esi、edi等寄存器中。已存在的DBC檢測方法包含靜態(tài)方法和動態(tài)方法,都不可能在檢測中跟蹤到系統(tǒng)調(diào)用,因為它們?nèi)狈Ρ匾募拇嫫餍畔?。故使用虛擬內(nèi)存快照,我們可準(zhǔn)確鑒別其使用的系統(tǒng)調(diào)用,以提高檢測精度。下面將根據(jù)其工作流來介紹系統(tǒng)的整個設(shè)計。

      2.系統(tǒng)架構(gòu)

      下面將介紹整個系統(tǒng)架構(gòu)的設(shè)計并提出它的關(guān)鍵模塊——shellcode分析器。

      (1)結(jié)構(gòu)。整個系統(tǒng)由三個模塊組成,如圖3所示。第一個模塊為協(xié)議分析器,可從輸入信息中萃取出頭部信息,并可依照上層的需求將payload劃分成多個子payload。第二個模塊為shellcode分析器,主要負責(zé)借助虛擬內(nèi)存快照檢測惡意shellcode;其可接收來自協(xié)議分析器、外部文件或者同一主機內(nèi)與本地進程間通信的另一個子進程的sub-payloads。第三個模塊為上下文信息的提供者(ContextInformationProvider),充當(dāng)模擬的執(zhí)行環(huán)境和真實環(huán)境之間的一個接口。

      圖3 系統(tǒng)整體設(shè)計

      (2)關(guān)鍵模塊——shellcode分析器。shellcode分析器結(jié)構(gòu)如圖4所示。此模塊由指令解密器、指令仿真器、惡意行為檢測器、內(nèi)存仿真系統(tǒng)以及一整套模擬寄存器。指令解密器不斷將緩沖區(qū)內(nèi)容翻譯成指令,并發(fā)送到仿真器。仿真器接收到每一條指令后,它會仿真出一個執(zhí)行環(huán)境,如為內(nèi)存仿真系統(tǒng)及寄存器提供運行時虛擬環(huán)境。此環(huán)境被虛擬內(nèi)存快照實例化,在仿真過程中,虛擬內(nèi)存或寄存器的訪問都被直接定位到內(nèi)存仿真系統(tǒng)或者寄存器中。

      圖4 shellcode分析器設(shè)計結(jié)構(gòu)

      3.工作流分析

      Shellcode分析器的工作流程見圖5。從輸入數(shù)據(jù)的每個位置看,Shellcode分析器使用虛擬內(nèi)存快照來模擬解碼器指令的執(zhí)行順序。快照對觀測輸入數(shù)據(jù)的真實行為提供方便,以解釋真實執(zhí)行流。ShellcodeAnalyzer()函數(shù)存在兩個輸入?yún)?shù):其一為base_address,即將被分析的輸入數(shù)據(jù)起始地址;其二為base_size,即輸入數(shù)據(jù)大小。由快照提供的精確虛擬內(nèi)存信息可確保Shellcode的執(zhí)行流不被中斷。若執(zhí)行的子序列為惡意Shellcode,則其使用的所有指令都會在執(zhí)行流的仿真中檢測到,包括Shellcode本身的、由原始消息產(chǎn)生的及其加載到目標(biāo)進程地址空間的庫文件等。故在Shellcode分析器內(nèi)使用虛擬內(nèi)存快照進行仿真可用來準(zhǔn)確觀測多形的變化的Shellcodes及其在群攻擊中使用的Shellcode。

      圖5 Shellcode工作流程代碼

      hellcode分析器的核心函數(shù)為MaliciousInstruction-Seq(),此函數(shù)可檢測一惡意指令序列。惡意指令序列的工作過程由上面代碼的14~34行給出。函數(shù)一開始即使用虛擬內(nèi)存快照初始化仿真環(huán)境,然后執(zhí)行一個while循環(huán)以仿真指令序列的執(zhí)行,直到發(fā)生以下錯誤:其一,檢測到惡意行為;其二,遇到非法指令或特權(quán)指令;其三,內(nèi)存非法訪問;其四,已執(zhí)行指令的數(shù)量超過了上限。

      MaliciousInstructionSeq()函數(shù)當(dāng)遇到條件2和4或者MALICIOUS_SEQUENCE時,則返回BENIGN_SEQUE NCE。在Linux和MSWindows系統(tǒng)里,并不是所有系統(tǒng)調(diào)用都會危害目標(biāo)主機的安全,這依賴于系統(tǒng)調(diào)用號和存儲在寄存器中的參數(shù)。因為快照,系統(tǒng)調(diào)用號和其參數(shù)可準(zhǔn)確獲取,此時即可確定當(dāng)前系統(tǒng)調(diào)用是否會危害主機安全。例如,Linux中的11號系統(tǒng)調(diào)用execve函數(shù),用于執(zhí)行某一程序。在指令的仿真中,若其為系統(tǒng)調(diào)用指令,且模擬寄存器eax值為11,則系統(tǒng)調(diào)用號為11。在校驗存儲在其他模擬寄存器中的參數(shù)后,若其第一個參數(shù)為“/bin/sh",則我們可推斷此指令具有一定的危害性,因為其作用是試著打開一個root權(quán)限的shell。此案例中,系統(tǒng)調(diào)用指令將會被列為惡意系統(tǒng)調(diào)用。

      [1]白南石.關(guān)于虛擬內(nèi)存的一點理解[J].科技信息,2010(27).

      [2]王穎,李祥和,關(guān)龍,崔寶江.Shellcode攻擊與防范技術(shù)[J].計算機工程,2010(18).

      [3]董鵬程,康緋,舒輝.一種Shellcode動態(tài)檢測與分析技術(shù)[J].小型微型計算機系統(tǒng),2013(7).

      TN

      A

      1673-0046(2015)4-0167-03

      猜你喜歡
      分析器快照調(diào)用
      EMC存儲快照功能分析
      天津科技(2022年5期)2022-05-31 02:18:08
      核電項目物項調(diào)用管理的應(yīng)用研究
      酒精分析器為什么能分辨人是否喝過酒
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      多邊形電極線形離子阱質(zhì)量分析器的結(jié)構(gòu)與性能
      應(yīng)用于詞法分析器的算法分析優(yōu)化
      創(chuàng)建磁盤組備份快照
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      數(shù)據(jù)恢復(fù)的快照策略
      一張“快照”搞定人體安檢
      九龙城区| 遂川县| 抚远县| 阜新| 吉林省| 沙洋县| 宜丰县| 叶城县| 雅江县| 绍兴县| 宣城市| 东丽区| 双桥区| 营口市| 乐昌市| 平塘县| 海晏县| 肇州县| 青神县| 竹溪县| 天峻县| 东至县| 辛集市| 新安县| 山阳县| 明光市| 西林县| 南雄市| 饶阳县| 尤溪县| 敦煌市| 福建省| 南召县| 革吉县| 黄大仙区| 永川市| 崇左市| 美姑县| 平利县| 乌兰县| 遂昌县|