国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于指令集隨機(jī)化的代碼注入型攻擊防御技術(shù)

2016-06-08 05:49王奕森謝耀濱趙利軍
關(guān)鍵詞:指令集編譯器攻擊者

王奕森 舒 輝 謝耀濱 趙利軍

(信息工程大學(xué)數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室 河南 鄭州 450001)

?

基于指令集隨機(jī)化的代碼注入型攻擊防御技術(shù)

王奕森舒輝謝耀濱趙利軍

(信息工程大學(xué)數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室河南 鄭州 450001)

摘要針對當(dāng)前代碼注入型攻擊防御機(jī)制容易被繞過的現(xiàn)狀,提出一種基于指令集隨機(jī)化的防御技術(shù)。該技術(shù)制定了指令集隨機(jī)化規(guī)則,利用該規(guī)則改變obj文件中的指令,從而實(shí)現(xiàn)了指令集的隨機(jī)化。外部注入代碼與生成的指令集不兼容,經(jīng)過動態(tài)二進(jìn)制分析平臺翻譯后,程序代碼正常執(zhí)行而注入代碼變?yōu)閬y碼?;谠摷夹g(shù)設(shè)計(jì)了一套原型系統(tǒng),并通過大量實(shí)驗(yàn)表明可以防御大部分代碼注入型攻擊。該技術(shù)打破了緩沖區(qū)溢出漏洞利用所需要的穩(wěn)態(tài)環(huán)境,實(shí)現(xiàn)了對攻擊的主動防御。

關(guān)鍵詞代碼注入型攻擊指令集隨機(jī)化動態(tài)二進(jìn)制分析主動防御

0引言

計(jì)算機(jī)科學(xué)技術(shù)高速發(fā)展,在給人們帶來便利的同時(shí)信息安全的問題困擾著每一位計(jì)算機(jī)用戶[1]。軟件結(jié)構(gòu)越來越復(fù)雜,而軟件中各種漏洞及被惡意植入的后門層出不窮,相對應(yīng)的防御機(jī)制一直處于被動地位,這種不對等的攻防形勢致使互聯(lián)網(wǎng)用戶每天都處在不安全的環(huán)境之中。攻擊者的一般攻擊方法是利用軟件中存在的漏洞去攻擊用戶,在用戶主機(jī)上執(zhí)行惡意植入的惡意代碼,從而完成特定的攻擊行為。

挖掘軟件中潛在的緩沖區(qū)溢出漏洞,對提升信息系統(tǒng)的安全性具有重要意義?,F(xiàn)有的軟件漏洞挖掘技術(shù)中面向源代碼的漏洞挖掘技術(shù)研究最早也最成熟,但面向源代碼的軟件漏洞挖掘技術(shù)仍存在很多不足[2]。由于漏洞不可能被消除,只能通過各種措施進(jìn)行緩解[3]。因此,目前對漏洞攻擊的防御策略主要是基于先驗(yàn)知識的被動防御,而且大多可以被攻擊者繞過,防御效果不理想。其根本原因在于軟件程序的同構(gòu)性和運(yùn)行環(huán)境的穩(wěn)定性,指令集的穩(wěn)定是運(yùn)行環(huán)境穩(wěn)定的重要因素。而隨機(jī)化技術(shù)可以有效打破這種同構(gòu)和穩(wěn)定性的環(huán)境,以異構(gòu)和隨機(jī)的環(huán)境來應(yīng)對未知的攻擊。PaX項(xiàng)目在2001年首先提出了ASLR(address space layout randomization)技術(shù),2003年Gabriela等人提出了指令集隨機(jī)化技術(shù),2010年Georgios等[4]人對ELF文件格式的程序?qū)崿F(xiàn)了指令集隨機(jī)化。Bhatkar提出了數(shù)據(jù)隨機(jī)化技術(shù)。這些技術(shù)有的已經(jīng)在信息安全領(lǐng)域發(fā)揮了巨大作用,如ASLR技術(shù);但有的技術(shù)則沒有被利用,如指令集隨機(jī)化技術(shù)。因?yàn)镚eorgios提出的這套技術(shù)通過對指令進(jìn)行異或加密再使用虛擬機(jī)翻譯執(zhí)行,一方面開銷很大,另一方面該技術(shù)假設(shè)在obj文件中指令與數(shù)據(jù)分離,目前只在ELF文件中基本實(shí)現(xiàn)這種指令集隨機(jī)化。

