01 April 2009

MemBasmi virus VB / VB WORM ……

Cara mudah untuk menggagalkan proses aplikasi yang dibuat dari bahasa Visual Basic 6.0 adalah dengan menghapus file runtime msvbvm60.dll pada direktori System Windows, ini adalah file dynamic link library dari Microsoft Visual Basic Virtual Machine versi 6.0(msvbvm50.dll untuk VB 5.0, mscoree.dll untuk VB.Net).

1. DIRECT PROTECTION
Saat aplikasi berbasis Visual Basic tereksekusi dan aktif pada memory maka tidak ada satu carapun yang bisa dilakukan untuk menghapus file msvbvm60.dll tanpa terlebih dahulu mematikan proses aplikasi tersebut, jika user mencoba untuk menghapus file msvbvm60.dll melalui Windows Explorer maka sistem akan segera menampilkan sebuah kotak pesan sebagai berikut.

Pada Windows 98 dan ME user juga tidak dapat mengubah nama (rename) ataupun memindah file (move), namun pada Windows 2000 dan XP, user walaupun tidak mampu untuk menghapus file msvbvm60.dll tapi tetap dengan mudah dapat mengubah nama atau memindah ke folder lain, hal ini akan menggagalkan proses aplikasi Visual Basic tersebut pada eksekusi berikutnya. Untuk mencegah user menghapus atau memindah file msvbvm60.dll ini pada Windows 2000 ataupun XP maka file tersebut harus berada pada kondisi terbuka, lalu bagaimana cara membuka file yang notabene bukan dokumen tersebut? Penulis mengutip sedikit teknik pada buku Computer Worm 1 yaitu membuka atau membaca file msvbvm60.dll tersebut sebagai file binary ataupun text, perhatikan 2 contoh code Visual Basic berikut ini.

  1. Open c:\windows\system32\msvbvm60.dll For Binary Access Read As #1
  2. Open c:\windows\system32\msvbvm60.dll For Input As #1

Selama code tersebut tidak menutupnya dengan statement Close #1 maka file msvbvm60.dll tersebut tidak akan dapat dihapus, diubah nama ataupun dipindah tempatkan, namun jika user tetap nekat untuk mencoba mengubah nama ataupun memindah file msvbvm60.dll melalui Windows Explorer maka sistem akan segera menampilkan kotak pesan sebagai berikut.

2. MSVBVM60.DLL EVERYWHERE
Proteksi secara langsung sudah dilakukan, lalu bagaimana jika user mencoba untuk menghapus file msvbvm60.dll tersebut pada saat worm sedang tidak aktif, misalnya saja user menggunakan multi OS ataupun boot dengan disk operating system (DOS) sehingga file launcher suatu worm tidak dapat tereksekusi pada environment tersebut? Pada saat suatu file aplikasi Visual Basic tereksekusi maka secara default aplikasi tersebut akan mencari dan me-load file msvbvm60.dll, nah file msvbvm60.dll secara default ada pada direktori %windir%\system untuk sistem operasi Windows 98 dan ME, kemudian pada direktori %windir%\system32 untuk Windows 2000 dan XP, tapi tahukah anda jika pertama kali aplikasi tersebut sebenarnya mencari file msvbvm60.dll bukan pada direktori default melainkan pada direktori yang sama dengan file aplikasi tersebut?! Ya Penulis tahu saat ini Anda berfikir untuk membuat backup file msvbvm60.dll disetiap direktori yang memuat aplikasi tersebut bukan? :) .

Aplikasi Visual Basic juga akan mencari pada direktori %windir%\system dan lokasi direktori yang terdaftar pada path Windows. Adapun untuk melihat lokasi yang ada pada path Windows, dapat menggunakan perintah PATH seperti yang akan Penulis contohkan pada command prompt berikut ini:

Terlihat path-path yang terdaftar dipisahkan dengan tanda “;”. Dengan melihat path diatas dapat disimpulkan bahwa lokasi pencarian akan berada pada path berikut ini:

1. Path direktori yang sama dengan file aplikasi VB tersebut
2. Direktori C:\WINDOWS\system
3. Direktori C:\WINDOWS\system32
4. Direktori C:\WINDOWS
5. Direktori C:\WINDOWS\System32\Wbem
Kita juga bisa menambahkan path tertentu yang kita inginkan, pada Windows 98 dan ME pengaturan ini berada pada file autoexec.bat yang secara default berada pada root direktori C: namun worm-worm yang Penulis temukan sepertinya lebih suka mengoverwrite file tersebut ketimbang menambah atau mengeditnya, berikut baris yang ditambahkan atau dimanipulasi:

SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\WINDOWS\WSAR

Pada contoh diatas Penulis menambahkan sebuah path baru yaitu direktori %windir%\WSAR. Untuk Windows 2000 dan XP pengaturannya berada pada registry dengan key sebagai berikut:

Key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Value Path
Type REG_EXPAND_SZ
Data %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; %SystemRoot%\WSar; C:\Documents and Settings\All Users\Desktop

Pada contoh diatas Penulis kembali menambahkan sebuah path baru yaitu direktori %windir%\WSar dan C:\Documents and Settings\All Users\Desktop.

