PIL BIRU: SEBUAH VIRTUALISASI TERSEMBUNYI

Sumber: Wikipedia
Sumber: Wikipedia

SEKILAS TENTANG PIL MERAH DAN PIL BIRU

Pil biru merupakan hasil pemikiran dari seorang peneliti utama Joanna Rutkowska yang berkebangsaan Polandia bersama dengan timnya yang berada pada laboratorium malware COSEINC yang berlokasi di Singapura. Penamaan pil biru terinspirasi oleh adegan film “The Matrix” saat karakter utama Neo ditawari oleh karakter Morpheus 2 buah pil. Pil merah akan membawa Neo ke dunia nyata sementara pil biru akan membangunkan Neo dari tidurnya dan tetap berada di dunia Matrix. Pil merah yang juga hasil pemikiran Joanna dirancang untuk membantu malware menemukan bahwa malware tersebut berada pada lingkungan mesin virtual (VME) atau berada pada platform host OS. Sementara pil biru adalah sebuah malware yang akan memindahkan host OS ke dalam lingkungan mesin virtual.

PENGENALAN VIRTUALISASI

Virtualisasi memiliki arti abstraksi sumber daya komputer. Definisi yang lebih panjang dari virtualisasi adalah sebuah teknik untuk menyembunyikan karakteristik fisik dari sumber daya komputer dari cara sistem lain, aplikasi atau pengguna berinteraksi dengan sumber daya tersebut. Tujuan dari pemakaian virtualisasi adalah sebagai berikut:

  • Mengurangi jumlah server fisik (konsolidasi berbagai server dalam platform perangkat keras tunggal)
  • Penemuan ancaman dan eksploitasi keamanan baru
  • Menyediakan daftar kelemahan yang harus di waspadai

Berikut adalah ilustrasi lingkungan mesin virtual yang berisi tentang aplikasi pengguna yang berjalan pada guest OS dalam arsitektur x86

Sumber: http://www.intelguardians.com
Sumber: http://www.intelguardians.com

Macam-macam Virtual Machine Monitor (VMM):

  1. VMware
  2. VirtualPC
  3. Xen
  4. BOCHS

VMM memperbolehkan pengguna atau administrator menjalankan guest OS di atas host OS. Setiap guest OS berjalan pada lingkungan yang teremulasi dan mendapat akses sumber daya perangkat keras nyata maupun maya. Setiap VME yang dikendalikan VMM terisolasi, mandiri dan terpisah dari sistem nyata.

Lapisan virtualisasi terletak di antara perangkat keras dan sistem operasi. Lapisan virtualisasi menyediakan sarana untuk menjalankan berbagai sistem operasi secara bersamaan. Ada 2 pendekatan virtualisasi yang berlaku dalam arsitektur x86 yaitu pendekatan host dan pendekatan hypervisor. Pendekatan host memasang dan menjalankan lapisan virtualisasi sebagai aplikasi di atas sistem operasi dan mendukung konfigurasi perangkat keras dalam kisaran yang luas. Pendekatan hypervisor memasang lapisan virtualisasi pada sistem x86 yang bersih dan memiliki akses langsung terhadap perangkat keras. Pendekatan hypervisor lebih efisien dan memiliki skalabilitas, kinerja dan ketahanan yang tinggi.

Sumber: VMware paravirtualization
Sumber: VMware paravirtualization

MACAM-MACAM VIRTUALISASI

Sistem operasi x86 dirancang untuk berjalan langsung dari perangkat keras, sehingga secara alami memiliki perangkat keras tersebut. Arsitektur x86 memiliki 4 tingkat privilege yaitu:

  • lingkar 0
  • lingkar 1
  • lingkar 2
  • lingkar 3

Aplikasi pengguna umumnya berjalan dalam lingkar 3 sementara sistem operasi berjalan dalam lingkar 0.

Sumber: VMware paravirtualization
Sumber: VMware paravirtualization

3 macam teknik yang ada untuk menangani instruksi yang sensitif dan khusus untuk virtualisasi CPU dalam arsitektur x86:

  1. Virtualisasi penuh dengan menggunakan translasi biner
  2. Virtualisasi yang dijalankan sistem operasi atau paravirtualisasi
  3. Virtualisasi terbantu perangkat keras (generasi perdana)

Di dalam teknik pertama, kombinasi dari tranlasi biner dan eksekusi langsung (lapisan virtualisasi) membuat virtualisasi penuh guest OS benar-benar terpisah dari perangkat keras. Guest OS tidak sadar berada pada lingkungan virtual dan tidak perlu dimodifikasi. Hypervisor menerjemahkan semua instruksi secara “on-the-fly” dan menyimpan hasilnya untuk penggunaan berikutnya. Sementara, intruksi tingkat pengguna dijalankan tanpa perubahan dengan kecepatan sama.

Sumber: VMware paravirtualization
Sumber: VMware paravirtualization

Di dalam teknik kedua, paravirtualisasi mengacu pada komunikasi antara guest OS dan hypervisor untuk meningkatkan kinerja dan efisiensi. Hypervisor menyediakan antarmuka hypercall untuk menjalankan operasi kernel kritis seperti pengaturan memori, penanganan interupsi, dan pendataan waktu.

Sumber: VMware paravirtualization
Sumber: VMware paravirtualization

