网页木马不同与一般的木马病毒,它的形式比一般的EXE之类的文件要多样的多,可以将实现同一功能的几行语句变了又变,杀毒软件对付这些变了又变的网页木马还真的有效吗?下面我们来模拟黑客轻轻松松绕过杀毒软件。
为说明问题,先假设“alert("virus");”已被各大杀毒软件厂商作为网页木马特征字符收录,现在我们的目标是使它免杀。
原木马:
<script>alert("virus");</script>
根据前面的假设现在它是会被查杀的。免杀处理过程为:先把它转化为asc码字符串“60 115 99 114 105 112 116 62 97 108 101 114 116 40 34 118 105 114 117 115 34 41 59 60 47 115 99 114 105 112 116 62 ”,然后再解密执行,完整源程序变为:
<script language="VBScript">
function Decode(k)
dim s,t,i
s=Split(k," ")
t=""
for i=0 to Ubound(s)
t=t+chr(s(i))
next
Decode=t
End Function
dim str1
str1="60 115 99 114 105 112 116 62 97 108 101 114 116 40 34 118 105 114 117 115 34 41 59 60 47 115 99 114 105 112 116 62"
execute(Decode(str1))
</script>
不过有的时候这种方法也会失效,当然我们还有办法。一般这种方法失效的原因是str1表示的字符串也被加入病毒库了,我们只要对str1加密就行了。谭浩强爷爷讲过一种古老的加密方式,把每个字符的asc加一个数形成密文。比如我们对每个数加1形成:str1="61 116 100……117 63",再修改decode函数,将t=t+chr(s(i))改为t=t+chr(s(i)-1),这下又免杀了。
对字符串的加密方法实在太多了,除了上面的每个字符asc加固定值,还有字符串颠倒,中间的空格分隔符用其它符号等等,总之你只要找到一个可逆函数F(x),用str1表示F(x)加密过的字符串,然后执行EXECUTE(F-1(str1))就行了。
对于脚本类的木马, 一般杀毒软件都还只靠增加病毒特征码的方法,发现一种免杀的木马就把它加入病毒库,然而脚本木马有其的特殊性,单靠这种方法是绝对不可能彻底把网页木马拒之门外的,要想实现这一目的,必须一改传统病毒特征码的笨方法,从网页木马运行的必要途径上下功夫,根据这一原理我将在近期提供一个“IE卫士”,大家可以免费下载使用。