Deteksi Virus Menggunakan Engine Heuristik Pada Anti Virus | Iksan Komputer

Wednesday, July 3, 2019

Deteksi Virus Menggunakan Engine Heuristik Pada Anti Virus

Ungkapan di atas mungkin dapat mewakili cara kerja engine Heuristik sebuah antivirus. Sebuah kecerdasan buatan ditanamkan pada antivirus yang memungkinkan program dapat menganalisis dan mendeteksi berbagai jenis malware, bahkan malware yang belum dikenal. Apa yang ada di balik keampuhan sebuah engine heuristik?

Antivirus Engine, Tertinggal Satu Langkah?

Antivirus sering dianggap kalah satu langkah dibandingkan virus, dengan analogi bahwa obat/serum baru ditemukan setelah ada penyakit. Ditambah lagi saat penyakit datang, belum tentu serum penangkal berhasil diciptakan dalam waktu singkat.

Bahkan, malware mungkin sudah menetap di sistem komputer, tetapi belum disadari keberadaannya. Tanpa teknik yang tepat, mendeteksi malware akan sama susahnya seperti mencari jarum didalam tumpukan jerami. Betapa tidak, mudahnya pertukaran file melalui berbagai media serta besarnya kapasitas disk, membuat kita dengan mudah memperoleh berbagai file yang dapat diibaratkan membentuk tumpukan jerami yang semakin bertambah tinggi.

Perhatikan saat Anda menginstal sebuah software, bisa jadi puluhan (atau bahkan ratusan) file baru, lengkap dengan aneka registry akan bertambah pada sistem komputer Anda. Sebuah file malware yang tersisip di antaranya, ibarat sebuah jarum yang dapat melukai sistem.

Antivirus mungkin dapat membersihkan virus yang telah menginfeksi sistem, dan melakukan disinfeksi pada file-file yang terserang virus. Tetapi, tidak ada yang menjamin pemulihan sistem secara utuh. Ada kalanya virus menyebabkan file korban menjadi rusak, atau menghapus file data yang penting.

Mengobati sistem yang terinfeksi dengan cara instal/format ulang merupakan langkah pemulihan yang dapat mengembalikan kondisi sistem. Tetapi bagi pengguna, langkah ini merupakan cara yang melelahkan, sebagaimana membakar tumpukan jerami hanya untuk memusnahkan sebuah jarum, kecuali pengguna memiliki backup data dan sistem yang up to date. Bagaimanapun, semua cara tersebut tidak menjamin malware yang sama tidak datang kembali.

Karena itu, antivirus harus dapat mendeteksi sebanyak mungkin malware yang berkeliaran, untuk menutup sekecil-kecilnya kesempatan malware untuk memasuki sistem komputer.
Nod32 antivirus
Nod32 antivirus Custom Scan

Deteksi Virus Berdasarkan Signature

Salah satu cara yang lazim dilakukan antivirus adalah mendeteksi malware berdasarkan signature, berupa sederet scan string ataupun nilai checksum/hasb malware yang spesifik, dikumpulkan ke dalam sebuah database khusus/defi-nisi file. Contoh checksum/hash seperti MD5, SHA-1, baru dapat dibuat saat sampel malware telah diperoleh dan dianalisis. Setiap file yang di-scan oleh antivirus akan dibandingkan, apakah cocok dengan database yang ada. Jika cocok, dapat dipastikan file tersebut adalah malwar. Tentu sejauh database yang dikumpulkan valid, update database secara berkala diperlukan agar antivirus mengenali lebih banyak malware.

Walaupun dengan cara ini malware dapat dideteksi secara eksak, tetapi terbatas pada malware yang telah dikenal. Hal ini menyebabkan deteksi dengan berdasarkan definisi spesifik tidak efektif untuk mengenali malware baru yang belum diketahui.

Bahkan, seseorang tidak perlu membuat malware baru jika hanya bertujuan menghindari pendeteksian antivirus berdasarkan definisi file. Cukup mengubah sebuah junk bit pada file malware saja, sudah dapat menciptakan varian baru yang bisa jadi belum dikenal antivirus karena memiliki checksum yang berbeda.

Ancaman malware yang menerapkan teknik polymorphic/metamorphic juga menyulitkan pendeteksian antivirus berdasarkan signature.

Deteksi Virus Berdasarkan Integrity Check

Integrity check memeriksa perubahan yang terjadi pada file, yang dibandingkan adalah dua nilai checksum (yang diambil pada waktu yang berbeda) dari file itu sendiri. Cara kerjanya adalah dengan membuat sebuah nilai unik (checksum/ hash) pada file yang masih bersih, lalu melakukan monitoring untuk memeriksa apakah checksum file pada saat itu berubah. Jika ya, maka kemungkinan file tersebut telah terinfeksi virus.

