Machine Learning Static Malware Analysis-Shalaginov-Paper Review


Paper Title:Machine Learning Aided Static Malware Analysis: A Survey and Tutorial

Authors: Andrii Shalaginov, Sergii Banin, Ali Dehghantanha, Katrin Franke

Venue: Springer, Advances in Information Security , vol 70, p7-45

URL: https://arxiv.org/abs/1808.01201

Problem:Malware masih menjadi ancaman nomer satu bagi pengguna Windows. Jumlah malware juga terus bertambah. Analisa malware terdiri dari 2 cara static dan dinamis. Analisa dinamis membutuhkan resource yang besar. Sementara static membutuhkan skill yang baik dan waktu yang cukup. Perlu ada pendekatan baru untuk deteksi malware

Contribution

  1. Melakukan review komprehensif teknik machine learning untuk analisa static malware
  2. Menyusun taxonomy konstruksi feature static untuk klasifikasi ML
  3. Memberikan tutorial teknik ML dan membandingkan performanya

Method/solution

  1. Menggunakan 1 dataset benign dan 2 dataset malware untuk studi
  2. Training menggunakan AdaBoost dan Random Forest untuk 500 best selected n-grams pada range 1-8 n
  3. Function call membentuk graph untuk menampilkan PE32 header fitur seperti nodes, edges dan subgraph
  4. Jumlah besar fitur yang diekstrak dapat digunakan untuk membangun model menggunakan SVM atau single-layer Neural Netowrk
  5. Array of API calls dari IAT diproses dengan Fisher score 
  6. Fitur dasar dari PE32 header adalah Ukuran header, Ukuran Uninitialized Data, Ukuran Stack Reverse
  7. Menggunakan Decision Tree untuk analisa PE Header
  8. Menggunakan F-score sebagai performance metrik untuk analisa PE32 header
  9. MEnggunakan control flow change dari 256 alamat pertama untuk membangun fitur n-gramm
  10. Naïve Bayes digunakan untuk klasifikasi binary (benign atau malicious); Input harus symbolical, contohnya string, opcode, instruction n-gramm
  11. Bayesian Network digunakan pada klasifikasi dan information retrieval seperti semantic search
  12. Algoritma rule based C4.5 digunakan untuk membangun decision tree
  13. Neuro-Fuzzy digunakan untuk membedakan malware dan benign, tapi juga untuk mendeteksi tipe malware
  14. Teknik distance based diantaranya k-NN tidak memerlukan training. Diperlukan pemilihan fitur yang temat serta metode untuk membedakan data yang mixed
  15. Fungsi kernel dipilih antara polynomial, GAussian, hyperbolic dll
  16. Neural network terdiri dari input layer, hidden layer dan output layer. Input menerima normalized data, hidden layer menhasilkan output aktivasi menggunakan weighted input dan fungsi aktivasi. ANN dugunakan pada model kompleks dengan high-dimensional spaces
  17. Tools yang digunakan Weka, untuk split dataset; Python weka wrapper, LibSVM, RapidMiner dan Dlib
  18. Metode pemilihan fitur menggunakan Information Gain dan CFS (Correlation-base Feature subset selection)
  19. Metode information gain digunakan untuk menentukan atribut malware
  20. Menggunakan sequence opcode dengan length 1-4 dengan Random forest, J48, kNN, bayesian networks dan SVM
  21. Pengujian dilakukan pada VM Ubuntu 14.04 dengan server Xen4.4. Intel Core i7 2,6Ghz denan 4 core (8 thread, 2 core untuk VM; Harddisk SSD RAID, Ram 8GB 
  22. Pre-processing dengan scrit bash; database mySql 5.5; python 2.7.6 dan PhP 5.5.8
  23. Membangun benign file dari windows XP,7, 8.1 dan windwos 10
  24. Dataset malware menggunakan VX Heaven dan Virusshare
  25. Benign sampel 16.632 dengan ukuran 7,4GB; malware0 58.023 ; 14 GB dan malware 2 41.899 sampel; 16 GB
  26. Konstruksi fitur dengan PEFrame, Hexdump, dan objdump
  27. Fitur PE32 dipilih dengan metode Cfs dan InfoGain dengan 5-fold cross validation

Main result

  1. N-gram byte sequence adalah salah satu fitur dari sequence byte binary
  2. Akurasi deteksi malware menggunakan fitur n-gram byte mencapai 97%
  3. Algoritma yang digunakan diantaranya Naive Bayes, C4.5 dan k-NN digunakan untuk deteksi n-gramm
  4. N-gram 4-5 menghasilkan akurasi tinggi. 
  5. Opcode banyak digunakan untuk klasifikasi
  6. Beberapa API calls hanya ditemukan di malware 
  7. Belum ada penelitian yang mencapai akurasi 100%, karena malware menggunakan obfuscation dan enkripsi untuk menghindari deteksi
  8. Pendeketan dengan n-grams membutuhkan resource besar
  9. SVM menghasilkan akurasi yang tinggi
  10. Banyak peneliti menggunakan fitur byte n-gram, opcde n-gramm dan PE32 header, dan algoritma C4.5, SVM dan k-NN
  11. Peneliti memilih antara ekstrak fitur yang menghasilkan akurasi klasifikasi tinggi, atau menggunakan metoda konvensional seperti information gain
  12. N-gram based membutuhkan FS lainnya untuk menghilangkan feature yang tidak diperlukan
  13. Rule based ML adalah metode klasifikasi yang banyak digunakan, diikuti SVM
  14. Metode Forest-based lebih mudah diterapkan untuk fitur PE32 header based
  15. ANN tidak banyak digunakan
  16. Metode Bayes-based menghasilkan akurasi rendah 50%, metoda lain 80-100%
  17. Fitur dari shortinfo dari PE32 header dapat dijadikan indikator malware
  18. ANN dan C4.5 menghasilkan performa yang lebih baik

Limitation:

  1. Tidak melakukan review pada Deep Lerning
  2. Tidak melakukan review pada image representation

Note:

  1. N-gram byte sequence adalah salah satu fitur dari sequence byte binary
  2. Malware PE32 paling banyak ditemukan karena bisa menginfeksi windows 64 bit dan 32 bit
  3. PE32 dimulai dari windows 3.1 dan kemudian berkembang jd format PE32+ untuk OS windows 64 bit
  4. PE file mengandung header COFF (Common Object File Format). Standar COFF field adalah header, section table, data directories dan Import Address Table (IAT)
  5. Selain PE Header fitur static lainnya diekstrak dari eksekutable binary seperti strings, entropy dan size of various sections
  6. Feature static ada yang numerik dan nominal
  7. Numerk contohnya integer, real atau binary
  8. Nominal contohnya finite set dari kategori atau label
  9. Contoh fitur numerik adalah CPU (%) usage, RAM dalam Megabyte) usage
  10. Contoh nominal bisa sebuah tipe file seperti *.dll atau *.exe atau API function call seperti write() atau read()
  11. N-gramm didapate menggunakan hexdump; membuat 4gram dari byte sequence dari PE32
  12. Fitur dikumpulkan dengan sliding window of n bytes, yang menghasilkan 200 juta fitur dengan 10-gramm pada 2 ribu files
  13. Feature selection digunakan untuk memilih 500 feature paling penting berdasarkan information Gain Metric
  14. Ada penelitian yang menggunakan 100-500 selected n-grams pada set 250 malicious dan 250 sampel benign
  15. Opcode sequence atau operation code adalah set of low level machine abstraksi  berurutan yang digunakan untuk berbagai macam operasi CPU. Banyak digunakan untuk fitur pada klasifikasi malware
  16. Namun perlu ada balance antara ukuran feature set dan Panjang n-gram opcode sequence.
  17. Bragen menguji kehandalan analisa malware menggunakan sequence opcode dari 992 PE malware dan benign.50 juta opcode diekstrak. 1gram dan 2 gram menghasilkan akurasi baik dan komputasi yang sedang
  18. Wang menggunakan 2-tuple opcode sequence digunakan pada kombinasi density clustering
  19. API call adalah fungsi yang dipanggil sebuah program untuk menjalannkan fungsi tertenti
  20. Perlu dibedakan System API dan User API. System API call disediakan oleh dll sistem
  21. User API disediakan oleh software yang diinstal pengguna
  22. API call berbahaya, Anti-VM dan anti-debugger hook dan calls bisa diekstrak menggunakan tools analisa PE seperti PEframe
  23. API calls bisa juga diekstrak dengan PE parser
  24. PE Header adalah koleksi dari metadata terkait PE file
  25. Belum ada penelitian yang menjamin akurasi 100% pada deteksi malware. 
  26. Metode menggunakan n-gram cenderung menggunakan set pemilihan fitur seperti tf-idf dan symetric uncertainty yang lebih cocok untuk similar sequence dalam jumlah besar
  27. Fitur berbasis PE32 cenderung menghasilkan entropy tinggi untuk klasifikasi; sehingga control-flow graph based dan gain ratio lebih cocok untuk task ini
  28. 4 fitur disarankan untuk klasifikasi; PE32 header, Byte n-gram, opcode n-gram dan API calls
  29. PE32 header diperoleh dari tools PE-Frame; Berikut beberapa fitur numerical dari pe32 header
  30. ShortInfo_Directories menjelaskan 16 data directory yang tersedia di PE; yang paling banyak digunakan adalah import, export, resource, debug, relocation
  31. ShortInfo_Xor menunjukan deteksi XOR obfuscation
  32. ShortInfo_DLL adalah sebuah flag binary atau apakah sebuah file executable atau dll
  33. shortInfo_fileSize adalah ukuran binary dalam bytes
  34. ShortInfo_Detected menampilkan teknik evading deteksi seperti hooks untuk disable execution in virtualized environment atau API calls mencurigakan
  35. ShortInfo_Sections adalah jumlah subsection pada header
  36. DigitalSignature berisi informasi tentang digital signature 
  37. Packer  mengnjukkan deteksi packer
  38. AntiDebug memberikan gambaran teknik untuk mencegah debugging process
  39. AntiVM digunakan untuk mencegak eksekusi pada VM
  40. SuspiciousAPI api mencurigakan
  41. SuspiciousSections seperti .rsrc \u0000 \u0000\u0000
  42. Url adalah beberapa alamat url  pada binary
  43. Byte n-gram adalah sequence dari some items (dengan minimum length adalah 1
  44. Opcode-ngram: set instruksi yang dilakukan CPU bila binary dijalankan; pop, push, mov, add, sub

Silahkan tuliskan tanggapan, kritik maupun saran