本文提出一種基于Phoenix編譯器的指令集隨機(jī)化技術(shù),該技術(shù)通過新生成的指令集來隨機(jī)化程序中的指令,為程序提供了一個(gè)隨機(jī)、動態(tài)和不確定的運(yùn)行環(huán)境,實(shí)現(xiàn)了操作碼層次的指令集隨機(jī)化。外部注入代碼與新指令集不兼容,即使成功注入攻擊代碼也無法正常運(yùn)行,可能會導(dǎo)致拒絕服務(wù)但無法得到任何有用信息。實(shí)驗(yàn)表明該技術(shù)可以在低空間和時(shí)間開銷的前提下有效地防御代碼注入型攻擊。目前已經(jīng)利用該技術(shù)實(shí)現(xiàn)了X86架構(gòu)下Windows系統(tǒng)程序的指令隨機(jī)化,該技術(shù)同樣可以適用于X86架構(gòu)下Linux系統(tǒng)程序的指令隨機(jī)化。

1代碼注入型攻擊及防御策略

代碼注入型攻擊[5]是目前最常見而且破壞性很大的攻擊,攻擊者通過一定的方法將惡意代碼注入到用戶的進(jìn)程,并通過溢出等手段改變程序正常的控制流,使程序執(zhí)行惡意代碼從而實(shí)現(xiàn)某種攻擊目的。國內(nèi)外學(xué)者對代碼注入型攻擊及其防御策略做了大量的研究工作[6-8]。目前最常見的代碼注入型攻擊分為棧溢出攻擊和堆溢出攻擊。文獻(xiàn)[9]從C語言程序角度總結(jié)了棧溢出攻擊的三種基本攻擊模式。2000年,Solar designer第一個(gè)實(shí)現(xiàn)了堆溢出利用。2001年,F(xiàn)lake提出TEB的利用方法。2005年,F(xiàn)alliere[10]提出通過RtlDeleteCriticalSection覆蓋堆臨界區(qū)結(jié)構(gòu)的方法繞過防御。2008年,Hawkes[11]提出堆結(jié)構(gòu)覆蓋和LFH bucket/header覆蓋等技術(shù)可以在一定程度上突破現(xiàn)有堆保護(hù)技術(shù)。

對棧溢出攻擊的防御有在關(guān)鍵數(shù)據(jù)和緩沖區(qū)之間加入一個(gè)隨機(jī)的canary字的Stack Guard[12]防御策略及其衍生出的防御策略;構(gòu)建與普通棧隔絕的全局返回地址堆棧的Stack Shield防御策略;在棧幀中引入隨機(jī)長度的填充區(qū)使攻擊者無法準(zhǔn)確定位函數(shù)返回地址或調(diào)用方函數(shù)EBP的防御策略。對堆溢出攻擊的防御[13]有安全摘除鏈表檢測鏈表完整性;在堆頭部增加安全cookie;對PEB/TEB的地址做有限隨機(jī)化;移除lookaside表和FreeList[0];堆塊元數(shù)據(jù)加密;動態(tài)改變堆分配算法;函數(shù)替換與指針編碼等多種堆溢出攻擊防御方法。

這些防御策略有共同的兩個(gè)弱點(diǎn):① 在一定條件下,攻擊者可以采用特定的攻擊手段突破這些防御;② 這些防御都有單一不變性。這就造成防御策略與被防御目標(biāo)程序的綁定存在,攻擊者一旦獲取待攻擊程序的二進(jìn)制代碼,就能夠通過學(xué)習(xí)獲得待攻擊程序采用的所有防御機(jī)制。

2基于指令集隨機(jī)化的代碼注入型攻擊防御