Dalam teknik ketiga, pengembangan generasi perdana Intel (VT-x) dan AMD (AMD-V) menargetkan instruksi khusus dengan fitur moda eksekusi CPU. Fitur ini memungkinkan VMM berjalan dalam moda root di bawah lingkar 0. Instruksi sensitif dan khusus secara otomatis terperangkap dalam hypervisor. Tahapan guest tersimpan dalam struktur kendali mesin virtual (VMCS untuk VT-x) atau blok kendali mesin virtual (VMCB untuk AMD-V).

Sumber: VMware paravirtualization
Sumber: VMware paravirtualization

PIL BIRU OLEH J. RUTKOWSKA

Latar belakang terciptanya pil biru adalah sebuah pertanyaan mengenai kemungkinan merancang malware yang:

  • Tidak bergantung pada konsep untuk menjadi tidak terdeteksi
  • Tidak terdeteksi walaupun algoritmanya diketahui secara umum
  • Tidak terdeteksi meskipun kodenya diketahui umum

Seperti malware pada umumnya, pil biru harus bisa mendapatkan kendali terhadap sistem melalui pemantauan, pencegatan dan modifikasi.

Ide dasar dari pil biru:

  • Eksploitasi ekstensi SVM pada amd64 untuk memindahkan host OS ke mesin virtual
  • Menyediakan thin hypervisor untuk mengendalikan OS
  • Hypervisor bertanggungjawab terhadap peristiwa yang berlangsung di dalam guest OS

REFERENSI

[1] J. Rutkowska (2005). Red Pill… or how to detect VMM using (almost) one CPU instruction, [Online]. Available:http://invisiblethings.org/papers/redpill.html.

[2] J. Rutkowska. “Subverting VistaTM Kernel For Fun And Profit”. Black Hat Brief-ings. Las Vegas, USA (2006)

[3] T. Liston and E. Skodis (2006),  On the Cutting Edge: Thwarting Virtual Machine Detection[Online]. Available: http://www.intelguardians.com/

[4] Understanding Full Virtualization, Paravirtualization and Hardware Assist, VMware, 2008.

 

Device Driver

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.

driver windows

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.

driver

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:

  1. Malware defined: mengklasifikasi tipe dan jenis malware.
  2. Define goal malware analysis: menentukan apa yang terjadi, memastikan file, dan mesin yang mungkin terinfeksi malware.
  3. Malware analysis environment and requirement: komponen, design, dan arsitektur untuk analisa malware, contoh: malware source, virtual machine environment network hub.
  4. Basic analysis
  5. Disassembly, decompile, debugging: pembongkaran source untuk membuktikan hipotesa awal.
  • Nooks yang mengurangi konsekuensi kegagalan driver dengan cara mengisolasi aplikasi user mode.

mikrodriver

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

nooks

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

mikrokernel

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

 

Bug pada Keyring Facilities di Kernel Linux

Pada akhir tahun 2015, tim Perception Point menemukan bug pada fasilitas keyring di kernel linux versi 4.4.1 dan sebelumnya. Bug ini, yang mendapatkan identitas CVE-2016-0728, pada saat dibuka ke publik, diperkirakan mempengaruhi sekitar puluhan juta PC dan server dengan sistem operasi Linux, dan 66% perangkat Android. CVE-2016-0728 adalah bug yang disebabkan oleh reference leak pada fasilitas keyring.

Penyebab Terjadinya Bug

Fasilitas keyring (keyring facilities) adalah metode yang disediakan kernel untuk driver-driver men-cache data keamanan, kunci otentikasi, kunci enkripsi dan data lainnya. Antarmuka system call (syscall) keyctl disediakan agar program-program pada userspace dapat mengelola keyring ini dan menggunakan fasilitas untuk tujuannya masing-masing.

Setiap proses dapat membuat keyring pada sesi berjalan (session keyring) menggunakan syscall keyctl(KEYCTL_JOIN_SESSION_KEYRING, name) dan dapat memberikan nama pada keyring tersebut, atau memberi nilai NULL pada bagian nama. Obyek keyring dapat digunakan bersama oleh beberapa proses yang menggunakan nama keyring yang sama.

Apabila suatu proses sudah memiliki session keyring, syscall yang sama akan menimpa keyring sebelumnya dengan yang baru. Apabila suatu obyek keyring digunakan bersama oleh beberapa proses, nilai internal refcount milik obyek tersebut yang tersimpan pada field bernama usage ditambah satu.

‘Kebocoran’ terjadi pada saat suatu proses mencoba untuk menimpa session keyring yang sedang digunakan dengan keyring yang itu juga.  Hal ini terjadi karena pada fungsi join_session_keyring, fungsi tersebut menyimpar reference ke keyring yang diminta. Namun apabila keyring yang sama sedang digunakan oleh proses yang memanggil syscall tersebut, kernel tidak mengurangi nilai internal refcount pada field usage, sehingga memory yang digunakan oleh keyring menjadi lebih besar dari yang digunakan (memory leak).

Uji Coba pada Server

