论文部分内容阅读
随着互联网富媒体应用的快速发展,网页恶意脚本的传播速度不断加快,其种类也日益增多。随着脚本压缩和混淆加密等技术的兴起,恶意脚本检测的难度逐渐提高,严重威胁了互联网应用安全。目前的恶意代码检测主要分为静态检测和动态检测两种方法。静态检测是针对恶意代码的文本特征进行分析,特征需由专家对已知恶意代码分析得到,具有识别快、准确率高等优势,但是无法识别未知恶意代码。动态检测是为恶意代码建立一个虚拟运行环境,根据运行情况识别恶意行为,能有效识别新的恶意代码,但是检测效率较低。本文专门针对JavaScript脚本,结合静态的脚本文本分析和动态的脚本机器码提取分析,应用机器学习算法进行研究,取得以下几方面成果:1.提出了简单、快速识别混淆脚本的方法。一些恶意的JavaScript脚本利用混淆技术来隐藏自身特征,躲避以检测规则为基础的或以正则表达式为基础的杀毒软件的检测。对于混淆的脚本,目前还没有成熟的自动检测工具。本文在研究各类脚本混淆方法的基础上,采用N-gram方法,对脚本进行特征提取,使用K-最邻近(KNN)分类算法进行训练,能有效识别混淆脚本和非混淆脚本。检测脚本的混淆性对检测恶意脚本工作具有重要作用。2.提出了检测混淆恶意脚本的方法。对于混淆的JavaScript脚本,其文本特征已被隐藏,难以用静态方法分析。本文使用V8引擎对混淆脚本动态编译,自动获取脚本执行的机器码,通过对机器码中Call序列的N-gram特征提取,再结合KNN方法进行分类训练,经实验分析证实,能有效识别混淆脚本是否恶意。3.提出了检测未混淆恶意脚本的方法。使用静态方法分析JavaScript脚本特征,包括一些特征函数、系统对象调用、信息熵统计等,先获取脚本的特征向量,再使用支持向量机(SVM)机器学习算法,进行样本训练并建立优化的预测模型,经实验分析证实,能有效识别未混淆脚本是否恶意。4.设计开发了一套基于Web的综合的恶意脚本代码检测原型系统,可在线快速检测JavaScript脚本是否混淆以及是否包含恶意代码。