解析ASP木马的移位加密法
这些天我专门研究脚本的加密方式,今天为止我已经可以解密目前网上所能见到的基本的脚本加密,当然也能自己写出同样的加密软件了。
下面要介绍的就是lake2在2004年发表的“ASP后门之终极伪装 ”——移位加密。虽然是很久以前的了,但是我觉得这篇文章非常经典。当我一开始接触ASP木马免杀的时候,用得最多的就是黑客伟所写的ASP木马加密工具,经它加密后的ASP代码看上去乱得连神仙都认不得了,加密后的ASP木马也是全免杀的。而它采用的加密方式就是上面所说的lake2的移位加密。当时觉得这种加密方法太神奇了,因为当时我的编程功底尚浅,根本看不懂那种加密方法。而现在不同了,仔细看我发现这种加密方种很易懂,不过不得不佩服lake2大哥在2004年就发明了这种移位加密法,想起来那时我还读高二,两年之后我才开始接触电脑技术,呵~
ASP后门之终极伪装
记得当年asp木马出来的时候号称“永不被杀的木马”,呵呵,时至今日,随便什么杀毒软件都能将其杀得片甲不留^_^呵呵,受到木马换壳躲避杀毒软件思路影响,我们也可以给asp木马“加壳”(呵呵,当然不是用UPX等)。还等什么?请往下看。
其实这个思路很简单,就是把asp代码编码,执行时再解码。这里有两个方法,一是用微软的工具Script Encoder;二是利用asp的execute函数。
先说说Script Encoder。这个东东可以在微软官方网站免费下到,而且还附赠详细使用说明,这里就不多说了吧。但是经过它加密后的文件会有<%@ LANGUAGE = VBScript.Encode %>,呵呵,露马脚了,管理员看到这句话就知道这个asp文件被加密了。那怎么解密呢?这里提供一个解密软件(》点击进入下载《)。现在知道了吧,微软的Script Encoder不保险,所以呢,我们要自己写一个程序出来“加壳”。
asp的execute函数是拿来执行字符串的,即是说可以把asp语句写成字符串,然后用execute来执行。比如这行代码:execute("response.write(""hackerXfiles"")"),执行后的效果等同于执行response.write("hackerXfiles")。这里由于execute函数里的东东是字符串,故遇到引号要双写。呵呵,既然execute里是字符串,那么我们就可以把里面的东东拿来加密了。
怎么加密呢?呵呵,就用最简单的移位法好了。请看代码:
but=1 cc=replace(nr,vbcrlf,"胡") for i= 1 to len(cc) if mid(cc,i,1)<>"胡" then pk=asc(mid(cc,i,1))+but if pk>126 then pk=pk-95 elseif pk<32 then pk=pk+95 end if temp=temp&chr(pk) else temp=temp&"胡" end if next temp=replace(temp,"""","""""") response.write(temp)
这段代码就是asp下的循环移位法。那个变量but就是移位的位数,可修改。呵呵,怎么叫循环呢?因为程序会比较字符的ascii码,当大于126或者小于32时就会处理,使范围在32~126之间。因为这样可以避免出现windows不能显示的字符。这也是一开始就把回车换行符替换掉的原因。这里我自己写了一个移位加密的asp程序xor.asp附上,希望对你有帮助。
那就让我们来看看用上面代码把response.write("hackerXfiles")加密后的结果:“sftqpotf/xsjuf)#ibdlfsYgjmft#*”,嘿嘿,这回神仙也看不懂了吧^_^
既然加了密,当然要解密啦,看解密代码:
function UnEncode(temp) but=1 '这个是移位法所移的位数!注意修改此处与加密时使用的一致 for i =1 to len(temp) if mid(temp,i,1)<>"胡" then pk=asc(mid(temp,i,1))-but if pk>126 then pk=pk-95 elseif pk<32 then pk=pk+95 end if a=a&chr(pk) else a=a&vbcrlf end if next UnEncode=a end function
呵呵,现在知道怎么执行了吧,只需调用这个解密函数就是:execute(UnEncode("sftqpotf/xsjuf)#ibdlfsYgjmft#*")),怎么样,是不是顺利执行了!
是啊,密码不好用哦!没法安装。...