【摘 要】ROP攻擊是現(xiàn)在黑客最常用的攻擊技術(shù)手段之一,本文主要介紹了流行的黑客攻擊技巧--ROP的出現(xiàn)原因和它的機(jī)制和和工作機(jī)理,并詳細(xì)介紹了目前國內(nèi)外流行的防御和檢測手段(DROP、ROPDefender、ROPGuard),讓大家對(duì)ROP攻擊和防御有一個(gè)清晰的識(shí)。
【關(guān)鍵詞】ROP攻擊 DROP 防御
1 引言
在傳統(tǒng)的緩沖區(qū)溢出攻擊中[1],攻擊者只需要將函數(shù)返回值改寫為其預(yù)先在堆棧中注入的shellcode的起始地址,即可實(shí)現(xiàn)執(zhí)行任意惡意代碼的目的。傳統(tǒng)注入漏洞的橫行,世界安全研究人員和系統(tǒng)工作者提出一種W⊕X的技術(shù)來對(duì)抗這種攻擊。W⊕X可以簡單概括為:內(nèi)存區(qū)域的數(shù)據(jù)不可以對(duì)用戶既可寫又可執(zhí)行,這意味著攻擊者不可以執(zhí)行自己寫入的數(shù)據(jù),所以W⊕X技術(shù)可以有效阻礙傳統(tǒng)的緩沖區(qū)溢出攻擊。Windows系統(tǒng)中對(duì)應(yīng)的防護(hù)技術(shù)叫做的DEP[2]即Data Execution Prevention,跟W⊕X技術(shù)類似。
但是攻擊者們很快就找到一種可以突破這種防護(hù)措施的技術(shù),叫做return-into-libc[3],libc是Linux系統(tǒng)中的GNU標(biāo)準(zhǔn)C語言庫,由于W⊕X的限制,黑客不能執(zhí)行注入到漏洞進(jìn)程中的代碼,但是發(fā)現(xiàn)可以調(diào)用系統(tǒng)函數(shù)庫中存在的函數(shù),通過特殊的函數(shù)組合,同樣可以達(dá)到控制系統(tǒng)的目的。但是這種攻擊方式存在明顯的不足,一是攻擊者只能調(diào)用libc中函數(shù),攻擊代碼功能受限;二是這種攻擊方式比較容易防御。
2 ROP攻擊原理
在一般程序里面,都包含著大量的返回指令(ret),他們基本位于函數(shù)的尾部,或是函數(shù)中部需要返回的地方。而從函數(shù)開始的地方到ret指令之間的這一段序列稱為二進(jìn)制指令代碼塊(gadgets)。……