DOP是一種針對數據流的非控制數據攻擊方式,核心思想是用各種各樣的內存行為來模擬相應操作,這種攻擊類似于傳統的ROP以返回地址為目標的攻擊,但ROP攻擊只能用來實現信息泄露或者是提權,其本身不能實現復雜的操作。DOP證明了非控制數據攻擊本身就能實現圖靈完備的攻擊。DOP攻擊雖然顯示出了其潛在的危害性,但目前對針對數據流的攻擊還知之甚少,長久以來該攻擊手段可實現的攻擊目標一直被認為是有限的。
類似于ROP,DOP攻擊有以下兩點不同:
DOP的gadgets只能使用內存來傳遞操作的結果,而ROP的gadgets可以使用寄存器。
DOP的gadgets必須符合控制流圖(CFG),不能發生非法的控制流轉移,而且無需一個接一個的執行。而ROP的gadgets必須成鏈,順序執行。
DOP攻擊構造步驟如下:
從目標程序中定位發生內存錯誤的函數,然后尋找包含該函數的調度器,收集用于攻擊的gadgets。
以預期的惡意MINDOP操作作為模板,每個MINDOP操作可以通過相應的功能類別的任何gadgets來實現。可以根據優先級來進行選擇。
一旦我們得到了實現所需的功能的gadgets,接下來要做的就是驗證每個拼接。構造輸入到程序,觸發內存錯誤,激活gadgets。如果攻擊不成功,我們回滾到步驟2,選擇不同的gadgets,并嘗試再次拼接。
回答所涉及的環境:聯想天逸510S、Windows 10。
DOP是一種針對數據流的非控制數據攻擊方式,核心思想是用各種各樣的內存行為來模擬相應操作,這種攻擊類似于傳統的ROP以返回地址為目標的攻擊,但ROP攻擊只能用來實現信息泄露或者是提權,其本身不能實現復雜的操作。DOP證明了非控制數據攻擊本身就能實現圖靈完備的攻擊。DOP攻擊雖然顯示出了其潛在的危害性,但目前對針對數據流的攻擊還知之甚少,長久以來該攻擊手段可實現的攻擊目標一直被認為是有限的。
類似于ROP,DOP攻擊有以下兩點不同:
DOP的gadgets只能使用內存來傳遞操作的結果,而ROP的gadgets可以使用寄存器。
DOP的gadgets必須符合控制流圖(CFG),不能發生非法的控制流轉移,而且無需一個接一個的執行。而ROP的gadgets必須成鏈,順序執行。
DOP攻擊構造步驟如下:
從目標程序中定位發生內存錯誤的函數,然后尋找包含該函數的調度器,收集用于攻擊的gadgets。
以預期的惡意MINDOP操作作為模板,每個MINDOP操作可以通過相應的功能類別的任何gadgets來實現。可以根據優先級來進行選擇。
一旦我們得到了實現所需的功能的gadgets,接下來要做的就是驗證每個拼接。構造輸入到程序,觸發內存錯誤,激活gadgets。如果攻擊不成功,我們回滾到步驟2,選擇不同的gadgets,并嘗試再次拼接。
回答所涉及的環境:聯想天逸510S、Windows 10。