代碼注入型攻擊向程序中注入攻擊代碼,并在軟件漏洞被觸發(fā)時(shí)改變程序控制流執(zhí)行攻擊代碼。代碼注入型攻擊的成功需要有一個(gè)穩(wěn)定的攻擊環(huán)境,模塊基址的改變或指令的變換都會在不同程度上影響攻擊的成功率。本文提出了一種基于指令集隨機(jī)化的代碼注入型攻擊防御思想,該思想是利用隨機(jī)化指令集對obj文件中的指令進(jìn)行隨機(jī)改變,攻擊者不了解這套指令集規(guī)則,使外部注入的代碼與新的指令集不兼容,經(jīng)過動態(tài)二進(jìn)制分析平臺翻譯時(shí)正常代碼被翻譯為可執(zhí)行代碼而惡意代碼則被翻譯為亂碼。與以往的防御策略相比,該防御思想打破了漏洞攻擊所需要的穩(wěn)態(tài)環(huán)境,每次編譯都使用不同的指令集,實(shí)現(xiàn)了防御策略與被防御目標(biāo)的分離,使攻擊者很難攻擊成功。該防御思想的原理如以下公式,其中f為指令隨機(jī)化函數(shù),source為程序源代碼,rand為經(jīng)過隨機(jī)化的程序,f'為動態(tài)二進(jìn)制平臺翻譯指令函數(shù)。惡意代碼沒有進(jìn)過f函數(shù)的轉(zhuǎn)化,直接用f'處理,被翻譯為無用代碼。

f(source) = rand

f′(rand) = source

f′(malcode) = unknown

基于該主動防御思想,本文提出一種修改obj文件的指令集隨機(jī)化技術(shù)。該技術(shù)利用新的指令集隨機(jī)化改變編譯器產(chǎn)生的obj文件中的指令而達(dá)到指令隨機(jī)化的目的。為了準(zhǔn)確定位指令在obj文件中的位置,需要利用Phoenix編譯器在編譯過程中提取出程序的匯編指令信息,并利用該信息與obj文件中代碼段信息進(jìn)行匹配,生成指令隨機(jī)變換規(guī)則,如果匹配成功則為指令加上段偏移從而定位了指令位置。完成所有指令的匹配工作后,對obj中的指令按照所制定的規(guī)則進(jìn)行變換,并將變換后的指令回寫入obj。所有的obj文件經(jīng)過鏈接后生成經(jīng)過隨機(jī)化處理的可執(zhí)行文件,該可執(zhí)行文件需要利用動態(tài)二進(jìn)制分析平臺啟動,在一定指令變換規(guī)則的支持下將程序中經(jīng)過隨機(jī)變換的指令翻譯回正常X86指令并運(yùn)行程序。圖1為指令集隨機(jī)化流程圖。在上述過程中,所用到的關(guān)鍵技術(shù)有源程序匯編指令信息的提?。恢贫ㄖ噶钭儞Q規(guī)則;obj文件解析及指令定位;隨機(jī)化程序執(zhí)行。這些技術(shù)的實(shí)現(xiàn)將在下文進(jìn)行敘述。

圖1 指令集隨機(jī)化流程圖

2.1基于Phoenix的匯編指令提取

匯編指令提取主要是在Phoenix編譯器編譯目標(biāo)程序的后期,即將程序信息寫入obj階段,提取出目標(biāo)程序的匯編指令信息,為下一步定位obj文件中的指令位置做準(zhǔn)備。

Phoenix是微軟提供的一個(gè)編譯器框架,用戶可以通過Phoenix設(shè)計(jì)編譯器及各種工具用于軟件程序的分析、優(yōu)化和測試。源代碼經(jīng)過Phoenix分析,被表示為IR(中間表示,Intermediate Representation)形式,Phoenix編譯器和各種基于Phoenix的工具對程序后期的處理工作都是在IR層次上進(jìn)行的。與其他編譯器不同,Phoenix可以為微軟支持的所有語言和平臺生成二進(jìn)制文件或MSIL代碼。同時(shí)Phoenix提供了豐富的API接口函數(shù),用戶可以利用Phoenix提供的API函數(shù)開發(fā)自己想要的工具。圖2為Phoenix編譯器框架圖。

圖2 Phoenix編譯器框架圖

與其他編譯器相同,Phoenix對源文件進(jìn)行編譯會生成目標(biāo)對象文件(obj文件),為了避免反匯編帶來的不確定性,使指令隨機(jī)化更加準(zhǔn)確,本文提出了在obj文件中進(jìn)行指令隨機(jī)化的方法。為了精確定位指令在obj文件中的位置,需要通過Phoenix提供的API函數(shù)編寫一個(gè)源程序匯編代碼自動化提取插件,在Phoenix后期處理的Emission階段(phase)之后插入一個(gè)匯編代碼提取階段Getasm階段。根據(jù)提取出來的匯編代碼結(jié)合obj文件信息可以準(zhǔn)確定位各條指令的地址。

