欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于符號求解的自動化漏洞利用構(gòu)造方法與流程

文檔序號:40607479發(fā)布日期:2025-01-07 20:48閱讀:5來源:國知局
一種基于符號求解的自動化漏洞利用構(gòu)造方法與流程

本發(fā)明涉及漏洞挖掘和利用構(gòu)造,特別是一種基于符號求解的自動化漏洞利用構(gòu)造方法。


背景技術(shù):

1、現(xiàn)如今,現(xiàn)代軟件中存在多種類型的漏洞,如緩沖區(qū)溢出、格式化字符串漏洞、整數(shù)溢出等。每種漏洞有其獨特的觸發(fā)條件和利用方式。而成功利用一個漏洞通常需要滿足特定的條件,這些條件可能涉及復雜的程序狀態(tài)和輸入數(shù)據(jù)。這使得手動構(gòu)造有效的利用策略變得極其復雜和耗時。


技術(shù)實現(xiàn)思路

1、有鑒于此,本發(fā)明的目的在于提供一種基于符號求解的自動化漏洞利用構(gòu)造方法,能夠提升漏洞利用構(gòu)造的自動化水平、準確性和效率,推動安全研究領(lǐng)域的進步。

2、為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:一種基于符號求解的自動化漏洞利用構(gòu)造方法,包括以下步驟:

3、步驟1:基于約束求解的利用生成方法;具體分析代碼注入利用、使用跳板繞過aslr和return-to-libc繞過nx三種漏洞利用方法,并分別構(gòu)建相應的利用約束表達式自動化利用數(shù)據(jù)構(gòu)造過程;

4、步驟2:自動化漏洞exploit利用生成;通過checksec檢查程序啟用地安全機制:如果程序開啟nx保護,那么結(jié)合rop利用手段進行rop利用構(gòu)建;如果程序未開啟nx保護,則檢查是否開啟aslr機制,若開啟aslr機制,那么結(jié)合rop利用手段進行rop利用構(gòu)造,如果沒有開啟aslr,那么可以結(jié)合shellcode利用手段和rop利用手段,分別對兩種利用進行構(gòu)建。

5、在一較佳的實施例中,所述步驟1中代碼注入利用通過緩沖區(qū)溢出漏洞將攻擊代碼shellcode寫入進程內(nèi)存,并劫持程序控制流到shellcode所在內(nèi)存,當可控內(nèi)存塊無法容納shellcode時,首先根據(jù)可控內(nèi)存塊symbuf[i],0≤i≤n的大小將shellcode分為n段,接著把shellcode片段依次存放在多個可控內(nèi)存塊symbuf[i]中,并使用跳轉(zhuǎn)指令連接分布在不同內(nèi)存塊中的攻擊代碼,進而完成攻擊過程;

6、分段布局的代碼注入利用約束進行描述;公式(1)表示max(symbuf[i])≥len(shellcode),0≤i≤n的情況,即進程中存在空間足夠的可控內(nèi)存塊時的利用數(shù)據(jù)構(gòu)造方法,其中maxsymbuf為所有可控內(nèi)存塊中空間最大的一塊內(nèi)存;具體構(gòu)造方法為:首先將內(nèi)存maxsymbuf中的數(shù)據(jù)約束為shellcode,從而把完整的shellcode寫入可控內(nèi)存中,接著約束程序狀態(tài)中eip寄存器的值為maxsymbuf的地址,將程序控制流轉(zhuǎn)移到shellcode所在的內(nèi)存中;

7、φexp(ε)=(maxsymbuf←shellcode)∧[state(ε).eip←addr(maxsymbuf)](1)

8、公式(1)描述max(symbuf[i])<len(shellcode)時的利用數(shù)據(jù)構(gòu)造方法,其中0≤i≤n,jmp_ins[i]為symbuf[i]與symbuf[i+1]間的跳轉(zhuǎn)指令;當進程中可控內(nèi)存塊空間不夠時,把分段后的shellcode[i]以及用于在片段間實現(xiàn)控制流轉(zhuǎn)移的跳轉(zhuǎn)指令jmp_ins[i]依次寫入多個可控內(nèi)存塊symbuf[i],最后令程序的eip寄存器指向存放shellcode的第一個可控內(nèi)存塊symbuf[0]以劫持程序控制流到shellcode執(zhí)行;

9、

10、在一較佳的實施例中,所述步驟1中使用跳板繞過aslr中通過分析函數(shù)調(diào)用過程的棧操作可知,程序在執(zhí)行ret指令返回時會將返回地址彈出棧幀,ret指令執(zhí)行完后esp寄存器指向棧中返回地址的后一個內(nèi)存單位,并且esp中的內(nèi)容不會被溢出數(shù)據(jù)修改;把shellcode寫入棧內(nèi)存中返回地址后的位置,然后借助“jmpesp”指令動態(tài)定位內(nèi)存中的shellcode,可抽象為公式(3)所示的利用約束表達式描述;