Bug di ujicoba pada Ubuntu Server yang terinstall pada server kuliah el5228-05 menggunakan source code berikut (https://gist.github.com/PerceptionPointTeam/3864cf0c2a77f7ebd1dd#file-leak-c , diakses 9/2/2016):

/* $ gcc leak.c -o leak -lkeyutils -Wall */
/* $ ./leak */
/* $ cat /proc/keys */

#include 
#include 
#include <sys/types.h>
#include 

int main(int argc, const char *argv[])
{
    int i = 0;
    key_serial_t serial;

    serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, "leaked-keyring");
    if (serial < 0) {
        perror("keyctl");
        return -1;
    }

    if (keyctl(KEYCTL_SETPERM, serial, KEY_POS_ALL | KEY_USR_ALL) < 0) {
        perror("keyctl");
        return -1;
    }

    for (i = 0; i < 100; i++) {
        serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, "leaked-keyring");
        if (serial < 0) {
            perror("keyctl");
            return -1;
        }
    }

    return 0;
}

Source code membutukan librari libkeyutils-dev dan compiler gcc, sehingga kedua paket ini harus diinstal dulu di server. Setelah gcc dan libkeyutils-dev terinstall, source code di-compile dengan perintah:

gcc leak.c -o leak -lkeyutils -Wall

Berikut adalah screenshot keyrings sebelum dan sesudah program “leak“ dijalankan.

aaaa
Sebelum program dijalankan
bbbb
Setelah program dijalankan

Setelah program dijalankan, akan terlihat bahwa keyring bernama leaked-keyring seakan-akan digunakan oleh 100 proses, walaupun sebenarnya leaked-keyring hanya digunakan oleh satu proses milik satu program diatas. Namun karena program diatas memanggil syscall keyctl pada loop hingga 100 kali, nilai usage tidak dikurangi dan akibatnya, kernel mengira keyring tersebut sedang digunakan 100 proses.

Konsekuensi Terjadinya Bug

Seperti yang diperlihatkan diatas, bug ini dapat menyebabkan memory leak. Namun ada konsekuensi lain. Nilai reference count pada kolom usage diatas dapat mengalami integer overflow. Tidak ada pengecekan yang dilakukan untuk menghindari terjadinya overflow pada kolom usage ini.

Apabila suatu proses dapat membuat kernel mengalami leak referensi ke 0x100000000 (maksimum integer + 1) pada proses yang sama, ini dapat menyebabkan kernel mengira bahwa obyek tidak lagi direferensi dan membebaskan memori yang digunakan obyek tersebut, men-dealokasi, atau me-realokasi memori, yang sebenarnya masih digunakan. Hal ini akan menyebabkan munculnya kelemahan use-after-free: suatu program menggunakan suatu pointer ke alamat memori yang sebenarnya sudah dibebaskan oleh kernel, sehingga bisa terjadi perilaku yang tidak didefinisikan oleh program.

Penyerang dapat memanfaatkan kelemahan user-after-free yang terjadi dengan membuat program yang melakukan hal berikut:

  1. Membuat referensi yang benar ke suatu obyek keyring
  2. Overflow nilai usage keyring tersebut
  3. Perintahkan kernel untuk membebaskan obyek keyring tersebut
  4. Alokasikan obyek kernel yang berbeda dari userspace, dengan konten yang dikendalikan pengguna (arbitrary code), pada alamat memory yang sebelumnya digunakan oleh obyek keyring yang dibebaskan.
  5. Gunakan referensi ke obyek keyring yang sudah dibebaskan tersebut sehingga memicu eksekusi kode.

Pada exploit yang digunakan oleh tim Perception Point sebagai contoh, exploit dijalankan pada kernel versi 3.18 64-bit dan memakan waktu hingga 30 menit pada Intel Core i7-5500. Hasil yang didapatkan tim Perception Point, exploit dapat memberikan akses root pada shell.

cve_2016_0728
Hak akses root didapatkan

Mitigasi

Karena bug ini hanya mempengaruhi kernel linux versi 4.4.1, mengupgrade ke versi yang lebih baru akan menutup kelemahan yang disebabkan bug. Selain itu, Supervisor Mode Execution Program atau SMEP (suatu fitur keamanan pada beberapa CPU Intel) dan SELinux pada perangkat Android akan mempersulit berjalankan exploit pada komputer target.

Referensi

Software Patches & OS Updates

Patch adalah bagian software yang dirancang untuk mengupdate komputer program atau data pendukungnya untuk memperbaiki atau memperbaharuinya, termasuk memperbaiki:

  • kelemahan keamanan,
  • bug,
  • penambahan fitur,
  • memperbaiki performance.

Tanpa melakukan patch, suatu sistem dapat memiliki celah untuk malware.

Patch biasa dilakukan dengan mengaktifkan update otomatis pada sistem operasi atau software, sehingga dapat diinstal setelah patch dirilis oleh vendor. Namun demikian, mekanisme update otomatis adalah sesuatu yang problematik dalam perusahaan. Administrator IT harus melakukan penilaian terhadap dampak dari dilakukannya patch terhadap sistem yang ada.

Continue reading Software Patches & OS Updates

Pengecekan fisik keamanan Hardware dan cara Malware Deity Bounce menginfeksi BIOS

Tulisan ini sengaja saya buat sebagai tugas dari mata kuliah Operating System Security yang sedang saya jalani.

 

Pertanyaan besarnya dalam tugas ini adalah apakah hardware yang kita beli itu secure(aman) dari malware?

yup, memang tidak ada jaminan bahwa setiap hardware yang kita beli baik Motherboard, Memory(RAM), Harddisk, bahkan flashdisk kita, aman dari malware atau kode2 yang menyusup, merusak atau “mencuri” data dan informasi di dalamnya.

 

