1. 程式人生 > 其它 >安芯網盾:高階威脅之ROP攻擊篇——利用記憶體破壞型漏洞的一種常用技術,rop攻擊的程式主要使用棧溢位的攻擊方法

安芯網盾:高階威脅之ROP攻擊篇——利用記憶體破壞型漏洞的一種常用技術,rop攻擊的程式主要使用棧溢位的攻擊方法

安芯網盾:高階威脅之ROP攻擊篇 安芯網盾  2021-10-26 11:21:28 4130

在資訊保安的江湖,始終存在著兩個派系:攻擊方和防守方。攻擊方總想嚐盡一切辦法去突破防守方的防線,防守方則始終嚴防死守、做好安全防禦、力保防線不失。而攻防博弈的過程是不對等的,攻擊方一旦發現安全漏洞,便可以穿越防線、發起攻擊;而防守方需做好全面防線的安全,當遺漏或者被“隱蔽者”欺騙進入都可能被攻破。

諸如ROP攻擊,幾乎90%的基於漏洞利用的軟體攻擊在攻擊鏈中使用惡意該技術,同緩衝區程式碼執行、格式化字串漏洞攻擊不同,它利用了程式碼複用技術,是一種全新的攻擊方式。那麼,對它如何破呢?

 

ROP攻擊被利用緣由
面向返回程式設計(Return Oriented Programming, ROP)是在利用由記憶體損壞問題引起的安全漏洞時經常使用的一種技術。它允許攻擊者在存在安全防禦(如可執行空間保護和程式碼簽名)的情況下執行程式碼。ROP可用於規避地址空間佈局隨機化(ASLR)和DEP。當使用ROP時,攻擊者在函式返回之前使用它對堆疊的控制來將程式碼執行到程式中的其他位置。除了在非常堅固的二進位制檔案上,攻擊者可以很容易地找到位於固定位置(繞過ASLR)和可執行(繞過DEP)的部分程式碼。此外,將幾個有效負載連結起來以實現(幾乎)任意程式碼執行是相對簡單的。ROP已成為利用記憶體破壞型漏洞的一種更常用的技術。

在這種技術中,攻擊者獲得對呼叫堆疊的控制來劫持程式控制流,然後執行精心選擇的機器指令序列,這些指令序列已經存在於機器的記憶體中,稱為“gadget”。每個小工具(一系列以跳轉指令結尾的彙編程式碼)通常以返回指令結束,並位於現有程式和/或共享庫程式碼中的子例程中。這些小工具連線在一起,使攻擊者能夠對使用防禦系統的機器執行任意操作,從而挫敗更簡單的攻擊。

 

ROP攻擊流程
前面我們講到,ROP是利用記憶體破壞型漏洞的一種常用技術,“不知攻焉知防”,瞭解ROP攻擊流程才能更針對性的提出解決措施。

圖1 ROP攻擊流程

如圖1所示,攻擊者利用特定程式與記憶體相關的漏洞(例如,緩衝區溢位)並將堆疊指標(ESP)移動到第一個返回地址。

在步驟2中,通過從堆疊中彈出返回地址1。將執行重定向到第一個小工具。該gadget被另一個返回指令終止,該指令從堆疊中彈出返回地址2(步驟3),並將執行重定向到下一個小工具(步驟4)。每個小工具都以這種方式逐個執行,直到攻擊者達到他的目標。

 

ROP攻擊的防範
由於rop攻擊的程式主要使用棧溢位的攻擊方法,實現程式控制流的劫持。因此棧溢位漏洞的防護是阻擋ROP攻擊最根源性的方法。如果解決了棧溢位問題,ROP攻擊將會在很大程度上受到抑制。記憶體保護技術可以第一時間發現並防禦此類緩衝區溢位漏洞的攻擊,更好的解決ROP攻擊問題。

基於記憶體保護技術,安芯網盾研發設計了智慧記憶體保護系統,使用創新的硬體虛擬化技術、記憶體行為分析技術,把安全產品的防護能力從應用層、系統層下沉到硬體虛擬化層,通過細粒度的監控記憶體讀、寫、執行行為,可實時檢測記憶體中存在的堆噴射、堆疊溢位、記憶體資料覆蓋、shellcode執行等異常行為,防止高階的堆疊溢位攻擊

,防止攻擊者從已有的庫或可執行檔案中提取指令片段,攻擊惡意程式碼。一旦檢測這類異常行為,實時攔截並阻斷漏洞利用過程,即使不安裝補丁依然可以起到防護作用,從而解決系統本身脆弱性問題。

網路攻擊時刻在變化,針對此類威脅,應及時做好安全防禦!