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