Integrity check bisa jadi merupakan salah satu bentuk heuristik yang juga dapat mendeteksi virus yang belum dikenal. Sayangnya, metode ini baru menvetahui kehadiran virus, saat virus tersebut telah menyerang dan menginfeksi file. Kelemahan lain, bisa jadi file berubah bukan karena virus, tetapi karena dikompilasi ulang. Jika ada file baru yang masuk ke dalam sistem setelah integrity check berjalan, maka file tersebut tidak memiliki checksum awal sebagai pembanding sehingga harus dianalisis terlebih dahulu apakah file tersebut bukan virus, untuk dibuat checksum awalnya.

Walaupun terdapat berbagai kelemahan jika digunakan sebagai engine heuristik, integrity check merupakan konsep yang penting. Beberapa program memiliki kemampuan untuk memeriksa dirinya sendiri menggunakan integrity check.

Deteksi Berdasarkan Heuristik

Heuristik (atau heuristic dalam bahasa Inggris, berasal dari bahasa Yunani “E UpiaKco” yang berarti “menemukan”) dalam hubungannya dengan dunia antivirus, merupakan teknik untuk mengenali malware berdasarkan ciri/behaviour tertentu yang menyerupai malware.

Dengan pendekatan heuristik, pendeteksian malware tidak terbatas hanya pada database signature yang spesifik, tetapi diharapkan dapat mengenali malware yang belum dikenal secara generik sehingga menambah level proteksi sebuah antivirus. Walaupun tidak ada standar resmi penamaan malware, beberapa antivirus yang memberikan nama malware, seperti katakanlah Gen.worm, Heur.worm, atau mengandung kata variant, potential threat, mengindikasikan bahwa malware tersebut dideteksi dengan menggunakan engine generik/heuristik.

Memahami perilaku malware adalah bekal utama dalam pembuatan engine heuristik. Contoh sederhana, perhatikan perbedaan umum sebuah file executable yang normal, dan yang berupa malware. Salah satu ciri, file normal mungkin akan melakukan pengecekan parameter (misalnya apakah parameter /HELP dipanggil), sementara sebuah file malware secara umum tidak akan melakukan hal tersebut.

Tentu mengandalkan satu ciri di atas masih terlalu lemah, dan akan membuat banyak file normal yang tidak dilengkapi dengan opsi parameter teridentifikasi sebagai malware. Bagaimana jika diperkuat dengan ciri malware lain, seperti proses mencari file executable lainnya, melakukan proses penulisan pada disk, memiliki rutin decryptor, dan seterusnya? Pemahaman perilaku malware seperti ini saat diimplementasikan pada engine heuristik, akan menghasilkan daya deteksi yang luas.

Engine heuristik pada umumnya memiliki skala penilaian untuk menentukan tingkat akurasi pendeteksiannya. Katakanlah engine mengenali sebuah program yang residen di memory. Walaupun bisa jadi merupakan salah satu aktivitas malware, tetapi banyak program normal lainnya yang juga melakukan hal yang sama sehingga hal ini mendapat poin yang tidak signifikan.

Sementara ciri lainnya, misalkan terdeteksi rutin format disk (yang tidak umum dimiliki program normal), akan mendapat poin yang lebih tinggi. Jika akumulasi poin ini telah melewati batas ambang yang ditentukan engine heuris-tik, sebuah peringatan akan disampaikan pada pengguna agar mengambil tindakan preventif, misalnya melakukan karantina pada file yang dicurigai tersebut.

False Alarm

Walaupun telah memiliki serangkaian prosedur sebelum mengeluarkan peringatan pada pengguna, tetapi karena tidak mendeteksi malware secara eksak dan spesifik, analisis heuristik tetap memiliki risiko false alarm.

Pengertian false alarm sinonim dengan istilah false positive, yaitu jika pendeteksian menganggap sebuah file merupakan malware, padahal sebenarnya bukan. Sekedar informasi, kesalahan deteksi bisa juga merupakan false negative, istilah ini digunakan saat sebuah file malware dianggap sebagai sebuah file yang bersih, alias lolos dari pendeteksian antivirus.

Seberapa jauh isu false alarm mempengaruhi pengguna komputer? Jika pengguna yakin bahwa file yang dicurigai bukanlah file berbahaya, didapat dari sumber terpercaya, dan memang kebetulan memiliki beberapa karakteristik menyerupai malware, maka pengguna dapat mengabaikan peringatan dari engine heuristik atau memasukkan file tersebut dalam daftar white list/ex-ception list.