算法1

input:source, Getasm phase

output:file.asm

1)Compile program with phoenix

2)if FindByName(“Emission”) then do

3)InsertAfter(Getasm);

4)end;

5)Execute Getasm phase

6)if unit is functionunit then do

7)While !insnislast do

8)If insn is realinstruction then do

9)Insn.offset ← get(offset);

10)Insn.opcode ← get(opcode);

11)Insn.asm ← get(asm);

12)file.asm ← Insn;

13)end;

14)end;

算法1利用Phoenix編譯器提取程序的匯編指令,其中FindByName()為找phase函數(shù),IsertAfter()為插入phase函數(shù),兩個(gè)函數(shù)均為Phoenix編譯器提供的API函數(shù),file.asm為存取匯編指令信息的文件。Phoenix對程序分模塊編譯,Getasm為插入的phase,當(dāng)執(zhí)行到Getasm時(shí)開始匯編指令信息提取。算法中結(jié)構(gòu)體Insn的定義如下:

typedef struct asm_insn_info

{

uint32 offset;

uint32 opcode;

string asm;

}Insn;

2.2obj文件解析及指令定位

obj文件為程序經(jīng)過編譯器編譯生成的目標(biāo)文件,包含程序中的指令、數(shù)據(jù)等信息。解析obj文件需要從obj文件中的代碼段提取出段偏移、大小等信息,并結(jié)合已經(jīng)提取出的指令信息定位指令在obj文件中的位置,進(jìn)而根據(jù)變化規(guī)則完成指令隨機(jī)化工作。

指令變換規(guī)則的制定需要滿足以下幾點(diǎn)條件:1) 有效性。指令進(jìn)行隨機(jī)化后,在DynamoRIO進(jìn)行翻譯時(shí)會進(jìn)行語義檢查,如果語義錯(cuò)誤將無法正常執(zhí)行。2) 細(xì)粒度性。隨機(jī)化的粒度應(yīng)盡可能細(xì),粗粒度的防御策略已經(jīng)很多,且容易被攻擊者繞過。3) 開銷可控性。指令集隨機(jī)化要求在增加安全的情況下控制開銷,代價(jià)過大將使工作失去意義。為滿足以上要求,本文采取對指令集分層隨機(jī)化策略,經(jīng)過對IA-32 Inter指令集中1099個(gè)指令進(jìn)行篩選分類,將可隨機(jī)化的指令組成一個(gè)集合ISRInsn。集合ISRInsn中有四個(gè)子集: OnebyteInsn、TwobyteInsn、OperateOnebyte、OperateTwobyte,分別表示單字節(jié)指令、雙字節(jié)指令、操作碼單字節(jié)長度相等指令、操作碼雙字節(jié)長度相等指令。OpercodeOnebyte與OpercodeTwobyte又可按照指令長度分成若干子集。表1為選取的部分隨機(jī)指令分組表。

ISRInsn = { OnebyteInsn,TwobyteInsn,OpercodeOnebyte,OpercodeTwobyte }

表1 部分隨機(jī)指令分組表

目標(biāo)對象文件(.obj文件)中包含了編譯后的機(jī)器指令代碼、數(shù)據(jù),以及鏈接時(shí)所需要的各種信息,這些信息在obj文件中按照屬性的不同以段(segment)的形式進(jìn)行存儲。機(jī)器指令被放在代碼段(.text和.textx),全局變量和局部靜態(tài)變量數(shù)據(jù)被放在數(shù)據(jù)段(.data)。本文通過解析obj文件映像頭和段落頭來獲取段名、段落頭數(shù)以及代碼段的偏移大小等信息,為指令隨機(jī)化做準(zhǔn)備。圖3為指令隨機(jī)變換示意圖。

圖3 指令隨機(jī)變換示意圖

算法2

輸入:選取的隨機(jī)指令、obj文件、asm文件

輸出:isr.config

1) 對指令按不同集合進(jìn)行分組,并存入不同數(shù)組中;

2) 對不同數(shù)組中指令的順序進(jìn)行隨機(jī)化,得到順序隨機(jī)的指令數(shù)組;

3) 對每一組指令進(jìn)行雙雙配對存入一個(gè)結(jié)構(gòu)體,并將所有指令壓入vector容器中,寫入指令規(guī)則rule.config之中;

