靜態檢測技術:
優點:可以提供測試環境更安全、速度更快。
缺點:容易受到包裝器和惡意代碼混淆技術、部分反拆卸技術的影響,導致靜態方法無效。
主要方法:
n-gram字節代碼作為特征用於檢測野外惡意可執行文件;(n-g表達式是指n序列中相鄰的元素,而這些元素可以是字節、指令或其他信息軟件的功能)
挖掘windows中可執行文件的結構特征;
惡意軟件二進制文件可視化為灰度圖像,使用圖像處理技術可視化和分類惡意軟件;
從惡意軟件程序中提取結構信息作為屬性函數調用圖(Kong等人將樣本進行反匯編,並從匯編代碼中生成樣本的函數調用圖。對於每個函數,提取6種類型的特征。針對每一類特征,采用判別距離度量學習算法進行聚類,最后利用權值組合得到檢測模型。惡意代碼靜態方法容易受到包裝器和惡意代碼混淆技術的影響;部分反拆卸技術,導致靜態方法無效。)
動態檢測技術:
優點:可以提供測試環境更安全、速度更快。
缺點:容易受到包裝器和混淆技術的影響,在分析之前通常需要外殼解密,並進行標准化處理。
主要方法:
opcodes n-gram
API調用序列(Nair等人通過對[18]惡意代碼及其變體API調用序列進行動態分析,從這種惡意代碼中提取共享API調用短序列作為簽名,可以實現對同類惡意代碼的檢測。Chen和Fu[19]通過對惡意代碼的動態分析得到API調用序列,API調用短序列遍歷API調用具有相同的長度,然后將這些短序列放入向量中,作為惡意代碼的簽名。Firdausi等人[20]提出了一種動態行為惡意代碼檢測方法,該方法監控樣本的系統調用,然后將系統調用報告轉換為向量空間模型。該方法采用兩種特征提取方法:(1)用二進制0或1表示特征值;(2)用系統調用的頻率表示特征值。通過使用多種機器學習分類算法對兩種特征進行處理,使系統調用頻率特征表示取得稍好效果。Ahmed等人通過在動態API調用序列中挖掘時空信息來進行惡意代碼檢測。空間信息是指API調用的參數和返回值的統計,包括均值、方差、熵、最小值和最大值。時間信息是指API調用序列的傳輸概率。以上的動態檢測方法使用的是系統調用序列的固定長度,但是很難確定序列的短長度是否合理,即使是一個最優的長度值,也會丟失大量的語義信息,即另一個序列的長度)
由於惡意代碼需要實現自 身 的 功 能 需 要 借 助 操 作 系 統 提 供 的 API 完 成, 而 API的調用序列可以 表 示 惡 意 代 碼 的 行 為 以 及 涉 及 的 語 義 信息。API調用序列分為靜態和動態的調用序列,靜態調用序 列不需要運行程序的前提下獲得文件導入表或者反匯編文件中 的 API調用序列,動態調 用 序 列 即 需 要 在 虛 擬 機 運 行 程 序 中 利用調試等技術獲得 與 系 統 交 互 的 API調 用 序 列。獲 得 API 調用信息作為特征,使用分類算法進行檢測,最后達到了較高 的精度。然而,由於惡意 代 碼 會 隱 藏 導 入 表 API的 調 用,使 得無法獲得全部 API調用信息,最終導致靜態 API序列 作為 特征檢測惡意代碼的效率不高,但惡意代碼需要完成自身功能 及時隱藏導入表 API調用,也會與操作系統中的 API進 行 交 互,因此 Zhan gM[ 4]將 可 疑 文 件 置 於 虛 擬 機 中 運 行 動 態 獲 得 API序列,並計算 API序列 和 正 常 文 件 的 距 離 作 為 特 征 進 行 檢測。動態獲得 API調用 序列的特征進 行 檢 測 技 術 中,要 獲 得特征就必須運行惡意代碼,導致開銷過大,而對於某些能夠 檢測到虛擬機存在環境的病毒無能為力,並且一些惡意代碼采 用了相關行為層的混 淆 技 術,導 致 動 態 提 取 API調 用 序 列 失 敗。
圖(軟件控制流程圖、數據流程圖、系統調用圖,函數調用圖,然后通過相似性測量的檢測,數據挖掘和機器學習的方法來實現惡意代碼)(26 Karbalaie等人提出了一種基於調用圖的惡意代碼挖掘系統檢測方法;該方法首先將系統調用序列轉換為圖)
函數調用圖是編譯過程對程序中函數調用關系的一種靜態 描述,其中節點表示函數,邊表示函數之間的調用關系,由於 程序的功能性主要由庫函數和系統調用來決定,因此函數調用 圖能為程序的實際行為提供靜態的有效近似,是程序的結構化 表示形式,對於基於源碼或二進制碼的局部軟件變形具有魯棒 性,函數調用圖通 過 IDAPro 這 種 成 熟 的 交 互 式 反 匯 編 工 具 生成。
FCG捕獲程序的調用關系,其中的每個頂點代表一個本地函數。對於每個本地函數,我們首先將其轉換為中間語言,然后從中提取六種類型的屬性。它們包括操作碼(每個操作碼的出現頻率),API(調用每個庫API函數的次數),內存(在此函數中進行的內存讀寫操作次數),IO(數量) I / O讀寫操作),寄存器(每個寄存器的讀寫操作次數)和Flag(每個文件的更改次數)。於每種屬性類型,我們將其表示為與本地函數關聯的特征向量。
混合檢測技術
生物免疫檢測技術
提高分類准確率,降低FN,不增加負載。
2014 Drebin Effective and Explainable Detection of Android Malware in Your Pocket:
集合了很多特征,使用機器學習方法分類。
CCS(CA)-2014-Semantics-Aware Android Malware Classification Using Weighted Contextual API Dependency Graphs:
基於語義的,behavior graph,
Fan et al. - 2016 - Frequent Subgraph Based Familial Classification of Android Malware:
TDSC(JA)-2016-MADAM Effective and Efficient Behavior-based Android Malware Detection and Prevention:
看不懂a
DroidDetector: Android Malware Characterization and Detection Using Deep Learning
mali是介於Java代碼和Dalvik字節碼之間的一種中間語言。許多同學可能知道,編寫Android APP通常使用Java語言,Java編譯之后得到dex文件,給Dalvik虛擬機執行。在Android逆向時,為了更方便地對Dalvik字節碼進行理解或修改,引入了一種中間語言即Smali。Java代碼、Smali代碼、Dalvik字節碼的關系類似於C代碼、匯編代碼、機器碼的關系。 Smali語法十分簡單,易於理解,通常對APP的重打包修改也是在Smali語言的層面上進行。有關Smali語法的具體規則這里不做過多介紹,大家可自行搜索資料。我們可以使用smali、baksmali工具實現Smali代碼與dex文件的轉換。
在安全應用程序中注入惡意程 序 主要由以下步驟構成,第一步對其進行反匯編;第二步在 反匯編后的安全應用程序中注入惡意代碼,加入的應用程序的 功能和惡意攻擊的代碼的內容有關;第三步將被改寫過的安全應用程序重新打包並簽名。
要 提 取 函 數 調 用 圖 需 在 第 三 方 網 站 上 下 載 APK 文件,對 APK 文件進行解壓,META-INF 為存放簽名;信息文件res目 錄 存 放 資 源 文 件,classes.dex 是j ava 源 碼 編 譯后生成的j ava字節碼文 件,是 最 終 用 來 被 虛 擬 機 Dalvik 加 載和運行的可執行 Android 文件。對 classes.dex 文件反編譯, 根據反編譯的程序即可生成函數調用圖, 其中節點表示函數,邊表示函數之間的調用關系,有向邊 也稱弧,邊的始點稱為弧尾,終點稱為弧頭,一條弧表示弧尾 的節點函數調用弧頭的節點函數。
具有語法性的特征:考慮可執行程序的語法結構(限制較多,當前多使用具有語義性的特征)