EDR逃逸的藝術:終端防禦規避技術全解

[美]馬特·漢德(Matt Hand)

  • EDR逃逸的藝術:終端防禦規避技術全解-preview-1
  • EDR逃逸的藝術:終端防禦規避技術全解-preview-2
EDR逃逸的藝術:終端防禦規避技術全解-preview-1

商品描述

端點檢測與響應(endpoint detection and response,EDR)是一種網絡安全技術,專註於監控、檢測和應對終端設備上的可疑活動。通過持續收集和分析端點行為數據,幫助組織及時發現潛在威脅,並提供調查和響應工具,以防止攻擊擴散和數據泄露。

本書聚焦 EDR 在 Windows 操作系統上的工作原理,圍繞 EDR 攻防展開,深入探討EDR 傳感器或用於收集特定類型數據的組件。本書共 13 章,具體內容包括 EDR 架構、函數掛鉤 DLL、進程與線程創建通知、對象通知、鏡像加載與註冊表通知、文件系統微篩選器驅動程序、網絡過濾驅動程序、Windows 事件追蹤、掃描器、反惡意軟件掃描接口、早期啟動反惡意軟件驅動程序、微軟 Windows 威脅情報,以及案例研究等。

本書適合對終端檢測技術感興趣,尤其是掌握基礎滲透測試技術、了解 Windows 內部機制和基礎知識的讀者閱讀。

作者簡介

馬特·漢德(Matt Hand)是資深的進攻型安全專家,專攻規避技術與漏洞研究,擅長

攻防演練的設計和執行。他的安全領域職業生涯是從一家小型托管公司的安全運營中心開始的。此後,他主要擔任紅隊工程師,主導針對全球多家頂級機構的攻擊演練。

目錄大綱

目錄

第 1 章 EDR 架構 1

11 EDR 的組件 1

111 代理 1

112 遙測數據 2

113 傳感器 3

114 檢測 3

12 規避 EDR 的挑戰 4

13 識別惡意活動 5

131 考慮上下文 5

132 脆弱檢測與魯棒檢測的應用 6

133 探索彈性檢測規則 7

14 代理設計 9

141 基礎設計 9

142 中級設計 10

143 高級設計 11

15 繞過類型 12

16 關聯規避技術:一次攻擊示例 13

17 總結 15

第 2 章 函數掛鉤 DLL 16

21 函數掛鉤的工作原理 16

211 使用 Microsoft Detours 實現掛鉤 18

目錄

2

212 註入 DLL 21

22 檢測函數掛鉤 22

23 規避函數掛鉤 24

231 直接系統調用 24

232 動態解析系統調用編號 27

233 重新映射 ntdlldll 28

24 總結 32

第 3 章 進程與線程創建通知 33

31 通知回調例程的工作原理 33

32 進程通知 34

321 註冊進程回調例程 35

322 查看系統上註冊的回調例程 36

323 收集進程創建信息 37

33 線程通知 39

331 註冊線程回調例程 39

332 檢測遠程線程創建 40

34 規避進程和線程創建回調 42

341 命令行篡改 42

342 偽造父進程 ID 46

343 進程鏡像修改 50

35 一個進程註入案例研究:fork&run 60

36 結論 62

第 4 章 對象通知 63

41 對象通知的工作原理 63

411 註冊新的回調 63

目錄

3

412 監視新的和重復的進程句柄請求 65

42 檢測 EDR 正在監視的對象 67

43 檢測驅動程序觸發後的行為 69

44 繞過認證攻擊中的對象回調 71

441 執行句柄竊取 72

442 競速回調例程 77

45 結論 82

第 5 章 鏡像加載與註冊表通知 83

51 鏡像加載通知的工作原理 83

511 註冊回調例程 83

512 查看系統上註冊的回調例程 84

513 收集鏡像加載信息 85

52 使用隧道工具規避鏡像加載通知 88

53 使用鏡像加載通知觸發 KAPC 註入 90

531 理解 KAPC 註入 90

532 獲取 DLL 加載函數指針 91

533 準備註入 92

534 創建 KAPC 結構體 93

535 APC 隊列 94

54 防止 KAPC 註入 95

55 註冊表通知的工作原理 96

551 註冊註冊表通知 98

552 緩解性能挑戰 100

56 規避註冊表回調 102

57 使用回調條目覆蓋規避 EDR 驅動程序 106

58 結論 107

