


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、二進(jìn)制文件中緩沖區(qū)溢出庫函數(shù)的檢測技術(shù)摘要:提出了一種對二進(jìn)制文件中的緩沖區(qū)溢出庫函數(shù)進(jìn)行檢測的方法,首先對二進(jìn)制文件進(jìn)行反匯編,然后對反匯編后的的庫函數(shù)名進(jìn)行識別,并通過IDC語言對庫函數(shù)的檢測技術(shù)進(jìn)行了驗證。 關(guān)鍵詞:二進(jìn)制文件;庫函數(shù);檢測技術(shù) 中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044201111-2581-02 根據(jù)美國CERT/CC Computer Emergency Response Team/ Coordination Center統(tǒng)計,自1995年到2006年漏洞累計達(dá)到30780個,2006年共報告漏洞8064個,平均每天超過22個。在過去的十年中,
2、以緩沖區(qū)溢出為類型的安全漏洞是最為常見的一種形式1 。緩沖區(qū)溢出很大程度上是因為調(diào)用系統(tǒng)中存在的庫函數(shù),比如調(diào)用strcpy()、scanf等函數(shù),由于這些函數(shù)實現(xiàn)時缺少對函數(shù)的邊界檢測,故在使用這些函數(shù)時存在溢出現(xiàn)象。對于普通的計算機(jī)使用者來說,通過檢查所使用的軟件源代碼來發(fā)現(xiàn)其中是否存在緩沖區(qū)溢出漏洞是不現(xiàn)實的,即使對于專門的安全檢查機(jī)構(gòu)來說,獲取軟件的源代碼也是一件非常困難的事,故如何檢測出二進(jìn)制文件中的緩沖區(qū)溢出函數(shù)成為當(dāng)今的熱門研究課題,由于C語言在各種軟件中的廣泛應(yīng)用,本文只研究對C語言中存在的緩沖區(qū)溢出函數(shù)進(jìn)行識別。 1 反匯編二進(jìn)制文件 當(dāng)前反匯編技術(shù)已經(jīng)相當(dāng)成熟,有很多成熟的
3、反匯編軟件可以使用,比如IDA Pro 、OllyDBG、objdump、W32Dasm等。這些工具可以輕松的將二進(jìn)制代碼反匯編為匯編代碼,其中的一些工具還能給出輔助分析。在本論文中選用IDA Pro反匯編工具,IDA Pro是DataRescue公司出品的功能強(qiáng)大的專業(yè)級反匯編工具,IDAThe InteractiveDisassembler的全名是交互式反匯編工具2。IDA Pro是一套非常優(yōu)秀的反匯編工具,它具有開放的架構(gòu),支持多芯片、多文件格式;具備準(zhǔn)確的庫確定,可以看到無符號文件的庫調(diào)用;能夠?qū)瘮?shù)參數(shù)進(jìn)行標(biāo)注,可分析無任何文檔的程序3。首先對要識別的二進(jìn)制文件進(jìn)行反匯編。 2 緩沖
4、區(qū)溢出庫函數(shù)的檢測 2.1 緩沖區(qū)溢出庫函數(shù)列表 通過收集整理,把C語言中的常用的緩沖區(qū)溢出庫函數(shù)列表如表1。 2.2 緩沖區(qū)溢出庫函數(shù)的識別算法 首先掃描經(jīng)反匯編代碼,對反匯編代碼中出現(xiàn)的函數(shù)進(jìn)行識別,然后查看緩沖區(qū)溢出庫函數(shù)表,檢查所識別的函數(shù)是否在緩沖區(qū)溢出庫函數(shù)列表中。因為危險函數(shù)的普通形式反匯編后以相應(yīng)庫函數(shù)名的形式出現(xiàn),所以只需把所識別的函數(shù)和緩沖區(qū)溢出庫函數(shù)列表中的函數(shù)相比較,如果存在,該處代碼前的地址就是緩沖區(qū)溢出庫函數(shù)所在地址,記下該地址,同時記下所調(diào)用的緩沖區(qū)溢出庫函數(shù)和此函數(shù)被何函數(shù)所調(diào)用。 具體做法為: 1)掃描反匯編代碼,看是否存在函數(shù)調(diào)用。 2)若存在函數(shù)調(diào)用,識別
5、該函數(shù),并轉(zhuǎn)向3,否則轉(zhuǎn)向4。 3)查看緩沖區(qū)溢出庫函數(shù)列表,看所查找的函數(shù)是否存在緩沖區(qū)溢出庫函數(shù)列表中,如存在則記下此函數(shù)所在行的地址、所在行的匯編代碼和此函數(shù)被何函數(shù)所調(diào)用。 4)查看掃描是否結(jié)束,如不結(jié)束,轉(zhuǎn)向1,否則結(jié)束識別。 2.3 庫函數(shù)識別算法的實現(xiàn) 在具體設(shè)計過程中,利用IDA Pro的腳本語言IDC編寫靜態(tài)緩沖區(qū)溢出函數(shù)檢測插件。首先定位緩沖區(qū)溢出庫函數(shù)所在位置,然后把檢測到的危險函數(shù)信息放到文件中,具體程序如下: void findusufun int arg / 引發(fā)緩沖區(qū)溢出漏洞的函數(shù) char *funcs = _mbscat,_mbscpy,_mbsncpy,_m
6、emccpy,_snprintf,_snwprintf,_vsnprintf,_vsnwprintf,fprintf,fscanf,fwprintf,fwscanf,gets,lstrcat,lstrcpy,lstrcpyn,memcpy,memmove,memset,printf,scanf,sprintf,sscanf,strcat,strcpy,strncpy,swprintf,swscanf,vfprintf,vfwprintf,vprintf,vsprintf,vswprintf,vwprintf,wcscat,wcscpy,wcsncpy,wprintf,wscanf,0; FIL
7、E *fp; /打開存放緩沖區(qū)溢出庫函數(shù)的文件 iffp=fopen“二進(jìn)制文件”,”w+”= =NULL printf“ Buffer overflow vulnerability file cannot be openn”; Exit1; /進(jìn)行驗證所有的段,其中函數(shù)get_segm_qty返回當(dāng)前反匯編文件中段的總數(shù) for int i = 0; i type = SEG_XTRN / 僅僅驗證本論文提出的緩沖區(qū)溢出庫函數(shù) for int i = 0; funcsi != 0; i+ /由緩沖區(qū)溢出庫函數(shù)名得到它的所在地址 ea_t loc = get_name_easeg-startE
8、A, funcsi; if loc != BADADDR /把查找到的函數(shù)名、所在行地址、緩沖區(qū)溢出庫函數(shù)所屬函數(shù)、所在行的匯編代碼通過結(jié)/構(gòu)體變量放到結(jié)果文件中 strcpyvulervar.funname,funcsi; strcpyvulervar.linefun,loc; get_func_nameloc, vulervar.infun,sizeofvulervar.infun; ua_mnemloc, vulervar.linedisa, sizeofvulervar.linedisa; fprintffp,“第%d個緩沖區(qū)溢出庫函數(shù)地址:%10sh函數(shù)名:%10s 所在行匯編代碼:
9、%20s所屬函數(shù):%10sn”,n,vulervar.linefun, vulervar.funname,vulervar.linedisa,vulervar.infun; n+; xrefblk_t xb;/ 查看此程序中所有交叉引用此函數(shù)的其它位置 for bool ok = xb.first_toloc, XREF_DATA; ok;ok= xb.next_to /把交叉引用的函數(shù)保存到危險函數(shù)所屬函數(shù)放到全局結(jié)構(gòu)體數(shù)組中 strcpyvulervar.funname,funcsi; strcpyvulervar.linefun,xb.from; get_func_namexb.from
10、, vulervar.infun,sizeofvulervar.infun; ua_mnemxb.from,vulervar.linedisa, sizeofvulervar.linedisa; fprintffp,“第%d個緩沖區(qū)溢出庫函數(shù)地址:%10sh函數(shù)名:%10s 所在行匯編代碼:%20s所屬函數(shù):%10sn”,n,vulervar.linefun, vulervar.funname,vulervar.linedisa,vulervar.infun; n+; /關(guān)閉文件 iffclosefp!=0 printf“n vulnerfile cannot be closed”; exit1; return; 3 結(jié)論 論文對二進(jìn)制文件中的緩沖區(qū)溢出庫函數(shù)進(jìn)行檢測,首先反匯編二進(jìn)制文件,然后對反匯編后的二進(jìn)制文件中的函數(shù)名進(jìn)行識別,并通過腳本語言IDC對庫函數(shù)進(jìn)行識別進(jìn)行了實現(xiàn)。論文的不足之處在于庫函數(shù)有時具有展開形式,本文并沒有對庫函數(shù)的展開形式進(jìn)行識別。 參考文獻(xiàn): 1 Cowan C, Wagle F,Calton Pu,et al. Buffer overflows: attacks and defenses for the vulnerability of the decadeC.DARPA Information S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理測試題大全及答案
- 教育教學(xué)改進(jìn)與反思結(jié)合的試題及答案
- 能量轉(zhuǎn)化理論試題及答案2025
- 英語試題30題及答案
- 零售電商行業(yè)無人貨架技術(shù)發(fā)展趨勢報告
- 新能源汽車行業(yè)的國際合作試題及答案在2025年
- 新能源汽車的基礎(chǔ)設(shè)施建設(shè)研究試題及答案
- 教師教育教學(xué)反思與改進(jìn)策略的實施路徑討論試題及答案
- 未來家具設(shè)計文化與科技的碰撞試題及答案
- 安健環(huán)知識試題及答案
- 輕型載貨汽車制動器設(shè)計
- 高考語文120個重點文言實詞
- 江蘇省糧食集團(tuán)招聘筆試題庫2024
- 2023年全國職業(yè)院校技能大賽-老年護(hù)理與保健賽項規(guī)程
- 2024年深圳市彩田學(xué)校初中部小升初入學(xué)分班考試數(shù)學(xué)模擬試卷附答案解析
- 2024年安徽安慶市交通控股集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 《沙龍培訓(xùn)》課件
- 充電樁四方協(xié)議書范本
- 中考英語情景交際和看圖寫話
- 知道智慧網(wǎng)課《科學(xué)社會主義概論》章節(jié)測試答案
- 事故調(diào)查分析課件
評論
0/150
提交評論