劉豫,聶眉寧,蘇璞睿,馮登國
(中國科學院 軟件研究所 信息安全國家重點實驗室,北京 100190)
隨著信息化的快速發展,入侵者的攻擊目標和攻擊方式都大大增加,攻擊的更新速度更快,危害性更強。在各種防范系統中應用攻擊特征過濾輸入數據,是保護脆弱服務和主機免遭入侵的有效方法。然而傳統的手動攻擊特征生成依賴于人工經驗,不僅耗時費力,生成特征的質量也難以保證。因此,快速高效的攻擊特征生成系統成為當前的研究熱點。
相關領域典型研究成果中,Nanda等人提出的Trag[1]系統利用動態污點分析捕獲攻擊過程中實際執行的指令集合,對條件表達式的變量進行后向切片[2]識別出所有攻擊相關處理語句及約束條件初始化語句,自動生成圖靈機式的攻擊特征。但 Trag依賴程序源碼,并且生成特征規模較大,甚至和應用程序本身大小相當,導致執行效率較低。Brumley等人[3]提出了一種使生成的特征可識別針對同一漏洞的更多可能攻擊的方法。他們利用Pin[4]記錄攻擊執行流程,使用程序砍片(chopping)技術[5]提取輸入點到漏洞之間所有可能的執行路徑,整合得到攻擊特征。但文獻[3]中的程序砍片需要反匯編可執行代碼,容易受到軟件保護手段的干擾,并且得到特征的大小按攻擊路徑上的分支語句數量指數增長,甚至超過程序本身大小若干個數量級。他們在后續工作中提出借助最弱前提條件解決這一問題[6],但生成的特征大小仍然超過了程序本身。此外,Costa等人在 Vigilante[7]中提出了一種自動過濾器生成算法,借助動態污點傳播尋找含有輸入數據的條件表達式,將這些表達式匯總形成過濾規則。由于沒有準確識別真正引起漏洞攻擊的數據,Vigilante的過濾規則引入了與漏洞攻擊無關的條件約束,導致規則過于嚴格,引發了漏報率較高的問題。
針對現有攻擊特征生成方法的不足,本文提出了一種基于可回溯動態污點分析的攻擊特征生成方法,利用動態污點分析技術對脆弱程序的漏洞利用過程進行完整的指令級記錄,構建回溯分析算法提取出與攻擊行為直接相關的代碼執行序列,以此為基礎構造特征執行上下文環境并對分支條件做出判斷,從而生成圖靈機式的攻擊特征。對比同類研究成果,本方法無需獲得程序源代碼,可以準確識別出與漏洞利用直接相關的執行指令,既解決了文獻[1]對條件語句中的所有變量進行后向切片所引起的特征過于龐大的問題,又排除了文獻[7]中的攻擊無關條件約束所造成的漏報率偏高,而與文獻[3]相比,本方法更好地平衡了特征的覆蓋范圍和執行效率,生成特征簡潔準確,生成過程快速高效。
本文的主要貢獻如下。
1) 提出了一套可回溯的動態污點分析框架,可準確提取影響攻擊路徑的約束條件和操作攻擊輸入的指令序列,提升了對動態執行過程信息的管理能力,為自動化生成簡潔高效的攻擊特征提供了有力基礎。
2) 提出了一種基于可回溯動態污點分析的攻擊特征生成方法,本方法不依賴源代碼,通過分析與漏洞利用相關的進程動態執行過程,可針對未知漏洞的攻擊行為快速自動地生成圖靈機式的攻擊特征。
3) 建立了一個攻擊特征生成的原型系統,通過對攻擊樣本的測試,驗證了本文提出的方法可以不依賴源代碼快速生成簡潔高效的圖靈機式攻擊特征。
本文后續部分按如下方式進行組織:第2節介紹目前相關領域的研究工作;第3節提出了基于可回溯動態污點傳播的攻擊特征生成方法的基本思想和系統構成;第4節討論了可回溯的動態污點分析框架的構造方法和回溯分析算法的設計細節;第5節說明圖靈機式攻擊特征生成的具體過程;第 6節是原型系統的建立和實驗評估結果;第7節是結束語。
攻擊特征的表現形式主要有正則表達式、條件約束和圖靈機式3種[3]。正則表達式的形式簡潔、匹配算法效率高,但對特征的描述能力最弱,準確性也最低。條件約束形式具有較強的描述能力,但不能等效描述循環結構,從而影響攻擊特征的準確性。圖靈機式攻擊特征是判斷輸入是否為攻擊的一個程序,可以對特征細節進行精確描述,因而具有較高的準確性。
攻擊特征生成方法可分為黑盒法和白盒法 2類。黑盒法[8~11]直接分析攻擊樣本的共性并對比與正常輸入的區別,歸納聚類形成攻擊特征。黑盒法面臨的局限包括:攻擊者容易偽造攻擊輸入進行混淆干擾,使得生成攻擊特征的準確性降低;另外,需要耗費時間收集足量的攻擊樣本。白盒法[1,3,6,7]綜合利用攻擊輸入、漏洞利用路徑和漏洞自身特點等信息生成攻擊特征,能更好地描述同類攻擊的本質,準確性更高,因此成為當前攻擊特征生成研究的主要方向。但現有白盒方法常存在依賴程序源代碼、生成的特征規模龐大、執行效率較低等問題。
在基于漏洞利用的攻擊特征生成的研究中,多種動態污點分析系統[12~14]常被用于記錄和提取漏洞利用流程信息,并檢測針對未知漏洞的攻擊。文獻[1]中使用GIFT架構[14]在編譯環節向目標代碼添加動態污點傳播的功能代碼,因此依賴于源代碼。本方法采用的動態污點分析系統是基于硬件模擬器 Qemu[15]實現的,具有分析粒度精細、無需源代碼等優點。與傳統的關注數據依賴的污點傳播不同,本文為了提取與污點相關的比較和跳轉指令,污點操作指令對標志寄存器的影響也被納入考慮。另外,還建成了一個可回溯的動態污點分析架構,提升了對污點傳播過程信息的管理利用能力,可準確提取影響攻擊路徑的約束條件和操作攻擊輸入的指令序列,作為攻擊特征生成的基礎。
圖靈機式的攻擊特征(TMS, turing machine signature)是對輸入數據做出判斷的可執行程序,它和脆弱程序、漏洞、攻擊樣本3方面密切相關。
定義 1(圖靈機式攻擊特征)。對具有漏洞 V的脆弱程序P,通過分析針對V的攻擊樣本A,可以得到一個圖靈機式的攻擊特征記作TMS。它是脆弱程序P的輸入空間I到判斷空間的一個映射,即TMS:I->{ATTACK,BENIGN}。對P的任意輸入i∈I,,如果i符合攻擊樣本 A 的攻擊特征,則有TMS(i)=ATTACK;否則,TMS(i)=BENIGN。
本文的目標是在無法獲取源代碼的情況下,檢測針對脆弱程序未知漏洞的成功攻擊行為,生成圖靈機式攻擊特征。成功攻擊由2個方面因素決定:①脆弱程序存在可利用的漏洞;②攻擊輸入可以到達漏洞并觸發漏洞。同類攻擊輸入將經由相同的路徑到達程序漏洞。可見,攻擊特征蘊含與漏洞攻擊直接相關的輸入數據的操作序列中,攻擊路徑、漏洞特征以及對攻擊數據的條件約束是生成特征的關鍵信息。從中提取出攻擊數據在攻擊路徑上的操作變化以及各步驟的約束條件,就可以驗證輸入數據是否為攻擊。
按此思路本文提出了一種攻擊特征生成方法,通過將脆弱程序的所有輸入數據標記為污點,利用可回溯的動態污點分析架構對污點數據相關操作行為構造指令級的污點傳播流圖(TPG),并監控污點數據的異常使用檢測未知的漏洞攻擊行為。當攻擊發生時,借助TPG的回溯分析算法,提取出與漏洞利用直接相關的污點數據操作序列和各個約束條件,恢復執行上下文并對條件分支語句添加判定,從而生成圖靈機式的攻擊特征。本方法的系統框架如圖1所示,主要由可回溯動態污點分析、攻擊檢測和攻擊特征生成3大模塊構成,相關技術要點和實現方法將在下面2節中詳細討論。
準確提取脆弱進程與漏洞攻擊相關的操作序列以及約束條件,是生成圖靈機式攻擊特征的關鍵。動態污點分析常用于進程行為分析,并可以檢測攻擊行為,因此在白盒法的特征生成中得到廣泛應用。與文獻[1,7]不同,針對特征生成需求,提出了一套可回溯的動態污點分析框架,為自動化生成簡潔高效的攻擊特征提供了有力基礎。
定義2(污點傳播流圖)。污點傳播流圖動態記錄進程指令級的污點數據操作行為。由一系列的節點和邊組成,可記為TPG

