彭國軍,王 瀅,梁 玉,于 慧,王至前
(1.武漢大學 計算機學院 空天信息安全與可信計算教育部重點實驗室,湖北 武漢430072;2.中國人民大學 法學院,北京100872)
為保護敏感機密文件,文獻 [1,2]能準確識別基本的文件行為類型,但用戶或淹沒在龐大的監控和分析數據中,無法發現真正危險的文件行為;或僅能對個別敏感機密文件實施監控,不能全面識別系統中發生的危險文件行為。在軟件行為檢測領域,現有的動態檢測技術[3-5]專注于程序的動態執行過程,但僅能簡單地識別基本行為,且無法對單個行為定性 (即正常或異常);而靜態檢測技術[6]以程序的反匯編代碼為分析對象,難以應對經過特殊處理的代碼 (如加密、混淆或變形),分析效率低下[7],且存在同動態檢測同樣的問題[8]。
針對以上情況,為識別系統中異常的文件管理活動,本文在現有動態檢測技術的基礎上,以異常文件管理活動的時序特征和實現特點為依據,提出基于文件和網絡行為關聯分析的識別方法,并實現原型系統F-Sensor。
異常文件管理活動是指遠程控制者通過網絡連接到受控主機,進而借助控制主機 (“控制端”)對受控主機 (“被控端”)開展的文件管理操作。它主要包括遠程瀏覽目錄、遠程搜索文件、遠程上傳文件 (夾)、遠程下載文件 (夾)等行為 (“上傳/下載”在本文中相對于控制端而言)。本文擬對以上6種異常行為進行識別。
典型的控制行為是通過控制端向運行在受控主機上的被控端程序發送命令,被控端執行相應的操作并返回執行結果來實現的[9],異常文件管理活動的工作模式也是如此。由于CPU 的高速運轉,被控端接收命令、執行操作和發送執行結果三者之間的時間間隔很小。而且,因控制端為人工操控,查看返回結果和發布新的命令都需要時間,故連續的管理行為之間也存在一定的時間間隔。因此,異常文件管理活動在時間上呈現同一行為內的網絡和文件操作緊密相依,而不同行為間疏離的特點。
在具體實現時,以上6種異常文件管理行為又表現出不同的特征:
(1)遠程瀏覽目錄與遠程搜索文件
被控端接收到瀏覽目錄命令后,根據命令中指定的文件目錄立即對其執行遍歷文件操作,并將獲取到的所有文件路徑立刻發送給控制端。而對于遠程搜索文件行為,被控端接收到搜索文件命令后,根據命令中指定的搜索目錄立即遞歸地對該目錄及其子目錄執行遍歷文件,最終將文件名或文件內容中包含搜索關鍵詞的所有文件路徑發送給控制端。
遠程瀏覽目錄本質上是一種特殊的遠程搜索文件行為——當搜索關鍵詞為 “*”時對單層目錄的搜索。
(2)遠程上傳文件與遠程下載文件
被控端接收到上傳文件命令后,即根據命令中包含的文件名稱和內容創建并寫入文件,全部寫入后返回執行結果;對于遠程下載文件行為,被控端接收到下載文件命令后,即根據命令中規定的文件名稱,讀取該文件內容并發送給控制端。
(3)遠程上傳文件夾與遠程下載文件夾
被控端接收到上傳文件夾命令后,首先根據命令中所包含的上傳目標文件夾名稱創建文件夾,然后根據后續傳來的文件名稱及內容創建并寫入文件,如此遞歸直至上傳目標文件夾中所有目錄和文件均被創建和寫入。
對于遠程下載文件夾行為,被控端接收到下載文件夾命令后,即根據命令中規定的文件夾名稱,遞歸地遍歷和讀取該目錄及其子目錄中的所有文件,并將文件內容發送給控制端。
本文以進程的特定網絡和文件API調用記錄為分析對象,根據異常文件管理活動的特征,分析和識別遠程瀏覽目錄、遠程搜索文件、遠程上傳文件 (夾)和遠程下載文件 (夾)這6種異常行為。為便于敘述,我們把分析過程中涉及的相關概念作如下定義:
(1)關鍵API函數:異常文件管理活動發生時所調用且可用于識別異常活動的API函數,包括遍歷文件、讀取文件、寫入文件和創建文件夾等文件相關API函數,以及發送/接收數據等網絡相關API函數。
(2)行為序列:由調用時間間隔小于一定值的相鄰關鍵API函數所組成的API調用序列,即包含一個或多個完整文件管理行為的API調用序列。
(3)行為鏈表:用于存儲行為序列的雙向鏈表。
(4)分析結果序列:針對某一行為序列,記錄其行為識別的中間和最終結果,包含識別出的行為類型、開始時間、結束時間和其它信息,如目標文件/目錄、遠程IP/端口號、搜索關鍵詞等。
(5)分析結果鏈表:用于存儲分析結果序列的雙向鏈表。
根據異常文件管理活動的特征,對異常文件管理行為進行識別,包括3個步驟:①攔截關鍵API函數,根據函數調用時間間隔劃分行為序列;②根據關聯分析算法,對每個行為序列進行網絡和文件行為關聯分析,提取疑似異常的文件管理行為;③結合白名單機制和異常文件管理行為之間的依存關系,剔除可疑行為中的誤報行為,從而識別真正的異常文件管理行為。
基于此,本文實現了如圖1所示的系統架構,其主要包含三大模塊:行為監控模塊、關聯分析模塊、行為識別模塊,分別對應于以上3個步驟。
行為監控模塊利用API Hook技術,攔截系統中所有進程對關鍵API 函數的調用,如NtQueryDirectoryFile、NtReadFile等,并將行為類型、調用時間、關鍵參數及由參數獲取的重要信息記錄到行為鏈表中,供關聯分析模塊分析。行為類型和記錄信息的對應關系見表1。

