米昂
(國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心上海分中心 上海市 200000)
對(duì)接多種掃描引擎對(duì)上傳文件進(jìn)行掃描判定的應(yīng)用場(chǎng)景,最著名的是Virustotal 平臺(tái),能夠向用戶輸出其對(duì)接的多種公開(kāi)引擎的判定結(jié)果列表。然而在使用中,其存在以下問(wèn)題:
(1)無(wú)法對(duì)接私有引擎。目前國(guó)內(nèi)部分安全廠商或主管部門也建設(shè)有私有的APP 掃描引擎,由于Virustotal 平臺(tái)對(duì)接的掃描引擎無(wú)法自定義,導(dǎo)致其無(wú)法對(duì)接私有平臺(tái)的檢測(cè)結(jié)果。
(2)僅返回掃描引擎的判定結(jié)果列表。Virustotal 僅返回樣本在各引擎中的惡意性判定結(jié)果列表,每個(gè)引擎的判定結(jié)果包括惡意、非惡意、疑似等。但通過(guò)平臺(tái)無(wú)法獲取到各引擎詳細(xì)的掃描報(bào)告以及具有置信度的惡意性判定建議。
實(shí)現(xiàn)多引擎的對(duì)接并基于掃描結(jié)果進(jìn)行樣本的惡意性判定,需要解決兩方面問(wèn)題。一方面,是實(shí)現(xiàn)高性能、異步的對(duì)接過(guò)程,合理調(diào)度文件上傳、引擎掃描、獲取掃描結(jié)果等相關(guān)過(guò)程異步且有序的逐步完成[1];另一方面,是基于各掃描引擎返回的不同判定結(jié)果,有置信度的輸出惡意性判定建議。
針對(duì)以上問(wèn)題,系統(tǒng)采用了工作流調(diào)度機(jī)制結(jié)合分布式異步任務(wù)隊(duì)列[2]的技術(shù)方案,并采用決策樹(shù)算法,針對(duì)同一款A(yù)PP 樣本對(duì)接不同的掃描引擎進(jìn)行樣本惡意性判定。
系統(tǒng)架構(gòu)如圖1 所示。系統(tǒng)通過(guò)調(diào)度執(zhí)行層對(duì)樣本分發(fā)上傳、啟動(dòng)樣本掃描任務(wù)、掃描結(jié)果獲取與分析、格式化保存數(shù)據(jù)等高耗時(shí)操作使用進(jìn)行異步調(diào)度并執(zhí)行,并將相關(guān)結(jié)果保存至數(shù)據(jù)庫(kù),用戶通過(guò)展示界面可以對(duì)APP 應(yīng)用情況進(jìn)行查詢與統(tǒng)計(jì),并查看后臺(tái)掃描任務(wù)進(jìn)度情況。
由于將APP 樣本分發(fā)上傳至各掃描引擎并獲取分析掃描結(jié)果是一個(gè)高延時(shí)的工作,為避免主進(jìn)程因高耗時(shí)的IO 操作阻塞等待,并且實(shí)現(xiàn)系統(tǒng)展示界面的即時(shí)性操作與APP 分發(fā)掃描分析等高耗時(shí)任務(wù)的分離,系統(tǒng)在任務(wù)調(diào)度執(zhí)行過(guò)程使用了異步分布式的工作模式;同事,為了保證樣本上傳、引擎掃描、獲取結(jié)果、分析結(jié)果等過(guò)程能夠按照順序逐步完成,又結(jié)合了工作流調(diào)度執(zhí)行的機(jī)制,技術(shù)方案如圖2 所示。
其中,界面展示層使用Django 開(kāi)發(fā)頁(yè)面展示邏輯,異步工作流調(diào)度引擎采用AirFlow 工作流框架,高耗時(shí)任務(wù)采用分布式執(zhí)行框架Celery 完成,并使用RabbitMQ 作為分布式執(zhí)行的消息隊(duì)列。
系統(tǒng)的用戶視圖僅為Web 界面,除了常規(guī)的查詢APP 樣本信息、各引擎掃描結(jié)果詳細(xì)信息、各類綜合統(tǒng)計(jì)的Web 瀏覽外,用戶在界面上啟動(dòng)APP 檢測(cè)任務(wù)。任務(wù)啟動(dòng)后,Web 邏輯將任務(wù)信息提交工作流引擎進(jìn)行調(diào)度,并從工作流引擎獲取任務(wù)執(zhí)行狀態(tài)的實(shí)時(shí)信息。接到任務(wù)后,AirFlow 工作流引擎通過(guò)DAG(有向無(wú)環(huán)圖)的工作模式以及調(diào)度器確保單次任務(wù)能夠按照分發(fā)樣本、獲取報(bào)告等流程逐步異步且有序的執(zhí)行。而對(duì)于向?qū)拥亩鄠€(gè)APP 檢測(cè)平臺(tái)并發(fā)上傳樣本、從多個(gè)平臺(tái)拉取報(bào)告、以及多批次掃描任務(wù)并發(fā)執(zhí)行的具體過(guò)程,由工作流引擎通過(guò)消息隊(duì)列調(diào)度分布式系統(tǒng)Celery 具體完成。
圖1
圖2
由于對(duì)接的掃描引擎的掃描原理與能力各不相同,所以大量存在對(duì)于同一款A(yù)PP 出現(xiàn)不同惡意性判定結(jié)果的情況。VirusTotal 的解決方法是展示判定為惡意的引擎數(shù)量與參與掃描的全部引擎總數(shù)的占比,但并不能根據(jù)各引擎長(zhǎng)期的表現(xiàn)情況給出經(jīng)驗(yàn)的判定預(yù)測(cè)。本系統(tǒng)使用決策樹(shù)模型解決上述問(wèn)題。
決策樹(shù)是一種樹(shù)狀分類結(jié)構(gòu)模型,是一種通過(guò)對(duì)變量值拆分建立起來(lái)的分類規(guī)則,又利用樹(shù)形圖分割形成的概念路徑的數(shù)據(jù)分析技術(shù)。由于本系統(tǒng)對(duì)接的各類掃描引擎對(duì)于APP 樣本的惡意性判斷結(jié)果為“正常”、“惡意”、“疑似”、“失敗”等離散值,例如MD5 值 為117B359038FC2DA271722BF16FADB3FA 的APP 樣本在部分引擎中的判定結(jié)果如表1 所示。所以系統(tǒng)使用基于ID3 算法的決策樹(shù)模型對(duì)新樣本的惡意性進(jìn)行預(yù)測(cè),其決策屬性即各掃描引擎給出的判定結(jié)果。
表1:樣本117B359038FC2DA271722BF16FADB3FA 掃描情況
圖3
ID3 決策樹(shù)的核心思想是利用信息熵原理選擇信息增益最大的屬性作為分類屬性,遞歸地拓展決策樹(shù)的分枝,完成決策樹(shù)的構(gòu)造[3]。本系統(tǒng)使用已收集掌握的正常APP 與惡意APP 樣本構(gòu)建訓(xùn)練集,獲取這些樣本在平臺(tái)對(duì)接的各引擎中的掃描結(jié)果,并對(duì)樣本真實(shí)的惡意性進(jìn)行標(biāo)識(shí),進(jìn)而使用ID3 算法構(gòu)建決策樹(shù)。當(dāng)系統(tǒng)接收新樣本并從各掃描引擎獲得掃描結(jié)果后,依據(jù)決策樹(shù)給出樣本是否為惡意的預(yù)測(cè)值。同時(shí),由于ID3 決策樹(shù)的節(jié)點(diǎn)選擇的是信息增益最大的屬性,所以也可根據(jù)最終形成的決策樹(shù)側(cè)面反映系統(tǒng)所對(duì)接的各掃描引擎的掃描能力。當(dāng)作為判定屬性的引擎結(jié)果所處的決策樹(shù)層數(shù)越低時(shí),表示該引擎的掃描結(jié)果信息增益越大,其掃描能力越強(qiáng)。
基于上述架構(gòu)設(shè)計(jì)與核心技術(shù),本系統(tǒng)實(shí)現(xiàn)的用戶視圖Web界面如圖3 所示。用戶在界面上可以進(jìn)行各種類型的查詢統(tǒng)計(jì)操作,并可將一批次APP 樣本配置成為一個(gè)任務(wù)進(jìn)行啟動(dòng)。后臺(tái)程序在分布式異步工作流的工作模式下,按照業(yè)務(wù)流程順序,完成將各樣本分發(fā)至各掃描平臺(tái)、啟動(dòng)掃描、監(jiān)控掃描、獲取各掃描引擎對(duì)各APP樣本的掃描結(jié)果、對(duì)單個(gè)APP的所有掃描結(jié)果綜合研判等過(guò)程,有序且異步的調(diào)度完成整個(gè)業(yè)務(wù)邏輯。用戶在界面上可以實(shí)時(shí)查看到業(yè)務(wù)進(jìn)展,并最終獲得APP 的掃描報(bào)告與綜合判定結(jié)果。