Sumber:pixabay.com |
Bagaimana antivirus mendeteksi virus? Secara umum antivirus menggunakan
signature atau kode tertentu yang dicocokan saat mengecek suatu program. Jika signature
tersebut ada di struktur PE program maka program tersebut adalah virus.
Signature ini diambil dari sample virus yang telah diteliti oleh pihak antivirus
ataupun virus dapat terdeteksi karena mempunyai signature yang umum digunakan
oleh malware.
Rutinitas virus dan antivirus yaitu bermain petak umpet,
misalnya ketika virus melakukan teknik polymorphic untuk mengelabui signature virus
dan antivirus melakukan teknik emulasi sebagai amunisi dalam mendeteksi virus
polymorphic. Namun teknik spekulasi alias heuristik pada antivirus bisa
dibilang lebih canggih untuk mendeteksi virus-virus baru yang berjenis klasik.
Hooking
Ketika Anda mengaktifkan firewall pada Windows dan Anda menjalankan
suatu program misalnya game online, firewall akan menampilkan pesan bahwa game
tersebut berusaha mengakses Internet. Selanjutnya Anda memutuskan game tersebut diizinkan untuk mengakses
Internet atau tidak. Saat sebelum memilih keputusan, game tersebut “digantung”
untuk menunggu keputusan Anda. Teknik yang digunakan firewall ini dapat disebut
hooking.
Hooking merupakan teknik untuk memodifikasi alur eksekusi
normal dari program atau sistem dengan suatu rutin tertentu. Saat Anda
menjalankan malware kemudian antivirus
memberi peringatan tentang malware tersebut, maka hal yang terjadi adalah antivirus
melakukan hooking terhadap CreateProcess dari malware. Jika CreateProcess
dicegat oleh antivirus maka artinya malware belum aktif dan Anda menentukan rutin
apa yang dilakukan pada malware.
Sama dengan antivirus, malware juga menggunakan teknik
hooking dalam aksinya. Sebagai contoh, malware
sering melakukan hooking terhadap fungsi ExitProcess dan TerminateProcess untuk
menghindari dirinya dapat dimatikan alias immortal process. Namun hal ini juga
dilakukan oleh beberapa antivirus agar prosesnya tidak dapat dimatikan.
Contoh lain dalam penggunaan hooking misalnya saat program
keylogger ingin mengirim log ke server. Jika ada firewall yang memblok program yang
berusaha mengakses Internet, maka keylogger dapat menggunakan program yang
telah diizinkan firewall seperti Internet Explorer untuk mengirim data
tersebut. Yaitu ketika Internet Explorer melakukan request data menggunakan
fungsi Send, maka keylogger dapat meng-hook fungsi Send pada winsock untuk
mengirim log, setelah itu operasi request data oleh Internet Explorer
dilanjutkan kembali. Oleh karena itu Anda harus curiga jika ada program non
sistem seperti Internet Explorer , Adobe Reader dsb yang aktif di memory
padahal Anda tidak merasa menjalankan program tersebut. Bisa saja proses
program tersebut ditumpangi oleh malware.
Pointer Hooking
Saat menjalankan suatu program maka akan terjadi lalu lintas
fungsi API untuk memanggil rutin tertentu. Jika malware mengubah alamat dari
pointer fungsi API maka fungsi tersebut dapat dibelokan menuju kode lain. Hal
ini akan legal karena yang memanggil kode Anda merupakan fungsi yang sah di mata
Windows. Contoh dari pointer hooking yaitu IAT hook dan SSDT hook.
IAT hook sering dipakai oleh malware untuk menginfeksi file.
IAT merupakan singkatan dari Imports Address Table atau alamat dari Imports
Table. Imports Table merupakan bagian dari PE file di .idata section. Ketika
program menggunakan kode atau fungsi (API) dari DLL, maka data tersebut akan
tersimpan di dalam program yaitu di Imports Table. Malware akan mencari alamat
fungsi API yang terdapat di Imports Table dan mengganti tujuan alamat tersebut
ke kode malware. Namun IAT hook tidak akan berjalan jika program memanggil
fungsi API secara dynamic yaitu dengan memakai fungsi LoadLibrary dan GetProcAddress.
Malware juga menyukai memanggil API secara dynamic. Seperti
yang telah dijelaskan, daftar fungsi API yang dipakai program tersimpan di
Imports Address. Salah satu cabang ilmu heuristic antivirus dalam mendeteksi malware
yaitu dengan mengintip fungsi API apa saja yang digunakan oleh suatu program di
Imports Table dan mengemulasinya. Oleh karena itu malware menghindari
pemanggilan fungsi API melalui Imports Table dan lebih memilih pemanggilan
secara dynamic yaitu langsung ke DLL yang mempunyai fungsi yang dipanggil.
System Call Table Hooking
System call table hooking merupakan teknik hooking yang
memodifikasi fungsi API yang biasa dipakai menjadi fungsi native API. Native
API dipanggil di kernel mode. Jika Anda ingin mendapatkan isi dari folder
menggunakan FindNextFile, maka Windows akan memanggil NtQueryDirectoryFile secara
diam-diam di kernel mode untuk menjalankan tugas dari FindNextFile. Bagaimana
jika ada pembuat malware yang melakukan hook pada NtQueryDirectoryFile? Ya, malware
tidak terdaftar sebagai file di Windows. Begitu juga dengan hooking NtQuerySystemInformation
untuk menyembunyikan proses dari suatu program dan NtEnumerateKey untuk
menyembunyikan registry di Windows.
Hampir semua produk sekuriti juga meng-hook system call.
Oleh karena itu ketika mengunistall program jenis antirootkit maka Windows
diwajibkan untuk di-restart. Hal ini dikarenakan saat ada program memanggil
fungsi yang di-hook dan driver program antirootkit sudah tidak aktif, maka page
atau alokasi memori pada fungsi distop. Jika Anda masih memanggil fungsi
tersebut maka akan terjadi BSOD pada Windows.
Detour
Detour merupakan teknik hooking yang langsung tembak,
artinya DLL yang dijadikan target akan ditimpa secara keseluruhan atau
di-patch. Saat DLL digunakan maka hanya
sekali saja DLL tersebut di-load ke physical memory. Hanya saja setiap proses
yang memakai DLL tersebut akan menganggap ia mempunyai DLL tersendiri, padahal
DLL yang dimaksud merupakan hasil mapping ke virtual address. Oleh karena hanya
satu DLL yang terdapat di physical memory maka jika Anda melakukan detour pada
suatu DLL, semua proses yang menggunakan DLL tersebut akan menggunakan DLL palsu. DLL palsu ini pun bisa menjalankan
rutin dari DLL asli jika diinginkan. Penggunaan detour aslinya dipakai Windows
saat proses update menggunakan hotfix.
Direct Kernel Object Manipulation
Setelah mengenal hooking pada fungsi API, ada cara yang
biasa digunakan malware dalam melakukan teknik stealth, yaitu dengan langsung
mengubah data pada kernel. Pada kernel terdapat berbagai jenis data yang
di-query oleh semua fungsi API pada Windows. Jika data pada kernel ini dihapus
maka fungsi yang dipanggil tidak dapat melakukan tugasnya. Hal ini sangat
efektif dipakai malware dalam menyembunyikan keberadaan prosesnya.
Struktur yang terdapat di dalam kernel berupa EPROCESS. Pada
EPROCESS terdapat informasi dari semua
proses yang berjalan berikut informasi PID, threads dan lainnya. Informasi ini
dikelompokan dan disusun sebagai link list yang saling berkaitan.
Link List Pada EPROCESS |
Dengan memutuskan data proses malware dari link list
EPROCESS maka semua fungsi API pada Windows yang berguna melihat proses yang
berjalan pun menjadi tidak berguna. Setiap program yang dijalankan akan
menghasilkan proses. Proses tidak bisa mengeksekusi kode, namun proses akan membuat thread utama. Thread
utama berfungsi untuk mengeksekusi kode. Nah, tujuan dari proses masih tetap
berjalan karena EPROCESS tidak berhubungan dengan eksekusi dari thread.
Memodifikasi Link List Pada EPROCESS |
Physical Memory
Semua proses di Windows masing-masing memiliki virtual
memory sebagai jatah RAM untuk menjalankan program. Virtual memory ini
merupakan aliran dari physical memory. Jika malware dapat memanipulasi physical
memory menggunakan fungsi API ZwOpenSection, maka malware dapat menyembunyikan
prosesnya sendiri seperti prinsip pada DKOM. Pada Windows XP, mengakses
physical memory melalui \Device\PhysicalMemory masih dapat dilakukan dari user
mode. Bermain dengan physical memory semula dipopulerkan oleh rootkit pada
Linux yang bernama SucKIT. Salah satu worm Windows yang terkenal yaitu W32/Fanbot. Worm ini menggunakan DKOM dan \Device\PhysicalMemory
untuk menyembunyikan prosesnya.
CreateRemoteThread
CreateRemoteThread fungsi API yang berfungsi untuk membuat
thread yang berjalan di virtual address dari proses program lain. Cara ini
sering dipakai untuk membuat malware tidak terdeteksi oleh antivirus. Banyak
program crypter beredar untuk mempermudah proses pemakaian CreateRemoteThread.
HANDLE WINAPI CreateRemoteThread(
__in HANDLE hProcess,
__in LPSECURITY_ATTRIBUTES
lpThreadAttributes,
__in SIZE_T dwStackSize,
__in LPTHREAD_START_ROUTINE
lpStartAddress,
__in LPVOID lpParameter,
__in DWORD dwCreationFlags,
__out LPDWORD lpThreadId
);
Cara umum dalam pemakaian dalam API ini yaitu, kode
malwareyang ingin dieksekusi terenkripsi agar tidak terdeteksi oleh antivirus.
Kode ini pun di-load dan didekripsi di memory kemudian di-inject di proses
program lain.
AntiRootkit
Salah satu program gratis yang dapat diandalkan untuk
mendeteksi malware yang memodifikasi sistem internal yaitu Radix. Dengan Radix,
Anda dapat mengecek hidden files, Alternate Data Streams, Hidden Registry, IAT
hooks dan masih banyak objek lainnya.
Tampilan Radix |
Implementasi
Berikut contoh sederhana program dalam melakukan Hooking
pada API.
procedure hook(hModule, newfunc:pointer);
var
jmpto:dword;
begin
jmpto:=dword(newfunc)-dword(hModule)-5;
VirtualProtect(hModule,
5, PAGE_EXECUTE_READWRITE, nil);
pbyte(hModule)^:=;
pdword(dword(hModule)+1)^:=jmpto;
end;
procedure MySleep(time:dword);
begin
MessageBox(0, 'OMG! you called Sleep!', 'ROFLMAO!', MB_OK);
end;
hook(GetProcAddress(GetModuleHandle('kernel32.dll'),
'Sleep'), @MySleep);
Penutup
Perkembangan teknologi malware semakin canggih dan
berbahaya. Payload dari malware pun bervariasi, misalnya sebagai keylogger
untuk merekam aktifitas keyboard agar mencuri data pribadi seperti akun email,
internet banking, kartu kredit ataupun game online. Log dari rekaman tersebut
pun dapat dengan mudah dikirim ke pembuat malware meskipun Anda menginstall
antivirus atau firewall di komputer. Teknologi yang dipakai malware dalam
melawan program sekuriti dengan memanipulasi sistem ini disebut rootkit.
Pencegahan atau cara untuk melawan malware dengan teknologi
rootkit ini dapat dimulai dengan menginstal antivirus dan selalu mengupdate sistem
operasi. Pada Windows 7, kemampuan
malware dalam memanipulasi sistem akan lebih sulit karena Windows 7 menerapkan
beberapa lapisan layer untuk mengakses kernel dengan teknologi PatchGuard,
terutama pada versi 64 bit.
Ditulis untuk PC Media edisi 4 2010
No comments:
Post a Comment