11、式中:

12、mem[state(ε).esp]——寄存器esp指向的棧頂內(nèi)存;jmpesp_addr——程序中“jmpesp”指令的地址;

13、通過溢出數(shù)據(jù)可覆蓋返回地址后的棧內(nèi)存,因此將內(nèi)存mem[state(ε).esp]中的數(shù)據(jù)約束為shellcode,把shellcode寫入棧內(nèi)存中,接著約束程序狀態(tài)中eip寄存器的值為“jmpesp”指令地址以劫持程序控制流;程序執(zhí)行ret指令時控制流先被劫持到“jmpesp”指令處,接著執(zhí)行跳轉(zhuǎn)指令轉(zhuǎn)移到棧頂執(zhí)行shellcode。

14、在一較佳的實施例中,所述步驟1中return-to-libc繞過nx通過跳轉(zhuǎn)指令連接內(nèi)存中已有的代碼片段構(gòu)造出可完成特定功能的攻擊鏈,接著劫持控制流到攻擊鏈執(zhí)行完成利用過程;return-to-libc通過在棧中設置合適的參數(shù)調(diào)用c語言動態(tài)鏈接庫libc中的函數(shù)實現(xiàn)任意代碼執(zhí)行,其攻擊鏈的構(gòu)造過程可用公式(4)表示;

15、

16、其中,system_addr為庫函數(shù)system()的內(nèi)存地址,exit_addr為庫函數(shù)exit()的內(nèi)存地址,binsh_addr為內(nèi)存中字符串“/bin/sh”的地址;通過溢出數(shù)據(jù)把需調(diào)用的庫函數(shù)地址及其參數(shù)布局在內(nèi)存中,把內(nèi)存mem[state(ε).esp]中的數(shù)據(jù)約束為exit()函數(shù)地址作為system()函數(shù)調(diào)用后的返回地址,約束內(nèi)存mem[state(ε).esp+4]中的數(shù)據(jù)為字符串“/bin/sh”的地址作為system()函數(shù)調(diào)用時的參數(shù),并且將程序狀態(tài)中eip寄存器的值約束為system()函數(shù)地址以劫持程序控制流;當漏洞觸發(fā)后,程序控制流轉(zhuǎn)移到攻擊鏈執(zhí)行system(“/bin/sh”)可返回系統(tǒng)shell,退出shell后調(diào)用exit()函數(shù)結(jié)束進程。

17、在一較佳的實施例中,所述步驟2中shellcode注入利用的構(gòu)建有兩種方式:

18、方式1:將shellcode放置在由用戶輸入控制的符號化區(qū)域;

19、方式2:將shellcode寫入.bss段

20、對于方式1,構(gòu)建漏洞利用需要的條件為:len(shellcode)<=size(symbolicregion)loadsymbolicregion(state)=shellcodesymbolic(eip)=true

21、%eip=shellcodeaddress

22、其中,條件1)表示注入的shellcode代碼長度應該不超過選擇的符號化內(nèi)存區(qū)域的大小,否則只有部分shellcode代碼能夠被寫入內(nèi)存,無法達到最終的利用效果;條件2)表示選擇的符號化內(nèi)存區(qū)域的內(nèi)存應該為注入的shellcode代碼的具體值;條件3)表示當前狀態(tài)下,返回地址eip必須是符號化的,否則無法控制程序控制流;條件4)表示返回地址eip需要指向放置shellcode的內(nèi)存地址;

23、對于方式2,構(gòu)建漏洞利用需要的條件為:

24、findreadfunction(binary)=truefindmeminbss(binary)=true

25、readshellcodeinbss(state)=truesymbolic(eip)=true

26、%eip=shellcodeaddress

27、其中條件1.)表示需要在程序中找到read或gets函數(shù),通過這些向內(nèi)存中進行寫操作的函數(shù)來向.bss段寫入shellcode代碼;條件2.)表示從程序.bss段的高地址位置開始向低地址方向找到一段能夠裝下shellcode的內(nèi)存區(qū)域;條件3.)表示通過構(gòu)造rop的方式,利用read或get函數(shù)將shellcode寫入找到的能夠存放shellcode的.bss內(nèi)存區(qū)域;條件4.)表示寫入shellcode成功后的符號化狀態(tài)中,返回地址eip依舊是符號化的;條件5.)表示返回地址eip指向shellcode在.bss段的起始地址。

28、在一較佳的實施例中,所述步驟2中ropexploit生成具體為當二進制程序開啟棧不可執(zhí)行的保護時,意味著注入的shellcode代碼無法被執(zhí)行,利用也就無法成功;利用內(nèi)存中已經(jīng)存在的代碼片段gadget,將這些gadget的起始地址拼湊成一個gadgetchain,劫持程序的控制流,使程序在這些gadget之間跳轉(zhuǎn),執(zhí)行g(shù)adget所擁有的功能,從而拼湊成一個完整的更為復雜的功能,可以無視棧不可執(zhí)行保護,達到利用的目的。