目錄

4

第 6 章 文件系統微篩選器驅動程序 108

61 傳統過濾器和過濾器管理器 108

62 微篩選器架構 110

63 編寫微篩選器 113

631 開始註冊 113

632 定義前操作回調 115

633 定義後操作回調 118

634 定義可選回調 119

635 激活微篩選器 119

64 管理微篩選器 120

65 使用微篩選器檢測對手的戰術 121

651 文件檢測 121

652 命名管道檢測 122

66 規避微篩選器 124

661 卸載 124

662 預防 126

663 幹擾 127

67 結論 127

第 7 章 網絡過濾驅動程序 128

71 基於網絡與終端的監控 128

72 傳統網絡驅動接口規範驅動程序 130

73 Windows 過濾平臺 131

731 過濾引擎 132

732 過濾仲裁 132

733 回調驅動程序 133

74 使用網絡過濾器檢測對手的戰術 133

741 打開過濾引擎會話 134

目錄

5

742 註冊回調 134

743 將回調函數添加到過濾引擎 135

744 添加新過濾器對象 136

745 分配權重和子層 139

746 添加安全描述符 140

75 通過網絡過濾器檢測對手戰術 141

751 基礎網絡數據 142

752 元數據 144

753 層數據 145

76 繞過網絡過濾 146

77 小結 150

第 8 章 Windows 事件追蹤 151

81 架構 151

811 提供者 151

812 控制器 157

813 消費者 159

82 創建消費者以識別惡意的NET 程序集 159

821 創建追蹤會話 160

822 啟用提供者 162

823 啟動追蹤會話 164

824 停止追蹤會話 166

825 處理事件 167

826 測試消費者 175

83 規避基於 ETW 的檢測 175

831 補丁 176

832 配置修改 176

833 追蹤會話篡改 176

目錄

6

834 追蹤會話幹擾 177

84 繞過NET 消費者 177

85 結論 181

第 9 章 掃描器 182

91 防病毒掃描器簡史 182

92 掃描模式 183

921 按需掃描 183

922 按訪問掃描 184

93 規則集 185

94 案例研究:YARA 186

941 理解 YARA 規則 186

942 逆向工程規則 189

95 規避掃描器簽名 190

96 結論 193

第 10 章 反惡意軟件掃描接口 194

101 腳本惡意軟件的挑戰 194

102 AMSI 的工作原理 196

1021 探索 PowerShell 的 AMSI 實現 197

1022 理解 AMSI 的底層工作機制 200

1023 實現自定義 AMSI 提供者 205

103 規避 AMSI 209

1031 字符串混淆 209

1032 AMSI 修補 210

1033 無補丁 AMSI 繞過 211

104 結論 212

目錄

7

第 11 章 早期啟動反惡意軟件驅動程序 213

111 ELAM 驅動程序如何保護啟動過程 214

112 開發 ELAM 驅動程序 215

1121 註冊回調例程 215

1122 應用檢測邏輯 218

113 驅動程序示例:阻止 Mimidrv 加載 219

114 加載 ELAM 驅動程序 220

1141 簽署驅動程序 221

1142 設置加載順序 223

115 規避 ELAM 驅動程序 225

116 令人遺憾的現實 226

117 結論 227

第 12 章 微軟 Windows 威脅情報 228

121 對提供者進行逆向工程 228

1211 檢查提供者和事件是否已啟用 229

1212 確定觸發的事件 231

122 確定事件的來源 234

1221 使用 Neo4j 發現傳感器觸發點 235

1222 獲取可與 Neo4j 配合使用的數據集 236

1223 查看調用樹 237

123 消費 EtwTi 事件 240

1231 理解受保護進程 241

1232 創建受保護的進程 243

1233 處理事件 248

124 規避 EtwTi 249

1241 並存 249

1242 追蹤句柄覆蓋 249

目錄

8

125 結論 253

第 13 章 案例研究:面向檢測的攻擊 254

131 作戰規則 254

132 初始訪問 255

1321 編寫載荷 255

1322 傳遞載荷 257

1323 執行載荷 258

1324 建立命令與控制 259

1325 規避內存掃描 261

133 持久化 261

134 偵察 264

135 權限提升 266

1351 獲取頻繁用戶列表 266

1352 劫持文件處理器 267

136 橫向移動 274

1361 查找目標 274

1362 枚舉共享 275

137 文件外傳 278

138 結論 279