圖1 異常文件管理活動識別系統架構
完整行為序列的生成:行為監控模塊在每個攔截函數中,檢查當前調用時間與關鍵函數上一次調用時間的差,若大于一定的時間間隔 (經實驗分析取1s),則認為當前的行為序列已生成完整,隨即創建新的行為鏈表來存儲新的行為序列,并將本次調用插入新行為序列中;否則,將本次調用插入當前行為序列的末尾。此外,為方便分析,對同一行為序列中連續的遍歷文件API調用、具有相同文件句柄的讀取/寫入文件API調用,以及具有相同套接字的發送/接收數據API調用進行合并。其中,遍歷文件行為中可能包含多次調用對應的目錄路徑和文件名,而遍歷目錄在列表中的先后順序代表了遍歷順序;遍歷文件名是指遍歷時指定的文件名稱或包含通配符的字符串,對文件名的搜索關鍵詞可在此參數中得以體現。

表1 行為類型和記錄信息
在行為監控模塊工作的同時,關聯分析模塊一旦發現已生成完整的行為序列,即對該序列進行分析,識別出疑似異常的文件管理行為,并將最終的分析結果存儲到可疑行為庫中,以供識別模塊查詢分析。分析過程分為兩步:
(1)以行為序列為分析對象,根據行為節點的不同類型,調用相應行為的識別算法以識別遠程瀏覽目錄、遠程搜索文件、遠程上傳文件和遠程下載文件4種行為,并將分析結果存儲到分析結果鏈表中,如圖2所示;
(2)以分析結果序列為分析對象,調用遠程上傳/下載文件夾行為識別算法以識別其是否存在遠程上傳/下載文件夾行為,若存在則對分析結果鏈表中與此行為相關的節點進行整合。
2.3.1 遠程瀏覽目錄和遠程搜索文件行為的識別
這兩種行為的識別在第一步分析過程中完成 (如圖2所示),在遍歷行為序列時若遇到遍歷文件行為,首先對行為序列中同屬于一個遍歷文件行為的離散節點進行整合,然后根據整合后節點中所包含的目錄路徑之間的關系,利用遍歷文件行為類型識別算法判定整合節點的行為類型(搜索/瀏覽/未知),最后調用遠程遍歷行為識別算法,判定其是否屬于遠程遍歷文件行為及其具體行為類型 (遠程搜索/遠程瀏覽/遠程未知)。
整合離散的遍歷文件行為:有些搜索行為因涉及對許多目錄下文件的遍歷,耗時較長,在執行過程中可能會被其它行為 (如網絡收發行為)所截斷,形成多個離散的行為節點。而搜索行為多是遞歸實現,對搜索目標目錄及其每一子目錄而言,遍歷文件API函數以STATUS_SUCCESS返回值開始,直至該目錄中文件遍歷完畢時返回STATUS_NO_MORE_FILES。因此,完整搜索行為的特征是返回STATUS _NO_MORE_FILES和STATUS _SUCCESS的次數之差為0。據此整合行為序列中的離散行為節點。
遍歷文件行為類型識別算法:該算法用于判斷遍歷文件行為的類型 (見算法1),根據遍歷行為中所包含的目錄路徑之間的關系來確定。因有些瀏覽目錄行為存在對遍歷文件相關函數的多次調用,故若目錄列表中全是同一目錄,則將該行為判定為瀏覽目錄。若目錄列表中從第二個目錄起所有目錄的父目錄都存在于其之前的目錄集合中,則將該行為判定為搜索文件行為。若不符合以上兩種情況,則判定為未知遍歷行為。
算法1:遍歷文件行為類型識別算法

