Teknik Introspeksi Hypervisor Sebagai Bentuk Pengembangan Teknik Instrospeksi Mesin Virtual

Latar Belakang Teknik Instrospeksi Hypervisor

Teknik instrospeksi hypervisor berasal dari teknik introspeksi mesin virtual (VMI). VMI merupakan sebuah teknik yang dapat memantau mesin virtual dalam lapisan hypervisor [2]. VMI menyediakan akses level rendah terperinci dari mesin virtual. VMI dapat dilakukan oleh hypervisor atau mesin virtual yang terisolasi. Inspeksi dilakukan terhadap kondisi (CPU register, memory, devais) dan aktivitas dari mesin virtual yang berjalan atau sistem operasi tamu.

Konsep VMI berasal dari sebuah sistem pendeteksi intrusi (IDS) yang menggabungkan kelebihan dari sistem berbasis jaringan dan berbasis inang. Aplikasi berbasis VMI memiliki sifat resistensi tamper, efisien dalam memeriksa aktivitas dan kondisi sistem operasi, memiliki pandangan yang lengkap dan dapat memodifikasi serta menginterupsi kondisi dan aktivitas sistem operasi. Hal tersebut dimungkinkan oleh adanya hypervisor yang terletak di antara lapisan perangkat keras dan sistem operasi.

VMI 1
Gambar 1. Penerapan teknik VMI

Tantangan yang muncul dari penggunaan teknik VMI adalah kesenjangan semantik. Hypervisor melihat sistem operasi tamu sebagai kumpulan bit dan byte dengan tambahan informasi berupa daftar perangkat keras. Pada tingkat hypervisor tidak ada abtraksi sistem operasi dan tidak ada semantik dengan peringkat yang tinggi seperti proses, berkas, socket dan struktur data. Beberapa penelitian telah difokuskan untuk menciptakan sejumlah semantik berperingkat tinggi yang dapat memeriksa kondisi dan aktivitas yang mencurigakan dari aplikasi sasaran.

Terdapat 4 kategori besar teknik VMI berdasarkan cara informasi semantik didapatkan [2]:

Di dalam mesin virtual (In-VM)

Dalam teknik ini, hypervisor berkoordinasi dengan agen yang terletak di dalam mesin virtual ketika melakukan pemantauan agar terhindar dari masalah kesenjangan semantik. Terdapat 2 sistem yang dikembangkan yaitu Lares dan kerangka kerja SIM. Di dalam Lares, hypervisor menginjeksi hook ke dalam komponen kernel yang menjadi sasaran pemantauan. Setiap hook membangkitkan handler ketika aktivitas yang terpantau dijalankan. Handler tersebut juga diinjeksi oleh hypervisor. Informasi yang berasal dari aktivitas terpantau dikirim ke hypervisor melalui sarana hypercall. Hypervisor melindungi hook dan handler yang terinjeksi dengan menggunakan proteksi tulis dari bagian memory tempat hook dan handler berada. Di dalam kerangka kerja SIM, mekanisme yang terjadi hampir sama, perbedaannya terdapat pada penggunaan bagian memory yang aman untuk menyimpan informasi aktivitas yang terpantau. Bagian memory tersebut hanya dapat diakses oleh hypervisor atau mesin virtual yang berfungsi sebagai pemantau. Kelemahan dari teknik ini berasal dari keterbatasan agen di dalam mesin virtual. Di antaranya adalah keterbatasan jangkauan pantau hanya untuk komponen yang terpapar oleh API sistem operasi, pemaparan terhadap serangan malware dan kurangnya transparansi.

Di luar mesin virtual terkirim (Out-of-VM delivered)

Dalam kategori ini, informasi semantik berupa pengetahuan tentang sistem operasi tamu (faktor-faktor internal dan lokasi struktur data) harus terkandung secara eksplisit dalam sistem VMI, diekstrak dari kode sumber sistem operasi, dan didapatkan melalui simbol kernel jika ada. Ada 4 sistem yang dikembangkan yaitu:

  • Livewire

Livewire dibuat dengan tujuan mendeteksi intrusi dalam mesin virtual linux yang dijalankan oleh hypervisor VMware. Livewire mendapatkan informasi semantik tentang struktur data linux dengan menggunakan hypervisor dan alat analisis kernel dump linux. Livewire membandingkan kondisi sistem operasi yang didapat dari hypervisor dengan yang didapat dari alat bawaan sistem operasi melalui remote shell. Intrusi akan terlihat apabila ada perbedaan di antara keduanya.

  • XenAccess

XenAccess mendukung sistem VMI dalam memetakan alamat virtual kernel, simbol kernel tertentu dan alamat virtual sebuah proses dalam ruang memory. XenAccess menelusuri struktur data yang berbeda dengan menggunakan pengetahuan yang didapatkan dari kode sumber linux dan referensi teknis windows. LibVMI merupakan sebuah bentuk pengembangan dari XenAccess yang mengintegrasikan kerangka kerja forensik memory volatility di dalamnya.

  • VMwatcher

VMwatcher menjembatani kesenjangan semantik dengan menggunakan berkas simbol kernel system.map dalam menentukan struktur data yang mencurigakan di memory mesin virtual. Kondisi virtual disk juga dipaparkan sebagai disk yang terpasang oleh perangkat lunak anti malware. VMwatcher juga memiliki fungsi yang ada dalam livewire yaitu membandingkan kondisi sistem operasi dari sumber hypervisor dan alat bawaan sistem operasi untuk mencari rootkit dan malware tersembunyi.

  • Virtuoso

Virtuoso merupakan sebuah sistem yang melakukan otomasi terhadap pengurangan kesenjangan semantik dan pembuatan alat introspeksi tanpa mengetahui kondisi internal sistem operasi. Ide dasar virtuoso adalah membangkitkan secara otomatis alat introspeksi dengan merekam dan belajar dari eksekusi intruksi tingkat rendah.

Kelemahan dari teknik ini adalah penggunaan informasi semantik terkirim menyebabkan VMI bergantung pada jenis dan versi sistem operasi yang dipakai. Informasi semantik terkirim menjadi tidak berguna apabila sistem operasi diperbaharui atau diganti dengan sistem operasi lain. Kelemahan lain adalah sistem yang bergantung pada penggunaan simbol kernel dapat menjadi tidak akurat atau berhenti apabila simbol kernel terkorupsi atau tidak tersedia. Apabila struktur data sistem operasi tidak berubah saat dijalankan maka VMI rentan terhadap serangan manipulasi langsung struktur kernel (DKSM) dan manipulasi langsung obyek kernel (DKOM). Serangan DKSM membuat informasi semantik usang dikirim ke VMI yang menyebabkan sudut pandang VMI menjadi tidak akurat. Serangan DKOM mengubah struktur data kernel sesuai aktivitas sistem operasi tamu. Sebuah rootkit dapat menghilangkan sebuah proses berbahaya dari daftar proses tapi tetap dipertahankan dalam daftar pengelola jadwal (scheduler). Proses tersebut akan dianggap normal dan tidak terdeteksi oleh VMI.

Di luar mesin virtual diambil (Out-of-VM derived)

Teknik ini dikembangkan dengan ketergantungan penuh pada informasi semantik yang diambil dari pengetahuan terhadap arsitektur perangkat keras. Arsitektur perangkat keras dipakai karena berdampak pada fungsionalitas sistem operasi modern seperti multitasking, privilege pengguna, proteksi dan pengaturan memory, serta virtualisasi. Inspeksi terhadap aktivitas sistem operasi tamu dilakukan dengan mengamati dan menerjemahkan kondisi dan kejadian pada perangkat keras. Dengan demikian teknik ini tahan terhadap serangan kernel dan pengelakan malware. Teknik ini dibagi menjadi 2 kategori yaitu:

Berbasis penanganan perangkap (Trap handling)

