曲文鵬 趙連軍 鄧旭



摘 要:JavaScript目前已經成為交互式網頁和動態網頁中一項廣泛采用的技術,惡意的JavaScript代碼也變得活躍起來,已經被當作基于網頁的一種攻擊手段。通過對大量JavaScript惡意代碼的研究,對混淆惡意JavaScript代碼進行特征提取與歸類,從基于屬性特征、基于重定向特征、基于可疑關鍵詞特征、基于混淆特征四大類中總共提取了82個特征,其中47個是四大類中的新特征。從真實環境中收集了總數為5 525份JavaScript正常與混淆的惡意代碼用于訓練與測試,利用多種有監督的機器學習算法通過異常檢測模式來評估數據集。實驗結果表明,通過引入新的特征,所有分類器的檢測率較未引入新特征相比有所提升,并且誤檢率(False Negative Rate)有所下降。
關鍵詞:機器學習; 惡意代碼; 異常檢測; 混淆; JavaScript
Abstract: JavaScript has become a widely used technology in interactive and dynamic webpages, malicious JavaScript code also becomes active and has been used as an attack method based on Web pages. Based on the study of a large number of JavaScript malicious code, the paper makes the feature extraction and classification on obfuscated malicious JavaScript code. From the four categories: based on attribute features, redirection features, suspicious keyword features and confusion features, a total of 82 features are extracted, of which 47 are new features in the four major categories. 5 525 JavaScript-based pages are collected in a real environment for training and testing, and data sets are further evaluated through anomaly detection patterns using a variety of supervised machine learning algorithms. Experiment shows that compared with not introducing new features, the detection rate of all classifiers is improved by introducing new features, and the False Negative Rate has decreased.
Key words: machine learning; malicious code; anomaly detection; obfuscation; JavaScript
引言
作為一種動態的客戶端腳本語言,JavaScript已經廣泛應用于交互式Web的開發,可以將某些計算轉移到用戶端來幫助減輕服務器端的壓力,從而提高網頁的訪問速度。發展至今,躋身主流的各家瀏覽器均可支持這項腳本語言。然而,最近幾年JavaScript已經成為了普通常見和極易攻陷的解釋性語言。為了瀏覽大多數的正常網頁,客戶必須在瀏覽器中啟用JavaScript功能,但與此同時卻很難阻止惡意代碼下載到用戶的電腦中。因為攻擊者會利用各種方法誘導用戶打開受感染的Web內容,比如彈出式廣告、釣魚網站、病毒郵件、親朋好友發送的鏈接等等。惡意的JavaScript代碼可以內嵌于網頁當中,并在瀏覽器加載該網頁時自動運行。運行后,惡意的JavaScript代碼會產生一些惡意的行為,比如在后臺自動下載惡意軟件、自動安裝惡意軟件、在網頁中不斷彈出垃圾廣告、發送垃圾郵件等等。這些惡意的代碼為了應對殺毒軟件的檢測通常都進行了混淆處理,若僅是選擇普通的靜態特征用于分析和檢測則會遇到一些問題,混淆的手法包括使用一些十六進制的ASCII碼、利用邏輯異或運算、分割字符串、壓縮字符串等。這些混淆技術已經使原來的代碼變得越來越復雜,這就將對惡意代碼的檢測與去除混淆的技術提出了更高的要求。
根據惡意腳本的執行方式,可以通過基于靜態混淆字符串分析[1]和基于動態JavaScript代碼分析相結合的方法來提高惡意JavaScript代碼的檢測速度與檢測質量。其中,靜態分析方法利用代碼的靜態特征,即代碼的結構來識別惡意代碼。動態分析方法通過觀察代碼的執行狀態和進程來檢測惡意代碼[2]。在具有大量特征集的情況下使用機器學習方法會獲得更好的效果和更高的精度,故而可通過機器學習來展開檢測分析。
本研究基于真實數據,提出了一種基于靜態的混淆惡意JavaScript代碼多特征檢測識別與分析方法。首先,從基于屬性特征、基于重定向特征、基于可疑關鍵詞特征、基于混淆特征四大分類中總共提取了82個特征,其中47個是四大分類中的新特征,再利用一類支持向量機(One-class SVM)、樸素貝葉斯(Naive Bayes)、主成分分析法(PCA)、交替決策樹(ADTree)等4種機器學習算法,對代碼進行分析與提取,檢測出混淆惡意JavaScript代碼。通過實驗,最終得出新老特征檢測效率的對比結果。
1 相關工作
時下,已陸續涌現多種不同的方法可用來靜態檢測混淆惡意JavaScript代碼或者動態分析。Wang等[2]發表了一種新的檢測惡意JavaScript代碼的方法,可將異常檢測與仿真相結合來識別惡意JavaScript代碼,并且開發了一個項目,可以通過使用多個JavaScript特征和機器學習技術來檢測JavaScript代碼是否為惡意的。Curtsinger等[3]提出了一種從JavaScript代碼的抽象語法樹中使用層次工程特征的方法,檢測惡意代碼。Kolter等[4]使用多種分類的方法,比如樸素貝葉斯,來檢測惡意的可執行文件。Rieck等[5]用n-gram方法對網頁特征進行提取,結合ADSandbox工具提供靜態方法和動態方法相結合的分析與檢測,但是訓練數據同時使用了正常樣本和惡意樣本。Cova等[6]提出了以代碼中字符型函數定義和使用的頻率、重定向的數量、動態函數調用的次數等10個特征,作為檢測惡意JavaScript代碼攻擊的特征。此外,文獻[7]設計了一種基于靜態分析的JavaScript惡意代碼檢測方法,針對網頁中JavaScript代碼進行4類特征分析與提取。文獻[8]又探討了一種通過使用多特征的方法,來提高惡意代碼檢測效率的方法。文獻[9]中,研究分別從采集并且分類惡意網頁代碼樣本、利用網頁的靜態代碼分析技術創建模板、獲取正常網頁代碼樣本和隨機采樣評估這4個步驟進行了實驗,把惡意網頁代碼樣本劃分為不同的類別,每一類都含有一種惡意網頁代碼以及對應的變形。
本文研究提出的是一種基于靜態的混淆惡意JavaScript代碼多特征檢測識別與分析方法,在提取與文獻[7-8]中相類似的基本統計特征外,又進一步著重從基于屬性特征、基于重定向特征、基于可疑關鍵詞特征、基于混淆特征四大分類中同時進行新舊特征的對比,不僅覆蓋大部分混淆惡意JavaScript代碼的特征,而且具有較高的對比性。
2 特征提取
混淆惡意JavaScript代碼的多特征檢測識別與分析主要由數據收集、數據篩選、特征提取、特征分類、異常檢測、結果輸出與分析等部分組成。特征提取及檢測流程如圖1所示。
2.1 特征提取及檢測方法
首先通過Python構建抓捕器抓取目標網站的代碼,抓取后解析HTML源代碼,然后構建代碼分離器保存其中的JavaScript腳本標簽源代碼,并對JavaScript腳本核心內容開啟提取特征向量工作,選取具有惡意性的特征。選擇JavaScript腳本代碼特征的過程后,就會梳理總結各類特征,找出可以用來使用機器學習的算法,再利用機器學習進行預測。
2.2 特征提取
根據當下已有的一些方法,研究收集了這些方法中使用過的一些特征,并且進行了分類,在已提取的舊特征的基礎上,可為每個分類增加了新特征。每個類別所對應的新、舊特征可見表1~表4。
研究總共提取了82個特征并劃分為四大類,其中新特征有47個。在進行實驗檢測時,就會針對舊特征和新、舊結合特征分別進行檢測。
3 檢測算法
3.1 一類支持向量機
通常一類問題出現在需要對訓練樣本進行一定比例的篩選,或者已知的訓練樣本都是正樣本,而負樣本卻很少的情況。這種情況下,往往需要訓練一個對于訓練樣本緊湊的分類邊界,此時即需啟用負樣本實驗。在本實驗中,可以通過已知的混淆惡意JavaScript代碼的特征來訓練一個一類分類器,得到一個緊湊的分類邊界,超出這個邊界就可斷定為是正常的JavaScript代碼。實驗時,設計上是以正常的代碼作為訓練集。
文獻[10]提出一類支持向量機(One-class SVM)用于解決訓練數據只有一類的問題,描述如下。
3.3 主成分分析法
主成分分析法(PCA)是一種數學變換的方法, 是把給定的一組相關變量通過線性變換轉變為另一組不相關的變量,這些新的變量按照方差依次遞減的順序逐一排列。PCA的原理為從原來眾多的向量中提取若干個變量,提取的這若干個變量可以最大程度地刻畫表示原來數據的信息量。一般用于降維處理后,再進行檢測實驗。
3.4 交替決策樹
交替決策樹(ADTree)是一種用于分類的機器學習算法,其中概括了決策樹并且與提升相關,重點是由一個決策節點組成,而且指定了預測條件和預測節點。過程中,總是以預測節點作為根和葉,通過遵循所有決策節點都為真的全部路徑并且對所遍歷的任何預測節點進行求和來對實例劃定分類。在設計上也不同于二進制分類樹,例如CART算法和C4.5算法。
4 實驗結果及分析
4.1 實驗數據與實驗環境
實驗樣本包括惡意的JavaScript樣本和安全的JavaScript樣本。研究將從Alexa Top sites(http://www.alexa.com/topsites)和Top ChinaZ(http://top.chinaz.com/)公布的網站中獲取的JavaScript代碼定義為正常行為的數據,利用30天的時間,獲取了5 404份定義為正常的JavaScript代碼。關于惡意樣本,其中分別由卡巴斯基安全實驗室提供的部分混淆惡意JavaScript代碼樣本和網絡中搜集到的內容聯合組成,共選取惡意JavaScript代碼121份。
實驗中,將所有的數據樣本中的70%作為已知部分且只包含正常的數據作為訓練數據,剩余的30%樣本作為測試數據,測試數據中包含所有的惡意JavaScript代碼樣本。混淆惡意JavaScript代碼檢測使用的測試環境可見表5。
研究中,定義混淆惡意的JavaScript代碼樣本為負樣本,正常的JavaScript代碼為正樣本,由此得到分類器列聯表可詳見表6。
4.2 實驗結果
為了使實驗兼具代表性及更好的準確性,可將實驗分為2組。一組只使用四大分類中的舊特征,另一組使用四大特征分類中新、舊結合的特征,并且每一組實驗均采用十折交叉驗證,把所有的數據分成10份,將其中的1份作為測試集,另外的9份作為訓練集,每組依次輪流10次進行實驗,同時采用了4種分類算法。4種算法檢測效果可見表7。
從表7中可以看出,在四大特征分類中使用新特征后,PCA、ADTree、One-class SVM、Naive Bayes這4種算法的檢測效率相比沒有使用新特征全部得到了提高,4種算法的誤檢率相比沒有使用新特征全部得到了降低。其中,Naive Bayes的準確率提升的幅度最大,提升了9.4個百分點。One-class SVM的誤檢率降低的幅度最大,降低了2.7個百分點。
5 結束語
通過對大量惡意代碼的研究,對混淆惡意JavaScript代碼進行四大特征分類,并且基于四大特征類中的新、舊特征展開了研究與檢測分析,獲得了滿意的結果。過程中研究了大量混淆代碼,試圖提取出盡可能多的靜態混淆特征,但是攻擊者仍然在繼續開發著不同的混淆技術,致力于掩蓋JavaScript的真實結構。因此在某些情況下,某些被混淆的惡意JavaScript代碼是無法被檢測到的。此后的下一步工作是繼續深入研究,找出共性,還原其本質,通過提取新特征以及改進檢測算法來提高運行結果的檢測效率,在攻與防的對立統一中,尋求重大的技術突破。
參考文獻
[1] 馬洪亮, 王偉, 韓臻. 混淆惡意JavaScript代碼的檢測與反混淆方法研究[J]. 計算機學報, 2017, 40(7):1699-1713.
[2] WANG Weihong, LV Yinjun, CHEN Huibing, et al. A static malicious JavaScript detection using SVM[C]//Proceedings of the 2nd International Conference on Computer Science and Electronics Engineering. Paris, France:Atlantis Press, 2013:214-217.
[3] CURTSINGER C, LIVSHITS B, ZORN B G, et al. ZOZZLE: Fast and precise in-browser JavaScript malware detection[C]// 20th Usenix Security Symposium. San Francisco, CA:Usenix, 2011: 33-48.
[4] KOLTER J Z, MALOOF M A. Learning to detect and classify malicious executables in the wild[J]. Journal of Machine Learning Research, 2006, 7: 2721-2744.
[5] RIECK K, KRUEGER T, DEWALD A. Cujo: Efficient detection and prevention of drive-by-download attacks[C]//Proceedings of the 26th Annual Computer Security Applications Conference.Austin,Texas,USA:ACM, 2010: 31-39.
[6] COVA M, KRUEGEL C, VIGNA G. Detection and analysis of drive-by-download attacks and malicious JavaScript code[C]//Proceedings of the 19th International Conference on World Wide Web. Raleigh, North Carolina:ACM, 2010: 281-290.
[7] 徐青, 朱焱, 唐壽洪,等. 分析多類特征和欺詐技術檢測JavaScript惡意代碼[J]. 計算機應用與軟件, 2015, 32(7):293-296.
[8] PATIL D R, PATIL J B. Detection of malicious JavaScript code in Web pages[J]. Indian Journal of Science and Technology, 2017, 10(19):1-12.
[9] FERNANDEZ F. Heuristic engines[C]//Proceedings of the 20th Virus Bulletin Conference. Vancouver:[s.n.],2011:407-444.
[10]SCHLKOPF B, PLATT J C, SHAWE-TAYLOR J, et al. Estimating the support of a high-dimensional distribution[J]. Neural computation, 2001, 13(7): 1443-1471.