機器學習&惡意程式碼靜態檢測

魚與魚發表於2022-01-14

分析工具

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樣本中提取特徵?下面的方法

二進位制灰度圖

image-20220114101452430

參考[1]

然後將不同大小的圖片歸一化,作為後續演算法模型的輸入

位元組(熵)直方圖

統計0-255位元組的直方圖;

使用1024位元組長度,步長256的滑動視窗,每個視窗生成1024個位元組熵,實際是一個8*256大小的圖,將其變為16*16的,在變為256維的向量 [2]。

image-20220113101910678

字串資訊

使用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結構資訊

image-20220112161705284

利用ELF檔案的組成資訊,[3]用了383個特徵。

還有EMBER中提到的方法,例如匯入匯出表等[6]。

原始碼分析與OPcode

原始碼分析需要反彙編為彙編程式碼,使用大模型[4]

image-20220112163328133

opcode使用,示例如下,圖片來自[5]

image-20220112155502054

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

https://xz.aliyun.com/t/6705

【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

相關文章