Dalam subkategori penanganan perangkap, sistem VMI melakukan pemantauan secara aktif menggunakan informasi yang diambil dari daftar atau konteks prosesor ketika hypervisor menerima perangkap seperti keluarnya mesin virtual (VMexit) untuk menangani operasi sensitif dari sistem operasi tamu. Perangkap dipicu secara otomatis atau diminta oleh pengaturan bit kendali dalam struktur kendali mesin virtual (VMCS). Antfarm merupakan sistem VMI pertama yang mengambil informasi semantik dari arsitektur x86. Antfarm melacak pembuatan, pengalihan dan pengeluaran proses dengan melacak ruang alamat proses. Hal ini dilakukan dengan melacak penulisan daftar kendali CR3. Penulisan CR3 membangkitkan perangkap yang akan diambil hypervisor. Antfarm membandingkan daftar proses berdasarkan nilai CR3 yang sudah ada dan yang baru diambil. Kinerja mesin virtual yang turun akibat penggunaan antfarm dapat dikurangi dengan membatasi jumlah nilai CR3 yang diamati. Hal ini dimungkinkan oleh keberadaan teknologi perangkat keras tambahan Intel yaitu CR3 target value list. Lycosid diciptakan untuk mengembangkan kemampuan antfarm untuk mendeteksi pergerakan proses tersembunyi dengan cara membandingkan ukuran panjang dari 2 daftar proses yang sama namun diambil dari 2 sumber berbeda. Daftar proses pertama diambil dari sistem VMI sementara yang kedua diambil dari alat pemantau di dalam mesin virtual. Perbedaan waktu pemakaian CPU akan menunjukkan adanya proses tersembunyi. Kelemahan subkategori ini adalah ruang lingkupnya yang hanya berisi daftar kejadian yang secara otomatis memicu perangkap dan dikirim ke hypervisor.

Berbasis pemaksaan perangkap (Trap forcing)

Subkategori ini menggunakan hook berbasis perangkat keras untuk memaksakan perangkap interrupts, exception, dan faults pada aktivitas sistem operasi tamu yang mencurigakan seperti syscall yang pada umumnya tidak mengakibatkan VMexit. Terdapat 3 sistem VMI yang memanfaatkan teknik ini yaitu:

  • Ether

Ether adalah sistem pertama yang berhasil menggunakan teknologi tambahan virtualisasi Intel VT-x dan AMD SVM untuk membuat alat analisis malware setingkat hypervisor. Ether mengeksekusi instruksi satu per satu untuk melihat dan menghindar dari deteksi malware.

  • Nitro

Nitro adalah alat berbasis VMI yang digunakan untuk melacak syscall dalam arsitektur x86. AMD SVM menyediakan mekanisme untuk memerangkap secara otomatis semua interrupt sementara Intel VT-x hanya dapat memerangkap otomatis 32 interrupt pertama (system interrupt). Untuk mengakomodasi kedua platform tersebut, Nitro mengubah ukuran daftar tabel interrupt descriptor (IDTR) menjadi 32 masukan.

  • Hypertap

Hypertap bergantung pada penanganan VMexit dan melacak paksa proses, thread, dan syscall. Hal tersebut diperlukan untuk mendeteksi sistem operasi tamu yang hang, rootkit dan malware tersembunyi, serangan eskalasi privilege. Hypertap melacak eksekusi proses dan waktu konsumsi CPU untuk setiap proses dengan menangani perangkap yang diaktifkan oleh proses penulisan CR3.

Kelemahan teknik ini adalah keterbatasan ruang lingkup yang berkisar pada perangkat keras yang digunakan dan implikasinya terhadap aktivitas sistem operasi tamu.

Teknik hibrida

Teknik hibrida VMI menggunakan kombinasi dari ketiga teknik di atas untuk mendapatkan kelebihan berupa kekuatan, kehandalan dan perluasan aplikasi VMI. Teknik ini terbagi menjadi 4 kategori yaitu:

  • Berbasis pemaksaan perangkap

SecVisor merupakan perangkat hypervisor yang bertujuan memastikan keutuhan kode kernel sistem operasi linux dan melindunginya dari serangan injeksi kode. SecVisor membutuhkan implementasi ulang bootstrapping dan fungsi bongkar-muat modul kernel. Hal ini diperlukan untuk menjalankan hypercall ke SecVisor yang menyetujui penggunaan kode kernel dalam memory berdasarkan kebijakan berbasis daftar putih. SecVisor menggunakan proteksi perangkat keras memory yang disediakan oleh AMD SVM berupa mekanisme nested page tables (NPT). Mekanisme ini melindungi kode kernel dari modifikasi dan eksekusi ilegal. SecVisor membagi NPT ke dalam 2 mode yaitu mode kernel dan mode pengguna. Kode kernel mendapat proteksi tulis dari modifikasi yang terjadi di dalam mesin virtual. Perangkap dikirim ke SecVisor ketika CPU berpindah antara mode pengguna dan mode kernel.

  • Pengarahan ulang data / pembayangan memory

Nickle merupakan sistem VMI yang dibuat sebagai pengembangan sistem Qemu. Nickle bertujuan mencegah eksekusi rootkit setingkat kernel dengan menggunakan skema pembayangan memory. Nickle membagi memory fisik menjadi 2 fungsi yaitu memory standar dan memory bayangan. Memory bayangan tidak dapat diakses oleh sistem operasi tamu dan memuat kode kernel yang telah disetujui. Kode kernel mendapat persetujuan dengan mengambil informasi spesifik sistem operasi. Informasi ini didapatkan dari penyadapan fungsi bongkar muat modul kernel dan eksekusi bootstrap. Kode kernel yang disetujui disalin dari memory standar ke memory bayangan. Ketika mesin virtual dijalankan, nickle akan membandingkan kode kernel di antara kedua memory. Apabila instruksi kernel tidak tersedia dalam memory bayangan, eksekusi kode kernel dimatikan.

VMST merupakan sistem introspeksi mesin virtual ganda yang secara otomatis menjembatani kesenjangan semantik. Hal ini dilakukan dengan mengubah alat pemantau (ps dan lsmod) dari mesin virtual pengaman (secure VM) menjadi program yang mengintrospeksi mesin virtual tamu (GVM). Mesin virtual pengaman (SVM) dan tamu (GVM) harus memiliki sistem operasi yang sama. VMST secara otomatis memakai ulang kode biner dari program pemantau dalam SVM. Akses program pemantau terhadap data kernel diubah menuju memory dari GVM. VMST mendeteksi bagian awal dan akhir dari syscall dengan memantau eksekusi dari instruksi yang terkait (SYSENTER, SYSEXIT, INT 0x80, IRET). Exterior merupakan sebuah shell out-of-VM yang dapat digunakan untuk menginstrospeksi kondisi dan aktivitas GVM, mengkonfigurasi ulang dan memulihkan pada kondisi semula pasca penyerangan yang sukses. Exterior menggunakan teknik yang sama dengan VMST dalam menjalankan syscall yang dipanggil oleh perintah shell SVM untuk melakukan operasi baca-tulis pada status GVM.

Hybrid-bridge adalah sebuah arsitektur introspeksi VM rangkap tiga yang memiliki kesamaan tujuan dengan VMST namun disertai dengan pengurangan kerugian kinerja. Arsitektur ini memerlukan 2 buah SVM yang memiliki versi kernel identik dengan GVM. SVM pertama yang disebut sebagai slowbridge menjalankan VMST yang sedikit dimodifikasi. Slow-bridge mengklasifikasikan intruksi dari program pemantau menurut kemampuan pengarahan dari operand terhadap instruksi yang memanipulasi data kernel terarah. Metadata dari kemampuan pengarahan instruksi ini disimpan dalam memory bersama. SVM kedua yang disebut sebagai fast-bridge berjalan pada lingkungan virtualisasi berbasis perangkat keras. Fast-bridge menggunakan Nitro untuk mendeteksi konteks eksekusi syscall dan metadata yang dibagikan oleh slow-bridge. Hal ini dilakukan untuk menemukan kebijakan pengarahan dari setiap instruksi syscall. Jika ada metadata instruksi yang hilang, fast-bridge akan menangguhkan GVM dan memanggil slow-bridge untuk melakukan analisis noda terhadap foto GVM. Penggunaan 2 mesin virtual dengan versi kernel yang sama tidak memiliki kepraktisan dalam lingkungan nyata cloud.

  • Pencangkokan proses

