恶意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。

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