表1 TPG的節點和邊的定義
生成TPG的第一步是將污點數據引入系統,為此定義了污點源事件(TSE, taint source event)。

圖1 系統框架
定義3(污點源事件)。污點源事件指將污點分析關注的外部數據引入進程空間的進程行為,記作TSE
在特征生成系統中,污點源事件即脆弱進程接收輸入數據,因此分析系統將相應的輸入緩沖區標記為污點。為了實時反映污點數據在系統中的分布狀況,特別定義了污點狀態記錄(TSR, taint state record)結構。
定義 4(污點狀態記錄)。TSR是進程執行過程中相關操作數據的污點狀態實時記錄,TSR=TSR_Reg∪TSR_Mem,TSR_Reg和TSR_Mem分別對應寄存器和內存數據的污點狀態的集合,以字節為記錄單位。TSR中每條污點狀態記錄記作tsr
為了構造TPG,借助TSR建立了2個映射關系 isTaint和 whichInsNode,如表 2所示。借助它們,定義了 TPG中需要記錄的污點相關指令操作TI。
定義5(污點相關指令操作)。對目標進程執行的指令 Ins
最后,定義有效約束條件記錄(ECR, effective condition record),用于提取影響攻擊路徑的約束條件。
定義 6(有效約束條件記錄)。ECR是影響當前運行指令的條件約束的集合,ECR的記錄表示為二元組ecr
本文對每個屬于TI的條件跳轉指令生成一條ecr記錄。利用ECR本文定義映射關系whichJCNode,如表2所示。為確保ECR實時更新,如果執行到eip不屬于ecr的Effect_Range指令Ins時,則從ECR中刪除ecr記錄,除非Ins屬于Effect_Range內的指令調用的子程序。
上述方法確保特征生成不受與攻擊無關的條件約束的干擾,但存在一種局限。如圖2所示,本文可以正確識別圖2(a)和圖2(b)類條件約束的影響范圍;但對圖 2(c)類的條件約束,則不能識別出(Addr2,Addr3)同樣受 JC的影響。這由動態分析本身的制約引起:如果JMP Addr3指令不被執行,本文就無法得到代碼結構的全貌。這一局限可以結合靜態分析進行彌補。
構造 TPG的基本思路是,對每一個污點相關操作,生成一個節點對其進行記錄,并將其連接到處理同源的污點數據的上一次污點相關操作所對應的節點,或者影響該操作的約束條件對應的節點,如此往復,從而生成TPG。具體方法如下。
1) 對污點源事件TSEa
① 生成一個污點源節點Sna記錄相關信息,Sna是TPG的初始節點。
② 然后,生成個數為Length的污點狀態記錄tsr
2) 對于TI操作Insa
① 首先,生成 TPG節點 Ina記錄指令操作的相關信息。

