网络安全 频道

专家提醒:JavaScript攻击日益狡猾

  【IT168专稿】据网络安全公司Arbor Networks公司的高级安全工程师乔斯.那扎里奥博士(Dr. Jose Nazario)表示:如今的恶意JavaScript变得更为狡猾,它能辨别出受害人的Web浏览器信息、存在漏洞的组件及可访问的CLSIDs等等,并由此度身定制对客户的攻击。

  那扎里奥指出他所发现了一种新的恶意工具--NeoSploit来证明他的这个观点。他表示,NeoSploit至少能发动七种完全不同的攻击来感染PC机,能基于PC机所存在的弱点来决定采取哪种攻击方式。"在过去的几个月内我们发现了许多此类攻击,证明大量恶意JavaScript普遍存在,"他说道。"JavaScript现受到人们更多的防备和攻击。"

  以上是那扎里奥是在4月18日加拿大温哥华所召开的CanSecWest安全产品展示会上的讲话内容。当时,那扎里奥围绕《JavaScript恶意软件的反向工程》 (reverse-engineering JavaScript malware)展开了论述;他通过说明攻击者使用JavaScript更加具有防御性,从而引申出研究人员正逐渐发现攻击代码的使用更为老道,即JavaScript攻击会混淆自身以使攻击不会被安全系统所发现。例如,恶意JavaScript经常采用如adodb.Stream() 或setSlice() 对象来投放用来下载恶意软件到受害者系统中的ActiveX或VBScript内容,从而攻击受害者的浏览器。

  JavaScript混淆的最简单方式是使用不透明代码来跨过静态代码检查,并由此隐藏其编写者的方式和意图。至于这种混淆技术可以从简单的ASCII chr() 及ord() 技术到 Base64编码方式,甚至还可是使用如iWebTool HTML Encrypt等工具来隐藏HTML或进行字符串分割/合成来创建一个AJAX对象。

  举个最简单例子。比如,字符串分割方式会用如下方法来合成一个单词:
  Daxhi="A"+pplica"+"tion";
  Vvu=".";

  这样所产生的恶意代码(以上只是一小部分)将是易于被人检测到。不过那扎里奥同时指出,它用于自动化检测却是一个很有效的绊脚石。

  那扎里奥还表示:攻击者还有使用到双重混淆技术;他们在简单的字符串合成/分割及编码方式之上还使用双重编码技术,常使用的是一种自定义的编码器;虽然有些人喜欢用浏览器来解码这类攻击,但这不是一个好主意,因为这类技术速度太慢,并不能从一个处于零日状况下的浏览器中获取完整信息。

  此外,他还表示:有一个更好主意是使用相应解码工具从浏览器中分离出JavaScript引擎,比如,NJS就是一款由Netscape公司开发并由欧洲标准化团队ECMA(欧洲计算机制造商协会)进行标准化的独立式JavaScript语言执行工具,且是一款快速的、可重入、可扩展及可编程的工具。其它解码工具还包括:SpiderMonkey,一款来自Mozilla Foundation公司的JavaScript-C引擎;Rhino,一款完全以Java语言编写的开源式JavaScript执行工具。

  正如那扎里奥所描述的,对双重解码型恶意软件的反向工程实质上意味着要在命令行下对HTML进行清理和解码工作。而解码后的结果可能仍然需要进行再次解码,因而这个过程需要不断地被重复直至所得到的代码不再是被编码过的为止。

  然而,"生活并总是这样一成不变,"那扎里奥表示。"现在有各种各样的检测程序,回头就会有大量针对它们的具有防御性JavaScript[代码样本]出现。"例如:由于NJS的作用并不涉及"arguments",攻击者就使用"arguments.callee"来进行他们的代码篡改验证。Callee是arguments的一个属性,它被作为一种对所有的函数对象都有效的局部变量,从而允许匿名函数来引用到他们自身。这将必需写入递归的字符串,且这种方法在执行时会导致反向工程代码进入死循环,从而对反向分析造成破坏。

  接着,那扎里奥还提到了SpiderMonkey--由于SpiderMonkey将阻塞某些函数,比如alert() 或print(),这使其对使用了这些函数来混淆解码工作的攻击者起不到效果。不过若是它阻塞成功,正进行反向工程研究的研究员还可使用另一种语言,比如Python。

  "简而言之,当攻击者日益将JavaScript作为一种恶意软件的发行工具时,"那扎里奥建议。"防御工作首先要做的应是学透JavaScript,学会如何爱上它。考虑到它是一个相对容易的语言,这想来并不是一项艰难任务。"

  此外,JavaScript恶意软件如今仅是处''蹒跚学步''阶段。一方面由于JavaScript语言必须经过解码才能被浏览器所使用,因而攻击者使用JavaScript目前还受到这一因素限制;另一方面目前攻击者的混淆技术所使用工具的代码及其理念都是极早期。 "不过,考虑到这种代码的仍需人工进行分析,这个早期工具仍是有一定效用的。" 那扎里奥表示。"而且JavaScript恶意软件还在不断发展壮大。"换句话说,我们现在看到大肆宣扬的Web 2.0,也许将来就会看到Malware 2.0也未可知。

 

0
相关文章