Process implanting adalah sebuah teknik yang menjalankan VMI bersifat aktif melalui pencangkokan program instrospeksi yang berdiri sendiri di dalam sistem operasi tamu. Untuk melakukan VMI, hypervisor memilih sebuah proses secara acak dari dalam sistem operasi tamu, menyimpan konteksnya dan mengganti kodenya dengan kode yang tersimpan di dalam program introspeksi. Dengan demikian, eksekusi program introspeksi akan mengikuti jadwal berjalannya proses terpilih. Kelebihan dari teknik ini adalah terhindarnya permasalahan kesenjangan semantik. Kekurangannya adalah proses yang terpilih dapat berupa proses yang kecil kemungkinannya terjadwal atau proses yang penting. Teknik ini juga rentan terhadap serangan DKOM dan DKSM.

Process outgrafting adalah teknik dengan pendekatan terbalik dari process implanting. Teknik ini mencangkokkan proses mencurigakan yang berasal dari sistem operasi tamu ke dalam sistem operasi inang. Tujuannya adalah menghindari kesenjangan semantik selama inspeksi terhadap proses outgrafted dilakukan. Inspeksi dilakukan oleh alat keamanan tradisional seperti antivirus dan pelacak syscall di dalam sistem operasi inang. Hypervisor membuat proses dummy di dalam sistem operasi inang untuk memuat konteks proses outgrafted. Proses out-grafted akan dieksekusi berdasarkan jadwal proses dummy. Untuk melindungi sistem operasi inang, hypervisor hanya memperbolehkan eksekusi kode tingkat pengguna dan mengarahkan kembali syscall dan page fault ke dalam sistem operasi tamu. Pada fase ini, hypervisor menyembunyikan antarmuka syscall dari proses outgrafted dan menjebaknya dalam usaha melakukan pemanggilan syscall.

  • Injeksi pemanggilan fungsi

Syringe adalah sebuah pendekatan introspeksi yang bertujuan memadukan keamanan dari teknik out-of-VM dan kekuatan dari teknik in-VM. Syringe menjembatani kesenjangan semantik dengan cara menyuntikkan pemanggilan fungsi (function calls) dari SVM ke API sistem operasi tamu. Dengan cara ini, syringe dapat memperoleh informasi kondisi sistem operasi tamu melalui API-nya tanpa mengurangi kinerjanya. Aplikasi pemantauan syringe terbatas pada jumlah fungsi pemantau dalam sistem operasi tamu. Syringe tidak dapat bertindak apabila terjadi intrusi.

Hypershell adalah sebuah shell berbasis VMI yang dibuat dengan pemahaman bahwa syscall berfungsi sebagai antarmuka untuk aplikasi pengguna yang menggunakan layanan kernel sistem operasi tamu dan mengatur kondisi tingkat rendahnya. Cara kerja hypershell adalah sebagai berikut:

  1. Administrator sistem operasi inang menjalankan perintah shell (ps, lsmod) di dalam hypershell.
  2. Syscall yang dibangkitkan perintah shell dihadang oleh hypershell menggunakan teknik interposisi library
  3. Semua syscall yang terkait dengan pembentukan proses, pemuatan library dinamis, pengaturan memory dan keluaran layar dijalankan di dalam sistem operasi inang sementara sisanya yang disebut sebagai R-syscall disuntik dan dijalankan oleh proses pembantu dalam sistem operasi tamu.
  4. Proses pembantu menjalankan syscall yang diinginkan dan mengembalikan datanya ke hypershell untuk diperiksa.

Teknik VMI mampu melakukan deteksi dan pencegahan terhadap sebuah malware. VMI mengembangkan kemampuan dari hypervisor dengan cara memeriksa secara mendalam perilaku dari proses yang mencurigakan atau berbahaya. VMI juga memampukan hypervisor untuk melacak syscall dengan memantau pembuatnya. VMI juga dapat mendeteksi dan mengambil kode yang dibangkitkan secara dinamis dengan memerangkap eksekusi halaman memory yang dimodifikasi.

Pengantar Instrospeksi Hypervisor

Teknik instrospeksi hypervisor (HVI) merupakan sebuah cara untuk memantau dan melindungi hypervisor yang menjadi dasar dari lingkungan cloud. Teknik ini bermula dari teknik VMI di atas. Perangkat berbasis VMI umumnya dipasang pada hypervisor atau mesin virtual yang terisolasi. Sebelum HVI tidak ada teknik yang mampu memantau serangan terhadap hypervisor yang juga berperan sebagai landasan dari teknik VMI.

Seperti halnya syscall dapat dipakai oleh penyerang untuk meningkatkan privilege, hypercall dapat digunakan oleh penyerang untuk menerobos isolasi mesin virtual, keluar dari pembatas mesin virtual dan menyerang hypervisor. CVE-2015-2045 membahas tentang pengguna tamu lokal yang mampu memperoleh informasi sensitif melalui vektor yang tidak disebutkan. Menurut Milenkoski [3] serangan injeksi hypercall terbagi menjadi 3 yaitu: membangkitkan hypercall dari situs dengan irregular call, membangkitkan hypercall dengan nilai parameter yang tidak sesuai (di luar rentang yang sah atau dirancang untuk mengeksploitasi kerentanan tertentu), pembangkitan rangkaian hypercall dengan urutan acak termasuk eksekusi yang berulang dari 1 atau lebih hypercall.

Ada pula kerentanan dari penangan hypercall yang terbagi menjadi 2 kategori yaitu kesalahan implementasi dan di luar implementasi. Termasuk dalam kesalahan implementasi adalah validasi nilai dan prosedur pembalik. Pada hypervisor dengan kode terbuka seperti Xen dan KVM, terdapat kemungkinan keberadaan kode yang telah diubah dan hypercall berbahaya yang tersembunyi untuk membuat pintu belakang sebagai jalan masuk serangan tradisional.

Untuk mendeteksi serangan berbasis hypercall, J. Shi et al. [4] merancang konsep HVI sebagai perluasan teknik VMI. Tujuan HVI adalah mendapatkan hypercall yang keluar dari hypervisor dan memantau eksekusi GVM. Hypercall diinisialisasi oleh kernel tamu sehingga sulit dideteksi dari dalam GVM. Detektor hypercall dapat ditempatkan dalam area dom0 untuk menemukan hypercall dari area domU namun dom0 dapat terinfeksi dan dipakai untuk mengedarkan hypercall berbahaya. Dengan demikian, penempatan detektor dipindah ke dalam hypervisor L0 untuk menemukan semua hypercall yang diinisialisasi oleh tamu terhadap hypervisor L1.

comparison HVI

Gambar 2. Perbandingan teknik VMI dengan HVI [4]

Arsitektur HVI

Gambar 3. Arsitektur HVI [4]

Arsitektur utama HVI terdiri dari 2 bagian yaitu penghadang dan penganalisa HVI. Arsitektur ini berbasis pada virtualisasi bersarang yang dibantu dengan perangkat keras untuk menemukan eksekusi instruksi privilege CPU. Penghadang menggunakan 2 metode untuk menangkap hypercall dari L1. Metode pertama adalah menyuntik 0xCC ke dalam fungsi hypercall dan menghadang #BP (breakpoint exception) yang disebabkan oleh hypercall. Penghadang berkomunikasi dengan hypervisor L0 melalui library XenControl untuk mendapatkan #BP yang disebabkan oleh kejadian VMexit. Proses penyuntikan breakpoint diselesaikan dengan bantuan libVMI, pemerangkap kejadian perangkat keras dan akses terhadap register vCPU. Metode kedua adalah dengan menggunakan fitur proteksi EPT (extended page table) dari CPU Intel. Dengan mengatur eksekusi proteksi pada halaman hypercall, semua panggilan terhadap hypercall akan dianggap sebagai pelanggaran EPT dan menyebabkan L1 memasuki VMexit. Informasi tentang hypercall didapat dari kejadian VMexit yang ditangani. Penganalisa menerima informasi hypercall dari penghadang seperti nomor dan argumen hypercall.

Introspeksi Hypervisor (HI): Sebuah Teknik dalam Menghindari Pemantauan Pasif Mesin Virtual

