-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
惡意軟件分析與檢測 版權信息
- ISBN:9787030513007
- 條形碼:9787030513007 ; 978-7-03-051300-7
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
惡意軟件分析與檢測 內容簡介
伴隨惡意代碼種類和數量的不斷增加,對惡意代碼分析方法提出更高要求,在傳統的特征碼檢測方法與啟發式檢測方法存在樣本分析成本過高、無法有效檢測未知惡意軟件等問題;新型基于機器學習的惡意軟件檢測方法能夠提高分析效率以及改善未知惡意軟件檢測性能,但存在軟件特征語義信息不明顯、特征數量龐大以及檢測模型過度依賴訓練樣本等缺點。另一方面,對于感染后宿主軟件中惡意注入代碼的局部識別方面,現有技術有較高的惡意代碼分析成本,且無法對未知感染的結果進行有效識別。本文重點以各類操作系統可執行代碼為研究對象,提出的新方法能夠在一定程度上解決惡意代碼分析中所需要的通用化要求,為降低惡意代碼分析成本、提高分析效率以及應對未知惡意代碼提供新的解決方案。
惡意軟件分析與檢測 目錄
《信息科學技術學術著作叢書》序
前言
第1章 二進制可執行文件簡介 1
1.1 Windows PE文件 1
1.1.1 PE文件結構 1
1.1.2 PE文件頭結構 3
1.1.3 PE導入表 6
1.1.4 PE資源表 7
1.1.5 PE地址變換 10
1.1.6 PE重定位機制 10
1.1.7 PE文件變形機制 12
1.2 Linux ELF文件 14
1.2.1 ELF結構 14
1.2.2 ELF頭結構 15
1.2.3 ELF節區 16
1.2.4 ELF字符串表 17
1.2.5 ELF符號表 18
1.2.6 ELF重定位機制 19
1.2.7 ELF動態鏈接機制 20
1.3 Android DEX文件 21
1.3.1 Android系統結構 22
1.3.2 Android DEX結構 25
1.3.3 Android ODEX結構 27
1.3.4 Android權限機制 27
參考文獻 29
第2章 惡意軟件檢測基礎 30
2.1 惡意軟件抽象理論 30
2.2 機器學習基礎 34
2.2.1 機器學習簡介 34
2.2.2 分類算法 36
2.2.3 集成學習 38
2.2.4 特征選擇與特征提取 43
2.2.5 性能評價 44
2.2.6 WEKA簡介 46
2.3 本章小結 47
參考文獻 48
第3章 加殼技術研究 50
3.1 引言 50
3.2 加殼原理 51
3.2.1 ELF文件的加載過程 51
3.2.2 加殼的方式 53
3.2.3 用戶空間下加載器的設計 56
3.3 反跟蹤技術 58
3.3.1 反調試技術 58
3.3.2 代碼混淆技術 61
3.3.3 抗反匯編技術 63
3.4 本章小結 65
參考文獻 66
第4章 加殼檢測研究 67
4.1 引言 67
4.2 加殼檢測常用方法 68
4.2.1 研究現狀 68
4.2.2 常用方法歸納 69
4.3 基于機器學習的加殼檢測框架 78
4.4 PE文件加殼檢測 81
4.4.1 PE文件特征提取 81
4.4.2 PE加殼檢測實驗及分析 83
4.5 ELF文件加殼檢測 84
4.5.1 ELF文件特征提取 84
4.5.2 ELF加殼檢測實驗及分析 85
4.6 本章小結 85
參考文獻 86
第5章 基于函數調用圖簽名的惡意軟件檢測方法 87
5.1 引言 87
5.2 相關工作 88
5.3 定義 91
5.4 圖同構算法 93
5.4.1 基于矩陣變換的圖同構算法 93
5.4.2 Ullmann圖同構算法 94
5.4.3 VF2圖同構算法 95
5.4.4 FCGiso圖同構算法 96
5.5 檢測方法框架 97
5.5.1 檢測方法概覽 97
5.5.2 檢測方法詳細描述 98
5.6 實驗 100
5.6.1 已知惡意軟件檢測 101
5.6.2 加殼變種檢測 104
5.6.3 惡意軟件變種檢測 105
5.6.4 惡意軟件大樣本歸類 106
5.6.5 與圖編輯距離方法的對比 107
5.7 實驗結果與分析 109
5.8 本章小結 111
參考文獻 111
第6章 基于挖掘格式信息的惡意軟件檢測方法 114
6.1 引言 114
6.2 相關工作 116
6.3 檢測架構 118
6.4 實驗 119
6.4.1 實驗樣本 119
6.4.2 特征提取 119
6.4.3 特征選擇 120
6.4.4 分類學習 121
6.5 實驗結果與分析 121
6.5.1 實驗1結果 121
6.5.2 實驗2結果 121
6.5.3 結果分析 122
6.5.4 特征分析 123
6.6 基于ELF格式結構信息的惡意軟件檢測方法 126
6.6.1 實驗樣本 127
6.6.2 提取特征 127
6.6.3 特征選擇 128
6.6.4 實驗結果 129
6.7 與現有靜態方法對比 130
6.8 本章小結 131
參考文獻 132
第7章 基于控制流結構體的惡意軟件檢測方法 133
7.1 引言 133
7.2 相關工作 134
7.3 操作碼序列構造原理 135
7.3.1 操作碼信息描述 136
7.3.2 操作碼序列劃分 137
7.4 特征選 擇140
7.5 惡意軟件檢測模型 143
7.6 實驗結果與分析 145
7.6.1 實驗環境介紹 145
7.6.2 特征數量比較 146
7.6.3 惡意軟件檢測性能比較 147
7.7 本章小結 150
參考文獻 151
第8章 基于控制流圖特征的惡意軟件檢測方法 152
8.1 引言 152
8.2 相關工作 152
8.3 軟件控制流圖 153
8.3.1 基于單條指令的控制流圖 154
8.3.2 基于指令序列的控制流圖 155
8.3.3 基于函數的控制流圖 155
8.3.4 基于系統調用的控制流圖 156
8.4 基于函數調用圖的軟件特征 157
8.4.1 函數調用圖構造 157
8.4.2 特征選擇 158
8.4.3 特征分析 162
8.5 語義特征和語法特征的比較 163
8.6 實驗結果與分析 164
8.6.1 函數調用圖中軟件特征評價 165
8.6.2 分類器交叉驗證 166
8.6.3 獨立驗證 167
8.7 本章小結 169
參考文獻 170
第9章 軟件局部惡意代碼識別研究 172
9.1 引言 172
9.2 相關工作 173
9.3 惡意代碼感染技術 175
9.3.1 修改程序控制流 175
9.3.2 惡意注入代碼存儲位置 177
9.4 惡意代碼段識別 178
9.4.1 控制流結構異常表現 179
9.4.2 控制流基本結構BasicBlock識別 179
9.4.3 BasicBlock之間的聯系 182
9.4.4 控制流基本結構合并 184
9.4.5 惡意代碼邊界識別 185
9.5 實驗結果與分析 186
9.5.1 添加代碼型感染方式的檢測 187
9.5.2 覆蓋代碼型感染方式的檢測 187
9.6 本章小結 189
參考文獻 190
第10章 基于多視集成學習的惡意軟件檢測方法 191
10.1 引言 191
10.2 相關工作 192
10.3 實驗概覽 195
10.4 實驗與結果 195
10.4.1 實驗樣本 195
10.4.2 單視特征提取 196
10.4.3 集成方案一 203
10.4.4 集成方案二 205
10.4.5 泛化性能對比 207
10.5 實驗結果對比分析 209
10.6 本章小結 211
參考文獻 212
第11章 基于動態變長Native API序列的惡意軟件檢測方法 214
11.1 引言 214
11.2 相關工作 215
11.3 Win32 API調用機制 219
11.4 檢測方法架構 220
11.5 實驗 221
11.5.1 實驗樣本 221
11.5.2 分析平臺搭建 221
11.5.3 特征提取和選擇 225
11.5.4 分類 226
11.6 實驗結果與分析 226
11.6.1 實驗結果分析 226
11.6.2 特征分析 229
11.7 本章小結 232
參考文獻 233
第12章 基于多特征的移動設備惡意代碼檢測方法 235
12.1 引言 235
12.2 相關工作 236
12.3 檢測模型設計 237
12.3.1 檢測模型整體框架 237
12.3.2 惡意代碼特征提取 238
12.4 實驗與分析 240
12.4.1 實驗樣本準備 240
12.4.2 實驗主要算法 240
12.4.3 實驗結果分析 242
12.4.4 實驗結論 243
12.5 本章小結 244
參考文獻 244
第13章 基于實際使用的權限組合與系統API的惡意軟件檢測方法 246
13.1 引言 246
13.2 相關工作 247
13.3 檢測架構 248
13.3.1 權限組合特征提取 249
13.3.2 系統API特征提取 252
13.4 實驗與分析 253
13.4.1 實驗樣本 253
13.4.2 實驗環境 254
13.4.3 實驗結果與分析 254
13.4.4 檢測方法對比 257
13.5 本章小結 260
參考文獻 260
第14章 基于敏感權限及其函數調用圖的惡意軟件檢測方法 262
14.1 引言 262
14.2 相關工作 263
14.3 檢測架構 264
14.3.1 提取敏感權限 265
14.3.2 構建函數調用圖 266
14.3.3 圖編輯距離算法 269
14.4 實驗與分析 271
14.4.1 實驗樣本 271
14.4.2 實驗環境 271
14.4.3 實驗結果與分析 272
14.4.4 檢測方法對比 274
14.5 本章小結 275
參考文獻 276
第15章 基于頻繁子圖挖掘的異常入侵檢測新方法 277
15.1 引言 277
15.2 相關工作 279
15.3 基本思想及檢測模型 281
15.4 特征模式構造算法 282
15.4.1 相關概念與定義 282
15.4.2 數據預處理 283
15.4.3 子圖特征值設定 285
15.4.4 子圖擴展與剪枝 285
15.4.5 PatternsMining算法實現 286
15.5 實驗數據描述 290
15.6 實驗結果與分析 290
15.7 本章小結 293
參考文獻 294
惡意軟件分析與檢測 節選
第1章 二進制可執行文件簡介 可執行文件作為操作系統*重要的文件類型之一,是功能操作的真正執行者。操作系統支持的可執行文件格式與操作系統的文件加載機制密切相關,不同的操作系統支持不同格式的可執行文件,而可執行文件的格式決定了可執行文件的大小、運行速度、資源占用、擴展性、移植性等文件的重要特性。 對可執行文件結構及相關技術的研究是病毒研究的基礎,因為病毒程序的執行必將直接或者間接地依賴于可執行文件。本章簡要介紹Windows操作系統、Linux操作系統、Android操作系統的可執行文件格式及相關技術。 1.1 Windows PE文件 微軟Win32環境可執行文件的標準格式是PE(portable executable)文件,其目標是為所有Windows平臺設計統一的文件格式,即為Windows平臺的應用軟件提供良好的兼容性、擴展性[1]。微軟自Windows NT3.1首次引入PE文件格式以來,后續操作系統結構變化、新特性添加、文件存儲格式轉換等都沒有影響PE文件格式。Window下常見的EXE、DLL、OCX、SYS、COM等多種文件類型都屬于PE文件格式。 1.1.1 PE文件結構 PE文件結構是Windows操作系統管理可執行文件的代碼、數據及其相關資源的數據組織方式。從資源存儲角度來看,PE文件使用一個平面地址空間,將所有代碼、數據合并在一起組成一個大結構。從文件結構來看,PE文件由文件頭部和文件體組成,文件頭部包含文件的結構、屬性等信息,如該文件支持的操作系統、程序的入口地址等;文件體包含代碼、數據及相關資源等。 為了管理可執行文件的資源,PE文件從兩個維度來對數據資源進行規范管理:其一是數據類型,主要按照數據功能對數據進行集中管理,如將數據資源劃分為導入表、資源表等;其二是數據屬性,不同的數據需要不同的訪問權限,即代碼的只讀、只寫、可讀、可寫等屬性,如代碼數據在運行時不允許修改,而數據段數據允許讀寫等。如何方便地查找資源、實現資源定位是資源管理面臨的另一個重要問題。PE文件數據資源定位采用鏈表與固定格式相結合的方式,前者利用鏈表管理資源,資源的具體位置靈活,后者要求數據結構大小固定,其位置也相對固定。典型的PE文件結構如圖1.1所示。 圖1.1 PE文件結構 1.MS-DOS結構 PE文件引入初期,為兼容DOS操作系統,設計了4字節的MS-DOS可執行文件體。PE文件MS-DOS頭部的數據結構如下: e_magic(魔幻數)字段是DOS文件的標志,其值固定為0x5A4D,對應的字符串為“MZ”,是DOS操作系統設計者的名字縮寫; e_lfanew字段是一個4字節的文件偏移量,代表PE文件頭的偏移地址,PE文件頭部利用此字段來定位。 2.PE結構 PE結構是PE文件的主體,實現對PE文件所有代碼、數據信息的存儲、管理,在PE文件布局中DOS節以外的部分都屬于PE結構。 PE文件采用節作為存放代碼或數據的基本單元,PE文件常用的節有代碼節(.text)、數據節(.data)、資源節(.rsrc)等。節是一個沒有大小限制的連續結構,可以存放不同的數據類型(如代碼、數據、資源等),每一個節都有獨立的訪問權限,文件的內容被分割為不同的節,各節按頁邊界來對齊,相同屬性的文件內容必須放到同一個節中,節的名字僅用于節標識。 節的管理使用節表技術實現,節表是節的索引目錄,包含節名及節內容的位置指針,節表內部按照順序依次對齊排列,節表中節內容的位置指針指向真實的節。節表總尺寸=每個節表的尺寸×節的數目,其中每個節的描述信息長度固定40個字節,而節的個數是不確定的,*小取值為1,且節的數目必須與PE文件頭中IMAGE_FILE_HEADER數據結構中的NumberOfSections一致。 1.1.2 PE文件頭結構 PE文件頭結構是PE文件*重要的結構之一,由PE頭標識(Signature)、標準PE頭(IMAGE_FILE_HEADER)和擴展PE頭(IMAGE_OPTIONAL_HEADER32)三部分組成[1]。從數據結構的角度來看,PE文件結構如圖1.2所示。 圖1.2PE文件結構圖(數據結構視角) 1.IMAGE_NT_HEADERS數據結構 Signature字段與MS-DOS頭中的魔幻數(e_magic)功能類似,是PE文件的標識,該字段的高16位為0,低16位為固定的值0x4550,對應的字符為“PE”,完整的Signature值為“PE\\0\\0”。 IMAGE_FILE_HEADER類型的FileHeader字段代表PE文件基本信息和屬性,即本字段描述了PE文件的概貌。PE文件加載時會用本字段的屬性來檢查當前的運行環境,如果不一致則會終止加載PE文件。IMAGE_OPTIONAL_HEADER32類型的OptionalHeader字段包含PE文件基本信息外的其他信息(如代碼段、數據段的基準位置、數據目錄等),本字段在Object文件(編譯中間文件)無具體內容。 對PE文件頭的數據結構有了整體認識后,接下來詳細介紹PE文件頭中的具體細節,主要是PE文件頭中兩個主要的數據結構IMAGE_FILE_HEADER、IMAGE_OPTIONAL_HEADER32的詳細信息。 說明:數據結構均來自Microsoft官方的WINNT.H,本章只給出重要的字段,針對各字段側重于功能說明,具體的字段取值信息請參考官方手冊[2]。 2.標準PE頭(IMAGE_FILE_HEADER) 標準PE頭的概要數據結構如下: Machine字段代表PE文件支持的CPU類型,PE文件的設計初衷是兼容主流的CPU型號。不同CPU的指令集是不相同的,不同平臺編譯的可執行文件依賴的運行硬件環境由此字段確定,如此字段取值為0x14C,代表PE文件支持的CPU類型是Intel 386及其后續兼容處理器。 NumberOfSections字段記錄當前PE文件中節的數目,必須與節表中節的數目一致,如節表中新增或刪除節的數據,此字段的值要同步更改,本字段的取值范圍是1~96。 Characteristics字段用字節的位表示文件屬性,包括兩個字節共16位,每一位的不同取值代表一種屬性,多種屬性可以通過“或運算”形成屬性組合,如可執行文件默認值是0x102H對應的二進制為(0000000100000010),DLL文件默認值是0x210EH。 3.擴展PE頭(IMAGE_OPTIONAL_HEADER) 擴展PE頭的概要數據結構如下: Magic字段表示文件的類型,字段值為0x10B表示PE文件,值為0x107表示ROM鏡像文件,值為0x20B表示64位的PE文件。 AddressOfEntryPoint字段表示PE文件的入口點,對可執行程序映像代表啟動地址,對設備驅動程序代表初始化函數的地址。 BaseOfCode字段表示內存中代碼節的起始位置相對于映像基址的偏移地址,即代碼節的相對虛擬內存地址(relative virtual address,RVA)。 ImageBase字段表示PE加載映像到內存的基地址,必須為64K的整數倍,不同類型的PE文件有不同的基地址,DLL文件的基地址默認值是0x10000000,EXE文件的基地址默認值是0x00400000。 Subsystem字段表示系統為程序建立初始界面的方式,不同的取值對應不同的應用程序界面,如字段取值為IMAGE_SUBSYSTEM_WINDOWS_CUI表示系統自動為程序創建控制臺窗口。 DataDirectory字段是16個數據目錄(IMAGE_DATA_DIRECTORY)字段組成的數組,管理多種資源的偏移位置及大小,管理的資源包括導出表、導入表、資源、重定位表等。數據目錄(IMAGE_DATA_DIRECTORY)數據結構定義如下: VirtualAddress記錄了各個數據項的起始RVA(對于某些不需要加載到內存的數據,記錄的是文件偏移地址),Size記錄了數據項的長度。 1.1.3 PE導入表 PE導入表包含PE文件調用外部函數名稱、在動態鏈接庫(DLL)中的存放位置等信息,Windows操作系統使用導入表信息實現PE文件動態鏈接庫的加載及重定位,Windows程序員常用的DLL函數調用就依賴于PE文件的導入表機制。 1.PE導入表的位置索引 PE頭結構中IMAGE_OPTIONAL_HEADER32結構體的DataDirectory的值對應PE導入表偏移位置(virtual address)及大小(size),利用該偏移位置可定位PE導入表。 2.PE導入表及其關聯結構 導入表(IMAGE_DIRECTORY_ENTRY_IMPORT):PE文件加載過程中根據本表內容加載依賴的DLL,并填充相關函數的地址。 綁定導入表(IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT):PE文件加載前對導入地址進行修正——解決地址沖突,PE加載機制不再處理地址沖突,這對多個DLL或者函數的加載會顯著提高效率。 延遲導入表(IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT):PE文件需導入多個DLL,程序初始化并不加載所有DLL,程序訪問到某個外部函數才加載對應的DLL及函數的地址修正。 導入地址表(IMAGE_DIRECTORY_ENTRY_IAT):前三個表是對導入函數的描述,本表存放相關函數的地址。 3.PE導入表的工作原理 導入表的基本結構(IMAGE_IMPORT_DESCRIPTOR)對導入函數的名字、地址等基本信息進行全面描述,一個DLL文件對應一個基本結構。導入表是由基
- >
我從未如此眷戀人間
- >
莉莉和章魚
- >
羅庸西南聯大授課錄
- >
【精裝繪本】畫給孩子的中國神話
- >
小考拉的故事-套裝共3冊
- >
自卑與超越
- >
中國人在烏蘇里邊疆區:歷史與人類學概述
- >
詩經-先民的歌唱