圖2 關聯分析第一步的分析流程
輸入:行為序列中經過整合后的遍歷文件行為ai=<beginTime,endTime,type,folderList,keywordList,nNo-MoreFiles>.
輸出:遍歷文件行為的類型type=<BrowseFolder|


遠程遍歷行為識別算法:該算法通過關聯網絡和文件行為來識別遠程瀏覽目錄/搜索文件行為,見算法2。將遍歷文件行為aj判定為遠程行為,需具備兩個條件:①aj之前存在時間間隔小于一定值 (經實驗分析,本文取500 ms),且屬于小包的接收行為;②aj之后存在時間間隔小于一定值,且與滿足條件的接收行為具有相同套接字的發送行為。
算法2:遠程遍歷行為識別算法
輸入:完整的行為序列S= {ai|i=1,…,n},遍歷文件 行 為aj=<beginTime,endTime,type,folderList,keywordList,nNoMoreFiles>。
輸出:分析結果序列R= {ri=<beginTime,end-Time,type,pArgList>|i=1,…,m}。


2.3.2 遠程上傳和下載文件行為的識別
這兩種行為的識別在第一步分析過程中完成 (如圖2所示),在遍歷行為序列時若遇到寫入文件行為,則調用遠程上傳文件行為識別算法,判定其是否屬于遠程上傳文件行為;若遇到讀取文件行為,則調用遠程下載文件行為識別算法,判定其是否屬于遠程下載文件行為。
遠程上傳文件行為識別算法:該算法通過尋找行為序列中寫入文件行為之前滿足條件 (即二者時間間隔小于一定值且接收數據與寫入數據長度大于1/2)的接收行為,來識別遠程上傳文件行為,見算法3。
算法3:遠程上傳文件行為識別算法
輸入:完整的行為序列S= {ai|i=1,…,n},寫入文件行為aj=<beginTime,endTime,type,filename,writtenLen>。
輸出:分析結果序列R= {ri=<beginTime,end-Time,

遠程下載文件行為識別算法:與算法3 類似,該算法遍歷行為序列中讀取文件行為之后的所有行為,尋找滿足時間間隔小于一定值且發送數據與讀取數據長度大于1/2的發送行為:若找到,則說明是遠程下載文件行為。
2.3.3 遠程創建文件夾行為的識別
該行為的識別在第一步分析過程中完成 (如圖2 所示),在遍歷行為序列時若遇到創建文件夾行為,則調用遠程創建文件夾行為識別算法,判定其是否屬于遠程創建文件夾行為。
遠程創建文件夾行為識別算法:該算法與算法2類似,即以行為序列和創建文件夾行為作為輸入,通過關聯文件行為前后的網絡行為來識別遠程創建文件夾行為。識別該行為是作識別遠程上傳文件夾行為之用。
2.3.4 遠程上傳和下載文件夾行為的識別
在完成對上述行為的識別之后,調用遠程上傳/下載文件夾行為識別算法,對分析結果序列中的遠程創建文件夾和遠程上傳文件行為,或遠程瀏覽目錄/搜索文件和遠程下載文件行為進行關聯分析,判定是否存在遠程上傳文件夾或下載文件夾行為。
遠程上傳文件夾行為識別算法:該算法通過關聯分析第一步得到的分析結果序列中存在的遠程創建文件夾和遠程上傳文件行為,來識別遠程上傳文件夾行為。根據遠程上傳文件夾行為的實現特征,我們得知若遠程上傳文件行為之前存在對上傳文件父目錄的遠程創建操作,則存在遠程上傳文件夾行為;但反過來,遠程上傳文件夾行為中在遠程創建文件夾之后,并非一定有對該目錄下文件的遠程上傳行為。故該算法暫且先將分析結果序列中遠程創建文件夾行為識別為遠程上傳文件夾行為,并將與遠程上傳文件夾行為相關的一個或多個遠程創建文件夾和遠程上傳文件行為整合為一,待遍歷一遍分析結果序列后再進行新一輪的遍歷,將上傳文件列表為空的遠程上傳文件夾行為重新恢復為遠程創建文件夾行為,完整的分析過程如圖3所示。
遠程下載文件夾行為識別算法:該算法的流程與遠程上傳文件夾行為的識別類似,不同之處在于上傳文件夾命令執行時會先后發生遠程創建文件夾和遠程上傳文件行為,下載文件夾則對應于遠程瀏覽目錄/搜索文件和遠程下載文件行為。這里,若下載目標文件夾中全是文件而不存在文件夾,則在第一步中本文的算法1會將相應的遍歷文件行為判定為瀏覽目錄,否則便判定為搜索文件。
經過關聯分析模塊的初步判定分析,異常文件管理行為全被識別,但是分析結果中可能包含部分正常網絡應用程序的誤報情況。正常網絡應用程序在進行網絡交互的同時,可能存在瀏覽、搜索、讀寫文件的操作,故有可能存在正常文件行為的誤判。對此,行為識別模塊通過白名單機制來排除誤判的瀏覽/搜索行為,根據遠程上傳/下載文件和遠程瀏覽/搜索文件的關系來識別真正的異常行為。
通過統計分析,正常網絡應用程序瀏覽/搜索的目標文件集中在AppData目錄或其程序安裝/數據目錄,據此制定白名單庫以有效剔除誤判的瀏覽/搜索行為。
再者,遠程上傳/下載與遠程瀏覽/搜索行為存在依存關系,即遠程上傳文件 (夾)行為發生前的最近瀏覽/搜索行為一定存在,且是對上傳目標文件 (夾)父目錄的遠程瀏覽行為;而遠程下載文件 (夾)行為發生前的最近瀏覽/搜索行為一定存在,并且是對下載文件父目錄的瀏覽或對其祖先目錄的遠程搜索行為。因而在保證遠程瀏覽目錄/搜索文件行為識別準確的前提下,通過關聯分析遠程瀏覽目錄/搜索文件行為,在不影響異常行為識別準確率的同時有效地降低了遠程上傳/下載文件 (夾)的誤報率。

圖3 遠程上傳文件夾行為識別算法流程
本文選取了12個遠程控制型木馬樣本和45個正常網絡應用程序,使用異常文件管理活動識別系統F-Sensor來對異常和正常的文件管理行為進行識別,計算行為識別的檢出率和誤報率。
對異常文件管理行為的測試:分別對12個木馬樣本的每個文件管理行為隨機觸發至少20次,對比測試記錄和識別結果并計算行為識別的檢出率。表2列出了對異常文件管理行為的識別結果,表中的符號 “—”表示木馬不具備此項功能。由此可知,本系統對6種異常文件管理行為識別的檢出率均很高。
對表2中未識別的異常文件管理行為進行分析并發現:
(1)對于貝殼木馬,因某一測試用例中上傳和下載行為的目標文件內容存在大量的重復數據,貝殼樣本對該文件的壓縮率高達90%,而非本文中遠程上傳/下載行為關聯分析算法中的50%,導致對該文件的下載/上傳行為被識別系統漏掉 (上傳/下載文件夾行為的漏報也是同樣的原因導致),這種漏報可通過調整算法中讀取/寫入與發送/接收數據長度的比值得以解決;
(2)對于PcShare木馬,因某一測試用例中搜索目標目錄為單層目錄,故搜索行為被識別為瀏覽行為,這一誤判無法避免;
(3)對于IM 木馬,在瀏覽個別系統目錄時,被控端程序同時訪問并讀取該目標目錄下的desktop.ini文件,致使瀏覽行為被誤判為上傳文件夾行為;
(4)對于Radmin木馬,若瀏覽目錄與上傳文件 (夾)行為時間間隔很短,兩者將被整合為對瀏覽目標目錄的上傳行為,可通過進一步調整行為序列中函數調用時間間隔得以解決。

表2 異常行為識別結果統計
此外,有些木馬 (如PcShare和Poison Ivy)在搜索文件時,將調用遍歷行為相關API函數獲取到的文件名與搜索關鍵字進行匹配,從而實現對包含關鍵詞文件的搜尋,故搜索關鍵詞不能反映在API函數的參數中。所以,Pc-Share和Poison Ivy的搜索關鍵詞無法通過API Hook的方法獲取到。
對正常文件管理行為的測試:使用F-Sensor對45個正常網絡應用程序進行持續72小時的監控,同時不定期地在測試程序的 “另存為”等文件瀏覽窗口中瀏覽文件,使用測試程序上傳或下載文件 (夾)等,最終觀察識別結果并計算行為識別的誤報率。測試發現,有一個進程出現一次遠程瀏覽目錄行為的誤報,其它5種行為不存在誤報情況。因正常軟件行為發生次數無法確定,故其誤報率以進程數目為基數,計算得誤報率為2.22%。
外部入侵是導致機密或隱私文件被竊取的重要原因,而當前的軟件行為檢測和文件監控技術均難以自動化識別異常文件管理活動。為此,本文提出一種基于文件和網絡關聯分析的異常文件管理活動識別方法,能夠有效識別系統中已發生的異常文件管理活動,還能以此為突破口實現對惡意軟件的檢測。實驗結果表明,原型系統F-Sensor能夠有效地識別異常文件管理活動,且誤報率較低。利用本方法,不僅能檢測惡意軟件還能夠重現攻擊者在遠程控制過程中的文件行為軌跡,為分析攻擊者的控制意圖提供了極大的幫助。下步工作將進一步完善分析算法,并研究針對文件名和內容的搜索關鍵詞的獲取方法。
[1]LI Daquan,LUO Kelu.File operations recognition based on filter driver[J].Journal of Computer Applications,2010,30(A01):182-184 (in Chinese). [李大權,羅克露.驅動層文件監控操作類型識別模型 [J].計算機應用,2010,30(A01):182-184.]
[2]FAN Xuebin,PANG Jianmin,ZHANG Yichi,et al.File monitoring model based on IRP feature sequence [J].Journal of Information Engineering University,2012,13 (4):508-512(in Chinese).[范學斌,龐建民,張一弛,等.基于IRP特征序列的文件行為監控模型 [J].信息工程大學學報,2012,13(4):508-512.]
[3]HAN Lansheng,GAO Kunlun,ZHAO Baohua,et al.Behavior detection of malware based on combination of API function and its parameters[J].Computer Application and Research,2013,30(11):3407-3410(in Chinese).[韓蘭勝,高昆侖,趙保華,等.基于API函數及其參數相結合的惡意軟件行為檢測 [J].計算機應用研究,2013,30 (11):3407-3410.]
[4]LI Huanzhou,TANG Zhangguo,ZHONG Mingquan,et al.The research and implementation of Trojan detection system based on behaviors monitoring [J].Journal of Sichuan Normal University (Natural Science),2009,32 (3):386-389 (in Chinese).[李煥洲,唐彰國,鐘明全,等.基于行為監控的木馬檢測系統研究及實現 [J].四川師范大學學報 (自然科學版),2009,32 (3):386-389.]
[5]HAN Lansheng,FU Cai,ZOU Deqing,et al.Task-based behavior detection of illegal codes [J].Mathematical and Computer Modelling,2012,55 (1):80-86.
[6]Wang C,Pang J,Zhao R,et al.Malware detection based on suspicious behavior identification [C]//First International Workshop on Education Technology and Computer Science.IEEE,2009:198-202.
[7]CHEN Chao,LI Jun,KONG Deguang,et al.Model checking obfuscated binary malicious code [J].Computer Engineering and Applications,2008,44 (15):61-63 (in Chinese). [陳超,李俊,孔德光.模型檢測迷惑二進制惡意代碼 [J].計算機工程與應用,2008,44 (15):61-63.]
[8]ZHANG Yichi,PANG Jianmin,FAN Xuebin,et al.Program malicious behavior recognizing method based on model checking[J].Computer Engineering,2012,38 (18):107-110 (in Chinese).[張一弛,龐建民,范學斌,等.基于模型檢測的程序惡意行為識別方法[J].計算機工程,2012,38 (18):107-110.]
[9]CHEN Li,ZHANG Li,YAO Yizhan,et al.Trojans control behavior detection approach based on timing analysis [J].Computer Science,2013,40 (06A):337-339 (in Chinese).[陳利,張利,姚軼嶄,等.基于時序分析的木馬控制行為識別方法 [J].計算機科學,2013,40 (06A):337-339.]