3. MSVBVM60.DLL??? GAK BUTUH LA YAU
Proteksi secara langsung sudah dilakukan, file msvbvm60.dll pun sudah ada dimana-mana, tapi begitu mengetahui aplikasi tetap berjalan sementara file msvbvm60.dll pada direktori default sudah berhasil dihapus membuat user penganalisa menjadi bertanya-tanya, tak lama kemudian user ini melihat fenomena yang sangat aneh bin ajaib, file msvbvm60.dll bertebaran dimana-mana dengan menyandang attribut super hidden :) . Hilang sudah sabar dihati, user ini pun kemudian mengeluarkan senjata andalannya program KillVB yang dapat didownload gratis pada url http://www.compactbyte.com, program yang mampu melumpuhkan proses semua worm lokal maupun non lokal yang dibuat dengan bahasa pemrograman Visual Basic tanpa terkecuali sehingga worm Brontok varian terakhir dan mutakhirpun tidak akan berkutik, program KillVB ini pun semula memang dirancang khusus untuk memerangi worm Brontok.
Agar mudah dihapus user ini kemudian mengatur attribut file msvbvm60.dll menjadi normal kembali dengan menggunakan perintah command prompt berikut ini:

Kemudian menggunakan fasilitas Find atau Search untuk mendapatkan semua file msvbvm60.dll untuk kemudian menghapusnya, atau bisa dengan perintah command prompt berikut ini:

Dengan berakhirnya proses suatu worm maka system defender yang digunakan pun juga berakhir, dengan demikian user bisa menggunakan aplikasi apa saja untuk memperbaiki konfigurasi yang telah dimanipulasi suatu worm.

Akhirnya Penulis kembali melakukan serangkaian percobaan, Penulis membuat sebuah aplikasi sederhana dengan menggunakan Visual Basic, kemudian menghapus file msvbvm60.dll pada direktorinya, saat aplikasi tersebut dieksekusi yang terjadi adalah Windows memberikan pesan sebagai berikut:

Pesan tersebut memberikan informasi bahwa file msvbvm60.dll tidak berhasil ditemukan, tiba-tiba saja terbesit sebuah ide untuk melihat body program tersebut pada aplikasi hex editor, gambarannya akan terlihat sebagai berikut:

Penulis menemukan strings MSVBVM60.DLL pada body program tersebut, iseng-iseng Penulis kemudian menggantinya menjadi BLAHBLAH.TXT, saat dieksekusi tampil lagi sebuah pesan dengan isi yang sedikit berbeda, perhatikan gambar berikut ini:

Hei… untuk apa program ini mencari file BLAHBLAH.TXT ??? :) , seperti yang baru saja Anda duga Penulis kemudian membuat salinan file msvbvm60.dll baru yang sebelumnya terhapus dan mengubah nama file tersebut menjadi blahblah.txt, alhasil era baru pembuatan aplikasi visual basic pun dimulai, program tersebut berjalan dengan baik tanpa menggunakan file yang bernama msvbvm60.dll lagi tetapi kini menggunakan runtime blahblah.txt, siapa mengira file dengan ekstensi txt ternyata adalah file runtime Microsoft Visual Basic Virtual Machine, adapun ekstensi yang digunakan tidak terbatas pada ekstensi yang telah terasosiasi saja. Dengan mengacu file runtime yang tidak mengandung string “msvbvm” pada nama filenya tentu saja worm tersebut kini akan meloloskan diri dengan sangat mudah dari program KillVB.

Suatu worm dapat mengaplikasikan teknik ini dengan algoritma sebagai berikut; saat file infector worm tereksekusi, worm kemudian membuat salinan sebagai file launchernya pada suatu direktori tertentu, kemudian mengedit file tersebut dan mengubah string MSVBVM60.DLL menjadi nama acak lainnya, setelah itu worm kemudian membuat salinan file msvbvm60.dll pada direktori yang terdaftar pada path Windows dan segera mengubah nama file tersebut dengan nama acak yang digunakan sebelumnya, adapun file infectornya nanti tetap akan menggunakan string MSVBVM60.DLL ini.

Beberapa exe compressor, mengenkripsi string msvbvm60.dll ini sehingga tidak dapat diubah secara langsung, adapun salah satu program compressor yang tetap membiarkan string ini eksis pada body program adalah UPX (the ultimate packer for executables).

4. YANG PAKE VB MINGGIR!!
Setelah mampu berjalan tanpa menggunakan file yang bernama msvbvm60.dll, worm yang lupa daratan ini pun kini ikut-ikutan worm lain dengan mencegah eksekusi aplikasi atau worm yang dibuat dengan menggunakan bahasa Visual Basic 6.0, namun untuk menghindari penggunaan cara lamerz yang akan menimbulkan kecurigaan maka worm ini tidak akan menghapus file msvbvm60.dll tetapi memanipulasi body file tersebut, untuk manipulasi ini pun harus berhati-hati, jangan sampai saat mengeksekusi program user kemudian melihat pesan sebagai berikut:

Pesan tersebut akan menimbulkan pertanyaan oleh user, “Ada apa dengan msvbvm60.dll?”, adapun salah satu manipulasi yang Penulis kira aman adalah sebagai berikut:

Mengganti string “@..@.reloc” yang memiliki nilai hex [40 00 00 40 2E 72 65 6C 6F 63] menjadi nilai hex [00 00 00 00 00 00 00 00 00 00], adapun pesan yang akan tampil saat suatu program Visual Basic 6.0 dieksekusi adalah sebagai berikut:

Melihat kotak pesan yang tampil, kini pertanyaan user yang akan timbul adalah “Ada apa dengan program Project1.exe?”. ”Mene ke tehe …:)” Nah.. hari gini masih menggunakan cara lamerz yang sudah terlalu kuno untuk melumpuhkan VB?. “Actually… it’s not about the language, but the trick!”

Tidak ada komentar:

Posting Komentar