Page 294 - 《软件学报》2021年第9期
P. 294
2918 Journal of Software 软件学报 Vol.32, No.9, September 2021
的 HTML,JavaScript 以及 URL 这 3 个方面分别选取特征进行检测.文献[5]提出根据长字符串和编码函数的数
量等特征结合机器学习算法进行分类.文献[6]使用字符串最大熵值和字符串的长度等作为特征,并训练多个分
类器来检测恶意代码.基于静态页面特征的方法检测速度较快,适合于快速筛选可疑的页面,但存在误判率较高
的问题.文献[7]认为网页中单词语义包含了钓鱼网页行为和内容的线索,提出了一种基于上下文内容和关键词
密度的钓鱼网页检测方法,从 HTML 中判断网页中关键词集合是否存在,并提取关键词集合的频率和密度等特
征,使用机器学习对网页进行分类但该方法不适用于恶意页面的检测.
(2) 基于会话交互特征的方法
基于会话交互特征的方法从网络流量中提取会话交互过程,关注正常网站和恶意 URL 在会话交互模式中
的区别.文献[8]提出使用客户端蜜罐捕获会话过程的数据,提取会话中重定向跳转和逃避检测行为等特征.文献
[9]提出使用会话流量中的字节总数、平均每个包字节数等特征构建模型进行检测.文献[10]提出通过收集网络
流量用于构建用户访问链,并提取短时间段中域名的数量等特征,使用决策树来识别恶意重定向链.文献[11]提
出通过记录浏览器与网站间的交互,将整个过程抽象为图表示,聚合重定向链得到重定向图,并从图中提取特
征.文献[12]提出基于重定向行为进行检测的方法,侧重于会话访问的数据,包括访问时间、Referer 引用等特征.
但是使用单一会话交互特征的方法检测准确性较弱.文献[13]直接根据网络代理获取的恶意网站访问流程包含
的 URL 序列进行分类,提取其中的 URL 字符串、域名、文件名和路径长度以及域名注册国家等特征,使用卷积
神经网络 CNN 来检测恶意 URL.该方法本质上也是利用了 URL 重定向特征,但由于代理获取的访问序列中包
含页面加载资源、外部脚本等噪声,导致该方法检测率较低.
(3) 基于动态行为特征的方法
动态行为特征指源代码在浏览器的执行过程中触发的行为以及系统底层 API 调用等特征,如注册表修改
和进程创建等.现有的检测方法通过执行源代码,监控触发的行为与系统状态变化,提取行为特征进行检测.文
献[14]提出使用高交互蜜罐模拟客户端,记录与服务器间的交互信息,同时监控系统状态的改变,从而发现存在
的威胁.文献[15]提出基于动态行为的网页木马检测方法,针对恶意脚本的可疑操作提取行为,监控动态执行函
数,根据定义的规则提取行为特征,该方法可对抗代码混淆的干扰,但采用动态分析检测效率较低.文献[16]专注
于恶意攻击的事后取证与分析,提出一个取证引擎 JSgraph,记录浏览器中 JavaScript 程序执行的细粒度细节,重
点关注于 JavaScript 对 DOM 的修改,实现对用户遭受的基于 JavaScript 的恶意网站攻击过程进行事后取证分析.
该方法没有检测恶意页面,而是用于提取恶意页面攻击行为的细粒度行为.基于动态行为特征的方法对恶意
URL 的检测准确率较高,但是这种方法检测过程中需要加载和运行源代码,当恶意页面代码具有环境检测能力
来逃避检测时,可能无法捕获到恶意动态行为特征.
近年来出现了结合静态分析和动态检测的方案.文献[17]中的方案先采用静态特征分类,从 HTML 和
JavaScript 代码以及 URL 这 3 个方面提取特征进行分类.对于静态分类为可疑的对象采用动态分析,即通过动态
执行监控应用程序接口的调用信息来进一步判定.文献[18]分析了恶意 URL 与客户端的交互模式,从 3 个方面
提取了特定内容特征、特定交互特征和特定连接特征,提出根据会话交互模式构建分类模型的方法,使用决策
树对恶意 URL 进行分类.但是选取的特征对检测效果的影响很关键.
综上所述,现有的检测方法中,单一依靠静态页面特征或会话交互特征检测准确性较弱.而动态行为特征方
法面临的问题是:恶意代码可能通过探测用户客户端的环境来识别检测引擎,从而终止恶意行为以逃避检测的
问题.不同于叠加使用的方法,我们的方法无需对系统底层 API 调用行为进行捕获,而直接将页面特征和会话特
征进行了结合,面向逃避检测问题,在页面特征方面,我们提出了包含重定向跳转、客户端探测、HTML5 新出现
标签和事件函数以及恶意 VBScript 脚本代码的新特征.同时,为了更加准确地检测,选取关键 JavaScript 函数的
参数长度和参数内容作为检测特征.
2 恶意 URL 逃避检测手段分析
随着针对恶意 URL 检测方法的不断改进,目前恶意 URL 的逃避检测手段也变得越来越多样化,恶意 URL