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
- Melakukan review komprehensif teknik machine learning untuk analisa static malware
- Menyusun taxonomy konstruksi feature static untuk klasifikasi ML
- Memberikan tutorial teknik ML dan membandingkan performanya
Method/solution
- Menggunakan 1 dataset benign dan 2 dataset malware untuk studi
- Training menggunakan AdaBoost dan Random Forest untuk 500 best selected n-grams pada range 1-8 n
- Function call membentuk graph untuk menampilkan PE32 header fitur seperti nodes, edges dan subgraph
- Jumlah besar fitur yang diekstrak dapat digunakan untuk membangun model menggunakan SVM atau single-layer Neural Netowrk
- Array of API calls dari IAT diproses dengan Fisher score
- Fitur dasar dari PE32 header adalah Ukuran header, Ukuran Uninitialized Data, Ukuran Stack Reverse
- Menggunakan Decision Tree untuk analisa PE Header
- Menggunakan F-score sebagai performance metrik untuk analisa PE32 header
- MEnggunakan control flow change dari 256 alamat pertama untuk membangun fitur n-gramm
- Naïve Bayes digunakan untuk klasifikasi binary (benign atau malicious); Input harus symbolical, contohnya string, opcode, instruction n-gramm
- Bayesian Network digunakan pada klasifikasi dan information retrieval seperti semantic search
- Algoritma rule based C4.5 digunakan untuk membangun decision tree
- Neuro-Fuzzy digunakan untuk membedakan malware dan benign, tapi juga untuk mendeteksi tipe malware
- Teknik distance based diantaranya k-NN tidak memerlukan training. Diperlukan pemilihan fitur yang temat serta metode untuk membedakan data yang mixed
- Fungsi kernel dipilih antara polynomial, GAussian, hyperbolic dll
- 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
- Tools yang digunakan Weka, untuk split dataset; Python weka wrapper, LibSVM, RapidMiner dan Dlib
- Metode pemilihan fitur menggunakan Information Gain dan CFS (Correlation-base Feature subset selection)
- Metode information gain digunakan untuk menentukan atribut malware
- Menggunakan sequence opcode dengan length 1-4 dengan Random forest, J48, kNN, bayesian networks dan SVM
- 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
- Pre-processing dengan scrit bash; database mySql 5.5; python 2.7.6 dan PhP 5.5.8
- Membangun benign file dari windows XP,7, 8.1 dan windwos 10
- Dataset malware menggunakan VX Heaven dan Virusshare
- Benign sampel 16.632 dengan ukuran 7,4GB; malware0 58.023 ; 14 GB dan malware 2 41.899 sampel; 16 GB
- Konstruksi fitur dengan PEFrame, Hexdump, dan objdump
- Fitur PE32 dipilih dengan metode Cfs dan InfoGain dengan 5-fold cross validation
Main result
- N-gram byte sequence adalah salah satu fitur dari sequence byte binary
- Akurasi deteksi malware menggunakan fitur n-gram byte mencapai 97%
- Algoritma yang digunakan diantaranya Naive Bayes, C4.5 dan k-NN digunakan untuk deteksi n-gramm
- N-gram 4-5 menghasilkan akurasi tinggi.
- Opcode banyak digunakan untuk klasifikasi
- Beberapa API calls hanya ditemukan di malware
- Belum ada penelitian yang mencapai akurasi 100%, karena malware menggunakan obfuscation dan enkripsi untuk menghindari deteksi
- Pendeketan dengan n-grams membutuhkan resource besar
- SVM menghasilkan akurasi yang tinggi
- Banyak peneliti menggunakan fitur byte n-gram, opcde n-gramm dan PE32 header, dan algoritma C4.5, SVM dan k-NN
- Peneliti memilih antara ekstrak fitur yang menghasilkan akurasi klasifikasi tinggi, atau menggunakan metoda konvensional seperti information gain
- N-gram based membutuhkan FS lainnya untuk menghilangkan feature yang tidak diperlukan
- Rule based ML adalah metode klasifikasi yang banyak digunakan, diikuti SVM
- Metode Forest-based lebih mudah diterapkan untuk fitur PE32 header based
- ANN tidak banyak digunakan
- Metode Bayes-based menghasilkan akurasi rendah 50%, metoda lain 80-100%
- Fitur dari shortinfo dari PE32 header dapat dijadikan indikator malware
- ANN dan C4.5 menghasilkan performa yang lebih baik
Limitation:
- Tidak melakukan review pada Deep Lerning
- Tidak melakukan review pada image representation
Note:
- N-gram byte sequence adalah salah satu fitur dari sequence byte binary
- Malware PE32 paling banyak ditemukan karena bisa menginfeksi windows 64 bit dan 32 bit
- PE32 dimulai dari windows 3.1 dan kemudian berkembang jd format PE32+ untuk OS windows 64 bit
- PE file mengandung header COFF (Common Object File Format). Standar COFF field adalah header, section table, data directories dan Import Address Table (IAT)
- Selain PE Header fitur static lainnya diekstrak dari eksekutable binary seperti strings, entropy dan size of various sections
- Feature static ada yang numerik dan nominal
- Numerk contohnya integer, real atau binary
- Nominal contohnya finite set dari kategori atau label
- Contoh fitur numerik adalah CPU (%) usage, RAM dalam Megabyte) usage
- Contoh nominal bisa sebuah tipe file seperti *.dll atau *.exe atau API function call seperti write() atau read()
- N-gramm didapate menggunakan hexdump; membuat 4gram dari byte sequence dari PE32
- Fitur dikumpulkan dengan sliding window of n bytes, yang menghasilkan 200 juta fitur dengan 10-gramm pada 2 ribu files
- Feature selection digunakan untuk memilih 500 feature paling penting berdasarkan information Gain Metric
- Ada penelitian yang menggunakan 100-500 selected n-grams pada set 250 malicious dan 250 sampel benign
- 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
- Namun perlu ada balance antara ukuran feature set dan Panjang n-gram opcode sequence.
- 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
- Wang menggunakan 2-tuple opcode sequence digunakan pada kombinasi density clustering
- API call adalah fungsi yang dipanggil sebuah program untuk menjalannkan fungsi tertenti
- Perlu dibedakan System API dan User API. System API call disediakan oleh dll sistem
- User API disediakan oleh software yang diinstal pengguna
- API call berbahaya, Anti-VM dan anti-debugger hook dan calls bisa diekstrak menggunakan tools analisa PE seperti PEframe
- API calls bisa juga diekstrak dengan PE parser
- PE Header adalah koleksi dari metadata terkait PE file
- Belum ada penelitian yang menjamin akurasi 100% pada deteksi malware.
- Metode menggunakan n-gram cenderung menggunakan set pemilihan fitur seperti tf-idf dan symetric uncertainty yang lebih cocok untuk similar sequence dalam jumlah besar
- Fitur berbasis PE32 cenderung menghasilkan entropy tinggi untuk klasifikasi; sehingga control-flow graph based dan gain ratio lebih cocok untuk task ini
- 4 fitur disarankan untuk klasifikasi; PE32 header, Byte n-gram, opcode n-gram dan API calls
- PE32 header diperoleh dari tools PE-Frame; Berikut beberapa fitur numerical dari pe32 header
- ShortInfo_Directories menjelaskan 16 data directory yang tersedia di PE; yang paling banyak digunakan adalah import, export, resource, debug, relocation
- ShortInfo_Xor menunjukan deteksi XOR obfuscation
- ShortInfo_DLL adalah sebuah flag binary atau apakah sebuah file executable atau dll
- shortInfo_fileSize adalah ukuran binary dalam bytes
- ShortInfo_Detected menampilkan teknik evading deteksi seperti hooks untuk disable execution in virtualized environment atau API calls mencurigakan
- ShortInfo_Sections adalah jumlah subsection pada header
- DigitalSignature berisi informasi tentang digital signature
- Packer mengnjukkan deteksi packer
- AntiDebug memberikan gambaran teknik untuk mencegah debugging process
- AntiVM digunakan untuk mencegak eksekusi pada VM
- SuspiciousAPI api mencurigakan
- SuspiciousSections seperti .rsrc \u0000 \u0000\u0000
- Url adalah beberapa alamat url pada binary
- Byte n-gram adalah sequence dari some items (dengan minimum length adalah 1
- Opcode-ngram: set instruksi yang dilakukan CPU bila binary dijalankan; pop, push, mov, add, sub