4) 解析obj文件:將obj文件映射到內(nèi)存之中,根據(jù)obj文件格式讀取obj文件中.text段與textx段,提取段名、段大小和段偏移等信息,分別存入兩個(gè)鏈表List text與List textx;

5) 讀取.asm文件,并提取text、textx段中指令的偏移、操作碼和匯編指令,存入結(jié)構(gòu)體并壓入vector容器Instruction_all中;

6) 將Instruction_all中的指令與鏈表中節(jié)點(diǎn)進(jìn)行匹配,若匹配上則為指令加上段偏移地址,若未匹配則進(jìn)行下一個(gè)節(jié)點(diǎn)匹配,直至所有節(jié)點(diǎn)都被匹配,所有指令匹配結(jié)束壓入一個(gè)map中,并將結(jié)果寫入文件;

7) 在obj中按照制定的隨機(jī)變換規(guī)則對選取的指令進(jìn)行隨機(jī)變換,并將隨機(jī)變換的指令回寫入obj文件。

2.3隨機(jī)化程序執(zhí)行

經(jīng)過隨機(jī)化處理的程序不能直接執(zhí)行,需要利用動態(tài)二進(jìn)制分析平臺將被隨機(jī)化的指令動態(tài)翻譯回正常的X86指令。本文利用了DynamoRIO平臺。

DynamoRIO可以在指令級別上對程序動態(tài)分析,采用代碼緩存技術(shù)將程序代碼拷貝到代碼緩存,進(jìn)而對目標(biāo)程序模擬執(zhí)行,在執(zhí)行過程中修改目標(biāo)程序的二進(jìn)制代碼,達(dá)到指令級分析的目的。本文對目標(biāo)程序進(jìn)行指令級插樁,在目標(biāo)程序的地址范圍內(nèi)讀取基本塊中的每一條指令進(jìn)行判斷,如果是經(jīng)過變換的指令則按照規(guī)則翻譯回正常指令,如果不是則讀取下一條指令,直到所有指令被翻譯回正常指令。

隨機(jī)化程序執(zhí)行流程如下:

1) 利用動態(tài)二進(jìn)制平臺啟動目標(biāo)程序;

2) 讀取隨機(jī)指令變換規(guī)則;

3) 主模塊加載時(shí)(event_module_load)獲取主模塊的起始和結(jié)束地址;

4) 讀取當(dāng)前基本塊的當(dāng)前指令,根據(jù)指令操作數(shù)判斷該指令是否為指令變換規(guī)則中的指令,如果是則讀取出變換目標(biāo)指令操作碼,如果不是則讀取下一條指令;

5) 根據(jù)目標(biāo)指令操作碼創(chuàng)建目標(biāo)指令,并獲取目標(biāo)指令的源操作數(shù)與目的操作數(shù);

6) 進(jìn)行指令替換;

7) 循環(huán)執(zhí)行(4),直至所有指令被翻譯為正常指令。

2.4系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

為驗(yàn)證該技術(shù)的可行性,本文設(shè)計(jì)了一套原型系統(tǒng)。圖4為系統(tǒng)設(shè)計(jì)原理圖。該系統(tǒng)主要分為四個(gè)模塊:信息提取模塊、指令隨機(jī)變換模塊、隨機(jī)策略支撐模塊、動態(tài)翻譯模塊。

圖4 系統(tǒng)設(shè)計(jì)原理圖

3實(shí)驗(yàn)過程及結(jié)果分析

通過實(shí)驗(yàn)驗(yàn)證原型系統(tǒng)的有效性,并分析經(jīng)過隨機(jī)化后程序的時(shí)間開銷與空間開銷。實(shí)驗(yàn)條件:兩臺裝有XP系統(tǒng)的虛擬機(jī)A、B橋接互連。A主機(jī)用作攻擊者主機(jī),安裝metasploit 3和python2.7;B主機(jī)用作被攻擊者的主機(jī),安裝DynamoRIO。

實(shí)驗(yàn)一對Miniweb植入shellcode打開計(jì)算器

在Miniweb源碼中構(gòu)造一個(gè)緩沖區(qū)溢出漏洞,并用metasploit構(gòu)造攻擊腳本進(jìn)行攻擊。配置metasploit攻擊載荷參數(shù):windows/exec(執(zhí)行任意的cmd命令),測試其啟動計(jì)算器的功能。執(zhí)行exploit命令,Miniweb程序被關(guān)閉,彈出了計(jì)算器窗口,攻擊成功。經(jīng)過系統(tǒng)防護(hù)后,用DynamoRIO平臺運(yùn)行,Miniweb崩潰。

