轉自---中國保密協會科學技術分會
摘 要
隨著網絡的快速發展,大規模惡意軟體的自動化攻擊已經成為網絡攻擊的主要形式。這不僅給普通用戶帶來了極大的困擾,同時也給企業與政府部門帶來了不可小覷的損失。研究人員已經提出了一些惡意軟體檢測方法,包括靜態分析和動態分析及混合分析法。
一、惡意軟體引發的安全問題
惡意軟體是一種破壞受害者的工作站、行動裝置、伺服器和網關的程序。常見的惡意軟體程序有病毒、蠕蟲、木馬、間諜軟體、勒索軟體、恐嚇軟體、殭屍程序和rootkit。網絡罪犯利用惡意軟體攻擊個人和組織,實現破壞作業系統、破壞電腦或網絡、竊取機密數據、收集個人信息、劫持或加密敏感數據等目標。
惡意軟體是目前網際網路上的主要威脅之一,網絡中的設備都可能會受到惡意軟體的攻擊。瑞星的安全報告中指出[1],在2019年「雲安全」系統共截獲1.03億個病毒樣本量,病毒感染次數4.38億次,病毒總體數量比2018年同期上漲32.69%。2020年8月,國家網際網路應急中心發布的網絡安全信息與動態周報指出[2],境內感染網絡病毒的主機數量達到了58.6萬,被木馬或殭屍程序控制的主機約52.7萬個,感染飛客蠕蟲的主機約5.9萬,木馬和殭屍程序較上周增長了3.4%,飛客蠕蟲較上周增長了4.5%,企業、政府和學校都受到了複雜多樣的威脅。隨著惡意軟體的數量和多樣性的不斷增加,傳統的惡意軟體檢測方法已然失效。因此,研究更加快速、高效的惡意軟體檢測方法是十分有必要的。
二、常見檢測方法及改進
傳統的惡意軟體分析方法主要分為靜態分析法和動態分析法[3]。靜態方法準確性高,動態方法靈活性高,這兩種方法都存在一定的缺陷。研究人員通過機器學習技術,提出了新的混合分析法。
1. 靜態分析法
同一惡意軟體家族代碼復用導致惡意軟體作者或團隊編碼具有編碼相似性[4],因此當同一家族惡意軟體載入內存執行時其結構信息和數據也應該具有一定的相似性。鑑於上述相似性,靜態分析法通過對惡意軟體本身二進位文件、可執行文件或者通過反編譯文件提取到的靜態特徵進行分析,對比惡意軟體與正常軟體的靜態特徵的異同來發現惡意軟體。通過將 EXE 文件以 PE 文件格式解析,提取樣本的文本、全局、頭部、導入導出表、節特徵,再通過對比分析即可精準地識別出惡意軟體。
Schultz 等[5]通過樸素貝葉斯分類算法,將數據挖掘的算法首次應用於惡意軟體分析,檢測結果比基於特徵匹配的傳統靜態檢測法更準確。Santos 等[6]根據操作碼的出現頻率以及操作碼之間的關聯性來識別和分類惡意軟體。Zhang等[7] 通過將可執行文件反編譯得到操作碼序列轉換成圖像,輸入卷積神經網絡CNN來進行識別。這使得圖像的概念被引入了惡意軟體檢測領域。Conti G等[8]首次提出將惡意軟體的二進位文件轉化為灰度圖像。
靜態方法可以準確地捕捉到惡意軟體的靜態特徵,但是由於特徵類型單一,混淆或加殼等技術可以讓惡意軟體逃過檢測,使得檢測效果下降。
1. 動態分析法
動態分析方法主要是通過在虛擬環境中執行惡意軟體樣本,記錄惡意軟體的行為特徵,如行為日誌、系統調用名稱、上下文參數、環境變量等[9]。惡意軟體在運行時會做出各類威脅行為,包括修改文件系統 (如寫入設備驅動程序、更改系統配置文件) 、修改註冊表(如修改註冊表鍵值、更改防火牆設置)、網絡行為(如解析域名、發出HTTP請求)等。在獨立、安全的沙(Sandbox) 環境中運行PE文件,通過行為分析來判定其是否為惡意軟體。動態檢測通常與可視化技術相結合,便於分析動態行為軌跡。
鄭銳等[10]使用雙向LSTM模型和Cuckoo Sandbox平臺收集樣本的API調用序列,對6681個惡意軟體樣本進行分類,取得了99.28%的準確率。Tandon和Chan[11]通過用規則算法學習系統調用中的規則信息,來檢測新型的惡意軟體行為。Rieck等[12] 通過沙箱採集了惡意軟體運行時的行為特徵,並基於這些行為特徵使用機器學習算法進行識別和分類。Ki 等[13]通過構建API特徵資料庫,利用對比API序列特徵的方法來判斷是否屬於惡意軟體。
但動態分析需要惡意軟體完整運行,再進行判斷,所以惡意軟體的檢測時效性較差。更重要的是,攻擊者能夠讓惡意軟體避開檢測軟體的檢測[14],
2. 混合分析法——機器學習
隨著惡意軟體的數量劇增,類型也逐漸變得多樣和複雜,傳統的技術顯得效率不足。因此研究者逐漸趨向於使用機器學習技術,來應對惡意軟體難以預測的變種和日益龐大的數量。
基於機器學習的惡意軟體檢測方法關鍵在於特徵和算法的選擇。靜態特徵和動態特徵都可用於機器學習,但無關特徵和噪聲特徵會影響模型的準確性。利用數據挖掘選擇數據、特徵,再結合機器學習技術完成檢測,是現有研究中常見的解決方案。一般分為四個步驟:數據準備、特徵提取及特徵選擇、訓練機器學習模型、獲取檢測結果。目前,大部分安全平臺公開了大量惡意軟體的數據集,其中包括可以在Windows平臺,Linux平臺以及移動端等各個環境下運行的惡意樣本。而樣本類型多種多樣,例如木馬,蠕蟲,後門等,可以根據當前需求進行篩選。獲取到數據集後,進行特徵提取。特徵提取分為靜態特徵(如PE頭特徵、二進位內容特徵等)以及動態特徵(如API調用特徵、系統修改特徵和網絡行為特徵等)。然後選擇一種機器學習算法,使用提取的特徵集合訓練模型。最終使用模型進行惡意軟體的檢測與判定。將用於測試的惡意樣本以相同的方式進行特徵提取,把測試特徵集合送入已經訓練完成的模型中,模型會自動判定測試樣本的分類,是否屬於惡意樣本,從而實現惡意軟體的檢測。
趙中軍等[15]通過優化的K-means算法,快速有效地識別出惡意軟體;張瑩等[16]解決了傳統K-means選擇初始質心不穩定的問題,提出一種基於PSO-K-means的惡意代碼檢測方法。楊宏宇等[17]提出的改進隨機森林算法在惡意軟體檢測實驗中準確率達到98%。目前硬體計算能力的大幅提高,使得深度學習的普及成為可能,逐漸步入人們的視野。在惡意軟體檢測中,CNN、RNN以及兩者的結合應用較多,PE文件的二進位字節內容可以直接作為深度神經網絡的輸入[18],也可以提取序列化的特徵作為輸入[19-22]。
參考文獻
[1] 呂雲峰.2019年瑞星網絡安全報告與趨勢展望[J].信息安全研究,2020.
[2] 國家網際網路應急中心網絡安全信息與動態周報[R/OL].(2020-02-29)[2020-03-10].https://www.cert.org.cn/publish/main/upload/File/202008.pdf.
[3] BoYU,FangY,YangQ,etal.Asurveyofmalwarebehaviordescriptionandanalysis[J].FrontiersofInformationTechnology&ElectronicEngineering,2018,19(5):583-603.
[4] 宋文納,彭國軍,傅建明,等.惡意代碼演化與溯源技術研究[J].軟體學報,2019,30(8):2229-2267.
[5] SchultzMG,EskinE,ZadokF,etal.DataMiningMethodsforDetectionofNewMaliciousExecutables[C]//IEEESymposiumonSecurity&Privacy.IEEE,2002.
[6] SantosI,BrezoF,Ugarte-PedreroX,etal.Opcodesequencesasrepresentationofexecutablesfordata-mining-basedunknownmalwaredetection[J].Informationences,2013,231:64-82.
[7] Zhang,J,Qin,Z.,Yin,H,Ou,L.,&Hu,Y..(2017).IRMD:MalwareVariantDetectionUsingOpcodeImageRecognition.IEEEInternationalConferenceonParallel&DistributedSystems.IEEE.
[8] ContiG,BratusS,ShubinaA,etal.Automatedmappingoflargebinaryobjectsusingprimitivefragmenttypeclassification[J].digitalinvestigation,2010,7:S3-S12
[9] 周楊,蘆天亮,杜彥輝,郭蕊,暴雨軒,李默.基於線程融合特徵的Windows惡意代碼檢測與分析[J/OL].計算機工程與應用:1-11[2020-10-21].http://kns.cnki.net/kcms/detail/11.2127.TP.20200421.1438.006.html.
[10] 鄭銳,汪秋雲,傅建明,姜政偉,蘇日古嘎,&汪姝瑋.(2020).一種基於深度學習的惡意軟體家族分類模型.信息安全學報,005(001),1-9.ZHENGR,WANGQY,FUJM,elal.ANovelMalwareClassificationModelBasedonDeepLearning[J].JournalofCyberSecurity,2020,5(1):1-9.
[11] TandonG,ChanP.Learningrulesfromsystemcallargumentsandsequencesforanomalydetection//ProceedingsoftheInternationalWorkshoponDataMiningforComputerSecurity.Melbourne,2003:20
[12] Rieck,K.,Trinius,P.,Willems,C.,&Holz,T..(2011).Automaticanalysisofmalwarebehaviorusingmachinelearning.Journalofcomputersecurity,19(4),p.639-668.
[13] Ki,Y.,Kim,E.,&Kim,H.K..(2015).Anovelapproachtodetectmalwarebasedonapicallsequenceanalysis.InternationalJournalofDistributedSensorNetworks,2015,1-9.
[14] 張蕾,崔勇,劉靜,等.機器學習在網絡空間安全研究中的應用[J].計算,2018(9):1943-1975.ZhangL,CuiY,LiuJ,etal.ApplicationofMachineLearninginCyberspaceSecurityResearch[J].ChineseJournalofComputers,2018,41(9):1943-1975.
[15] 趙中軍,曾湧泉,王運兵 . 基於優化 K-Means 的 Android系 統 惡 意 軟 件 檢 測 的 研 究 與 設 計 [J]. 通 信 技 術 ,2018 , 51(12) :212-218.
[16] 張瑩.基於網絡行為特徵聚類分析的惡意代碼檢測技術研究[D].哈爾濱:哈爾濱工程大學,2018.
[17] 楊宏宇,徐晉.基於改進隨機森林算法的Android惡意軟體檢測[J].通信學報,2017,38(4):8-16
[18] 王蕊,馮登國,楊軼,等.基於語義的惡意代碼行為特徵提取及檢測方法[J].軟體學報,2012,23(2):378-393.
[19] 李鵬,王汝傳,武寧.基於空間關係特徵的未知惡意代碼自動檢測技術研究[J].計算機研究與發展,2012,49(5):949-957.
[20] WATSONMR,SHIRAZINUH,MARNERIDESAK,etal. Malware detection in cloud computing infrasructures [J].IEEE Transactions on Dependable and Secure Computing,2016,13(2):192-205.
[21] 毛蔚軒,蔡忠閩,童力.一種基於主動學習的惡意代碼檢測方法[J].軟體學報,2017,28(2):384-397.
[22] RAFFE,BARKERJ,SYLVESTERJ,etal. Malware detection by eating a whole exe[J].arXiv:1710.09435,2017.