Komputasi awan telah banyak diadopsi oleh banyak perusahaan dan organisasi namun fitur keamanannya masih tergolong baru dan eksperimental. Pengelola infrastruktur awan mulai menerapkan sejumlah metode pengamanan untuk mendeteksi aktivitas berbahaya di dalamnya. Perangkat yang dipakai adalah perangkat pendeteksi intrusi yang berbasis jaringan dan inang. Selain itu dipakai teknik VMI sebagai fitur tambahan dalam lingkungan virtualisasi.

Ada 2 macam teknik pemantauan VMI yaitu aktif dan pasif. Pemantauan aktif VMI melibatkan pemantauan yang memeriksa pemicu dari suatu kejadian seperti akses terhadap daftar perangkat keras atau bagian dari memory. Pemantauan pasif VMI melibatkan pemantauan yang memeriksa dalam rentang waktu yang telah ditentukan seperti proses yang berjalan selama beberapa detik.

Wang et al. [5] mendemonstrasikan bahwa tidak semua aktivitas hypervisor terisolasi dari GVM. GVM juga mampu menemukan keberadaan sistem VMI pasif dan frekuensi pemantauannya melalui pengukuran waktu side-channel. Teknik ini diberi nama instrospeksi hypervisor (HI) yang merupakan kebalikan dari cara kerja VMI.

Teknik HI mengandalkan pengukuran side-channel dan dugaan adanya aktivitas dari hypervisor. Hypervisor memantau kondisi mesin virtual dengan melakukan penangguhan. Durasi waktu penangguhan ini menjadi dugaan sistem HI akan adanya aktivitas oleh hypervisor. Pengukuran durasi waktu ini menggunakan agen in-VM. Untuk membedakan waktu penangguhan VM dan jeda di antara pemanggilan fungsi selama sistem operasi berjalan normal, pengguna HI harus mengetahui penjadwalan proses dalam sistem operasi mesin virtual.

HI memiliki 2 macam keterbatasan yaitu ketelitian interval pemantauan yang diukur oleh HI dan nilai ambang batas durasi penangguhan mesin virtual. Ketelitian interval pemantauan HI adalah sebesar 0,1 detik atau 10 Hz. Sementara nilai ambang batas untuk mendapatkan ketelitian itu adalah di antara 5 sampai 32 milidetik (ms).

HI bukan merupakan teknik penghindaran deteksi VMI secara mandiri. HI hanya digunakan sebagai teknik pelengkap atau pembantu untuk teknik lain. Ada dua penerapan teknik HI untuk menyembunyikan aktivitas berbahaya yaitu:

  1. Pemindahan berkas berukuran besar

Berkas berukuran besar dapat dipindahkan tanpa memicu alarm VMI dengan cara membaginya dalam beberapa bagian berkas beukuran kecil. Setiap bagian dikirimkan di antara waktu penangguhan.

  1. Pembuatan shell pintu belakang

Sebuah pintu belakang dapat menghindari sistem pasif VMI dengan cara pengulangan koneksi terhadap server penyerang di antara interval pemantauan. Sebuah agen pintu belakang berjalan di dalam mesin virtual di antara interval waktu pemantauan. Server penyerang telah menyiapkan rangkaian perintah yang akan dikirimkan ke agen tersebut apabila koneksi terbuka. Rangkaian perintah ini akan dibagi menjadi siklus perintah oleh agen pintu belakang.

Ada beberpa teknik yang digunakan untuk melawan teknik HI yaitu:

  1. Memasukkan noise ke dalam jam mesin virtual

HI bergantung pada ketelitian hasil pengukuran waktu untuk menentukan kejadian penangguhan mesin virtual. Apabila ketelitian jam mesin virtual berkurang, HI tidak mungkin mengetahui informasi tersebut. Selain itu dapat juga digunakan jam virtual yang hanya menyala saat instruksi diberikan. Jam virtual ini akan menyembunyikan waktu penangguhan mesin virtual.

  1. Pertahanan penjadwal

Penerapan kebijakan penjadwalan akan memaksa beberapa proses untuk berjalan dalam rentang waktu tertentu. Penggunaan waktu berjalan minimum yang lebih besar dari ambang batas penangguhan mesin virtual dapat melumpuhkan teknik HI. Penerapan kebijakan ini akan menambah beban CPU.

  1. Mengacak interval pemantauan

Mengacak interval pemantauan mungkin akan menghentikan teknik HI karena bergantung pada kemiripan durasi penangguhan VM. Tetapi hal ini dapat dihindari oleh penyerang dengan menerapkan batas bawah sebagai durasi antar pemantauan.

  1. Melakukan pemantauan tanpa penangguhan

Melakukan pemantauan tanpa penangguhan memiliki resiko timbulnya kejadian yang lolos tanpa terdeteksi. Teknik pemantauan ini tidak dapat menjamin konsistensi dari kondisi mesin virtual.

HVI BitDefender

Artikel yang diterbitkan oleh PR Newswire [1], menceritakan tentang BitDefender, sebuah perusahaan teknologi keamanan global, yang mempromosikan produk terbarunya. Produk ini adalah sebuah Introspeksi hypervisor yang dikembangkan bersama dengan Citrix untuk memindai memory dan memantau mesin virtual secara berkesinambungan. Introspeksi hypervisor Bitdefender (HVI) diintegrasikan dengan Direct API dan dipasarkan sebagai bagian dari XenServer7. HVI berjalan dalam posisi di luar area terancam yaitu di bawah sistem operasi dengan perangkat keras terisolasi. Posisi ini berada pada lingkar nol minus satu [6]. Dengan posisi ini, penyerang tidak dapat menimbulkan gangguan dan menghindar dari deteksinya seperti yang terjadi pada alat keamanan endpoint biasa (antivirus). HVI berfungsi sebagai perangkat tanpa agen yang bekerjasama dengan alat keamanan dengan mendeteksi ancaman mendalam. HVI juga dapat menginjeksi alat remidiasi untuk menghilangkan ancaman.

gravityZone-panel
Gambar 4. Antarmuka HVI Bitdefender [7]

Carbanak adalah salah satu ancaman yang menjadi sasaran penghapusan HVI [7]. Pada tahun 2013, dalam sebuah investigasi terhadap bank di Kiev, ditemukan sebuah malware terselubung yang telah beroperasi selama beberapa bulan dalam sistem bank tersebut. Malware ini bekerja dengan sukses dalam menghapus jejaknya, mencatat pergerakan karyawan, mengirimkan aliran video dan gambar tanpa menimbulkan kecurigaan. Carbanak adalah salah satu metode serangan mutakhir yang mampu menggunakan malware terselubung untuk mendapatkan informasi dengan cara masuk ke dalam sistem dengan menghindari pendeteksi.

HVI Bitdefender bekerja dengan pendekatan bare-metal hypervisor yaitu sebuah alat yang dapat memantau sejumlah mesin virtual namun terisolasi dari mesin tersebut. HVI menciptakan sebuah lapisan keamanan yang tidak terjangkau oleh malware. HVI beroperasi dengan tidak memanfaatkan informasi yang disediakan oleh sistem operasi namun dengan mengekstrak langsung dari memory mesin virtual. HVI memantau lapisan keamanan sistem operasi dalam 2 moda yaitu moda pengguna dan moda kernel. Di dalam mode pengguna, HVI memantau faktor-faktor berikut untuk mendeteksi serangan:

  • Perangkat hook untuk DLL kritis dalam moda pengguna
  • Tulisan asing dalam proses sasaran
  • Berbagai eksploit
  • Hooking dalam WinSock

Dalam moda kernel, faktor yang dipantau oleh HVI sebagai berikut:

  • Percobaan memasukkan nilai yang salah dalam daftar kendali spesifik
  • Percobaan mengubah integritas daftar pemanggil sistem (Interrupt Descriptor Table dan Global Descriptor Table)
  • Proteksi driver antimalware
  • Proteksi driver Xen
  • Proteksi image kernel
  • Proteksi driver inti sistem operasi

Serangan yang terpantau oleh HVI akan dibersihkan oleh alat keamanan yang terpasang dalam server atau mesin virtual.

 

Pembahasan dan Rangkuman