實(shí)驗(yàn)二利用Miniweb上傳木馬測試

使用相同的攻擊腳本對Miniweb進(jìn)行攻擊。生成灰鴿子服務(wù)程序,在meterpreter提示符下完成灰鴿子服務(wù)端的上傳,執(zhí)行木馬程序。打開灰鴿子控制端程序,點(diǎn)擊自動上線,攻擊成功,退出meterpreter。使用系統(tǒng)的防護(hù)措施后,攻擊失敗。

圖5、圖6為Miniweb經(jīng)過指令隨機(jī)化處理前后指令片段對比,經(jīng)過隨機(jī)化處理后Miniweb程序的指令按照指令變換規(guī)則進(jìn)行了隨機(jī)變換。

圖5 Miniweb指令隨機(jī)化前指令片段

圖6 Miniweb指令隨機(jī)化后指令片段

結(jié)果分析:

經(jīng)過原型系統(tǒng)隨機(jī)化過的軟件,其安全性能得到了很大的提高,可以防御絕大多數(shù)的代碼注入型攻擊,該系統(tǒng)為軟件提供了一個(gè)隨機(jī)、多態(tài)和不確定的運(yùn)行環(huán)境,打破了各類漏洞利用所需要的穩(wěn)態(tài)環(huán)境,實(shí)現(xiàn)了一種主動式的軟件抗攻擊技術(shù)。通過大量測試表明該系統(tǒng)能夠防御大多數(shù)代碼注入型攻擊,表2為部分測試結(jié)果。經(jīng)過隨機(jī)化處理后軟件的時(shí)間開銷與空間開銷會相應(yīng)增大,圖7、圖8為四種軟件經(jīng)過隨機(jī)化處理前后時(shí)間和空間開銷對比圖。以Miniweb為例進(jìn)行說明,Miniweb程序指令條數(shù)在四種軟件中最多,其被隨機(jī)化的指令條數(shù)最多,在動態(tài)解釋執(zhí)行時(shí)翻譯指令消耗時(shí)間較長,所以時(shí)間和空間開銷都較大。Miniweb在執(zhí)行cmd和上傳木馬兩種不同的攻擊時(shí),上傳木馬的攻擊行為較為復(fù)雜,其時(shí)間開銷與空間開銷較大。由此可知,隨機(jī)化后軟件的開銷會受其指令條數(shù)的影響,指令條數(shù)多的軟件,其時(shí)間空間開銷較大。同一軟件受到的攻擊行為越復(fù)雜,其時(shí)間空間開銷越大??傮w來說,增大的開銷在軟件運(yùn)行可接受的范圍內(nèi)。

表2 部分實(shí)驗(yàn)測試結(jié)果

注:運(yùn)行時(shí)間、內(nèi)存消耗效率是指本系統(tǒng)處理后的軟件運(yùn)行時(shí)間、內(nèi)存消耗值與未經(jīng)本系統(tǒng)處理軟件運(yùn)行時(shí)間、內(nèi)存消耗值的比值

圖7 隨機(jī)化前后時(shí)間開銷對比

圖8 隨機(jī)化前后空間開銷對比

4結(jié)語

本文提出了一種指令集隨機(jī)化技術(shù),該技術(shù)在編譯層對程序指令進(jìn)行隨機(jī)化改變,為軟件構(gòu)建出一個(gè)隨機(jī)、動態(tài)和不確定的運(yùn)行環(huán)境,打破了各類漏洞利用所需要的穩(wěn)態(tài)環(huán)境,對代碼注入型攻擊不再關(guān)心代碼如何注入到進(jìn)程,而是阻止惡意代碼被執(zhí)行從而對軟件進(jìn)行防護(hù)。設(shè)計(jì)并實(shí)現(xiàn)了一套原型系統(tǒng),并通過大量實(shí)驗(yàn)證明,該技術(shù)可以成功防御大部分代碼注入型攻擊,改變了被動防御局面實(shí)現(xiàn)了主動防御。

參考文獻(xiàn)

