米昂
(國家計算機網絡應急技術處理協調中心上海分中心 上海市 200000)
對接多種掃描引擎對上傳文件進行掃描判定的應用場景,最著名的是Virustotal 平臺,能夠向用戶輸出其對接的多種公開引擎的判定結果列表。然而在使用中,其存在以下問題:
(1)無法對接私有引擎。目前國內部分安全廠商或主管部門也建設有私有的APP 掃描引擎,由于Virustotal 平臺對接的掃描引擎無法自定義,導致其無法對接私有平臺的檢測結果。
(2)僅返回掃描引擎的判定結果列表。Virustotal 僅返回樣本在各引擎中的惡意性判定結果列表,每個引擎的判定結果包括惡意、非惡意、疑似等。但通過平臺無法獲取到各引擎詳細的掃描報告以及具有置信度的惡意性判定建議。
實現多引擎的對接并基于掃描結果進行樣本的惡意性判定,需要解決兩方面問題。一方面,是實現高性能、異步的對接過程,合理調度文件上傳、引擎掃描、獲取掃描結果等相關過程異步且有序的逐步完成[1];另一方面,是基于各掃描引擎返回的不同判定結果,有置信度的輸出惡意性判定建議。
針對以上問題,系統采用了工作流調度機制結合分布式異步任務隊列[2]的技術方案,并采用決策樹算法,針對同一款APP 樣本對接不同的掃描引擎進行樣本惡意性判定。
系統架構如圖1 所示。系統通過調度執行層對樣本分發上傳、啟動樣本掃描任務、掃描結果獲取與分析、格式化保存數據等高耗時操作使用進行異步調度并執行,并將相關結果保存至數據庫,用戶通過展示界面可以對APP 應用情況進行查詢與統計,并查看后臺掃描任務進度情況。
由于將APP 樣本分發上傳至各掃描引擎并獲取分析掃描結果是一個高延時的工作,為避免主進程因高耗時的IO 操作阻塞等待,并且實現系統展示界面的即時性操作與APP 分發掃描分析等高耗時任務的分離,系統在任務調度執行過程使用了異步分布式的工作模式;同事,為了保證樣本上傳、引擎掃描、獲取結果、分析結果等過程能夠按照順序逐步完成,又結合了工作流調度執行的機制,技術方案如圖2 所示。
其中,界面展示層使用Django 開發頁面展示邏輯,異步工作流調度引擎采用AirFlow 工作流框架,高耗時任務采用分布式執行框架Celery 完成,并使用RabbitMQ 作為分布式執行的消息隊列。
系統的用戶視圖僅為Web 界面,除了常規的查詢APP 樣本信息、各引擎掃描結果詳細信息、各類綜合統計的Web 瀏覽外,用戶在界面上啟動APP 檢測任務。任務啟動后,Web 邏輯將任務信息提交工作流引擎進行調度,并從工作流引擎獲取任務執行狀態的實時信息。接到任務后,AirFlow 工作流引擎通過DAG(有向無環圖)的工作模式以及調度器確保單次任務能夠按照分發樣本、獲取報告等流程逐步異步且有序的執行。而對于向對接的多個APP 檢測平臺并發上傳樣本、從多個平臺拉取報告、以及多批次掃描任務并發執行的具體過程,由工作流引擎通過消息隊列調度分布式系統Celery 具體完成。

圖1

圖2
由于對接的掃描引擎的掃描原理與能力各不相同,所以大量存在對于同一款APP 出現不同惡意性判定結果的情況。VirusTotal 的解決方法是展示判定為惡意的引擎數量與參與掃描的全部引擎總數的占比,但并不能根據各引擎長期的表現情況給出經驗的判定預測。本系統使用決策樹模型解決上述問題。
決策樹是一種樹狀分類結構模型,是一種通過對變量值拆分建立起來的分類規則,又利用樹形圖分割形成的概念路徑的數據分析技術。由于本系統對接的各類掃描引擎對于APP 樣本的惡意性判斷結果為“正常”、“惡意”、“疑似”、“失敗”等離散值,例如MD5 值 為117B359038FC2DA271722BF16FADB3FA 的APP 樣本在部分引擎中的判定結果如表1 所示。所以系統使用基于ID3 算法的決策樹模型對新樣本的惡意性進行預測,其決策屬性即各掃描引擎給出的判定結果。

表1:樣本117B359038FC2DA271722BF16FADB3FA 掃描情況

圖3
ID3 決策樹的核心思想是利用信息熵原理選擇信息增益最大的屬性作為分類屬性,遞歸地拓展決策樹的分枝,完成決策樹的構造[3]。本系統使用已收集掌握的正常APP 與惡意APP 樣本構建訓練集,獲取這些樣本在平臺對接的各引擎中的掃描結果,并對樣本真實的惡意性進行標識,進而使用ID3 算法構建決策樹。當系統接收新樣本并從各掃描引擎獲得掃描結果后,依據決策樹給出樣本是否為惡意的預測值。同時,由于ID3 決策樹的節點選擇的是信息增益最大的屬性,所以也可根據最終形成的決策樹側面反映系統所對接的各掃描引擎的掃描能力。當作為判定屬性的引擎結果所處的決策樹層數越低時,表示該引擎的掃描結果信息增益越大,其掃描能力越強。
基于上述架構設計與核心技術,本系統實現的用戶視圖Web界面如圖3 所示。用戶在界面上可以進行各種類型的查詢統計操作,并可將一批次APP 樣本配置成為一個任務進行啟動。后臺程序在分布式異步工作流的工作模式下,按照業務流程順序,完成將各樣本分發至各掃描平臺、啟動掃描、監控掃描、獲取各掃描引擎對各APP樣本的掃描結果、對單個APP的所有掃描結果綜合研判等過程,有序且異步的調度完成整個業務邏輯。用戶在界面上可以實時查看到業務進展,并最終獲得APP 的掃描報告與綜合判定結果。