999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于返回地址簽名的控制流攻擊檢測方法

2020-12-23 06:30:46余云飛汪鵬君張躍軍張會紅張海明
關鍵詞:指令檢測

余云飛, 汪鵬君,2, 張躍軍, 張會紅, 張海明

(1. 寧波大學電路與系統研究所,浙江 寧波 315211;2. 溫州大學電氣與電子工程學院,浙江 溫州 325035)

微電子技術、物聯網技術和大數據技術的發展,使得嵌入式系統已經成為各個領域中不可或缺的角色,其在日常生活、工業生產、交通運輸、移動支付等領域發揮越來越重要的作用,然而它們在通過網絡進行數據交換、軟件更新、對話的同時,也為攻擊者提供了攻擊通道。近年來控制流攻擊事件不斷發生,如 2017 年 5 月,WannaCry 勒索病毒利用 TCP445端口漏洞將系統控制流篡改到惡意代碼處,進而實施了控制流攻擊,造成至少150 個國家和地區受到攻擊,嚴重影響金融、能源、醫療等行業的正常運行。相比于木馬攻擊、旁道攻擊、反向工程等硬件載體攻擊,控制流攻擊具有有效性高、可行性強以及與其他攻擊模式兼容等特性,因此防御控制流攻擊,保障嵌入式系統的安全性已經成為當前各領域的迫切需求。

由于控制流攻擊的危害性巨大,許多防御控制流攻擊的方法相繼被提出。文獻[1]提出利用控制流完整性(Control Flow Integrity, CFI)檢測異常控制流,通過在每一條分支指令中插入驗證碼,以檢測不合法的控制流變化;文獻[2]提出粗粒度CFI 檢查,使用較少的驗證碼檢查CFI 的合法性,降低了性能開銷;文獻[3]提出一種基本塊級的細粒度CFI 檢查,解決了粗粒度CFI 檢查安全性不高的問題;文獻[4]在分析增強內容敏感和字段敏感指針的基礎上,提出細粒度的CFI 檢測方法,保證了操作系統內核的完整性;文獻[5]提出了一種新的硬件輔助CFI 框架,該框架使用功能標簽方法和有效標簽的狀態模型實施細粒度CFI 策略,提高了安全性;文獻[6]采用影子內存保存機制備份控制流信息,確保控制流轉移的合法性;文獻[7]利用線性加解密方式驗證控制流轉移前后的一致性,從而保證控制流的正確性;文獻[8-10]利用硬件電路的安全性實施控制流完整性檢查,達到防御控制流攻擊的目的。上述方法基本上是基于CFI,而CFI 分為粗粒度CFI 和細粒度CFI,粗粒度CFI 是將一組類似或相近類型的目標歸到一起進行檢查,由于檢查粒度不夠細,攻擊者依然可以利用指令配件繞過防御機制實施攻擊,致使安全性降低。而細粒度則是嚴格控制每一個間接轉移指令的跳轉目標,雖然緩解了粗粒度的安全性局限,但是由于實施細粒度檢查要求嚴格控制每一個間接指令的轉移目標,因而引入了過大的性能開銷,而且細粒度CFI 的安全性依賴于所構建的控制流圖(Control Flow Graph, CFG)的準確性,但是構建十分精確的CFG 是非常困難的,所以依然會造成安全性問題。

鑒于此,控制流攻擊的重要一步就是通過內存漏洞修改堆棧中的返回地址進而實施返回動態庫函數攻擊(Return_Into_Libc, RIL)、面向返回編程攻擊(Return Oriented Programming, ROP)等類型的控制流攻擊。通過檢測返回地址是否被篡改,以有效檢測控制流攻擊。由于該方法不需要通過線下分析獲取CFG 圖,避免了因控制流圖不完備的漏報問題,進而提高安全性。基于以上分析,本文通過對控制流攻擊原理的研究,提出了一種基于返回地址簽名檢測控制流攻擊的方法。該方法利用MD5 算法[11]的不可逆性,為加密后的壓棧返回地址與出棧返回地址分別生成唯一的簽名值,通過比較壓棧地址簽名值與出棧地址簽名值,達到檢測返回地址有無被修改的目的,保證了控制流跳轉目標的合法性。