Keamanan sistem operasi melibatkan berbagai unsur seperti pengerasan sistem operasi, penggunaan aplikasi keamanan, melakukan pemeliharaan, keamanan virtualisasi dan mengaudit fitur keamanan yang tersedia. Pengerasan sistem operasi melibatkan instalasi, pengaturan penambalan dan pembaharuan, konfigurasi pengguna dan kendali sumber daya. Audit melibatkan pengaktifan, penyimpanan dan pemeriksaan log keamanan.

Keamanan virtualisasi adalah suatu bentuk teknik keamanan yang berkembang seturut dipopulerkannya teknologi awan. Teknik pertama yang muncul untuk mengamankan lingkungan virtual adalah VMI atau introspeksi mesin virtual. VMI muncul karena keterbatasan perangkat keamanan tradisional seperti IDS berbasis jaringan atau inang. Ada beberapa kategori teknik VMI yaitu in-VM, out-of-VM delivered, out-of-VM derived dan teknik hibrida. Di dalam kategori out-of-VM derived terdapat 2 subkategori yaitu trap-forcing dan trap-handling. Sistem yang menggunakan teknik In-VM adalah lares dan kerangka SIM. Sistem out-of-VM delivered adalah livewire, VMwatcher, XenAccess, dan Virtuoso. Sistem berbasis trap-handling adalah antfarm dan lycosid. Sistem berbasis trap-forcing adalah ether, nitro dan hypertap. Sistem dengan teknik hibrida adalah SecVisor, nickle, VMST, exterior, hybrid-bridge, process implantation, process out-grafted, syringe dan hypershell. Hypershell adalah sistem VMI yang paling sesuai diterapkan dalam pemakaian di dunia nyata.

Teknik introspeksi hypervisor muncul dan berkembang dari teknik VMI. Ada 2 arah pengembangan introspeksi hypervisor yaitu yang pertama bersifat ofensif adalah HI dan yang kedua bersifat defensif bernama HVI. HI digunakan untuk mengelabui atau menghindar dari sistem VMI yang dijalankan oleh hypervisor. HI ditempatkan di dalam sistem operasi tamu. Durasi waktu penangguhan mesin virtual dan interval pemantauan adalah aset utama teknik HI. Teknik HI tidak dapat bekerja secara mandiri namun melengkapi teknik infiltrasi yang sudah ada seperti pemindahan berkas berukuran besar dan pembuatan shell pintu belakang. Pertahanan terhadap teknik HI umumnya memiliki masalah berupa penurunan kinerja perangkat keras khususnya CPU dan sistem VMI itu sendiri.

Teknik HVI adalah teknik yang menggunakan hypervisor untuk memantau hypervisor tempat bernaungnya lingkungan virtualisasi. Teknik HVI memiliki 2 komponen utama yaitu penghadang dan penganalisa. Penghadang melakukan penangkapan hypercall sementara penganalisa memproses hypercall yang dikirim oleh penghadang. HVI Bitdefender adalah sistem introspeksi hypervisor pertama yang bersifat komersial dan bukan eksperimental. Namun sistem yang tercantum dalam lembar datanya lebih menyerupai sistem yang dimiliki oleh VMI daripada sistem HVI yang diajukan oleh J. Shi. HVI Bitdefender memiliki tujuan utama menemukan malware terselubung seperti carbanak.

 

Daftar Pustaka

[1]      Bitdefender, “At Citrix Synergy, Bitdefender Unveils Revolutionary Security Architecture against Targeted Attacks.” [Online]. Available: http://www.prnewswire.com/news-releases/at-citrix-synergy-bitdefender-unveils-revolutionary-security-architecture-against-targeted-attacks-580629081.html. [Accessed: 07-Sep-2016].

[2]      Y. Hebbal, S. Laniepce, and J.-M. Menaud, “Virtual Machine Introspection: Techniques and Applications,” 2015, pp. 676–685.

[3]      A. Milenkoski, B. D. Payne, N. Antunes, M. Vieira, and S. Kounev, “HInjector: injecting hypercall attacks for evaluating VMI-based intrusion detection systems,” in Poster Reception at the 2013 Annual Computer Security Applications Conference (ACSAC 2013), 2013.

[4]      J. Shi, Y. Yang, and C. Tang, “Hardware assisted hypervisor introspection,” SpringerPlus, vol. 5, 2016.

[5]      G. Wang, Z. J. Estrada, C. Pham, Z. Kalbarczyk, and R. K. Iyer, “Hypervisor introspection: a technique for evading passive virtual machine monitoring,” presented at the Proceedings of the 9th USENIX Conference on Offensive Technologies, 2015, pp. 12–12.

[6]      “Bitdefender Dictates New Standard for Virtualized Infrastructure Security | Business Wire,” 13-May-2015. [Online]. Available: http://www.businesswire.com/news/home/20150513005411/en/Bitdefender-Dictates-Standard-Virtualized-Infrastructure-Security. [Accessed: 07-Sep-2016].

[7]     “Bitdefender HVI.” [Online]. Available: http://www.bitdefender.com/business/hypervisor-introspection.html. [Accessed: 07-Sep-2016].

 

Artikel ini dibuat oleh Ignatius Leo Sri Hendarto sebagai tugas mata kuliah EL5228 Keamanan Sistem Operasi di program studi S2 Teknik Elektro

Ancaman Keamanan NTP dan Penanggulangannya

Network Time Protocol atau NTP beroperasi sebagai layanan sinkronisasi waktu melalui jaringan internet publik, sehingga dalam pengoperasiannya, NTP rentan terhadap berbagai jenis serangan yang bertujuan untuk mengganggu protokol maupun data yang dikirimkan.

Serangan terhadap protokol maupun data NTP dapat menyebabkan sebuah server yang sebenarnya telah terbukti otentik, mengirimkan data waktu yang tidak benar ke sistem yang menggunakan NTP. Hal ini dapat menjadi ancaman serius untuk aplikasi atau layanan dalam sistem operasi yang sangat bergantung pada ketepatan timestamp, seperti pencatatan log pada sistem operasi.

Dalam tulisan ini akan dipaparkan model keamanan NTP dan skenario-skenario serangan yang mungkin terjadi beserta penanggulangan yang telah diterapkan pada protokol NTP.

I.            Sekilas Tentang NTP

NTP atau Network Time Protocol adalah protokol sinkronisasi waktu dalam jaringan antar dua komputer atau lebih. NTP bertujuan untuk mensinkronisasi semua komputer yang terhubung dalam beberapa milidetik dari Coordinated Universal Time (UTC) serta dapat mempertahankan akurasi hinga puluhan milidetik melalui internet publik, bisa mencapai akurasi kurang dari satu milidetik pada jaringan lokal.

a.      Cara Kerja NTP

Gambar 1: Sistem hierarki NTP. Garis kuning mengindikasikan koneksi langsung, garis merah mengindikasikan koneksi via jaringan (internet atau lokal)

NTP pada prinsipnya berbasis client-server, dengan menggunakan sistem hierarki yang disebut stratum untuk mengambil referensi waktu seperti yang ditunjukkan pada Gambar 1:

  • Stratum 0

Hierarki ini mencakup perangkat-perangkat ketepatan waktu presisi tinggi seperti jam atom, GPS receiver, dll. Perangkat-perangkat ini menghasilkan sinyal PPS (pulse per second) yang akurat yang men-trigger interrupt dan timestamp pada komputer yang terhubung. Perangkat stratum 0 disebut juga reference clocks.

  • Stratum 1

Merupakan komputer yang tersinkronisasi secara langsung dengan perangkat-perangkat stratum 0 dalam rentang beberapa mikrodetik. Berfungsi sebagai time server utama, server stratum 1 bisa melakukan komunikasi peer-to-peer dengan server stratum 1 yang lain untuk pengecekan dan backup.

  • Stratum 2

Perangkat stratum 2 tersinkronisasi dengan server stratum 1. Perangkat-perangkat ini bisa menerima timestamp dari satu atau lebih server stratum 1, dan juga dengan perangkat stratum 2 yang lain.

  • Stratum 3 dan seterusnya