[1] 國家互聯(lián)網(wǎng)應(yīng)急中心.互聯(lián)網(wǎng)網(wǎng)絡(luò)安全熱點(diǎn)問題分析[J].互聯(lián)網(wǎng)天地,2013(5):85-93.

[2] Balakrishnan G,Reps T.Wysinwyx:What you see is not what you execute[J].ACM Transactions on Programming Languages and Systems (TOPLAS),2010,32(6):23.

[3] 魏強(qiáng),韋韜,王嘉捷.軟件漏洞利用緩解及其對抗技術(shù)演化[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2011,51(10):1274-1280.

[4] Portokalidis G,Keromytis A D.Fast and practical instruction-set randomization for commodity systems[C]//Proceedings of the 26th Annual Computer Security Applications Conference.ACM,2010:41-48.

[5] Ray D,Ligatti J.Defining code-injection attacks[C]//ACM SIGPLAN Notices.ACM,2012,47(1):179-190.

[6] Son S,McKinley K S,Shmatikov V.Diglossia:detecting code injection attacks with precision and efficiency[C]//Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security.ACM,2013:1181-1192.

[7] Younan Y,Joosen W,Piessens F.Runtime countermeasures for code injection attacks against C and C++ programs[J].ACM Computing Surveys (CSUR),2012,44(3):17.

[8] Snow K Z,Krishnan S,Monrose F.SHELLOS:Enabling Fast Detection and Forensic Analysis of Code Injection Attacks[C]//USENIX Security Symposium,2011.

[9] Jiang J,Zhang L,Jin T,et al.Dynamic buffer overflow prevention based on k circular random sequence[J].Journal of Tongji University.Natural Science,2010,38(6):917-924.

[10] Falliere N.A new way to bypass Windows heap protections[J].Security Focus White Paper,2005.

[11] Hawkes B.Attacking the Vista Heap[C].Blackhat USA.(Aug.2008),2008.

[12] Cowan C,Pu C,Maier D,et al.StackGuard:Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks[C]//Usenix Security,1998,98:63-78.

[13] Li L,Just J E,Sekar R.Address-space randomization for windows systems[C]//Computer Security Applications Conference,2006.ACSAC’06.22nd Annual. IEEE,2006:329-338.

DEFENSE TECHNOLOGY AGAINST CODE-INJECTION ATTACKS BASED ON INSTRUCTION SET RANDOMISATION

Wang YisenShu HuiXie YaobinZhao Lijun

(StateKeyLaboratoryofMathematicalEngineeringandAdvancedComputing,PLAInformationEngineeringUniversity,Zhengzhou450001,Henan,China)

AbstractFor current status quo that code-injection attack defense mechanisms are easily bypassed by attackers, we proposed a new defense technology which is based on instruction set randomisation. In this technology, we drew up randomisation rules of instruction set, that could be used to change the instructions in objs files so as to implement the randomisation of instruction set. The external injection codes are not compatible with the generated instruction set, when translated by the dynamic binary analysis platform, the program codes can be executed as usual but the injected codes become the disordered codes. Based on this technology we designed a set of prototype systems, and demonstrated through a large number of experiments that it was able to defense most of code-injection attacks. This technology breaks through the steady environment needed by exploiting the buffer overflow vulnerabilities and achieves the proactive defense against attacks.

KeywordsCode-injection attackInstruction set randomisationDynamic binary analysisProactive defense

收稿日期:2014-12-04。國家高技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2009 AA012200)。王奕森,碩士生,主研領(lǐng)域:信息安全。舒輝,教授。謝耀濱,博士生。趙利軍,碩士生。

中圖分類號TP309.1

文獻(xiàn)標(biāo)識碼A

DOI:10.3969/j.issn.1000-386x.2016.05.077

猜你喜歡
指令集編譯器攻擊者
基于Kubernetes的RISC-V異構(gòu)集群云任務(wù)調(diào)度系統(tǒng)①
機(jī)動能力受限的目標(biāo)-攻擊-防御定性微分對策
3DNow指令集被Linux淘汰
基于相異編譯器的安全計(jì)算機(jī)平臺交叉編譯環(huán)境設(shè)計(jì)
正面迎接批判
實(shí)時(shí)微測量系統(tǒng)指令集及解析算法
Microchip為MPLAB XC系列專業(yè)版編譯器推出低成本可續(xù)訂包月許可證
有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
什么是AMD64
通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)