Dari hasil searching di www.google.com tidak ditemukan bagaimana mengecek fisik hardware yang kita beli aman, sehingga saya coba merangkum sendiri tulisan ini.

 

berikut adalah ulasannya:

 

hal dasar…!!!

malware, trojan, virus dan semua malicious-code yang ada hanya akan bekerja ketika ada arus mengalir kepada suatu perangkat(hardware) dan perangkat tersebut terhubung dengan perangkat lainnya.

 

maka pengecekan awal yang bisa dilakukan yaitu secara fisik dari perangkat tersebut, yaitu :

  1. cari informasi security hole (celah keamanan) dari hardware yang akan dibeli di internet. Jika ada, maka kita bisa mengganti pilihan kepada hardware yang lain yang tidak ada atau belum ada info security hole nya. Klo hardware tersebut sudah terlanjur beli, maka segera update firmware dan anti malware yang bisa menghapus malware tersebut.

 

  1. pastikan semua komponen hardware tersebut utuh dan tidak cacat ataupun tidak rapih.

Walaupun hal ini tidak menjamin bahwa hardware yang kita beli setidaknya dengan mendapatkan hardware dengan kondisi tanpa cacat dan rapih akan lebih menjamin aspek availability dari aspek security hardware.

 

  1. pastikan tidak ada komponen tambahan atau berkurangnya komponen hardware dari produk asli yang sama berdasarkan informasi yang didapat.

 

Malware hanya bisa disimpan pada media penyimpanan, maka untuk bisa menyisipkan pada hardware harus meletakkan part yang bisa menyimpan data yang tentu saja membutuhkan tempat(slot) khusus. Contoh: pada motherboard part yang bisa menyimpan data yaitu pada Read Only Memory(RAM)maka malware hanya bisa disimpan pada ROM atau part lain yang disisipkan didalam motherboard.

 

  1. pastikan batre cmos dalam keadaan terisi

 

karena jika  batre cmos habis maka configurasi untuk motherboard akan kembali lagi kepada settingan default termasuk settingan password bios kita.

 

 

Untuk menambah bobot tulisan isi saya juga menambahkan tulisan tentang malware Deity Bounce, yaitu malware yang mampu meninfeksi BIOS pada motherboard.

 

Malware atau Malicious-Software adalah sebuah program atau software jahat yang menyusup kedalam system computer dan mengakibatkan berbagai kerugian kepada pengguna computer. Karena berupa software maka malware biasanya berada pada media penyimpanan berupa harddisk atau falshdisk. Pertanyaannya adalah bisakah malware menginfeksi BIOS? Karena BIOS pada motherboard juga merupakan media penyimpanan.

 

 

Malware Deity Bounce adalah malware yang bisa meninfeksi BIOS pada motherboard. Deity Bounce merupakan malware yang digunakan NSA (National Security Agen) untuk melakukan spionase. Malware ini mulai dikenal ketika Edward Snowden membocorkan dokumen tentang operasi NSA. Salah satu dokumen yang dibocorkan Snowden adalah tentang peralatan yang digunakan NSA untuk melakukan penyadapan. Salahsatunya adalah system ANT Server. System NAT Server inilah yang menggunakan malware Deity Bounce. Malware Deity Bounce khusus menyerang system server yang menggunakan DELL POWEREDGE. Malware ini melakukan exploit pada BIOS motherboard dan menggunakan System Management Mode untuk mengendalikan Operating system. Malware ini mampu menjalankan kode tertentu tanpa terdeteksi oleh operating system atau aplikasi yang dijalankan operating system.

 

Malware ini dibuat untuk Server DELL POWEREDGE seri 1850/2850/1950/2950 dan menggunakan Operating System Windows 2000, XP dan 2003 Server.

 

Analisa tentang ANT Server dapat dilihat pada link berikut ini:

 

https://nsa.gov1.info/dni/nsa-ant-catalog/servers/index.html

 

penjelasan tentang exploit yang memanfaatkan SMM dapat dilihat pada majalah phrack berikut ini :

 

http://phrack.org/issues/66/11.html

 

 

sumber :

julismail.staff.telkomuniversity.ac.id/deitybounce

 

 

 

 

 

Strategi Mitigasi #35 – Menangkap Lalulintas Jaringan

Mitigasi

Menangkap lalulintas data pada jaringan yang menuju aset internal seperti workstation dan server yang penting, begitu juga lalulintas yang beredar didalam batas-batas jaringan internal serta melakukan analisa terhadap data tersebut setelah terjadinya insiden intrusi.

 

Dasar Pemikiran

Menangkap lalulintas data pada jaringan dapat membantu organisasi untuk menentukan teknik yang digunakan oleh penyerang dan memeriksa tingkat kerusakan yang disebabkan oleh intrusi cyber. Analisa setelah intrusi yang telah berhasil dilakukan oleh penyerang membantu memastikan bahwa insiden telah diatasi.

 

Panduan Implementasi

Fokus pada penangkapan data pada lalulintas dari workstation dan server pada jaringan internal yang menyimpan atau mengakses informasi sensitif. Bila memungkinkan juga menangkap lalulintas data didalam batas jaringan internal, dengan catatan bahwa kegunaan penangkapan data ini akan percuma apabila data yang terkirim dalam bentuk terenkripsi dan dikirim kepada komputer yang tidak dianggap sebagai ancaman. Pastikan bahwa pengguna menyadari bahwa lalulintas data pada jaringan organisasi dimonitor untuk kepentingan keamanan.