Perangkat-perangkat pada stratum 3 tersinkronisasi dengan perangkat stratum 2, dan bertindak sebagai server terhadap perangkat stratum 4, dan seterusnya.

NTP client menghubungi tiga atau lebih server dengan interval tertentu. Untuk melakukan sinkronisasi dengan server, client perlu menghitung round-trip delay dan offset. Round-trip delay δ dikomputasi dengan:

1

t0 : timestamp client mengirimkan paket request.

t1 : timestamp server menerima paket request.

t2 : timestamp server mengirimkan paket respon.

t3 : timestamp client menerima paket respon.

Dan offset θ:

2

Nilai delay dan offset dijadikan bahan analisis dan menentukan server mana yang digunakan sebagai referensi waktu oleh NTP client.

b.      Mode Operasi

NTP beroperasi dengan beberapa bentuk:

  • NTP Client mode

NTP client dikonfigurasi untuk mensinkronisasikan waktu di perangkatnya sendiri dengan time server eksternal. NTP client tidak menyediakan layanan sinkronisasi ke perangkat lain dalam jaringan.

  • NTP Server mode

NTP server menjalankan NTP service dan dikonfigurasi untuk memberikan informasi waktu ke NTP client. NTP server hanya menyediakan informasi waktu untuk NTP client dan tidak akan menerima informasi sinkronisasi waktu dari perangkat lain.

  • NTP Peer mode

NTP peer tidak memiliki otoritas lebih tinggi dari perangkat lain. Dalam NTP peer mode, masing-masing perangkat dapat menerima atau memberikan sinkronisasi waktu ke perangkat lainnya.

  • Broadcast/Multicast

Dalam broadcast/multicast mode, NTP server melakukan broadcasts/multicasts informasi sinkronisasi waktu ke semua NTP client sekaligus.

II.            Serangan Terhadap Network Time Protocol

a.      Tujuan Serangan

Serangan terhadap sistem yang menggunakan NTP dilakukan dengan berbagai tujuan. Tujuan serangan yang paling jelas adalah agar sistem menghasilkan nilai waktu yang tidak benar atau tidak konsisten serhingga dapat menyebabkan layanan-layanan yang kritikal terhadap waktu tidak dapat bekerja dengan benar. Dalam hal sistem operasi, hal ini akan mengganggu ketepatan logging, report, system clock, dll.

Tujuan lainnya adalah untuk menggangu operasi protokol, menyebabkan tersumbatnya jaringan, server atau client dengan trafik bervolume besar, atau memaksa protokol menggunakan sejumlah besar sumber daya seperti komputasi kriptografi.

b.      Tipe Serangan

Tipe serangan yang mungkin terjadi ada bermacam-macam. Beberapa diantaranya adalah:

  • Bogus attack – Penyerang memalsukan paket yang diterima oleh client atau server;
  • Wiretap attack – Penyerang menyalin (menyadap) paket-paket yang dikirimkan client atau server, sehingga dapat disimpan atau digunakan untuk jenis serangan berikutnya;
  • Replay attack – Penyerang mengirimkan kembali salah satu atau lebih paket yang didapat sebelumnya disimpan (old duplicate), atau mengirimkan ulang paket yang terakhir dikirimkan.

Paket-paket yang dikirimkan dalam NTP bersifat publik; tidak ada usaha sama sekali untuk menyamarkan atau mengenkripsi isinya, hanya untuk memastikan keotentikan sumber paket tersebut. Oleh karena itu, serangan-serangan tersebut dapat dilakukan oleh komputer manapun dalam jaringan.

Selain tipe serangan diatas, beberapa kondisi tertentu juga memungkinkan paket NTP hilang dan menyebebkan protokol melakukan restart, sehingga menyebabkan delay yang lebih besar daripada yang seharusnya. Hal ini bisa disebabkan oleh collisions, queue overflow, dan cheksum failure, baik yang terjadi secara alami maupun karena terdapat serangan.

c.      Skenario  Serangan

Skenario serangan yang mungkin dilakukan adalah sebagai berikut:

  • Middleman Attack

Penyerang menyadap paket dari client atau server sehingga paket tersebut tidak langsung mencapai tujuannya. Penyerang kemudian memalsukan paket NTP tersebut atau membuatnya menjadi tidak akurat, namun tetap akan dapat diterima oleh client dan server.

  • Masquearade Attack

Penyerang berpura-pura bertindak sebagai server NTP. Hal ini mungkin dilakukan apabila router dalam jaringan sudah diserang atau menggunakan DNS server palsu.

  • Delay Attack

Penyerang menyebabkan paket NTP tertunda selama beberapa waktu, namun tidak mengubah isinya.

Apabila delay di dua arah antara client dan server berkisaran sama, offset error mungkin tidak terlalu signifikan. Hal ini seperti yang terjadi dalam link data di luar angkasa yang disebabkan karena pergerakan satelit atau pesawat luar angkasa.

Namun apabila delay di kedua arah tersebut memiliki perbedaan secara signifikan, offset error mencapai separuh dari perbedaan delay di kedua arah tersebut.

  • Denial of Service (DoS) Attack

Satu atau lebih penyerang dapat berkolaborasi untuk melakukan DoS attack, dengan membanjiri jaringan, client atau server, dengan sejumlah besar trafik sehingga layanan menjadi terganggu.

Dari pengalaman sebelumnya, serangan DoS belum pernah efektif dilakukan, karena sumber daya perangkat keras dan perangkat lunak yang digunakan oleh NTP cukup minim. Namun, serangan DoS dapat efektif apabila serangan memaksa sistem melakukan kalkulasi kriptografi yang besar dan tidak dibutuhkan.

III.            NTP Security Model

Gambar 2: NTP Security Model

Dalam usaha menanggulangi serangan-serangan yang disebutkan sebelumnya, NTP telah menerapkan security model berbentuk hierarki seperti pada Gambar 2. Pertahanan terhadap serangan dimulai dari lapisan paling bawah (On-Wire Protocol). Apabila serangan lolos dari lapisan ini, pertahanan berikutnya berada dilapisan diatasnya, lapisan Message Digest, menggunakan symmetric key cryptography.

Apabila serangan dapat lolos juga dari lapisan ini, berikutnya adalah lapisan Autokey Sequence, yang menggunakan nilai hash atau teknik pseudo-random sequence untuk mengaitkan setiap paket ke suatu digital signature.

Pertahanan terhadap masquerade attack sangat bergantung terhadap lapisan Autokey Protocol, yang menggunakan public key cryptography untuk mengaitkan server credentials ke digital signatures.

Dapat dilihat apabila suatu serangan tidak dapat digagalkan pada salah satu lapisan, serangan tersebut mungkin dapat digagalkan oleh lapisan diatasnya. Secara umum, lapisan diatas On-Wire Protocol layer bersifat opsional; symmetric key cryptography hanya menggunakan dua lapisan terbawah sementara public key cryptography menggunakan keempat-empatnya.

a.      On-Wire Protocol

On-wire protocol digunakan pada transportasi paket antara client dan server. Secara ringkas, protokol menggunakan timestamp paket NTP ditransmisikan, disebut transmit timestamp, untuk mendeteksi paket palsu atau duplikat dengan melakukan loopback test: beberapa bit acak dimasukkan ke bit non-signifikan dalam 64-bit transmit timestamp. Sangat kecil kemungkinannya penyerang dapat memprediksi transmit timestamp yang dihasilkan. Transmit timestamp tidak harus benar-benar tepat waktu, atau memiliki pola tertentu, asalkan setiap transmit timestamp berbeda satu sama lain dan tidak dapat diprediksi secara tepat dalam kisaran 0.232 ns.

Dalam setiap mode operasi NTP, paket duplikat dapat dideteksi apabila transmit timestamp ditemukan sama dengan paket yang pernah diterima sebelumnya. Dalam hal ini paket duplikat akan dibuang sehingga tidak mengganggu kalkulasi timestamp. Dalam mode client/server dan peer, loopback test membandingkan transmit timestamp di paket client request  dengan timestamp asli di paket server reply. Perbedaan yang terlalu jauh mengindikasikan paket palsu, duplikat, atau hilang di transit.

