快速业务通道

VBS.Runauto脚本病毒分析篇

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
最近一位同事的笔记本遭遇了这个病毒,正好这学期在给计算机专业的同学们上VBscript于是顺便分析了一下。
首先从染病毒的计算机上提取下来病毒样本,由于是临时发现的,也没有特别准备,就用winrar压缩后保存。
在实验机器上打开病毒样本的压缩文件,我的Symantec 11立即报警,并把病毒删除了。所以必须禁用杀毒软件或者设置一个“例外区域”用于分析病毒,于是在桌面上新建了“evA”文件夹,并将之设置为防病毒例外文件夹,这下病毒样本安静的躺在里面了。
脚本病毒是解释型程序,因此我们不需要什么特别的反编译工具就能查看源代码了。虽然Windows的记事本足够用了,但是我还是喜欢使用UltraEdit。
使用打开UltraEdit打开病毒文件如图1,注意,为了防止误触发病毒,这里首先将vbs扩展名修改为txt。


图1 病毒脚本
打开病毒脚本,大家可以发现代码的可读性非常差,大小写字母杂乱的排列,并且还有很多无法理解的符号串。其实这是病毒为了保存自己而“想”出来的“保护伞”。
病毒代码大小写问题可以在UE(以后UltraEdit简称)中选择文本后,使用Ctrl+F5直接转换成小写字母。对于类似密码的“00c2%0033%……”的字符串相对来说比较麻烦点。
从病毒代码中可以发现只要出现“乱码”的地方都会有“STrREVeRSE”和“unEscaPE”函数的调用,其中“unescape”是vbscript标准函数,作用就是将经过escape函数编码过的字符串进行反编码。这里需要说明一下,由于Web中的Html对于有些符号是进行保留使用的,比如“<”和“>”符号,如果需要对这些符号进行显示那么需要对他们进行html编码,所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。字符值大于 255 的,比如中文,以 %uxxxx 格式存储。在对“密码”进行分析,发现其实就是将escape编码的符号串进行了反向,再结合“STrREVeRSE”函数名,可以断定病毒作者为了能使病毒逃避杀毒软件的检测,采用了将关键代码进行编码和反向存储的方式。
在UE中可以直接对字符串进行编码和解码,不过要对字符串镜像并没有现成的工具可以使用,最近正在给学生上JavaScript,顺手写了一个页面进行解码或者编码,虽然很简单,不过为了叙述的连续性,代码如下:
复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>将字符串Reverse</title>
<script type="text/javascript">
function _reverse()
{
with(document){
if(rev.order.checked){
revedstr = rev.instr.value.split('''').reverse().join('''')
write("<strong>reversed string:</strong>",revedstr,"<br>");
write("<strong>unescape string:</strong>",unescape(revedstr),"<br>");
write("<strong>escape string:</strong>",escape(revedstr),"<br>");
}
else{
unescapstr = unescape(rev.instr.value);
revedstr = unescapstr.split('''').reverse().join('''');
write("<strong>uneacape string:</strong>",unescapstr,"<br/>");
write("<strong>reversed string:</strong>",revedstr);

}
}
}
</script>
</head>
<body>
<form action="" method="post" name="rev">
<input name="order" type="checkbox" value="" />转换顺序(先求反后解码)?<br />
<input name="instr" type="text" value="请在这里输入" onmousemove="this.select()"/>
<input name="" type="button" value="转换" onclick="_reverse()"/></form>
</body>
</html>

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号