Ketika sebuah intrusi cyber terjadi, simpanlah sebuah salinan dari lalulintas data untuk beberapa hari setelah intrusi teratasi, karena penyerang berkemungkinan akan kembali menyerang tidak lama berselang setelah serangan awal.

Metadata yang berhubungan dengan koneksi jaringan dapat membantu proses pencatatan log dan menggunakan ruang yang lebih sedikit pada media penyimpanan dibanding paket jaringan.

Strategi Mitigasi # 34 – Gateway Blacklisting (Daftar Hitam pada Gateway)

Mitigasi

Implementasi daftar hitam pada gateway (gateway blacklisting) untuk membatasi akses ke domain atau alamat IP yang diketahui melakukan kegiatan malicious.

 

Dasar Pemikiran

Daftar hitam pada gateway mengurangi resiko pengguna untuk terkonesi ke domain dan alamat IP yang diketahui merupakan milik cyber adversaries.

 

Panduan Implementasi

Intrusi cyber biasanya melibatkan penggunaan domain dinamis dan domain lainnya yang disediakan gratis kepada pengguna internet yang tidak jelas karena kurangnya atribut yang dimilikinya. Membatasi akses terhadap domain seperti ini setelah memeriksa bahwa organisasi tidak menggunakan akses kepada sebuah situs yang berada dalam naungan domain tersebut.

Keamanan Sistem Operasi NetBSD untuk Aplikasi Berbasis Web – Bagian IX Vulnerability Testing NetBSD

Untuk menguji apakah sistem operasi kita sudah sesuai tingkat keamanannya ada baiknya dilakukan audit dan pengujian vulnerabilitas pada sistem NetBSD, untuk keperluan ini kita akan memanfaatkan 3 buah tools yaitu nmap, Nessus dan Metasploit. Tools ini semua saya jalankan pada mesin yang terpisah dan menggunakan Kali Linux 1.1a untuk sistem operasinya. Kali linux dapat didownload di http://www.kali.org namun proses instalasinya tidak akan dijelaskan disini karena diluar pokok bahasan tugas.

Menguji dengan NMAP