29、在一較佳的實施例中,所述步驟2中在基于程序本身的gadgetchain構(gòu)造過程中,首先需要找到二進制程序中調(diào)用的system庫函數(shù)的地址值;system函數(shù)的執(zhí)行還需要一個參數(shù),即“/bin/sh”字符串的地址;由于二進制程序中不一定存在“/bin/sh”這樣的字符串,因此最為簡便的方法就是自行將“/bin/sh”寫入,將寫入的地址作為system函數(shù)的參數(shù);向內(nèi)存寫入數(shù)據(jù)需要調(diào)用read或gets這樣的函數(shù),因此同樣需要在二進制程序中找到調(diào)用read或gets這樣的庫函數(shù)的地址值。

30、在一較佳的實施例中,所述步驟2中采用從動態(tài)鏈接庫中尋找所需的gadget地址,構(gòu)造基于動態(tài)鏈接庫的gadgetchain;linuxelf程序在被執(zhí)行時,其使用的動態(tài)鏈接庫被動態(tài)地加載到內(nèi)存中的某一地址段,如果系統(tǒng)開啟aslr,則其加載的地址段是變化的,否則是固定不變的;動態(tài)鏈接庫中的函數(shù)在內(nèi)存中的實際地址會隨著動態(tài)鏈接庫加載的地址變化而變化,但是庫函數(shù)相對于動態(tài)鏈接庫起始位置的相對偏移量是固定保持不變的;如果知道其中一個庫函數(shù)在內(nèi)存中的實際地址,那么根據(jù)該庫函數(shù)在動態(tài)鏈接庫中的偏移量計算出動態(tài)鏈接庫的加載基地址;在得知動態(tài)鏈接庫的加載基地址之后,只要知道動態(tài)鏈接庫中任意函數(shù)在庫中的偏移量,就能夠計算得到任意庫函數(shù)在內(nèi)存中的實際地址;動態(tài)鏈接庫被加載到內(nèi)存中的某一位置,在得知庫函數(shù)function1的實際地址addr時,計算出動態(tài)鏈接庫加載的基地址libbaseaddr=addr1–offset1,如果想要利用庫函數(shù)function2,計算function2在內(nèi)存中的實際地址addr2=libbaseaddr+offset2;當程序被運行并加載進內(nèi)存后,程序中調(diào)用的庫函數(shù)在內(nèi)存中的實際地址會被保存在程序的got表項中;這里通過泄露出某一庫函數(shù)在.got表項中保存的函數(shù)實際地址,利用上述方法間接計算出所需的system函數(shù)地址,用于構(gòu)造system(‘/bin/sh’)開啟shell。

31、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:

32、1.增強的約束求解能力:改進符號求解器,使其能夠處理更復雜的約束和邊界情況,從而支持更復雜的漏洞利用條件。引入新的求解算法或優(yōu)化現(xiàn)有算法,提高求解速度和準確性。

33、2.動態(tài)路徑優(yōu)化:結(jié)合動態(tài)分析技術(shù),在符號執(zhí)行過程中動態(tài)調(diào)整路徑探索策略,以便更高效地發(fā)現(xiàn)和利用漏洞。這包括基于實際運行時反饋調(diào)整符號執(zhí)行策略,減少無效路徑的探索。

34、3.綜合多種分析技術(shù):將符號執(zhí)行與其他分析技術(shù)(如靜態(tài)分析、動態(tài)污點分析)結(jié)合,全面分析程序行為和漏洞利用條件,提供更精確的漏洞利用構(gòu)造。

35、4.自動化利用模板生成:開發(fā)自動化工具生成漏洞利用模板,根據(jù)特定漏洞特征自動創(chuàng)建通用的利用代碼框架,減少人工干預和開發(fā)時間。

36、5.集成智能啟發(fā)式搜索:利用機器學習或啟發(fā)式算法優(yōu)化符號執(zhí)行過程,智能選擇和評估路徑,從而提高漏洞利用構(gòu)造的效率和效果。

37、6.跨平臺支持:擴展符號執(zhí)行工具支持不同操作系統(tǒng)和平臺,使得漏洞利用構(gòu)造能夠適應更廣泛的應用環(huán)境。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
云安县| 百色市| 襄城县| 广西| 辽宁省| 凤凰县| 略阳县| 和政县| 凭祥市| 综艺| 厦门市| 西乌珠穆沁旗| 库伦旗| 商河县| 乐亭县| 晴隆县| 京山县| 东平县| 东城区| 南召县| 雅江县| 岳西县| 台南市| 新郑市| 丹凤县| 女性| 竹北市| 武强县| 台湾省| 金华市| 大关县| 揭东县| 新化县| 新乡县| 延津县| 桐梓县| 小金县| 新龙县| 湖口县| 石屏县| 汾西县|