Heuristik Secara Statik

Teknik heuristik erat kaitannya dengan analisis statik dan analisis dinamis pada file, heuristik secara statik menganalisis format file dan karakteristik dari potongan kode di dalam tubuhnya. Berdasarkan analisis ini, akan dibuat kaidah-kaidah yang akan menentukan hasil pendeteksian file tersebut, tergantung dari jenis malware. Misalnya, malware dengan tipe VBScript tentu berbeda penanganannya dengan virus yang menginfeksi file PE (Portable Executable).

Berikut sebuah contoh dalam hubungannya dengan analisis heuristik pada file PE. Lihat contoh sebuah file PE normal yang dibuka dengan menggunakan CFF Explorer dari Explorer Suite. Gambar 1 merupakan tampilan dari Section Headers file Notepad.exe. Terlihat bahwa file ini memiliki 3 section, .text, .data, dan .rsrc. Pada file PE normal umumnya, entry point terletak pada section .text yang berisi kode eksekusi awal program.

Masing-masing section memiliki karakteristik//fog sendiri. Lihat pada kolom paling kanan, yaitu Charateristics. Section .text memiliki nilai charateristics 60000020. Klik kanan dan pilih menu Change Section Flags, tampilan seperti pada gambar 2.

Terlihat bahwa flag yang aktif pada section .text adalah: Is executable, Is readable, dan Contains code. Section lain (.data dan .rsrc) tidak memiliki flag Is executable maupun Contains code. Jika Anda mengeksplorasi file PE normal lainnya, umumnya akan mendapatkan section .text (atau section CODE pada compiler Delphi) memiliki karakteristik yang sama.

Beberapa virus yang menginfeksi file PE dengan cara appending  akan menempelkan tubuh virus pada section terakhir, dan mengubah entry point agar merujuk pada kode virus. Bagaimana perubahan karakte-ristik/flag yang terjadi? Perhatikan pada gambar 3.

Gambar 3 merupakan tampilan section headers file Notepad.exe yang tertular virus yang dikenal dengan nama Gaelicum/Tenga.A. Virus ini akan menyisipkan tubuh virus di section terakhir pada file korban, dalam hal ini section .rsrc pada file Notepad.exe.

Perhatikan bahwa entry point tidak lagi berada pada section .text, tetapi diganti oleh virus ke section .rsrc. Karakteristik section .rsrc yang tadinya bernilai 40000040 berubah menjadi 60000060, setelah terinfeksi. Hal ini mengindikasikan bahwa terjadi perubahan flag. Untuk melihatnya, klik kanan dan pilih menu Change Section Flags, tampilan seperti pada gambar 4.

Terlihat virus mengubah karakteristik section .rsrc dengan menambahkan flag Is executable dan Contains code. Kondisi section terakhir yang memiliki karakteristik Is executable dan Contains code merupakan hal yang mencurigakan dan tidak normal, dan dapat diimplementasikan sebagai salah satu poin dalam engine heuristik untuk mendeteksi virus appending, seperti Gaelicum dan sejenisnya.

Yang perlu diperhatikan jika hanya berdasarkan 1 poin di atas, walaupun file sudah termasuk tidak umum, tetapi masih terlalu dini untuk menentukan file tersebut merupakan varian virus tertentu.

Sebuah contoh lain ditunjukkan pada gambar 5. Kali ini menunjukkan file Notepad.exe yang terinfeksi oleh virus RunOnce, yang juga merupakan virus yang melakukan teknik appending.

Seperti pada virus Gaelicum, virus RunOnce juga mengubah entry point ke section terakhir. Terlihat bahwa virus mengubah nilai Virtual Size dan Raw Size section terakhir pada file korban dengan sebuah nilai yang sama. Acuan ini dapat melengkapi engine heuristik, tetapi perlu diwaspadai juga ciri yang sama (nilai Virtual Size sama dengan RawSize, pada section terakhir) dapat ditemui pada file normal, misalnya pada file installer Inno Setup.

Contoh filter heuristik lainnya dapat berupa:

  1. Pendeteksian overlay.
  2. Pengenalan icon.
  3. Penambahan registry tertentu.
  4. Mengandung SMTP engine.
  5.  Mengirim e-mail dengan subject tertentu, dan seterusnya.

Daftar ini akan menjadi lebih panjang lagi jika mencakup seluruh jenis malware dengan masing-masing karakteristiknya, seperti spyware, trojan, botnet penyebar spam atau DDoS, keylogger, adware, virus macro, dan seterusnya.