Nmap adalah tool opensource (http://nmap.org) yang berfungsi untuk melakukan network discovery dan network scanning, tool multiguna ini sangat berguna untuk mengetahui informasi mengenai sebuah sistem, untuk menguji sistem NetBSD yang telah kita perkeras kita akan menggunakan opsi -sV untuk scanning versi servis yang berjalan dan menggunakan opsi -O untuk mendeteksi sistem operasi yang digunakan, berikut adalah keluaran nmap dari kali linux saya :

nmap

Nmap berhasil mendeteksi 2 buah port terbuka yaitu http dan https dan keduanya menggunakan nginx 1.7.4, namun untuk mendeteksi sistem operasi salah pada versi OSnya saja, sistem operasi yang terdeteksi benar yaitu NetBSD. Disini kita bisa lihat bahwa tidak ada port lain yang terbuka sehingga memperkecil kemungkinan serangan.

Audit Vulnerabilitas dengan Nessus

Nessus sebenarnya bukan tool yang gratis (http://tenable.com) untuk digunakan pada jaringan besar, namun untuk penggunaan rumah ada versi gratisnya dan cukup memberikan gambaran mengenai bagaimana suatu proses audit keamanan seharusnya berjalan termasuk pada proses pelaporannya yang intuitif. Proses instalasi pada kali linux cukup mudah yaitu pertama melakukan registrasi pada situs web untuk mendapatkan kode aktifasi kemudian mengunduh nessus versi terbaru untuk Debian 64bit karena kali linux berbasis debian, dan lakukan instalasi dengan memasukan perintah :

# dpkg -i nessus-versiyangdidownload.deb
# service nessusd start

Kemudian bukalah webbrowser dan masukan http://localhost:8834, ikuti langkah-langkah lanjutan pada halaman web tersebut termasuk memasukan kode aktifasi.

Basic Network Scanning dengan Nessus

Setelah instalasi loginlah kedalam halaman utama nessus, kemudian pilih add new scan, kemudian pilih lah Basic Network Scan

nessusbasic

Kemudian masukan info yg dibutuhkan untuk scan,

nessushasilbasic

setelah scan selesai akan mengeluarkan informasi mengenai vulnerabilitas yang dimiliki oleh sistem. Disini kita dapati bahwa nessus mendeteksi 2 buah kelemahan yang memiliki resiko tinggi, 4 buah kelemahan yang memiliki tingkat sedang dan 27 informasi tambahan untuk meningkatkan keamanan sistem kita. Bila kita klik informasi lebih lanjut akan keluar seperti dibawah ini.

nessushasilbasicdetil

PHP yang digunakan perlu dimutakhirkan karena mengandung resiko keamanan yang cukup besar. Tentunya apabila ini hendak dilakukan pada OS seperti NetBSD akan sedikit sulit karena paket-paket yang disediakan cukup lama untuk dimutakhirkan, namun kita bisa melakukan kompilasi sendiri dari kode sumber bila hal ini mendesak dilakukan.

WordPress Scanning menggunakan Metasploit

Metasploit adalah penetration testing framework yang modular, sehingga seiring berkembangnya waktu tools yang terkandung didalamnya bertambahbanyak,  termasuk untuk melakukan pentest kedalam wordpress. Skenario pengujian kali ini adalah kita akan membruteforce password milik user admin, pada percobaan kali ini sengaja dipilih password yang lemah dan terdapat pada file top 500-worst-password.txt yang banyak terdapat di google dan saya unduh untuk keperluan ini.

Metasploit sudah terdapat di kali linux sehingga tidak perlu repot dalam instalasinya, cukup jalankan perintah msfconsole dari terminal.

metasploit

Pilihlah auxiliary (modul) untuk menjalankan bruteforce wordpress dengan perintah ini :

metasploit2

Kemudian kita harus memasukan informasi yang dibutuhkan oleh metasploit untuk menjalankan bruteforce, yang perlu kita set adalah nama host (RHOST), nama username (USERNAME), dan file yang berisi kamus yang digunakan (PASS_FILE), caranya ada pada gambar berikut.

metasploit3

Namun karena aplikasi wordpress adalah yang terbaru, metasploit bahkan gagal melakukan enumerasi/validasi awal

metasploit4

WordPress Scanning dengan wpscan

wpscan adalah sebuah aplikasi berbasis ruby untuk melakukan bruteforce attack pada wordpress, penggunaanya juga cukup mudah, hanya satu baris saja dan kita akan menggunakan skenario sama dengan diatas yaitu username admin yang passwordnya diambil dari 500-worst-password.txt. Berikut perintah yang digunakan

wpscan1

Yang menarik adalah hasil dari bruteforce yang ketika sukses tidak dikenali oleh wpscan, hampir sama ketika metasploit tidak mengenali cara enumerasi user, ini menurut analisa saya adalah karena versi wordpress terbaru yang sedikit memodifikasi sehingga tidak dikenali scanner-scanner yang lama. Dibawah ini pada gambar terdapat error ketika menggunakan password newyork, padahal memang itu password yang digunakan sebagai password admin.

wpscan2

Dalam hal scanning user kali ini wpscan yang spesifik utk bruteforce wordpress lebih handal dibanding metasploit karena sukses melakukan scan.

Keamanan Sistem Operasi NetBSD untuk Aplikasi Berbasis Web – Bagian VIII Manajemen Log NetBSD

Manajemen Log  Lokal (syslog) pada sistem NetBSD

Pada sistem operasi NetBSD seluruh log pada sistem operasi NetBSD diatur oleh syslog daemon atau syslogd(8). Direktori dimana log-log ditempatkan berada di /var/log/ dan hasil keluaran dari syslog diatur melalui file konfigurasinya yang terletak di /etc/syslog.conf. Berikut adalah isi /var/log secara umum pada sistem operasi NetBSD :

varlog

File konfigurasi /etc/syslog.conf berisi cara memanajemen log lokal, isinya sebagai berikut :

syslogconf

Untuk dapat mengerti detil dari syslog.conf bisa dilihat informasi detail dengan perintah man syslogd, namun secara singkat akan tetap saya jelaskan. File berbentuk teks ini konfigurasinya dibagi berdasarkan baris, dan masing-masing baris dibagi 2 kelompok dimana :

  1. kelompok pertama (bagian selector) berisi informasi-informasi log yang akan disaring oleh syslogd. Informasi ini mempunyai format
    • facility – menjelaskan bagian dari sistem yang mengeluarkan log, beberapa fasilitas yang tersedia adalah : auth, authpriv, cron, ftp, daemon,
      kern, lpr, mail, mark, news, syslog, user, uucp dan local0 sampai
      local7.
    • comparison flag – merupakan perbandingan level yang akan dilog, secara default komparasinya adalah >= (lebih besar sama dengan)
    • level – merupakan tingkat kegentingan dari pesan log yang disampaikan, secara berurutan dari yang paling genting ke yang paling rendah adalah :  emerg, alert, crit, err, warning, notice, info dan debug
  2. kelompok kedua (bagian action) berisi output kemana log tersebut disimpan, sebagai contoh dibaris pertama action dari log yang masuk adalah disampaikan kepada consol sehingga akan keluar pada tampilan CLI pengguna, sedangkan pada baris kedua log akan disimpan pada berkas /var/log/messages.

Melihat Hasil Log

Untuk melihat log yang ada, kita dapat menggunakan sebuah editor teks bila ingin memudahkan mencari teks yang diinginkan, namun tidak disarankan karena dapat merubah isinya secara tidak sengaja. Disarankan dilihat isinya dengan perintah tail untuk melihat beberapa baris terakhir dan digabung dengan perintah grep untuk mencari sebuah kata kunci yang dicari didalam log, berikut adalah contoh mencari 5 baris terakhir yang memiliki kata “webmaster” didalam file /var/log/authlog.

taillog

tapi ada juga file log yang berbentuk data binary yang tidak dapat dibuka oleh teks editor seperti lastlog, wtmp dan wtmpx. Untuk membukanya harus menggunakan perintah last, berikut contoh penggunaanya:

lastlog

 

Manajemen Rotasi Log dengan newsyslog

Rotasi log dibutuhkan agar berkas log tidak terlalu panjang dan dipecah-pecah menjadi berkas yang lebih kecil dan dikompres agar tidak memakan banyak media penyimpanan. Berbeda dengan sistem linux, NetBSD tidak menggunakan logrotate untuk memanajemen rotasi berkas-berkas log, melainkan menggunakan sebuah utilitas yang bernama newsyslog. Newsyslog ini sebenarnya dijalankan secara berkala oleh cron(8), dan ketika dijalankan akan menyimpan berkas log yang lama kedalam sebuah berkas terkompresi apabila sesuai dengan prasyarat yang telah ditentukan didalam file konfigurasi newsyslog. Prasyarat itu sendiri bisa berupa ukuran dari file log yang sudah dicapai, atau bisa juga berdasarkan lamanya umur berkas log. File konfigurasinya terdapat pada file /etc/newsyslog.conf

newsyslogconf

Seperti yang bisa kita lihat diatas bahwa untuk konfigurasinya berdasarkan baris dan tiap baris dibagi 9 (sembilan) field, yaitu :

  1. logfilename – pada field ini berisi nama file log yang akan diatur rotasinya
  2. owner:group – adalah pemilik dan group pemilik log file tersebut
  3. mode – adalah representasi desimal dari hak mode akses yang dimiliki file
  4. ngen – jumlah file yang disimpan selain file utama log
  5. size – apabila sebuah log telah mencapai ukuran tertentu maka akan dirotasi, satuannya adalah kilobyte, apabila diisi dengan asteriks (*) maka ukuran file tidak menjadi parameter dalam rotasi.
  6. when – adalah interval dimana file log dirotasi, satuan yang digunakan adalah jam, sama dengan diatas, apabila diisi dengan asteriks (*) maka tidak akan menjadi parameter rotasi.
  7. flags – adalah hal-hal optional
    • flag Z berarti menggunakan format gzip untuk kompresi
    • flag B berarti menggunakan format Binary
    • flag N berarti no signal
  8. pidfile – adalah letak file pid dimana process id daemon servis yang hendak dilog diletakan. Referensi letak berkas wajib berawal dari root direktori “/”.
  9. sigtype – diisi dengan tipe signal yang hendak digunakan (opsional).

Menambahkan Log Aplikasi pada newsyslog

Newsyslog tidak saja memanajemen log yang dikelola oleh syslogd, namun juga dapat mengelelola log yang merupakan output aplikasi atau servis lainya seperti log dari Ngingx, PHP-FPM, Mysql dlsb. Pada gambar konfigurasi newsyslog.conf diatas pada 3 baris terakhir dapat dilihat tambahan baris-baris untuk rotasi log dari PHP dan Nginx yang ditambahkan sendiri. Pada NetBSD seringkali setelah instalasi diberikan masukan mengenai bagaimana sebaiknya log rotate diimplementasikan pada newsyslog, seperti 3 baris tersebut adalah saran yang terdapat setelah instalasi selesai.

Manajemen Log Jarak Jauh / Remote dengan rsyslog

rsyslog adalah sebuah servis yang membantu menjadi jembatan dari berbagai macam jenis log untuk dikirim kesebuah log server untuk disimpan kedalam berbagai jenis format penyimpanan baik itu berbentuk teks, binary maupun basis data. Untuk tugas ini, kita akan belajar membuat rsyslog pada sistem operasi NetBSD untuk melaporkan log kepada log server yang berjalan diatas sistem NetBSD lainnya.

Instalasi rsyslog

rsyslog tidak terinstal secara otomatis pada NetBSD sehingga harus menginstall secara manual baik pada server maupun pada host, keduanya menggunakan langkah yang sama yaitu:

# pkgin install rsyslog
# cp /usr/pkg/share/examples/rc.d/rsyslogd /etc/rc.d
# echo "rsyslogd=YES" >> /etc/rc.conf

Manajemen Server rsyslog

Perbedaan pada instalasi server dan host rsyslog hanya terdapat pada isi berkas konfigurasinya, yang pada NetBSD terdapat  pada /usr/pkg/etc/rsyslog.conf.

rsyslogserver

pada setingan server yang perlu dilakukan adalah mengatur pada port mana input log akan didengarkan oleh sistem, disini standar yang biasa digunakan adalah UDP port 514, UDP digunakan untuk menghemat bandwith, namun apabila lebih menghendaki kestabilan dan kekonsistenan sebaiknya menggunakan TCP pada port 514. Setelah berkas konfigurasi selesai disunting dan disimpan jangan lupa dijalankan servernya

# /etc/rc.d/rsyslogd start

Manajemen host rsyslog

Server yang telah kita konfigurasi diatas sudah dapat menerima kiriman log, sekarang kita akan mengatur host agar mengirim log. Informasi yang dibutuhkan hanya nama host atau nomor IP dari server rsyslog, kemudian kita edit berkas konfigurasi dan tambahkan baris berikut pada baris paling bawah :

*.* @ALAMAT_IP:514

rsyslog

kemudian disimpan berkas konfigurasinya, dan aktifkan servernya dengan

# /etc/rc.d/rsyslogd start

Demikian penjelasan manajemen log pada sistem NetBSD

Keamanan Sistem Operasi NetBSD untuk Aplikasi Berbasis Web – Bagian VI Instalasi dan Pengerasan Mysql dan WordPress

Wordrpress hanya mendukung mysql secara default, meski bisa menggunakan database lainnya tapi hanya akan membuat lebih lambat dibanding menggunakan mysql atau mariadb. Berikut akan diterangkan cara instalasi Mysql dan cara pengerasannya.

Instalasi Mysql

Instalasi Mysql di NetBSD 6 cukup mengjalankan perintah berikut :

#pkgin install mysql-server

Langkah diatas sudah melakukan instalasi mysql-server dan mysql-client, namun sebelum dapat digunakan harus dilakukan beberapa langkah tambahan yaitu :

#echo "mysqld=YES" >> /etc/rc.conf
#/etc/rc.d/mysql onestart

setelah itu kita melakukan setting password root sebagai pengamanan

#mysqladmin -u root password

Mysql Hardening

Pengerasan Mysql server untuk kali ini tidak terlalu banyak karena peladen Mysql terdapat dalam satu mesin dengan NginX dan PHP-FPM sehingga yang perlu dilakukan hanya membuat agar Mysql tidak dapat diakses dari selain 127.0.0.1 dengan menggunakan perintah-perintah berikut :

# vi /etc/my.cnf

dan tambahkan baris berikut :

[mysqld]
port=3306
bind-address=127.0.0.1
local-infile=0

Instalasi PHP-Mysql Module

agar Mysql dapat terkoneksi dengan PHP-FPM maka harus diinstal modulnya dengan langkah sbb :

# pkgin install php56-mysql

dan kemudian tambahkan parameter modul mysql pada file php.ini

# echo "extension = mysql.so" >> /usr/pkg/etc/php.ini

dan restartlah php-fpm

# /etc/rc.d/php_fpm restart

Pengerasan Mysql dari dalam

Konfigurasi mysql yang telah kita lakukan akan percuma apabila tabel user dalam mysql tidak dimanajemen dengan baik sehingga ada baiknya kita audit, pertama dengan masuk dulu ke mysql

#mysql -u root -p

Kemudian kita lihat tabel user dengan menjalankan :

mysql> SELECT User,Host,Password FROM mysql.user;

dan dianalisa isi tabelnya, seringkali didalamnya terdapat user kosong dengan password dan host yang kosong, perlu dibersihkan dengan perintah berikut

mysql> DELETE FROM mysql.user WHERE User="";
mysql> DELETE FROM mysql.user WHERE User="root" AND Host="" AND Password="";

Pengerasan Mysql untuk WordPress

Sebelum dikeraskan kita akan membuat database

Pengerasan database spesifik untuk wordpress sebenarnya tidak banyak dan menggunakan teknik obscurity.

CREATE DATABASE wordpress;

setelah itu buatlah user wordpress dan

mysql> CREATE USER wordpresNetBSD@localhost;
mysql> SET PASSWORD FOR wordpressNetBSD@localhost= PASSWORD("passwordyangbaik");

setelah membuat user kita tentukan previlage nya

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpressNetBSD@localhost IDENTIFIED BY 'passwordyangbaik';

kemudian kita flush

mysql>FLUSH PRIVILEGES

Instalasi WordPress

Meskipun wordpress 4.0.1 tersedia pada pkgsrc NetBSD namun jauh lebih baik apabila kita melakukan instalasi wordpress terbaru langsung dari source, langkah pertama adalah mendownload sourcenya, dan mendekompres berkas wordpress terbaru. Sebaiknya langkah-langkah dalam artikel ini tidak dilakukan sebagai user root, namun sebagai user biasa (webmaster)

$ cd ~
$ wget https://wordpress.org/latest.tar.gz
$ tar -zxvf latest.tar.gz

Kemudian kita salin kedalam folder webserver

$ cp -r ~/wordpress/* ~/public_html

Setelah itu kita dapat melanjutkan dengan memodifikasi wp-config agar sesuai informasinya dengan user dan database yang telah kita buat.

$ cd ~/public_html
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php

Kemudian cari informasi berikut dan rubahlah

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressNetBSD');

/** MySQL database password */
define('DB_PASSWORD', 'passwordyangbaik');

Pengamanan Tambahan pada wp-config.php

Pada wp-config.php ada pengamanan tambahan, yang pertama adalah salt untuk kunci tambahan, masukanlah frase unik yang panjang untuk mengganti kata-kata ‘put your unique phrase here’

define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');

Selain salt diatas, sebaiknya prefix table untuk database mysql dibuat aneh, sehingga apabila ada SQL Injection yang sukses, penyerang membutuhkan usaha ekstra untuk mendapatkan nama tabel yang dibutuhkannya

$table_prefix  = 'wp_';

dirubah menjadi

$table_prefix  = '4d4d3h_';

Konfigurasi tambahan yang ada pada wp-config juga dapat menambah pengamanan, namun juga bisa membuat kurang nyaman pengguna. Penggunaan parameter tambahan pada wp-config ini saya sarankan bergantung pada tingkat keamanan yang mau diberikan kepada aplikasi wordpress

// rubahlah baris berikut dr false menjadi true apabila ingin membatasi user dalam  mengedit theme atau plugin

define('DISALLOW_FILE_EDIT',true);

//rubahlah baris berikut dr false menjadi true apabila ingin membatasi user dalam  menginstal theme, plugin atau update sistem

define('DISALLOW_FILE_MODS',true);

Setelah melakukan pengamanan yang dibutuhkan maka proses instalasi dapat dilanjutkan dengan cukup mengakses https://wordpressNetBSD/ dari browser, instalasi WordPress selesai 🙂