1 控制流攻擊原理

控制流劫持大部分是通過內存漏洞篡改返回地址來達到目的,它是實現RIL、ROP 等類型控制流攻擊的重要手段。攻擊者通過劫持程序的控制流,使程序的運行邏輯違背程序原本的設計目標,進而控制整個系統行為,產生巨大安全危害。實施控制流攻擊的重要一步就是劫持程序控制流,而劫持控制流主要利用兩種攻擊:堆棧溢出攻擊與格式化字符串攻擊。

1.1 堆棧溢出攻擊

堆棧是一段連續分配的有限內存空間,每當一個函數調用發生時,堆棧將被依次壓入參數、返回地址、基址指針等數據。當函數對已分配的內存寫入超出其本身的容量時,就會造成數據的溢出,溢出的數據可以覆蓋原有數據。攻擊者可以利用此溢出篡改堆棧中原有的返回地址,進行控制流劫持,并將其導向惡意代碼shellcode 處,實施控制流攻擊。如圖1所示,攻擊者用起始地址A 覆蓋堆棧中的返回地址,而起始地址A 指向惡意代碼或指令片段,當系統執行地址A 處的代碼或指令片段時,控制流攻擊即被實施。

圖 1 堆棧溢出攻擊Fig. 1 Stack overflow attack

1.2 格式化字符串攻擊

格式化字符串漏洞產生的根本原因是未過濾用戶輸入。當輸入數據傳遞給某些執行格式化操作的函數時,攻擊者即可利用“%s”和“%x”篡改堆棧的數據,還可通過“%n”來讀取和寫入任意地址,從而導致任意代碼讀寫。當printf 在輸出格式化字符串時,隨即維護一個內部指針,遇到“%”時,printf 期望其后跟隨格式字符串,因此內部字符串會遞增以獲取格式控制符的輸入值。然而printf 不確定堆棧上是否放置了正確數量的變量使其運行,如果沒有正確變量供其操作,而指針繼續按正常情況下遞增,就會引起越界訪問,甚至可以利用“%n”任意對返回地址讀取和寫入。

2 返回地址簽名法檢測控制流攻擊

通過對控制流攻擊原理的研究與分析,并且針對現有防御手段的不足,本文提出了基于返回地址簽名法檢測控制流攻擊,整體框架如圖2 所示。在返回地址被壓入堆棧后,攻擊者通過堆棧溢出或格式化字符串攻擊篡改堆棧中的返回地址,進行控制流的劫持。為檢測返回地址的合法性,在系統執行程序調用指令call 時,首先利用偽隨機數發生器電路產生密鑰K 與壓棧返回地址進行異或操作,將異或后的返回地址作為MD5 算法的輸入值,以此避免簽名算法的輸入值與返回地址直接關聯。利用MD5 算法的不可逆性為異或后的壓棧返回地址生成唯一的簽名值并存儲在壓棧簽名寄存器中,然后在系統執行程序返回指令ret 時,使用相同方法,為出棧返回地址生成唯一的簽名值,最后將壓棧地址簽名值與出棧地址簽名值送入到地址比較器中,根據簽名值的比較結果判斷返回地址有無受到篡改,進而達到檢測控制流攻擊的目的。

圖 2 檢測控制流攻擊整體框圖Fig. 2 Overall block diagram of detecting control flow attacks

2.1 偽隨機數發生器

為避免攻擊者使用暴力攻擊或查表法破譯MD5簽名算法而直接獲取正確返回地址,利用線性反饋移位寄存器(Linear Feedback Shift Register, LFSR)電路實現偽隨機數發生器[12],產生128 位密鑰K,經過Design compiler 綜合,在TSMC 65 nm 工藝下平均功耗為0.527 mW,產生的隨機數可通過NIST 測試。該隨機數存儲在專門的密鑰寄存器中且僅限于調用指令call 與返回指令ret 訪問,其他指令禁止訪問。此密鑰用于返回地址進行異或操作,即使攻擊者通過暴力攻擊獲取正確的MD5 算法輸入值,也不能直接得到正確的返回地址。偽隨機數發生器如圖3 所示,由n 個D 觸發器和若干個異或門組成。其中gn為反饋系數,取值為0 或1,取0 時表明不存在該反饋回路,取1 時表明存在該反饋回路,n 個D 觸發器最多可以提供2n-1 個狀態。

