資源描述:
《選題:軟件安全動(dòng)態(tài)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、選題:軟件安全動(dòng)態(tài)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)小組成員:坑易澎(PB09210296),周志平(PB09210087),李遠(yuǎn)(PB09210306)內(nèi)容:基于Pin等二進(jìn)制動(dòng)態(tài)插樁平臺(tái),實(shí)現(xiàn)對(duì)x86二進(jìn)制軟件的運(yùn)行時(shí)動(dòng)態(tài)監(jiān)測(cè),及時(shí)發(fā)現(xiàn)緩沖區(qū)溢出等漏洞選題背景(國(guó)內(nèi)外研究現(xiàn)狀)&意義:二進(jìn)制程序的逆向分析和漏洞挖掘一直是軟件安全領(lǐng)域研究的首要和關(guān)鍵問(wèn)題。開(kāi)發(fā)自動(dòng)化的程序逆向分析工具用來(lái)輔助軟件漏洞挖掘已經(jīng)成為現(xiàn)階段的研究熱點(diǎn)。動(dòng)態(tài)插樁技術(shù)在近年來(lái)也開(kāi)始被用于漏洞發(fā)掘領(lǐng)域。Pin是Intel開(kāi)發(fā)的一個(gè)程序動(dòng)態(tài)插樁工具,支持對(duì)多種平臺(tái)下
2、二進(jìn)制可執(zhí)行程序的插樁分析,允許對(duì)可執(zhí)行程序的任意代碼位置插入任意的分析代碼,在程序執(zhí)行時(shí)動(dòng)態(tài)進(jìn)行插樁的。此外,Pin提供一套豐富的API供開(kāi)發(fā)者定制自己的分析工具,其被廣泛應(yīng)用于性能分析、體系結(jié)構(gòu)研究及安全領(lǐng)域等。選題理由:可以使用熟悉的語(yǔ)言編程,對(duì)動(dòng)態(tài)插樁較為感興趣……【軟件開(kāi)發(fā)】軟件架構(gòu):插樁級(jí)別:指令,函數(shù)(分別對(duì)應(yīng)JIT和PROBE兩種模式)à拓展:軌跡插樁等(功能需要)使用PIN提供的API進(jìn)行編程,形成一個(gè)可用的分析工具,能檢測(cè)出:緩沖區(qū)溢出(書(shū)P160)、SQL注入(刪去,書(shū)P163)、整數(shù)溢出(書(shū)P15
3、7,檢查正負(fù)數(shù))、棧溢出(書(shū)P160à不可執(zhí)行的棧,返回地址下方設(shè)置預(yù)警值)、格式化字符串(實(shí)現(xiàn)對(duì)內(nèi)存的非法訪問(wèn),見(jiàn)補(bǔ)充)、命令注入(待選,C語(yǔ)言中少見(jiàn))、單字節(jié)字符串循環(huán)拷貝代碼模式(待選)等漏洞。關(guān)鍵技術(shù):1.插樁決策的設(shè)定2.程序狀態(tài)的抽象,跟蹤程序變量和寄存器的值功能模塊:代碼插樁主要考慮以下問(wèn)題:是否啟動(dòng)插樁,在哪里插樁什么函數(shù),以及插樁入的分析函數(shù)的具體實(shí)現(xiàn),相應(yīng)地實(shí)現(xiàn)插樁控制、插樁決策及分析實(shí)現(xiàn)等具體模塊。由插樁決策、指令執(zhí)行、庫(kù)函數(shù)模擬、缺陷檢測(cè)、及程序狀態(tài)模擬等重要模塊組成:1.插樁控制:控制何時(shí)開(kāi)始、
4、暫?;蚪K止插樁2.插樁決策:用于判斷和區(qū)分不同的程序執(zhí)行分支,以在特定分支添加對(duì)應(yīng)的分析函數(shù),含有過(guò)程插樁和指令插樁:過(guò)程插樁主要用于控制插樁是否啟動(dòng),在關(guān)注的函數(shù)或指令執(zhí)行后才開(kāi)始插樁。若調(diào)用函數(shù)為待模擬的庫(kù)函數(shù)或缺陷模式函數(shù),則需要分別執(zhí)行庫(kù)函數(shù)模擬和缺陷檢測(cè)分析。指令插樁由指令執(zhí)行器完成,用于模擬每條匯編指令的執(zhí)行動(dòng)作。3.分析實(shí)現(xiàn):插入的語(yǔ)句或函數(shù)的實(shí)現(xiàn),應(yīng)是一個(gè)集合,根據(jù)不同的漏洞情況插入不同代碼4.外部信息導(dǎo)入:導(dǎo)入漏洞模式和庫(kù)函數(shù)模擬等配置信息5.輔助部件:前段命令處理、漏洞模式庫(kù)、特定缺陷的模式識(shí)別(待選
5、)統(tǒng)計(jì)(統(tǒng)計(jì)插樁指令數(shù)、漏洞數(shù))、輸出(形成漏洞分析統(tǒng)計(jì)文件)等。處理流程:最終目標(biāo):了解插樁的原理、PIN的工作機(jī)制及相關(guān)知識(shí),掌握并熟練使用PIN提供的API,基于PIN編寫(xiě)一個(gè)能夠完成上述功能的軟件(可能有界面)成果形式:軟件(附說(shuō)明書(shū),測(cè)試結(jié)果,源代碼及其詳解),論文(PIN相關(guān)的原理、分析、待改進(jìn)的地方,實(shí)驗(yàn)的總結(jié)等等)實(shí)驗(yàn)條件:Linux/WindowsC/C++可能的困難和解決方法:1.軌跡插樁需要對(duì)程序執(zhí)行中路過(guò)的基本塊依序進(jìn)行分析,獲得相關(guān)程序?qū)傩孕畔ⅷ呵也恢肋@一點(diǎn)怎么做,基本塊的識(shí)別2.庫(kù)函數(shù)是否
6、需要模擬à在庫(kù)函數(shù)分析中,較難處理的是不定參數(shù)以及參數(shù)為地址或值的區(qū)分。但由代碼獲得的參數(shù)數(shù)目不一定可靠;地址與值在匯編程序模擬時(shí)較難區(qū)分。3.程序狀態(tài)抽象4.寄存器變量的讀取5.SQL注入:數(shù)據(jù)庫(kù)的聯(lián)接6.整數(shù)溢出:無(wú)法判定是否需要負(fù)數(shù)★7.程序提速à寫(xiě)在analysis里而寫(xiě)在instrumentation里;減少call,用最大粒度instrument;減少參數(shù)、overhead……工作計(jì)劃:每周1-2次組會(huì);第四周-周一~第五周-周五(12天):安裝好實(shí)驗(yàn)環(huán)境,下載官網(wǎng)示例程序自行編譯修改,根據(jù)官網(wǎng)上User's
7、Manual學(xué)習(xí)并熟悉PIN(同時(shí)整理學(xué)習(xí)筆記,后期將形成部分論文的草稿);查找上述漏洞的相關(guān)知識(shí)深入理解(并整理,后期論文草稿),完成代碼初步算法設(shè)計(jì)【此時(shí)每周最好3次會(huì)議】;第五周-周六~第六周-周二(4天):改善上述軟件設(shè)計(jì),細(xì)化函數(shù)設(shè)計(jì),確定(初次)方案,代碼撰寫(xiě)具體分工第六周-周三~第七周-周日(12天):代碼編寫(xiě)(同時(shí)進(jìn)行代碼詳解,編程心得),交流,設(shè)計(jì)方案的修改,商量好設(shè)計(jì)細(xì)節(jié)上各部分之間的借口第八周-周一:中期檢查【至此完成總代碼編寫(xiě)的1/3,核心算法代碼的1/2~2/3,核心算法及函數(shù)設(shè)計(jì)細(xì)節(jié)(主方案)
8、全部確定】已有可運(yùn)行的程序,部分漏洞可檢測(cè)第八周-周一~第九周-周四(11天):完成剩下代碼的編寫(xiě);各部分代碼的整合調(diào)試,完成一個(gè)符合要求的可運(yùn)行程序第九周-周五~第十周-周日(10天):測(cè)試、整理運(yùn)行結(jié)果并根據(jù)結(jié)果修改程序,說(shuō)明書(shū)的初稿;有時(shí)間將進(jìn)行代碼潤(rùn)色,可視化界面的編寫(xiě)第十一周-周一~第十一周-周日(7天):