Page 303 - 《软件学报》2021年第9期
P. 303
吴森焱 等:融合多种特征的恶意 URL 检测方法 2927
条件语句匹配参数中是否包含敏感字符串,统计包含敏感字符串的总数量.
var saved_eval=this.eval;
this.eval=function(⋅){
alert(“Hook eval start”);
returnValue=saved_eval.apply(this,arguments); var count=0;
var value=arguments[0]; //将传入eval函数的参数保存到value变量
var eval_length=value.length; //获取eval函数参数的字符串长度
alert(“eval_length:”+eval_length);
If ((value.indexOf(“iframe”)>0)||(value.indexOf(“script”)>0)||(value.indexOf
(“frame”)>0)||(value.indexOf(“embed”)>0)||(value.indexOf(“link”)>0)||
(value.indexOf(“applet”)>0)||(value.indexOf(“object”)>0){
count=count+1;} //匹配eval函数参数是否包含敏感字符串
alert(“eval_string:”+count);
alert(“Hook eval end!”);
}
Fig.10 Rewrited dynamic execution function of eval
图 10 改写动态执行函数 eval
(2) 特征提取
同时,我们从获取的页面源代码和日志记录中分别提取页面特征和 Web 会话特征.改写后的 Thug 模拟客户
端浏览器向待检测网站发起会话请求,并将所有响应的页面源代码保存到本地.我们使用正则表达式匹配页面
源代码,提取 12 个页面特征.在与待检测网站的会话过程中,Thug 记录网站服务器发送给客户端的响应头信息
和响应体内容.我们根据定义的规则,从日志中分别提取会话协议、响应码和响应资源类型等内容,统计 Web 会
话流程特征.如图 11 所示的代码是从日志记录中提取会话过程中,服务器响应特殊资源文件数量与会话请求错
误数量的特征.我们根据资源文件类型与 Content-Type 字段的对应表,匹配服务器返回的文件类型是否为关注
的 5 种特殊资源文件.同时根据服务器返回的响应状态码,匹配客户端请求错误和服务器端错误响应码的数量.
if len(s[‘locations’])>0:
for i in range(len(s[‘locations’])):
files=s[‘locations’][i][‘content-type’].count(‘pdf’)+s[‘locations’][i][‘content-type’].
count(‘x-shockwave-flash’)+s[‘locations’][i][‘content-type’].count(‘x-msdownload’)+
s[‘locations’][i][‘content-type’].count(‘msword’)+s[‘locations’][i][‘content-type’].
count(‘java/*’) //匹配服务器响应特殊资源文件
response=str(s[‘locations’][i][‘status’]).count(‘40’)+str(s[‘locations’][i][‘status’])
.count(‘41’)+str(s[‘locations’][i][‘status’]).count(‘50’)
//匹配服务器响应码是否为请求错误类型
Fig.11 Extraction features of response resources and request error
图 11 提取响应资源与请求错误特征
4.3 特征归一化
在使用多种特征进行分类的过程中,由于不同类型的特征性质不同,这些特征通常具有不同的数量级和量
纲.为了尽可能地减少特征在数值分布上所造成的影响,需要对原始的特征数据进行标准化处理.数据标准化是
通过对数据进行按比例缩放,落入一个较小的特定区间中,消除数据的单位限制,转化为无量纲的纯数值,使得
不同量级的特征可以进行加权.其中最典型的数据标准化方法是 Min-Max 标准化 [20] ,即对原始数据进行线性区
间变换,计算方式如公式(1)所示:
x − min
*
x = (1)
−
max min
*
其中,x 表示原始值,max 表示样本最大值,min 表示样本的最小值,x 表示经过标准化处理后的值.
我们使用 Min-Max 标准化方法将特征值转换为无量纲数据,每个样本的特征组合序列由 25 个经标准化处
理后的特征值和分类值组成.我们将经过标准化处理后的特征组合序列输入到分类器中进行训练,得到相应的
分类器模型.对于分类器算法的选择,分别选取了常用的 5 种机器学习算法,在实验部分通过对比不同分类器的