2.2 MD5 簽名算法

為確保生成返回地址簽名值的隨機性和不可逆性,利用MD5 算法的不可逆性為壓棧、出棧的加密返回地址生成唯一的隨機簽名值。MD5 算法是一種典型的消息認證算法,經過一系列運算,它可將任意長度的消息壓縮為128 位的摘要。MD5 算法的運算框圖如圖4 所示,具體運算過程如下:

(1)補位。若初始數據的長度沒有達到512 的整數倍,系統將會在消息的低位處用一個1 和若干個0 進行補齊。

(2)初始化緩沖器。MD5 有 4 個 32 位的被稱作鏈接變量的整數參數A、B、 C、D, 對其設置初始數據。

(3)非線性輪運算。MD5 算法規定了4 個非線性操作函數:

其中:&為與;|為或;~為非; ∧ 為異或。利用以上 4 種操作,生成4 個重要的計算函數。4 個中間變量a、b、c、d,賦值:a=A, b=B, c=C, d=D。接著執行 4 輪主循環,每一輪完成16 次運算,每輪用到一個非線性函數,每次操作需要對a、b、c 和 d 中的3 個變量完成一次非線性運算,并更新對應的變量數據。

(4)數據輸出。處理完所有512 位的分組后,得到一組新的 A、B、C、D 的值,將這些值按 A、B、C、D 的順序級聯,得到MD5 簽名值。

2.3 返回地址簽名值計算

根據上述方案,利用MD5 算法為返回地址生成簽名值,經分析得到壓棧返回地址、出棧返回地址簽名值計算公式如下:

圖 3 偽隨機數發生器Fig. 3 Pseudo-random number generator

圖 4 MD5 算法框圖Fig. 4 MD5 algorithm block diagram

其中:PRNG_K、push_addr、encry_push_addr、sig_push_addr、pop_addr、encry_pop_addr、sig_pop_addr分別為偽隨機數電路產生的密鑰、壓棧返回地址、加密后的壓棧返回地址、壓棧地址簽名值、出棧返回地址、加密后的出棧返回地址、出棧地址簽名值。當執行程序調用指令call 時,密鑰K 與壓棧返回地址進行異或操作,然后將異或后的返回地址作為MD5 算法的輸入值,得到壓棧地址的簽名值。同理,當執行程序返回指令ret 時,生成出棧簽名值。

3 實驗例證與分析

為了驗證方案的有效性,以oc_8051 處理器為驗證平臺,通過修改oc_8051 處理器的源代碼,在處理器架構中加入返回地址簽名模塊,實現處理器具有檢測控制流攻擊功能的目的,并進行波形仿真、簽名值隨機性測試、正確簽名值與錯誤簽名值漢明距離測試以及可用的控制流攻擊指令消除率測試等實驗。實驗環境包括:Intel Xeon(R) Dual-Core CPU 2.0 GHz、6 GB RAM 服務器,涉及的工具軟件包括:NClaunch、Matlab、以及 ROPGadget-master5.4。

3.1 檢測控制流攻擊的處理器硬件架構

圖5 為將返回地址簽名電路應用于oc_8051 處理器的硬件架構圖。oc_8051 處理器工作流程分為5 個階段:取指、譯指、執行、訪存、寫回。由于返回地址簽名電路的引入,當處理器處于譯指階段且譯指結果為程序調用指令call 時,將產生call_en 使能信號,觸發簽名電路生成壓棧地址簽名值。同理,當譯指結果為程序返回指令ret 時,處理器產生ret_en 使能信號,觸發簽名電路生成出棧地址簽名值,最后通過匹配壓棧地址簽名值與出棧地址簽名值達到檢測控制流攻擊的目的。若二者簽名值相匹配,處理器繼續執行程序,反之,則立即停止程序。

