惡意JavaScript代碼檢測文獻閱讀(一)

《A machine learning approach to detection of JavaScript-based attacks using AST features and paragraph vectors》

《一種基於javascript的攻擊,使用AST特徵和段落向量的機器學習檢測方法》

作者:Samuel Ndichu ,Sangwook Kim ,Seiichi Ozawa ,Takeshi Misu ,Kazuo Makishima

簡介:該方法的創新點在於用抽象語法樹表示代碼結構、採用機器學習的方法Doc2vec進行特徵學習。

一、JavaScript代碼的AST形式

AST代表了代碼的必要和功能結構,如作用域、表達式或聲明,同時通過省略不必要的語法細來避免冗餘,即在解析過程之後也不影響代碼的原始功能。有彙編基礎的讀者應該知道,編譯過程從詞法分析開始,編譯器在詞法分析中執行掃描和標記。AST的解析器就是接受這個標記化的輸入並通過語法分析生成AST。圖1顯示了使用5+(1*12)作爲源文本通過語法分析生成的AST。JS代碼用JS對象表示法(JSON)表示。然後,AST-JS可以用作機器學習算法的輸入。

圖1 語法分析生成的AST

二、數據預處理

作者使用esprima來解析JavaScript代碼,該解析器允許各種代碼分析和操作,如編輯、轉換、可視化和驗證,即將JS代碼解析爲AST。Esprima從JS代碼字符串輸入中生成AST-JS,如圖2所示爲解析前的JS,圖3爲解析後的AST-JS。該工具還檢查JS代碼的語法錯誤,從而確保輸入是一個有效的JS程序,如果輸入包含語法錯誤,則不會被解析成AST-JS。

圖2 解析前的JavaScript代碼
圖3 解析後的AST-JS

 

三、利用Doc2Vec進行特徵學習

作者先提取到代碼的AST,進而得到CFG,根據數據傳遞關係,得出PDG,PDG作爲CFG的數據擴充。一旦JStap構建了抽象代碼表示來分析JavaScript樣本,就可以提取詞彙單位並遍歷不同的圖來收集語法單位。隨後,對於每個代碼表示,分別考慮n-gram特徵以及提取的單元與其對應節點值(變量名)的組合。最後,學習組件將這些特徵的頻率作爲輸入,用於分類過程。對幾個現成的系統(伯努利樸素貝葉斯、多項式樸素貝葉斯、支持向量機和隨機森林)進行了實證評估,並選擇了隨機森林。

圖4 框架模型

該文章的主要創新點是在惡意JS檢測領域引入了Doc2Vec,其使用的AST分析工具在之前的文章中就出現過,但是提取的Plain-JS特徵還是較爲新穎,不過該文章使用的是核心網絡模型是CNN。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章