Akan lebih akurat jika engine heu-ristik memiliki standar format kode tersendiri, misalnya section terakhir memiliki karakteristik Contains code memiliki kode C, atau jika ditemukan instruksi rutin decryptor akan memiliki kode D, dan seterusnya. Dengan demikian, engine heuristik akan menyiratkan hasil deteksi yang sebenarnya.

Dalam hal ini, walaupun file yang terdeteksi ternyata bukan malware, engine heuristik tidak melakukan false alarm, karena ia hanya menunjukkan fakta bahwa beberapa karakteristik sesuai kode yang dirumuskan dimiliki oleh file tersebut.

Permasalahan mulai timbul, saat malware menyembunyikan kode aslinya dengan cara melakukan kompresi/packing, sehingga analisis statik tidak akan menemukan karakteristik malware pada tubuhnya. Malware ini baru melakukan dekompresi (secara runtime} saat dijalankan.

Engine heuristik dapat dirancang agar melakukan unpack otomatis pada file yang terkompresi, dan mendeteksi file hasil dekompres. Permasalahan lain timbul jika malware menggunakan algoritma kompresi sendiri ataupun algoritma lainnya yang tidak dikenal.

Kompresi itu sendiri merupakan salah satu bentuk enkripsi, sekaligus digunakan untuk mengecilkan ukuran file. Malware juga dapat memiliki rutin enkripsi/dekripsi sendiri, yang jika dilengkapi dengan kemampuan polymorphic, akan menghasilkan enkripsi yang berbeda-beda setiap kali direplikasi.

Engine heuristik merupakan implementasi dari pengetahuan dan pengalaman, kumpulan analisis dan data yang terus bertambah akan membuat engine heuristik berkembang menyesuaikan diri dengan teknologi sistem operasi, bermacam format file, dan tentunya teknologi virus itu sendiri.

Emulasi

Jika heuristik statik mendeteksi malware secara pasif, maka heuristik dinamis akan mendeteksi malware secara aktif, antara lain dengan emulasi (istilah lainnya yang sering digunakan adalah sandboxing, atau virtualization).

Konsep emulasi adalah menyediakan lingkungan virtual yang terpisah, lalu menjalankan kode yang ingin dianalisis di dalam lingkungan tersebut. Komponen-komponen dasar emulator terbagi antara lain:
  1. Dissambler engine.
  2. Memory emulator.
  3. Sistem rw/e/penilaian engine tersebut.
Teknik emulasi seringkali berhasil dalam mendeteksi virus yang terkompres, terenkripsi, ataupun polymorphic yang sukar dideteksi dengan heuristik secara statik. Saat diemulasikan dengan menjalankan setiap instruksi pada buffer memory, virus baru menunjukkan behaviour yang'sebenarnya. Buffer memory dapat berisi malware yang telah mendekripsi dirinya sendiri.

Seperti juga pada heuristik secara statik, hal penting dalam emulasi adalah mekanisme engine dalam mengenali malware. Emulator tidak perlu menjalankan keseluruhan instruksi, tetapi terfokus hingga tujuannya tercapai, karena itu emulator harus memiliki seperangkat rule untuk menentukan kapan untuk berhenti atau melanjutkan emulasi.

Emulator juga dapat memanfaatkan heuristik statik atau database signature untuk memeriksa kode yang telah terbuka, sehingga engine-engine yang terpasang dalam sebuah antivirus dapat saling mendukung dan melengkapi.

Virus yang dibuat dengan bahasa pemrograman tingkat tinggi (seperti Visual Basic, Delphi) akan lebih rumit untuk dideteksi dengan cara emulasi, karena kode assembly yang dihasilkan akan lebih panjang dan memerlukan waktu emulasi yang lebih lama. Penutup

Dengan teknik heuristik, antivirus tidak selalu satu langkah tertinggal dibandingkan dengan virus, walaupun juga tidak menjamin 100% mampu mendeteksi malware yang belum diketahui.

Apalagi, pembuat malware juga tidak ingin tertinggal dan dapat mempelajari cara kerja heuristik yang digunakan oleh antivirus, lalu mencoba mengimplementasikan teknik-teknik anti-heuristik, anti-emulator, dan lain sebagainya.

Karena itu, walau engine heuristik tidak memerlukan update periodik sebagaimana pendeteksian berbasiskan signature, algoritma dan analisis heuristik yang digunakan harus terus diimprovisasi dari waktu ke waktu, mengikuti ancaman malware saat ini maupun yang akan datang

Deteksi Virus Menggunakan Engine Heuristik Pada Anti Virus Rating: 4.5 Diposkan Oleh: rosari J

0 comments:

Post a Comment