Menggunakan loopback test pada mode client/server dan peer, semua serangan wiretap yang didekripsikan sebelumnya dapat dihalangi. Namun dalam broadcast mode, on-wire protocol tidak dapat mendeteksi paket palsu dan duplikat, karena loopback test tidak dapat dilakukan (broadcast mode mengirimkan paket ke beberapa client sekaligus).

Namun protokol ini mengasumsikan isi paket tidak dimodifikasi di transit. Serangan yang memodifikasi isi paket tidak akan terdeteksi oleh on-wire protocol, namun dapat dideteksi oleh lapisan berikutnya.

b.      Message Digest

Router tipuan atau yang telah disusupi oleh penyerang, atau bahkan server yang sudah disusupi, dapat memodifikasi bagian manapun dalam paket NTP, kecuali kolom transmit timestamp. Hal ini akan menyebabkan paket salah diklasifikasikan atau dikirimkan pada waktu yang salah. Untuk menanggulangi tipe serangan ini, lapisan message digest menggunakan symmetric key cryptography untuk menghitung sebuah message digest setiap paket.

Message digest adalah nilai kriptografi hash yang dihitung dengan algoritma seperti MD5 atau SHA. Ketika otentikasi dibutuhkan, algoritma menghitung nilai hash sebagai message authentication code (MAC) dari header dan ekstensi paket (bila ada), dan menambahkannya ke akhir paket.

MAC terdiri dari 32-bit identifier (key ID) diikuti dengan 128 atau 160-bit message digest, yang kemudian ditambahkan ke ujung paket ketika paket akan dikirimkan. Ketika paket diterima, penerima paket menghitung message digest dan membandingkannya dengan MAC yang dibawa oleh paket tersebut saat transmisi.

Paket hanya akan diterima apabila message digest identik; apabila tidak, client akan mengabaikan paket tersebut dan memberikan peringatan. Apabila hal ini terjadi pada paket yang diterima oleh server, server akan mengembalikan pesan khusus yang disebut crypto-NAK.

Dengan asumsi bahwa kunci simetris yang digunakan untuk mengenkripsi message digest hanya dibagikan antara server dan client yang benar-benar terlibat, lapisan message digest akan dapat menanggulangi sebagian besar ancaman-ancaman yang didekripsikan sebelumnya, termasuk middleman attack atau masquerade attack.

Symmetric key cryptography dianggap sangat reliabel dan sulit dikelabuhi. Meskipun dalam perkembangan terakhir, diketahui ada kemungkinkan memalsukan paket denga nilai MD5 tertentu, kewajiban paket memiliki format NTP dan transmit timestamp yang valid membuat bahkan algoritma MD5 dapat digunakan sebagai algoritma yang kuat secara kriptografi.

Namun, untuk sebuah time server bertaraf nasional dengan ribuan client, kewajiban memiliki shared message digest keys menjadi terlalu besar, apabila setiap pengguna dan setiap grup harus memiliki kunci message digest yang berbeda. Kolom key ID terbatas untuk 65.534 kunci berbeda. Penggunaan symmetric key cryptography mungkin hanya efektif apabila time server tersebut menggunakan broadcast/multicast modes.

c.      Autokey Sequence

Autokey sequences digunakan untuk mengotentikasi paket NTP menggunakan public key cryptography dan digital signature. Karena public key algorithm umumnya memiliki waktu eksekusi yang panjang dan bervariasi, tidak semua paket NTP dapat menggunakannya. Autokey sequence menggunakan paket yang memiliki digital signature untuk beberapa paket, dan mengaitkan paket-paket berikutnya ke paket tersebut menggunakan fungsi hash atau teknik pseudo-random sequence. Digital signatures digunakan hanya pada respon protokol dari server ke client, dan hanya jika server sudah disinkronisasikan dengan sumber otentik.

Protokol ini memiliki dua pendekatan: satu untuk client/server mode dan peer modes; dan satu untuk broadcast mode.

Client/Server dan Peer Mode

Dalam mode client-server, server mendistribusikan cookie unik per client. Server mengkomputasi cookie klien sebagai MD5 hash dari autokey dengan klien dan alamat IP server, kunci ID dan cookie Server. Ketika menerima request, server mengembalikan client cookie yang terenkripsi dan ditandatangani menggunakan private key server. Di sisi client, client mendekripsi client cookie dan memverifikasinya menggunakan public key server yang ada dalam sertifikat kunci publik. Untuk request-request berikutnya, baik client dan server menghitung dan memverifikasi message digest menggunakan client cookie.

Dalam peer mode, setiap peer beroperasi sebagai server terhadap peer lain yang beroperasi sebagai client; namun setiap peer memiliki sertifikat kunci publik unik, private/public sign key pair dan private/public host key pair masing-masing. Setiap peer mendapatkan client cookie dengan cara yang sama dengan yang didekripsikan diatas. Setelah client cookie didapatkan, masing-masing peer menghitung shared peer cookie sebagai nilai eksklusif OR dari client cookienya sendiri dengan client cookie dari peer lain.

Dengan hal ini, penyerang tidak akan dapat memalsukan sebuah paket tanpa memiliki client cookie, yang juga terkait dengan signature milik server, sehingga middleman attack tidak akan dapat membuat paket palsu atau memodifikasi paket yang dikirimkan antara client dan server.

Namun, terdapat celah keamanan yang disebut cookie snactcher, dimana middleman melakukan wiretap terhadap client cookie request untuk mengetahui IP address client dan server. Middleman kemudian mengirimkan client cookie request menggunakan kunci miliknya sendiri ke server. Dalam hal ini, masquerade attack dapat dilakukan.

Broadcast Modes

Desain protokol dalam broadcast mode jauh lebih rumit karena pertukaran dua arah tidak dimungkinkan. Secara garis besar, broadcast server mengkonstruksi sebuah key list yang digunakan untuk mengkomputasi message digest berdasarkan system clock.

Masing-masing client dan server menghitung kunci message digest dari autokey yang dibuat dari IP address dan key ID didalam paket, dan cookie. Secara prinsip, wiretap attack dapat dilakukan untuk memalsukan paket dengan key ID palsu dan message digest yang valid, namun pada praktiknya, message digest tidak akan cocok dengan key ID sebelumnya.

Dalam kasus terdapat paket palsu atau duplikat, jumlah repetisi nilai hash akan melebihi nilai maksimum yang dispesifikasikan nilai autokey. Dalam hal paket hilang, paket berikutnya akan menyebabkan client mengulangi nilai hash, namun nilai hash tersebut akan cocok dengan nilai autokey setelah beberapa waktu.

Middleman dapat melakukan wiretap terhadap paket NTP valid, mengganti nilai headernya dan menghitung ulang message digest. Namun, karena paket dikirimkan secara broadcast, hal ini akan cukup sulit dilakukan.

d.      Autokey Protocol

Autokey protocol digunakan untuk mengambil dan memperbaharui media kriptografi seperti sertifikat dan kunci identitas. Protokol ini didesain untuk beroperasi tanpa infrastruktur tambahan. Setelah pertukaran awal selesai, tidak akan ada overhead header paket lain untuk tujuan otentikasi.

Media kriptografi dalam protokol ini terbagi dalam dua kategori, nilai private (private values) dan public/private key pair. Private values adalah nilai sekali pakai yang memiliki waktu pakai terbatas, memuat nilai seed autokey dan server cookie. Nilai private secara rutin dibuat dan disamarkan dengan komputasi hash.

Public/private key pairs mencakup host keys, sign keys dan identity keys.

  • Host keys digunakan untuk mengenkripsi client cookie seperti yang dibahas pada autokey sequence sebelumnya.
  • Sign keys digunakan oleh sertifikat untuk memverifikasi signature paket. Apabila sign keys diganti, semua sertifikat yang menggunakannya harus dibuat ulang. Sertifikat memiliki waktu pakai terbatas, umumnya satu tahun, dan dibuat ulang sesuai keperluan.
  • Identity keys digunakan untuk mempersulit masquerade attack. Fungsi utamanya adalah untuk mengotentikasi sign keys ketika sertifikat tidak bisa didapatkan. Identity keys memiliki waktu pakai yang panjang dan digunakan dalam algoritma-algoritma yang sulit di-kriptoanalisis.