表2 TSR和ECR相關的映射關系

圖2 不同類型的條件跳轉指令
② 若Insa為普通指令,根據Type分析Operand中影響 Insa執行結果的操作數的集合Operandsrc,遍歷 opi∈Operandsrc,如果 isTaint(opi)=1,在 TSR中查詢whichInsNode(opi)=Ini,得到opi對應的TPG節點Ini,生成邊Ie
③ 如果標志寄存器FlagReg受污點數據opi運算的影響而改變,將tsr_FlagReg記為污點,并修改tsr_FlagReg→In=whichInsNode(opi)。
④ 若Insa為條件跳轉指令,則查詢TSR得到whichInsNode(FlagReg)=Ink,并生成邊Ie
⑤ 根據Insa的EIP,對每個Inj∈whichJCNode(EIP),生成邊Ie
⑥ 根據Type分析Operand中受Insa執行影響的操作數的集合Operanddst。遍歷opj∈Operanddst,如果Insa執行后isTaint(opj)=1,更新opj對應的污點狀態記錄tsrj→In= Ina。
通過如上步驟,按指令的污點數據來源和所受條件約束影響完成了TPG的構建。
由于TPG中記錄了節點間的上下級關系,因此從任意節點出發可以有向遍歷 TPG,得到的 TPG子圖對應相關污點數據的操作序列以及影響操作的約束條件。要獲取從節點Na開始的回溯分析結果,則對Na在TPG圖中的每個上級節點進行遞歸的回溯分析。當節點的所有上級節點的回溯分析完成或者該節點已經沒有上級節點時,將它加入回溯分析記錄鏈表。最后,當節點Na的回溯分析返回時,回溯分析記錄鏈表中就得到了從污點源開始到Na的所有相關的脆弱進程執行指令的完整記錄。回溯分析的算法描述如圖3所示。

