Driver merupakan software yang menghubungkan sistem komputer dengan device. Dapat dimisalkan sebuah aplikasi membutuhkan suatu data dari device, maka aplikasi tersebut akan memanggil fungsi yang terdapat pada os dan os akan memanggil fungsi yang terdapat pada driver. Driver ini lah yang akan berkomunikasi dengan device untuk mendapatkan data. Setelah driver mendapatkan data dari device maka data tersebut dikirimkan ke os lalu ke aplikasi. Sebagian besar device tidak akan dapat berjalan tanpa adanya driver yang sesuai yang terinstal pada os.
Gambar 1. Hubungan Sistem Komper dengan Device driver
Source https://msdn.microsoft.com/ru-ru/library/ff554678(v=vs.85).aspx
Device driver dapat berjalan pada 2 mode, yaitu user mode dan kernel mode. Mode yang digunakan bergantung pada tipe code yang sedang berjalan.. Driver yang berjalan di user mode tidak dapat mengakses virtual address yang dicadangkan untuk os. Pembatasan ini mencegah aplikasi dari mengubah atau merusak data pada os. Sedangkan dalam kernel mode, driver berbagi virtual address sehingga apabila driver mengalami crash maka seluruh os akan mengalaminya juga.
Gambar 2. User mode dan Kernel mode
Source https://msdn.microsoft.com/ru-ru/library/ff554836(v=vs.85).aspx
Karena driver adalah sebuah software maka driver rentan memiliki bug. Bug ini dapat menimbulkan masalah pada operasional komputer, oleh karena itu driver yang berjalan pada kernel mode perlu diperhatikan lebih lanjut. Selain itu, karena driver dapat dibuat oleh third party hardware provider maka tidak mengejutkan apabila driver pada linux ataupun windows sering menimbulkan crash. (Anda dapat mengetahui berbagai vulnerability pada device driver di internet)
Untuk mengurangi dampak dari masalah tersebut maka sebelum proses instalasi device driver sebaiknya kita mengetahui apakah driver tersebut aman untuk diinstal.
Proses instalasi device driver pada windows dapat dilakukan dengan 2 cara, yaitu:
- Cara otomatis
Pilih setting – Change PC setting – Update and Recovery – Windows Update
- Cara manual
Download dan install driver dari website terpercaya (Manufacture’s website).
Mendowload driver dari website terpercaya pun tidak menjamin bahwa driver yang akan kita instal tersebut aman. Oleh karena itu, windows memberikan proteksi tambahan untuk mengetahui apakah driver yang kita instal aman dengan memberikan notifikasi sebagai berikut:
- Windows can’t verify the publisher of this driver software
Driver tidak memiliki digital signature atau terdapat digital signature yang tidak terverifikasi oleh Certification Authorithy.
- This driver hasn’t been signed
Driver tidak memiliki digital signature yang terverifikasi publisher. Driver mungkin telah diubah untuk menyertakan malware.
- Windows requires a digitally signed driver
Driver tidak memiliki digital signature yang valid atau memiliki digital signature yang berubah.
Namun dengan men-download dari situs terpercaya dan adanya digital signature saja tidak menjamin bahwa driver tersebut terbebas dari malware. Sehingga diperlukan beberapa teknik untuk menambah proteksi. Salah satu proteksi lainnya yaitu dengan mengaktifkan anti-virus/anti-malware pada komputer. Contoh anti-virus/anti-malware yang terdapat pada windows yaitu windows defender yang dapat membantu mengidentifikasi dan menghapus virus atau software berbahaya lainnya. Tetapi sayangnya malware memiliki sistem pertahanan sendiri dan sangat memungkinkan untuk menyembunyikan diri dari antivirus atau bahkan menginfeksi antivirus itu sendiri. Oleh karena itu, banyak literature yang membahas mengenai keamanan driver ini dan mengajukan berbagai macam teknik untuk mendeteksi atau mencegah malware pada driver. Beberapa literature tersebut menjelaskan mengenai:
- Reverse Engineering Device Driver
Reverse Engineering merupakan metode yang banyak digunakan dalam proses analisa malware. Reverse engineering digunakan untuk mencari sebuah informasi yang tidak diketahui atau disembunyikan. Informasi yang didapat merupakan sebuah celah keamanan. Keuntungan melakukan reverse engineering pada analisa malware adalah malware tidak kita jalankan sehingga meminimalisir kemungkinan komputer terinfeksi.
Tahapan analisa malware dengan reverse engineering yaitu:
- Malware defined: mengklasifikasi tipe dan jenis malware.
- Define goal malware analysis: menentukan apa yang terjadi, memastikan file, dan mesin yang mungkin terinfeksi malware.
- Malware analysis environment and requirement: komponen, design, dan arsitektur untuk analisa malware, contoh: malware source, virtual machine environment network hub.
- Basic analysis
- Disassembly, decompile, debugging: pembongkaran source untuk membuktikan hipotesa awal.
- Nooks yang mengurangi konsekuensi kegagalan driver dengan cara mengisolasi aplikasi user mode.
Gambar 3. Arsitektur Nooks
Nooks merupakan proteksi kernel untuk mencegah os mengalami crash karena device driver. Nooks juga dapat diartikan sebagai subsistem handal yang bertujuan untuk lebih meningkatkan kehandalan os dengan mengisolasi os dari kegagalan driver. Nooks mengisolasi driver dalam ruang alamat kernel dimana hardware dan software mencegah driver merusak kernel.
Sekarang, nooks menambah shadow driver. Shadow driver memiliki 2 tugas, pertama, terdapat agen kernel yang menyembunyikan kegagalan driver dari user, os, ataupun aplikasi. Dan agen kernel lainnya secara transparan memulihkan driver ke fungsi sebelumnya. Dengan cara ini, aplikasi dan os tidak menyadari bahwa driver mengalami crash dan terus menjalankan fungsinya.
- Microkernels yang berjalan pada user mode
Gambar 4. Arsitektur Microkernels
Microkernel dirancang untuk mengatasi permasalahan yang disebabkan karena pertumbuhan kernel yang membesar dan kesulitan mengelolanya. Microkernel merupakan modul inti yang menyediakan beragam mekanisme yang dibutuhkan untuk mengembangkan sebuah os. Layanan yang disediakan oleh os diantaranya adalah device driver, protokol jaringan, sistem berkas, dan kode antarmuka pengguna yang berada dalam user mode.
- Microdriver yang mengurangi jumlah driver code berjalan pada kernel
Gambar 5. Arsitektur Microdriver
Microdriver merupakan penyambung antara kernel monolitik dengan microkernel, dan meningkatkan kehandalan dan juga performansi. Microdriver membagi fungsi device driver antara kernel mode dan user mode. Kernel mode terdiri dari fungsi kritis dan yang sering digunakan, seperti mengirim dan menerima paket jaringan dan memproses perintah SCSI. Sedangakan user mode berisi fungsi non-kritis dan yang jarang digunakan seperti startup/shutdown dan penanganan eror.
Sumber:
http://julismail.staff.telkomuniversity.ac.id/reverse-engineering/
https://msdn.microsoft.com/en-us/library/windows/hardware/ff554678(v=vs.85).aspx
http://nooks.cs.washington.edu/
https://id.wikipedia.org/wiki/Mikrokernel
http://usenix.org/legacy/event/hotos07/tech/full_papers/ganapathy/ganapathy_html/index.html
Nugroho, Heru Adi dan Prayudi, Yudi. 2015. Penggunaan Teknik Reverse Engineering pda Malware Analysis Untuk Identifikasi Serangan Malware. Yogyakarta