3.2 處理器檢測控制流攻擊的工作流程

圖6 示出了具有檢測控制流攻擊功能處理器的工作流程,具體步驟如下:

(1)處理器處于譯指階段且指令譯碼結果為程序調用指令call 時,觸發偽隨機數發生器生成密鑰K,并將壓棧返回地址送入XOR 加密單元進行加密處理;

圖 5 檢測控制流攻擊的處理器硬件架構圖Fig. 5 Hardware architecture diagram for detecting control flow attacks

圖 6 檢測控制流攻擊的處理器工作流程圖Fig. 6 Flow chart of detecting control flow attacks

(2)將加密后的壓棧返回地址作為MD5 簽名生成單元的輸入值,生成壓棧簽名值;

(3)指令譯碼結果為程序返回指令ret 時,將出棧返回地址送入XOR 加密單元進行加密處理;

(4)將加密后的出棧返回地址送入MD5 簽名生成單元,生成出棧簽名值;

(5)比較壓棧返回地址的簽名值與出棧返回地址的簽名值,若簽名值相同,則繼續執行,反之立即停止執行。

3.3 仿真波形

通過編寫測試激勵testbench,使壓棧地址與出棧地址不同,并使用NClanch 獲得仿真波形,如圖7 所示。其中ADDR_PUSH_R、ADDR_POP_R、PRNG_K、XOR_ADDR_PUSH、XOR_ADDR_POP、SIG_PUSH_R、SIG_POP_R、COMPARE_SIG 分別為壓棧地址寄存器、出棧地址寄存器、隨機數K 寄存器、加密壓棧返回地址寄存器、加密出棧返回地址寄存器、壓棧返回地址簽名值寄存器、出棧返回地址簽名值寄存器、簽名值比較信號。當出棧地址為0x043b,壓棧地址為0x0438 時,從仿真波形圖中虛線處可發現,二者生成的簽名值不同,簽名值比較信號翻轉,指示當前返回地址遭到惡意篡改,達到檢測控制流攻擊的目的。

3.4 返回地址簽名值及其相關性

表1 所示為7 組輸入不同返回地址得到的簽名值,經過對簽名值的自相關性和互相關性分析,并使用Matlab 獲取簽名值的相關性分布圖。圖8 為同一組輸出數據的自相關性分布圖,圖9 為7 組不同輸出數據的互相關性分布圖,從圖中可知生成的地址簽名值具有良好的隨機性。

3.5 返回地址簽名值的漢明距離

圖10 所示為本方案假設表1 中的第一個返回地址為正確的出棧返回地址,其余為錯誤的出棧返回地址,經過對其漢明距離的分析,得到正確返回地址與錯誤返回地址的漢明距離。漢明距離是用于表示兩個二進制字符串之間的差異的數字。設x 和y 是兩個相同長度的二進制序列,x 和y 之間的漢明距離d(x, y)是相應符號不同的位數,計算公式如下:

圖 7 仿真波形圖Fig. 7 Simulation waveform

表 1 返回地址簽名值數據輸出Table 1 Return address signature

圖 8 數據自相關性Fig. 8 Data autocorrelation

圖 9 數據互相關性Fig. 9 Data cross-correlation

圖 10 正確與錯誤地址簽名值之間的漢明距離Fig. 10 Hamming distance between correct and wrong signatures

其中,i=0,1,…,n-1。由圖 10 可得,128 位正確返回地址簽名值與錯誤返回地址簽名值之間的漢明距離均達到50%以上,錯誤簽名值與正確簽名值具有較大差異性,攻擊者很難通過對錯誤返回地址簽名值的分析得到返回地址的正確簽名值。

3.6 控制流指令消除率

攻擊者利用處理器在執行call 或ret 指令時,對堆棧中的返回地址進行篡改,進而實施控制流攻擊。而由于處理器中引入了返回地址簽名電路,返回地址若受到惡意篡改會被立刻檢測出,因此攻擊者不能利用call 指令或ret 指令進行控制流劫持。使用ROPgadget 獲取控制流指令總數目并統計call 指令與ret 指令數目,計算call 指令與ret 指令數目在控制流指令總數目中的占比,即可得到控制流指令消除率。表2 示出了5 個不同測試程序下的控制流指令消除率,5 個測試程序中均含有緩沖區溢出漏洞和格式化字符串攻擊漏洞,攻擊者可利用漏洞進行控制流劫持。結果顯示攻擊者可利用的控制流指令平均消除率達到81.27%,有效消除了攻擊者可利用的控制流指令。