圖3 TPG回溯分析算法
根據污點分析策略,當脆弱程序執行可能引發漏洞利用的指令,如JMP、CALL、RET時,動態污點分析監控污點數據的異常使用,從而檢測到針對未知漏洞的攻擊。污點分析策略設置了2條常用的異常使用判斷規則:污點數據用作跳轉地址和污點數據作為執行代碼。文獻[16]的研究表明,利用這2條規則,可以覆蓋大多數漏洞攻擊行為,并且誤報率很低。當檢測到對漏洞的攻擊時,則使用回溯分析算法,從TPG中回溯提取與漏洞攻擊直接相關的污點數據操作序列以及影響攻擊路徑的約束條件。
動態污點分析檢測到對未知漏洞的攻擊,并回溯 TPG獲得與攻擊直接相關的污點數據操作指令序列,記作 TOT,這是圖靈機式的攻擊特征 TMS生成的基礎。但TOT并不等同于TMS:一方面TOT是脆弱進程動態執行的操作序列,指令操作數的寄存器和內存地址都處在脆弱進程的執行上下文中,不能直接移植到TMS的執行環境;另一方面,TOT中缺少對條件分支語句的處理,沒有判斷輸入數據分組是否為攻擊。為此,需要在TOT的基礎上對上述2方面進行修改和完善,才能生成圖靈機式的攻擊特征TMS。
由于提取TOT時的進程執行上下文與TMS的運行環境有較大差異,因此需要根據指令操作數的類型和污點狀態進行處理,使其能在 TMS的運行環境中順利執行。為此,TMS需要提供一個緩沖區SRC_BUFFER存放輸入數據分組,并將TOT中讀取污點源數據的指令尋址映射到SRC_BUFFER的內存區間。另外,TMS還需要提供一個數據段TMS_DATA,存儲污點數據相關操作的變量,避免TOT中的尋址地址和TMS發生沖突。然后,按如下的規則處理TOT中的污點數據相關操作指令。
1) 對于操作數本身是污點數據,并且是寄存器類型的,無需進行特別處理,因為污點數據的值將隨著TMS對輸入數據的處理自動獲得。
2) 對于本身不是污點數據而且不會被污點數據污染的操作數,則需要將它的實際值作為立即數替換它在TOT中的類型。無論該操作數是一個寄存器還是內存尋址地址,動態污點分析系統都能夠獲取攻擊發生時它的實際值,并記錄在TPG的對應節點中。
3) 對于本身不是污點數據,但通過指令執行被污點操作數污染的操作數,如果類型是寄存器,無需進行處理;如果是內存尋址地址,用ADDR1表示,則將ADDR1替換為TMS_DATA的一個空閑地址ADDR2,并將后面指令中出現的ADDR1都使用ADDR2進行替換。如果該操作數原有的值會影響操作結果,還需要提取出它的實際值代入污染指令的計算。
使用處理規則2)是因為TOT中只含有污點數據相關的操作,沒有非污點數據的變量初始化過程。如果在 TMS中直接使用非污點數據在攻擊發生時的內存地址和寄存器,將會引起系統崩潰或者讀入錯誤的值,本文解決方法是將攻擊發生時的實際值代入它們在TMS的相關操作。使用處理規則3)是因為 TOT中不含經過污點傳播成為污點數據的變量的初始化過程,直接使用攻擊發生時的內存地址也可能和 TMS的內存空間發生沖突。但與非污點數據不同,污點數據變量最終將獲得來源于輸入數據分組的賦值,因此只需要在 TMS提供的TMS_DATA中為其分配一個合理的存儲空間即可。
TOT的指令序列經過上述的修正,已經滿足在TMS的環境中執行的需求,但還缺少對輸入數據是否為攻擊的判斷輸出。因此,需要處理TOT中的條件分支語句,添加判斷輸出語句。在動態污點分析系統處理屬于TI的條件分支跳轉指令JC時,記錄JC運行時的條件滿足情況,據此對TOT中對應的條件分支語句進行處理,使得與當時條件滿足情況一致時,沿著攻擊路徑執行,否則攻擊特征返回BENIGN。在TOT的最后一個條件分支跳轉指令,滿足當時條件的分支,可以直接返回 ATTACK判斷,因為之后已經沒有條件分支語句,輸入數據必然能夠到達漏洞并滿足漏洞利用條件,形成有效攻擊。通過對TOT進行上述的修改和完善,最終重新編譯為可執行程序,生成了圖靈機式攻擊特征。
本文基于 WooKon惡意代碼分析平臺[17]開發實現了生成圖靈機式攻擊特征的原型系統。將實驗樣本部署在WooKon平臺上運行的Windows XP系統中,利用第三方的反匯編引擎Udis86[18]對樣本執行的每條指令進行解析,實現了對指令類型和操作數的識別,并可以獲取操作數的寄存器或內存地址以及它們的值,從而按照預設的污點分析策略進行指令級的動態污點分析。原型系統運行在一臺DELL Optiplex 360主機上,基本軟硬件運行環境如下。內存:DDR2 667MHz 2GB;硬盤:SATA 250GB;主板:Intel G31;主機操作系統:Fedora Core 10 x86_64;虛擬操作系統:Windows XP SP2。
本文使用 2個脆弱程序 IrfanView_3.99和easyftp-server-1.7.0.11-cn及其攻擊樣本進行了實驗。IrfanView_3.99是一個圖像查看和格式轉換程序,它的插件Formats.dll中存在一個本地溢出攻擊漏洞,使得讀入特別構造的.iff文件時,引起進程崩潰。easyFtp-server是一個支持Web訪問的FTP服務器,在處理超長參數時存在溢出漏洞,攻擊者可利用其漏洞遠程執行任意指令。本文利用原型系統分析了上述2種脆弱程序的漏洞利用過程,成功生成了攻擊樣本所對應的圖靈機式的攻擊特征。表 3記錄了特征生成過程和最終生成特征的基本信息。