Referensi implementasi mengharuskan server dan client memuat RSA host key pair, RSA atau DSA sign key pair dan trusted certificate terkait, dan identity key pair opsional dari file-file ketika NTP pertama kali dijalankan. Client mendapatkan komponen public dari key pair-key pair ini setelah protokol berjalan.

Pesan autokey protocol disimpan di kolom ekstensi paket, yang ditandatangani dengan server private sign key dan diverifikasi menggunakan server public key sign key dari sertifikat server. Paket autokey memuat header NTP diikuti oleh satu atau lebih kolom ekstensi dan diakhiri dengan MAC.

Untuk melindungi dari replay attack yang dapat memakan sumber daya berlebihan, nilai client association mengikutsertakan timestamp setiap media kriptografi seperti client cookie, nilai autokey, dll. Kolom ekstensi memuat tipe pesan, association ID dan timestamp. Kolom init juga memuat filestamp yang digunakan untuk memverifikasi media kriptografi. Association ID adalah nilai sekali pakai yang diberikan ketika client diasosiasikan dengan signature. Timestamp diberikan ketika signature di-update dan filestamp diberikan ketika media di-update.

Timestamp di-update dari variabel paket hanya jika:

  • Tipe pesan dan association ID sama dengan nilai client association. Hal ini mencegah middleman mengganti isi kolom ekstensi sebuah client dengan isi kolom ekstensi milik client lain.
  • Timestamp lebih baru dari media timestamp. Hal ini mencegah middleman mengganti kolom ekstensi dengan nilai dari paket sebelumnya untuk replay attack.
  • Filestamp sama atau lebih baru dari media filestamp. Hal ini untuk memastikan dilakukannnya remobilisasi apabila media diperbaharui.
  • Kolom ekstensi signature valid.

Apabila kriteria diatas tidak terpenuhi, paket akan dibuang. Jika tidak ada paket valid yang diterima dalam suatu periode waktu, asosiasi di remobilisasi dan variabel media kriptografi diperbaharui. Apabila server clock dimundurkan karena alasan tertentu, kolom ekstensinya akan dibuang hingga menyebabkan timeout.

Penyerang dapat mencoba melakukan DoS attack yang memakan sumber daya komputasi server. Sebagai contoh, penyerang dapat melakukan replay sejumlah besar cookie request valid dengan kecepatan tinggi, sehingga menyebabkan server terhambat karena melakukan proses enkripsi dan perhitungan signature terus menerus.

Penceganan efektif terhadap serangan ini dan serangan DoS lainnya adalah dengan menggunakan manajemen rate seperti yang dideskripsikan dalam referensi implementasi. Hal ini akan membatasi operasi kriptografi dari setiap client selama tidak lebih dari satu paket per dua detik. Paket-paket yang berlebih akan dibuang tanpa mengganggu komputasi kriptografi yang berjalan.

IV.            Serangan Menggunakan Network Time Protocol

Selain menjadi target serangan, NTP juga dapat digunakan untuk melakukan serangan ke suatu sistem. Jenis serangan yang paling umum adalah NTP DdoS amplification attack.

a.      NTP DDoS Amplification Attack

NTP DDoS Amplification attack adalah tipe serangan DDoS yang mengeksploitasi NTP server publik untuk menyerang target dengan trafik UDP. Penyerang melakukan NTP DDoS dengan memalsukan pesan request berukuran beberapa byte, yang kemudian akan direspon oleh server dalam runtutan paket hingga berukuran besar.

b.      Cara Kerja NTP DDoS Attack

Protokol NTP didesain menggunakan UDP, yang tidak membutuhkan proses handshake sebagaimana halnya TCP, sehingga tidak selalu ada catatan request. NTP DDoS attack dimulai ketika penyerang membuat paket dengan memalsukan bagian alamat IP sumber, sehingga paket seakan-akan dikirim dari alamat IP yang menjadi target serangan, ke NTP server. Paket ini berukuran beberapa byte, namun NTP akan merespon dengan sejumlah besar data sehingga memperbesar ukurang serangan ini.

Pada ntpd versi 4.2.7 kebawah, serangan ini dapat dilakukan dengan menggunakan perintah MONLIST. Perintah ini sangat jarang digunakan, namun perintah ini memberikan detail 600 client terakhir yang terhubung ke NTP server. Penyerang membuat paket berisi perintah ini, dengan memalsukan alamat IP-nya, sehingga NTP server akan mengirimkan paket-paket berisi detail client terakhir tersebut ke alamat IP target.

c.      Mitigasi

NTP DDoS attack dapat dimitigasi dengan cara berikut:

  • Update NTP server. Semua versi ntpd dibawah versi 4.2.7 rentan dengan serangan ini. Dengan meng-upgrade ntpd ke versi yang lebih baru, serangan ini dapat dimitigasi.
  • Untuk server yang tidak dapat meng-upgrade ntpd ke versi yang lebih baru, fungsi monlist dapat di-disable dengan menambahkan noquery directive di ntp.conf sebagai berikut:

restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

  • Men-disable eksekusi remote perintah monlist. Sebagai contoh, sebagiann besar distro unix/linux membatasi perintah monlist hanya dapat dieksekusi dari localhost.

V.            Kesimpulan

Serangan terhadap protokol NTP dapat menyebabkan sistem operasi menggunakan referensi waktu yang tidak tepat, sehingga mengganggu proses-proses yang membutuhkan referensi waktu seperti logging.

Terdapat beberapa skenario serangan yang mungkin terjadi terhadap operasi NTP:

  • middleman attack, melakukan wiretap atau menyadap jaringan;
  • masquarade attack, berpura-pura menjadi NTP server yang sah;
  • delay attack, memperlambat transmisi paket;
  • denial of service, membanjiri target dengan paket NTP atau memaksa target melakukan komputasi kriptografi yang tidak diperlukan.

Masing-masing skenario melakukan berbagai kombinasi tipe serangan seperti bogus attack, wiretap, dan replay attack. Untuk menanggulangi serangan-serangan ini, protokol NTP sudah menerapkan NTP security model yang terdiri dari On-Wire Protocol, Message Digest, Autokey Sequence dan Autokey Protocol.

Dalam NTP client/server mode dan peer mode, on-wire protocol dapat melindungi dari wiretap attack, termasuk dari paket palsu, replay, maupun paket hilang. Dalam broadcast mode, protokol ini melindungi dari paket palsu dan duplikat. Namun dalam semua mode, on-wire protocol belum melindungi dari middleman attack atau DoS attack.

Rate management yang disertakan dalam referensi implementasi NTP dapat melindungi dari sebagian besar serangan DoS, termasuk yang menarget algoritma kriptografi. Namun hal ini belum melindungi dari serangan distributed DoS (DDoS).

Message digest layer menggunakan symmetric key cryptography untuk melindungi dari middleman attack, termasuk paket palsu, modifikasi pesan dan masquerade attack. Namun hal ini tidak praktis dilakukan apabila jumlah client yang sangat banayak.

Autokey protocol dalam mode client/server dan peer mode rentan terhadap cookie snatcher, yang merupakan akibat dari dimungkinkannya middleman melakukan wiretap terhadap client request, mendapatkan client cookie dan berpura-pura menjadi NTP server yang sah. Serangan yang sama akan sulit dilakukan jika NTP dalam broadcast mode.

Selain menjadi target serangan, NTP juga dapat digunakan sebagai alat serangan, sebagaimana dalam hal NTP DDoS amplification attack, yang rentan dilakukan apabila NTP server masih menggunakan ntpd versi 4.2.7 atau sebelumnya.

Artikel ini dibuat oleh Agung Utama Putra (23215061) sebagai tugas akhir mata kuliah EL5228 Keamanan Sistem Operasi di program studi S2 Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung.

Referensi

  • https://www.eecis.udel.edu/~mills/security.html
  • http://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/
  • https://www.incapsula.com/ddos/attack-glossary/ntp-amplification.html
  • http://www.omnisecu.com/ccna-security/ntp-network-time-protocol-modes-of-operation.php
  • https://www.eecis.udel.edu/~mills/onwire.html