小议脚本变形
本文作者:SuperHei
安全天使:http://www.4ngel.net
BST:http://www.bugkidz.org脚本攻击在网络安全中永远是个“重头戏”,由此产生的各种攻击性脚本如vbs/js脚本,各种webshell 尤其是webshell是web入侵中必不可少的工具。现在的webshell版本繁多,功能越来越强,这也成为管理员防范和各大杀毒软件追杀的目标。
下面我以asp的webshell为例子简单说下脚本的变形思路:
1.classid的使用
aspshell里的常用的对象名往往是杀毒软件采用的特征码,管理员也可以通过修改注册表,来改变asp对象的名称,但是没个asp对象在系统里有个规定的classid(ps:classid在各个系统有所不同)那么我们就可以通过classid来建立对象,如我们通常建立fso对象是采用下面的语句:
Set hh=Server.CreateObject("Scripting.FileSystemObject") 那么通过查找“Scripting.FileSystemObject" 来查杀你的脚本,那么我们就可以通过fso对应的classid来建立:
<object runat=server id=hh scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
这样还有个好处就是即使管理员改fso的名字,也可以使用。
以下是常用对象对应的classid:
WSCRIPT.SHELL 72C24DD5-D70A-438B-8A42-98424B88AFB8
WSCRIPT.NETWORK 093FF999-1EA0-4079-9525-9614C3504B74
Scripting.FileSystemObject 0D43FE01-F093-11CF-8940-00A0C9054228
Scripting.Encoder 32DA2B15-CFED-11D1-B747-00C04FC2B085
Scripting.Dictionary EE09B103-97E0-11CF-978F-00A02463E06F
adodb.stream 00000566-0000-0010-8000-00AA006D2EA4
shell.application 13709620-C279-11CE-A49E-444553540000
2.使用+或&连接符的妙用
杀毒软件一般是提高提取特征码来查杀病毒的,所以asp对象名一般就成为了“特征码”了。我们就可以通过使用+或&来拆分对象名。如:
Set hh=Server.CreateObject("Scripting.FileSystemObject")
我们就可以提高下面的语句替换:
Set hh=Server.CreateObject("Scrip"+"ting.file"+"systemobject")
或
Set hh=Server.CreateObject("Scrip"&"ting.file"&"systemobject")
值得一提的是“思易ASP木马追捕”也是一个有asp编写的脚本,用来查杀webshell的,这个脚本先替换掉目标代码里的&在进行查找对象名,那上面简单的使用&就没用了,不过我们可以同过插入空变量来防杀:
Set hh=Server.CreateObject("Scrip"&"ting.file"&qsdsdsdf&"systemobject")
其中qsdsdsdf就为空变量,即使替换了所有的&,对象名还是有改变。
3.改变字母大小写(本文的重点所在)
其实要通过改变字母的大小写来改变特征码,大小写对应的asii或其他的编码也不同,这样我们可以到达防杀的目的。实现起来也简单,一个系统自带的“记事本”就可以搞定,不过这样要手工一个字母的去替换,你可以自己写个简单的程序帮助你处理,不过注意的问题是,有的代码里有密码加密的函数会受到影响,还有对shell里的htm代码有影响,建立在变形事,采用部分变形(改变大小写)。下面是我vb写的一个变形工具。
PS:程序只是替换了指定的几个字母,还有就是加入空变量(见2). 如果你编程够好的话,你可以写个程序可以随机改变大小写的,还有部分变形代码。
相关附件: http://www.4ngel.net/project/bx.rar(63.52 K)