表 2 控制流指令消除率Table 2 Control flow instructions elimination rate

4 結 論

本文提出了一種基于返回地址簽名的控制流攻擊檢測方法。該檢測方法首先利用偽隨機數發生器產生密鑰K 與返回地址進行異或加密,然后將加密后的返回地址作為MD5 算法的輸入,利用MD5 算法的不可逆性分別為加密后的壓棧返回地址和出棧返回地址生成唯一的簽名值,最后根據出棧簽名值和壓棧簽名值是否匹配進行控制流合法性的檢測。通過實驗驗證了此方案的有效性,結果顯示當壓棧地址與出棧地址相異時,處理器可立即檢測出此時控制流不合法。雖然MD5 算法是已有算法且復雜度不高,然而得到返回地址的簽名值依然具有良好的隨機性,攻擊者可以利用的控制流指令平均消除率達到81.27%,可有效地檢測出因返回地址篡改而引起的控制流攻擊。

猜你喜歡
指令檢測
聽我指令:大催眠術
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
小波變換在PCB缺陷檢測中的應用
主站蜘蛛池模板: 亚洲日韩在线满18点击进入| 美女毛片在线| 天天综合亚洲| 色天天综合| 亚洲最新地址| 国产精品亚洲片在线va| 欧美亚洲第一页| 国产一区二区福利| 456亚洲人成高清在线| 99久久精品视香蕉蕉| 国产三级a| 亚洲精品第1页| 韩日无码在线不卡| 无码精油按摩潮喷在线播放| 色播五月婷婷| 无码综合天天久久综合网| 伊人国产无码高清视频| 亚洲欧美日韩中文字幕在线| 狠狠做深爱婷婷综合一区| 青青青视频91在线 | 精品福利国产| 欧美国产中文| 中文字幕不卡免费高清视频| 精品午夜国产福利观看| 九九线精品视频在线观看| 精品久久久久成人码免费动漫 | 大香伊人久久| 国产原创第一页在线观看| 5388国产亚洲欧美在线观看| 老司机久久精品视频| 另类综合视频| 98精品全国免费观看视频| 99国产在线视频| 丝袜高跟美脚国产1区| 免费一级毛片完整版在线看| 亚洲午夜片| 女人天堂av免费| 亚洲男人的天堂在线观看| 国产精品自在线天天看片| 亚洲欧美天堂网| 亚洲Va中文字幕久久一区| 欧美精品二区| 午夜爽爽视频| 99在线观看视频免费| 中国丰满人妻无码束缚啪啪| 国产高清无码麻豆精品| 在线观看无码a∨| 亚洲国语自产一区第二页| 99青青青精品视频在线| 日韩 欧美 小说 综合网 另类| 一区二区三区四区在线| 九九久久精品国产av片囯产区| 中文字幕不卡免费高清视频| 精品福利视频网| 国产视频一区二区在线观看| 国产h视频免费观看| 午夜福利在线观看入口| 理论片一区| 不卡视频国产| 国产小视频在线高清播放| 国产麻豆aⅴ精品无码| 日韩免费毛片视频| 国产女人在线| 亚洲永久精品ww47国产| 92午夜福利影院一区二区三区| 国产18在线播放| 久久久久无码精品| 亚洲中文字幕无码爆乳| 日韩天堂在线观看| 国产福利在线免费| 99这里精品| 亚洲综合第一页| 亚洲国产一成久久精品国产成人综合| 国产成人免费高清AⅤ| 国产成年无码AⅤ片在线| 国产精品污视频| 黄片在线永久| 波多野结衣无码视频在线观看| 国产二级毛片| 欧美综合区自拍亚洲综合绿色| 国产成人精品在线| 色综合婷婷|