表3 攻擊特征生成實驗結果
從實驗結果可以看出本文得到攻擊特征都非常簡潔,不到脆弱程序自身大小的 4%,相對于文獻[1,3]的結果具有明顯優勢。原因在于恢復特征的執行上下文環節,文獻[1,3]中使用了切片方法,而本文直接使用攻擊發生時的實際值替代非污點數據,從而省略了它們的初始化過程,并避免了其擴散影響。事實上,非污點數據表示進程執行環境中的其他資源對輸入的影響;使用攻擊發生時的實際值,等效于模擬了特征生成時的脆弱進程以及部署環境。如果部署環境具有一般性,那么圖靈機式攻擊特征的判斷就應該被接受,因為丟棄一個可能攻擊典型應用部署的數據分組是符合邏輯的。
為了驗證生成特征的有效性,本文利用 Fuzz測試開發組件SPIKE[19],針對2種脆弱程序生成了多個灰盒測試樣本,然后使用攻擊特征對這些樣本進行判斷,并將所有被判斷為攻擊數據的測試樣本輸入脆弱程序進行實際驗證。對于被攻擊特征判斷為正常的測試樣本,由于數量太大,本文從中分別隨機抽取了1 000個樣本輸入脆弱程序進行驗證。得到的實驗結果如表4所示。可見生成特征的判斷結果和脆弱程序實際驗證的結果非常接近,說明本文生成的特征具有較好的準確性。進一步分析IrfanView和 EasyFTP的攻擊特征準確性具有差異的原因。結合表3,可知在IrfanView漏洞攻擊過程中獲得了大量的用于特征生成的有效節點,而EasyFTP的攻擊樣本提供的有效節點數量較少,導致生成特征的刻畫能力較弱,準確性受到影響。如果攻擊數據在漏洞發生前參與運算較少,本文方法會受到一些制約。但在攻擊數據頻繁參與運算并且相互關聯制約形成重要的約束條件的情況下,本文方法可以做出非常準確的判斷,而這正是手工分析最為困難的場景。

表4 攻擊特征有效性驗證
最后,在對Fuzz生成樣本的測試過程中,本文在表5中特別記錄了圖靈機式攻擊特征的運行性能。可見,生成的攻擊特征只占用很少的系統資源,并且做出判斷的速度很快。相比于普通硬盤平均尋道時間8ms和寬帶網絡100ms左右的正常延遲,攻擊特征檢查輸入數據分組對應用程序的性能影響非常微小。

