楊文遠(yuǎn),趙 鑫
(南昌航空大學(xué)科技學(xué)院,江西 共青城 332020)
惡意軟件會造成計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的癱瘓,并導(dǎo)致用戶隱私信息的泄露或數(shù)字財產(chǎn)的損失。鑒于惡意軟件具有變種多、危害大等特點(diǎn),必須堅(jiān)持預(yù)防為主的原則,通過準(zhǔn)確識別惡意軟件并及時采取控制措施,保護(hù)計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的安全。相關(guān)人員需將基于機(jī)器學(xué)習(xí)的靜態(tài)檢測模型和基于深度學(xué)習(xí)的動態(tài)檢測模型相結(jié)合,在2種檢測技術(shù)優(yōu)勢互補(bǔ)的基礎(chǔ)上搭建惡意軟件檢測系統(tǒng),以達(dá)到高效率、高準(zhǔn)確率的效果,在保障計(jì)算機(jī)網(wǎng)絡(luò)安全方面發(fā)揮作用。
本文基于動靜態(tài)檢測模型設(shè)計(jì)的惡意軟件檢測系統(tǒng),主要由客戶端、系統(tǒng)緩存和惡意軟件檢測系統(tǒng)服務(wù)器3部分組成。客戶端用于上傳文件和展示檢測結(jié)果;系統(tǒng)緩存用于存儲PE原始文件和訓(xùn)練模型;服務(wù)器支持靜態(tài)和動態(tài)分析以及文件讀取等功能的實(shí)現(xiàn)??蛻舳伺c服務(wù)器之間采用超文本傳輸協(xié)議(HTTP)進(jìn)行數(shù)據(jù)傳遞,服務(wù)器與系統(tǒng)緩存之間基于I/O口完成數(shù)據(jù)交互[1]。該系統(tǒng)具有數(shù)據(jù)上傳、數(shù)據(jù)處理和結(jié)果展示3項(xiàng)基本功能,功能架構(gòu)如圖1所示。
圖1 惡意軟件檢測系統(tǒng)整體架構(gòu)
1.2.1 數(shù)據(jù)上傳模塊
該模塊支持用戶上傳可執(zhí)行文件。當(dāng)用戶向Web服務(wù)器發(fā)出上傳文件的請求后,服務(wù)器首先執(zhí)行一個判斷程序“上傳文件是否為空”。如果判斷結(jié)果為“否”,即用戶在沒有選中文件的情況下直接點(diǎn)擊上傳,那么系統(tǒng)報錯,在屏幕上提示“請選擇有效文件”;如果判斷結(jié)果為“是”,服務(wù)器再執(zhí)行一個判斷程序“文件類型是否合格”。系統(tǒng)默認(rèn)的文件類型有.exe、.dll、.sys、.drv等幾種,若用戶上傳文件不屬于上述類型,系統(tǒng)報錯并提示“文件類型錯誤”;若用戶上傳文件屬于默認(rèn)類型,服務(wù)器接收文件,并將其保存在系統(tǒng)緩存中。數(shù)據(jù)上傳流程如圖2所示。
圖2 數(shù)據(jù)上傳流程
1.2.2 數(shù)據(jù)處理模塊
惡意軟件檢測系統(tǒng)的數(shù)據(jù)處理模塊支持靜態(tài)和動態(tài)2種分析模式。當(dāng)系統(tǒng)需要處理數(shù)據(jù)時,以用戶上傳的文件名作為關(guān)鍵詞,在系統(tǒng)緩存中輸入關(guān)鍵詞并匹配相應(yīng)的文件。如果檢測系統(tǒng)緩存文件后未成功匹配,則提示“未找到有效文件”并自動返回系統(tǒng)主界面;如果成功匹配,則進(jìn)一步判斷使用靜態(tài)分析還是動態(tài)分析。判斷依據(jù)是客戶端的請求內(nèi)容。
若請求內(nèi)容為靜態(tài)分析,檢測系統(tǒng)對該文件進(jìn)行靜態(tài)分析。數(shù)據(jù)處理模塊讀取文件的靜態(tài)分析參數(shù),若參數(shù)為0,表示該文件是未選中狀態(tài),提示用戶選擇分析類型;用戶選中“靜態(tài)分析模型”后,參數(shù)變?yōu)?,此時數(shù)據(jù)處理模塊提取文件的靜態(tài)特征,并做向量化處理,設(shè)計(jì)人員將處理結(jié)果輸入已經(jīng)訓(xùn)練好的惡意軟件靜態(tài)檢測模型,完成對該樣本文件的分析和預(yù)測。
若請求內(nèi)容為動態(tài)分析,檢測系統(tǒng)對該文件進(jìn)行動態(tài)分析。數(shù)據(jù)處理模塊讀取文件的動態(tài)分析參數(shù),若參數(shù)為1,則讀取該文件從原始PE文件中提取動態(tài)特征。然后將PE文件放入沙箱環(huán)境進(jìn)行處理,得到該文件的行為日志。系統(tǒng)設(shè)計(jì)人員以行為日志作為處理對象,提取API序列特征,并做向量化處理。將處理結(jié)果輸入已經(jīng)訓(xùn)練好的惡意軟件動態(tài)檢測模型,完成對該樣本文件的分析和預(yù)測[2]。
1.2.3 結(jié)果展示模塊
服務(wù)器在接收到客戶端發(fā)起的HTTP請求后,讀取請求中的數(shù)據(jù);在服務(wù)器內(nèi)部完成數(shù)據(jù)的動靜態(tài)分析和預(yù)測后,將預(yù)測結(jié)果封裝成JSON格式的文件,再利用HTTP協(xié)議將文件返回至客戶端。服務(wù)器如果未找到與該請求對應(yīng)的處理結(jié)果,則發(fā)送431錯誤碼并在客戶端上顯示。結(jié)果展示流程如圖3所示。
圖3 結(jié)果展示流程
系統(tǒng)設(shè)計(jì)人員在設(shè)計(jì)惡意軟件檢測系統(tǒng)的前端界面時,除了要用簡潔的文字概述本系統(tǒng)的核心功能,還要對該系統(tǒng)允許接收的合格文件作出必要限制,防止用戶上傳系統(tǒng)無法識別或無法使用的文件。例如,系統(tǒng)對文件的大小做了限制,默認(rèn)文件不得超過20 MB。當(dāng)用戶在系統(tǒng)前端界面上點(diǎn)擊“上傳文件”按鈕時,系統(tǒng)會自動識別該文件是否超過20 MB,如果超過則彈出對話框進(jìn)行提示,并重新刷新當(dāng)前頁面。前端界面的下方設(shè)計(jì)有2個復(fù)選按鈕,左側(cè)為“靜態(tài)分析”復(fù)選框,右側(cè)為“動態(tài)分析”復(fù)選框。用戶選擇任意一個復(fù)選框后,從系統(tǒng)主界面跳轉(zhuǎn)至對應(yīng)的子頁面。
靜態(tài)分析子界面的上部分為文字介紹,即基于LGBMopt模型的靜態(tài)分析結(jié)果;中間部分以表格形式展示上傳文件的分析預(yù)測結(jié)果,即該文件是惡意軟件或良性軟件的概率;下部分為“返回”選項(xiàng),可跳轉(zhuǎn)至主界面;動態(tài)分析子界面的上部分為文字介紹,即基于T-Bilstm模型的動態(tài)分析結(jié)果;中間部分以表格形式展示預(yù)測結(jié)果的排序,分別為最有可能,第二大可能、第三大可能,并給出了軟件的判斷結(jié)果,如worms病毒、trojans病毒、botnets病毒以及每種病毒的預(yù)測評分;下部分為“返回”選項(xiàng),可跳轉(zhuǎn)至主界面[3]。
支持Python編程語言的Web應(yīng)用開發(fā)工具有Django、Flask、Bottle等。從應(yīng)用效果來看,Flask作為一款輕量級、多功能的免費(fèi)開發(fā)工具,具有支持單元測試、支持安全Cookie、支持功能擴(kuò)展等多種優(yōu)點(diǎn),因此本文選用Flask進(jìn)行惡意軟件檢測系統(tǒng)的開發(fā)。
系統(tǒng)設(shè)計(jì)人員使用Virtualenv創(chuàng)建一個虛擬環(huán)境,在該環(huán)境下用Flask開發(fā)工具創(chuàng)建惡意軟件檢測系統(tǒng),主要包含Web客戶端、服務(wù)接口、Jinja2模板引擎、Web服務(wù)器等模塊。在后端程序中添加一個Flask類的實(shí)例,路由裝飾器會描述觸發(fā)自定義函數(shù)的URL,從而支持用戶自定義返回Web客戶端的信息?;贔lask的檢測系統(tǒng)能快速響應(yīng)文件上傳請求,服務(wù)器在響應(yīng)請求后會將上傳的文件保存在緩存中;同時,設(shè)計(jì)人員根據(jù)請求對象的files屬性訪問上傳的文件,并記錄文件名、文件存儲路徑等信息,為后期查詢和調(diào)用文件提供了便利[4]。設(shè)計(jì)人員在構(gòu)建系統(tǒng)時,調(diào)用了render_template()函數(shù)來渲染前端頁面,達(dá)到優(yōu)化人機(jī)交互的效果。本系統(tǒng)的Web頁面按照功能的不同共有3種類型,分別是:
(1)用于上傳文件的主頁面index.html;
(2)用于展示靜態(tài)預(yù)測結(jié)果的子頁面detectStatic.html;
(3)用于展示動態(tài)預(yù)測結(jié)果的子頁面detectDynamic.html。
系統(tǒng)設(shè)計(jì)人員將建成的Web應(yīng)用在本地服務(wù)器上運(yùn)行,并嘗試?yán)梅?wù)器端口訪問該應(yīng)用,結(jié)果顯示可以正常訪問,在此基礎(chǔ)上對惡意軟件檢測系統(tǒng)的各項(xiàng)功能進(jìn)行測試。
2.3.1 文件上傳功能測試
本文設(shè)計(jì)的惡意軟件檢測系統(tǒng),對用戶上傳的文件有2個限制條件:其一是文件要控制在20 MB以內(nèi);其二是上傳文件不得為空。據(jù)此,設(shè)置T01~T03文件上傳測試用例,前置條件和測試結(jié)果如表1所示。
表1 文件上傳功能測試用例
由表1可知,針對系統(tǒng)文件上傳功能,分別進(jìn)行了“文件為空”“文件大小超過20 MB”和“不超過20 MB的非PE文件”3項(xiàng)測試。測試結(jié)果表明,當(dāng)上傳文件為空和文件為非PE文件時,系統(tǒng)自動返回上傳文件主頁面,并在該頁面上以彈窗的形式提示錯誤信息;當(dāng)上傳文件的大小超過規(guī)定的20 MB時,提示錯誤碼431。
2.3.2 靜態(tài)分析模型預(yù)測功能測試
靜態(tài)分析模型的主要作用是識別用戶上傳文件的文件名,然后讀取文件內(nèi)容并從中提取靜態(tài)特征,系統(tǒng)設(shè)計(jì)人員將靜態(tài)特征的向量化處理結(jié)果作為靜態(tài)模型的訓(xùn)練樣本,經(jīng)過500次訓(xùn)練后,測試靜態(tài)分析模型的預(yù)測功能[5]。前置條件為成功上傳符合要求的文件,測試結(jié)果如表2所示。
表2 靜態(tài)分析模型預(yù)測結(jié)果
靜態(tài)分析模型的預(yù)測結(jié)果符合預(yù)期,測試通過。
2.3.3 動態(tài)分析模型預(yù)測功能測試
動態(tài)分析模型的主要作用是識別用戶上傳文件的文件名,然后將該文件置于沙箱環(huán)境中展開動態(tài)分析。設(shè)計(jì)人員在分析期間生成記錄日志,從日志中提取API調(diào)用序列,依次完成去重、特征向量化等一系列處理后,將最終處理結(jié)果作為動態(tài)模型的訓(xùn)練樣板。經(jīng)過500次訓(xùn)練后,測試動態(tài)分析模型的預(yù)測功能。前置條件為成功上傳符合要求的文件,測試結(jié)果如表3所示。
表3 動態(tài)分析模型預(yù)測結(jié)果
動態(tài)分析模型的預(yù)測結(jié)果符合預(yù)期,測試通過。
在信息時代背景下,以機(jī)器學(xué)習(xí)和深度學(xué)習(xí)為代表的人工智能技術(shù)得到了成熟發(fā)展,并在計(jì)算機(jī)視覺和自然語言處理等方面得到了廣泛應(yīng)用。本文將基于機(jī)器學(xué)習(xí)的靜態(tài)檢測技術(shù)和基于深度學(xué)習(xí)的動態(tài)檢測技術(shù)相結(jié)合,構(gòu)建了惡意軟件檢測系統(tǒng),該系統(tǒng)能夠準(zhǔn)確識別用戶提交文件是否為惡意軟件,并且對惡意軟件的具體類型作出預(yù)測,從而為惡意軟件的處理提供了依據(jù),保障了計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的運(yùn)行安全。