分析工具
readelf
elfparser
ninja
GDB
IDAPro
Strings
python庫:pyelftools、lief
方法概述
資料/特徵 | 演算法模型 | 優點 | 缺點 |
---|---|---|---|
二進位制檔案 | byte-ngram [7]、malConv [8] | 不需要解析格式 | 序列超長,malconv卷積複雜度高 |
二進位制檔案 | 影像處理[1] | 不需要解析格式 | 檔案大小不同,影像大小不一致;加殼的資料分佈會被打亂 |
二進位制檔案 | 位元組(熵)直方圖[2] | 不需要解析格式 | |
字串資訊 | nlp | 獲取資訊方便 | 缺少很多資訊;資料格式亂 |
ELF結構資訊 | ML [3] [6] | 格式解析複雜;特徵工程多 | |
反彙編asm | 原始碼分析、opcode [4,5] | 貼近人讀資訊 | 需要反彙編 |
反彙編asm | FCG | 利用程式執行邏輯 | 需要反彙編;有難度 |
怎麼從原始elf樣本中提取特徵?下面的方法 |
二進位制灰度圖
參考[1]
然後將不同大小的圖片歸一化,作為後續演算法模型的輸入
位元組(熵)直方圖
統計0-255位元組的直方圖;
使用1024位元組長度,步長256的滑動視窗,每個視窗生成1024個位元組熵,實際是一個8*256大小的圖,將其變為16*16的,在變為256維的向量 [2]。
字串資訊
使用strings
命令掃描檔案,結合ascii碼之類
"__lseek64",
"__strndup",
"__gconv_modules_db",
", version ",
"expand_dynamic_string_token",
"pvalloc",
"_L_lock_4841",
"confstr",
"free_category",
"/etc/suid-debug",
"_IO_mem_sync",
"__pthread_rwlock_rdlock",
"__DTOR_LIST__",
"__strchrnul",
"__argz_stringify",
"pthread_cancel",
"__exit_funcs",
ELF結構資訊
利用ELF檔案的組成資訊,[3]用了383個特徵。
還有EMBER中提到的方法,例如匯入匯出表等[6]。
原始碼分析與OPcode
原始碼分析需要反彙編為彙編程式碼,使用大模型[4]
opcode使用,示例如下,圖片來自[5]
FCG
DeepCG、Asm2vec
references:
【1】Malware Images: Visualization and Automatic Classification. https://vision.ece.ucsb.edu/sites/vision.ece.ucsb.edu/files/publications/nataraj_vizsec_2011_paper.pdf
【2】Deep Neural Network Based Malware Detection Using Two Dimensional Binary Program Features. https://www.cse.fau.edu/~xqzhu/courses/cap6619/deep.neural.network.based.malware.detection.pdf
【3】ELF-Miner: using structural knowledge and data mining methods to detect new (Linux) malicious executables. https://link.springer.com/content/pdf/10.1007/s10115-011-0393-5.pdf
【4】PalmTree: Learning an Assembly Language Model for Instruction Embedding. https://dl.acm.org/doi/pdf/10.1145/3460120.3484587
【5】Detecting unknown malicious code by applying classification techniques on OpCode patterns. https://security-informatics.springeropen.com/track/pdf/10.1186/2190-8532-1-1.pdf
【6】EMBER: An Open Dataset for Training Static PE Malware Machine Learning Models. https://arxiv.org/pdf/1804.04637.pdf. https://github.com/elastic/ember.
【7】An Investigation of Byte N-Gram Features for Malware Classification. http://www.edwardraff.com/publications/investigation_byte_ngrams.pdf
【8】MalConv: Malware Detection by Eating a Whole EXE. https://aaai.org/ocs/index.php/WS/AAAIW18/paper/viewFile/16422/15577