表5 攻擊特征運行性能
以上的實驗驗證了本文想出的特征生成方法既具有較高的準確性,同時也有很好的執行效率。在一個應用程序有多個漏洞或者同一漏洞具有不同的利用方式時,本系統將針對不同的攻擊利用生成多個圖靈機式的特征,從而需要對一個數據分組進行多次的檢驗,可能引起額外的開銷。如何合并不同的攻擊特征以減少重復計算,將是筆者下一步工作需要解決的問題。
本文提出一種基于可回溯動態污點分析的攻擊特征生成方法,借助動態污點分析構建脆弱程序漏洞利用過程的TPG,提取出與攻擊行為直接相關的代碼執行序列,以此為基礎恢復特征執行上下文環境并對條件分支做出判斷,從而生成圖靈機式的攻擊特征。通過對原型系統的評估測試,驗證了本方法具有不依賴源代碼,生成特征簡潔高效,生成過程自動化程度高的優點。下一步,將研究如何擴展現有方法以實現多進程應用系統的攻擊特征生成,并探索合并不同的攻擊特征的方法,提高多特征情況下對輸入數據做出判斷的效率。
[1] NANDA S, CHIUEH T.Execution trace-driven automated attack signature generation[A].24th Annual Computer Security Applications Conference[C].USA, 2008.Anaheim(CA), 2008.195-204.
[2] KOREL B, LASKI J.Dynamic Program Slicing[M].Inf, Process Lett,1988, 29(3):155-163.
[3] BRUMLEY D, NEWSOME J, SONG.Towards automatic generation of vulnerability-based signatures[A].Proceedings of the 2006 IEEE Symposium on Security and Privacy[C].Oakland, Virginia, USA,2006.15-16.
[4] LUK C, COHN R, MUTH R.Pin: building customized program analysis tools with dynamic instrumentation[A].Proc of 2005 Programming Language Design and Implementation (PLDI) Conference[C].Chicago, USA, 2005.190-200.
[5] JACKSON D, ROLLINS E.Chopping: a generalization of slicing[A].Proc of the Second ACM SIGSOFT Symposium on the Foundations of Software Engineering[C].New Orleans, USA, 1994.
[6] BRUMLEY D, WANG H, JHA S. Creating vulnerability signatures using weakest preconditions[A].IEEE Computer Security Foundations Symposium[C].Venice, Italy, 2007.311-325.
[7] COSTA M, CROWCROFT J, CASTRO M.Vigilante: end-to-end containment of internet worms[J]. SIGOPS Oper Syst Rev, 2005,39(5):133-147.
[8] LIANG Z, SEKAR R.Automatic generation of buffer over fl ow signatures: an approach based on program behavior models[A].21st Annual Computer Security Applications Conference[C].Tucson, Arizona,USA, 2005.10-224.
[9] LIANG Z, SEKAR R.Fast and automated generation of attack signatures: a basis for building self-protecting servers[A].Proceedings of the 12th ACM Conference on Computer and Communications Security, Alexandria(VA)[C].USA, 2005.
[10] NEWSOME J, KARP B, SONG D.Polygraph: automatically generating signatures for polymorphic worms[A].IEEE Symposium on Security and Privacy[C].Oakland, Virginia, USA, 2005.226-241.
[11] SINGH S, ESTAN C, VARGHESE G.Automated worm fi ngerprinting[A].Symposium on Opearting Systems Design & Implementation[C].San Francisco, USA, 2004.45-60.
[12] VASUDEYAN A, YERRABALLI R.Cobra: fine-grained malware analysis using stealth localized-executions[A], Proceedings of the 2006 IEEE Symposium on Security and Privacy[C].Oakland, Virginia,USA, 2006.264-279.
[13] CLAUSE J, LI W, ORSO A.Dytan: a generic dynamic taint analysis framework[A].Proceedings of the 2007 International Symposium on Software Testing and Analysis, London, UK, 2007.196-206.
[14] LAM L, CHIUEH T.A general dynamic information flow tracking framework for security applications[A].22nd Annual Computer Security Applications Conference[C].Miami, USA, 2006.463-472.
[15] QEMU[EB/OL].http://www.nongnu.org/qemu/.
[16] NEWSOME J, SONG D.Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software[A].12th Network and Distributed System Security Symposium.San Diego, California, February 2005.
[17] WooKon惡意代碼分析平臺[EB/OL].http://www.isec.ac.cn/group_detail.jsp? gid=2&id=62.WooKon mulicicus code analysis platform[EB/OL].http://www.isec.ac.cn/ group _detail.jsp? gid=2&id=62.
[18] Udis86[EB/OL].http://udis86.sourceforge.net/.
[19] SPIKE Fuzz測試開發組件[EB/OL].http://www.immunitysec.com/downloads/SPIKE2.9.tgz.SPIKE Fuzz testing kit[EB/OL].http://www.immunitysec.com/downloads/SPIKE2.9.tgz.