When Malware is Packin’Heat-Aghakhani-Review Paper


Paper Title: When Malware is packin’ Heat: Limits of machine leatning classifiers based on static analysis features

Authors: Hojjat Aghakhani, Fabio Gritti, Francesco Mecca, Martina Lindorfer, Stefano Ortolani, Davide Balzarotti, Giovani Vigna, Christopher Kruegel

Venue: NDSS (Network and distributed System Security) Symposium 2020

URL: https://www.ndss-symposium.org/wp-content/uploads/2020/02/24310-paper.pdf

Problem: Teknik packing dan obfuscation seringkali digunakan penulis malware untuk mengelabui proses deteksi malware. Namun teknik ini juga digunakan aplikasi benign untuk melindungi codenya.  Bagaimana mesin deteksi malware menggunakan machine learning dengan feature analisa static bisa membedakan sampel yang menggunakan teknik packing sebagai malware dan benign? 

Contribution:

  1. Melakukan studi tentang batasan dari malware classifier menggunakan machine learning yang hanya menggunakan feature static. 
  2. Dataset terdiri dari 392.168 sampel yang telah diberi label benign dan malicious serta packed dan unpacked.
  3. 341.444 sampel telah diketahui packernya

Method/solution

  1. Membangun 2 dataset, wild dataset dan lab dataset
  2. Wild dataset adalah kumpulan sampel yang diperoleh dari vendor antivirus yang menggunakan feature dinamik
  3. Menggunakan benchmark dataset EMBER
  4. Identifikasi sampel yang menggunakan packing menggunakan tools sandbox vendor, Deep Packet Inspector dan tools static lainnya
  5. Lab dataset adalah sampel dari wild dataset yang di packing dengan commercial dan free packer
  6. Melakukan ekstraksi 9 family feature dari 2 dataset diatas
  7. Pengujian menggunakan SVM, Malconv, Random Forest
  8. Pada tahan naive experiment, Training dilakukan pada packed malicious dan unpacked benign sampel
  9. Pengujian dilakukan pada 6 malware deteksi engine yang hanya menggunakan teknik static analisis feature.
  10. Packer yang digunakan diantaranya Themida, PECompact, PElock dan Obsidium.
  11. Sampel yang dipacking di submit ke VirusTotal, dan diuji dengan  vendor Antivirus dan dataset EMBER
  12. Membuat packer sendiri AES-Encrypter
  13. 4113 sampel diabaikan karena perbedaan hasil deteksi
  14. Sampel diuji apakah mengandung teknik packing menggunakan antimalware, DPI, Tools signature dan heuristic diantaranya manalyze, exeinfo PE, yara rules, PEiD dan F-Prot
  15. Digunakan 56,543 deature yang dikelompokan pada 9 Family Feature :PE Header, PE Sections, DLL imports, API imports, Rich Header, Byte n-grams, Opcode n-grams, Strings dan file generic

Main result

  1. 6 Classifier yang diuji hanya mendeteksi packing, sehingga tidak bisa membedakan sampel malware maupun benign yang menggunakan teknik packing
  2. Random Forest mendapatkan hasil classifier terbaik dan interpretasi hasil yang lebih baik dibandingkan neural network
  3. Hasil naive experiment, classifier menghasilkan tingkat false positive yang tinggi pada sampel packed benign. Sehingga disimpulkan classifier cenderung mendeteksi packing.
  4. Menambah ratio packed benign pada training set menurunkan tingkat false postive dan false negative.
  5. Packers menyimpan informasti tentang binary asli yang bisa digunakan untuk deteksi malware, contohnya file headers .cab pada section resource
  6. Sampel Benign yang menggunakan commercial packer Themida, PECompact, PElock dan Obsidium dideteksi sebagai malware
  7. 75% sampel malware menggunakan teknik packing. 50% sampel benign menggunakan teknik packing.
  8. 50% dari 69 packer yang diteliti digunakan baik oleh sampel malware dan benign, contohnya INNO dan UPX. 
  9. Packer yang banyak digunakan malware NSPack, Molebox
  10. 613 sampel benign dari file instalasi baru Windows 10  di pack dengan themida. 564 dideteksi sebagai malicious.
  11. Teknik Signature based untuk deteksi packing menghasilkan false negative yang tinggi. PEiD: 30% false negative.

Limitation:

  1. Classifier mengalami kesulitan dalam generalisasi packer yang belum dikenal
  2. Classifier sulit mengenali packer yang menggunakan teknik enkripsi yang kuat
  3. Rentan terhadap adversarial sample
  4. Tidak melakukan pengujian pada android

Source code dishare pada docker di web berikut: https://github.com/ucsb-seclab/packware. Ditemukan adanya dataset pollution, yaitu packed benign sampel yang dideteksi sebagai malicious. Packer adalah aplikasi yang melakukan kompresi atau enkripsi program. Teknik yang digunakan biasanya dekripsi atau dekompresi (runtime) dari payload original yang diikuti dengan sebuah jump dari memory address. 

Ugarte et.al membagi packer menjadi 6 tipe:

  1. Tipe I: Menggunakan sebuah rutin unpacking untuk transfer kontrol dari program asli. Packer yang populer adalah UPX
  2. Tipe II: Packer menggunakan sebuah rantai rutin unpacking secara sekuensial, dimana kode original yang dikomposisi ulang pada akhir sequence
  3. Tipe III: rutin unpacking dengan loops dan backward edges. Kode original tidak direkonstruksi pada layer terakhir, sebuah tail transision digunakan untuk memisahpan pakcer dan kode aplikasi
  4. Tipe IV: pada setiap layer packing, bagian dari unpacking rutin disisipkan pada bagian kode original. Namun seluruh kode orignal tetap unpacked di memori pada titik tertentu ketika dieksekusi
  5. Tipe V: Packer disusun dari laeyer berbeda dimana kode unpacking dicampur dengan kode asli. Ada banyak tail jump yang hanya menampilkan sebuah frame kode original pada waktu tersebut
  6. Packer unpack hanya sebuah fragment dari kode original

Pendekatan lainnya menggunakan heuristic utnuk mendeteksi packing, namun rentan terhadap adversary. Contohnya family malware Zeus menggunakan berbagai teknik berbeda, seperti memasukan set byte di executables untuk membuat entropy dari file dan sectionsnya rendah.  Untuk menghidari deteksi entropy-based heuristics. 

Deteksi dinamic memiliki performa lebih baik, karena mencari sequence write-execute pada sebuah lokasi memori. Teknik evasion lainnya adalah conditional execution dari unpacking routin.

Packer tELock dan Armadilo menggunakan beberapa teknik anti-debugging untuk menghentikan eksekusi pada setting debugging. Ada juga yang melakukan exploitasi virtualisasi hardware untuk mencapai transparansi, namun menghasilkah overhead performance yang tinggi. Themida menggunakan obfuscation virtualization pada unpacking routine, yang dapat menyebabkan slice size explosion. 

Beberapa asumsi pada generic unpacker: 

  1. Kode original ada di memori pada titik tertentu
  2. kode original diunpacked pada layer terakhir
  3. Eksekusi dari unpacking rutin dan kode original terpisah
  4. Kode unpacking dan kode original berjalan pada proses sama tanpai komunikasi inter-proses

Generik unpacker juga banyak menggunakan heuristic yang dirancang untuk packer tertentu

 

 

,

Silahkan tuliskan tanggapan, kritik maupun saran