本書從內(nèi)網(wǎng)滲透測試紅隊的角度,由淺入深,全面、系統(tǒng)地討論了常見的內(nèi)網(wǎng)攻擊手段和相應的防御方法,力求語言通俗易懂、示例簡單明了,以便讀者領(lǐng)會。同時,本書結(jié)合具體案例進行講解,可以讓讀者身臨其境,快速了解和掌握主流的內(nèi)網(wǎng)滲透測試技巧。閱讀本書不要求讀者具備滲透測試的相關(guān)背景知識。如果讀者有相關(guān)經(jīng)驗,會對理解本書內(nèi)容有一定幫助。本書可作為大專院校網(wǎng)絡安全專業(yè)的教材。
徐焱,北京交通大學安全研究員,MS08067安全實驗室創(chuàng)始人,多年來一直從事網(wǎng)絡安全培訓領(lǐng)域工作。已出版《Web安全攻防:滲透測試實戰(zhàn)指南》《內(nèi)網(wǎng)安全攻防:滲透測試實戰(zhàn)指南》《Python安全攻防:滲透測試實戰(zhàn)指南》《JAVA代碼審計(入門篇)》等書籍。
第1章 內(nèi)網(wǎng)滲透測試基礎 1
1.1 內(nèi)網(wǎng)基礎知識 1
1.1.1 域 1
1.1.2 LDAP 4
1.1.3 活動目錄 5
1.1.4 域控制器和活動目錄的區(qū)別 5
1.1.5 域內(nèi)權(quán)限 6
1.2 企業(yè)內(nèi)網(wǎng)架構(gòu) 9
1.2.1 企業(yè)內(nèi)網(wǎng)概述 9
1.2.2 內(nèi)網(wǎng)基礎設施 10
1.2.3 云服務 12
1.3 常規(guī)攻擊路徑分析 13
1.3.1 網(wǎng)絡區(qū)域環(huán)境分析 13
1.3.2 內(nèi)網(wǎng)常規(guī)攻擊路徑分析 14
1.4 常用工具 16
1.4.1 Cobalt Strike 16
1.4.2 Windows PowerShell 18
1.4.3 PowerShell Empire 24
1.5 常用防御方法 26
1.5.1 常用網(wǎng)絡安全防御技術(shù) 26
1.5.2 常用網(wǎng)絡安全防御產(chǎn)品 27
第2章 內(nèi)網(wǎng)信息收集 29
2.1 枚舉發(fā)現(xiàn) 29
2.2 主機發(fā)現(xiàn)與端口枚舉 29
2.2.1 Nmap主機發(fā)現(xiàn) 29
2.2.2 Nmap端口枚舉 30
2.3 賬戶發(fā)現(xiàn)方法分析 32
2.3.1 本地賬戶發(fā)現(xiàn)分析 32
2.3.2 域賬戶發(fā)現(xiàn)分析 34
2.3.3 郵件賬戶發(fā)現(xiàn)分析 35
2.3.4 云賬戶發(fā)現(xiàn)分析 37
2.3.5 賬戶發(fā)現(xiàn)的防御方法 38
2.4 COM對象枚舉方法分析 39
2.4.1 COM對象簡介 39
2.4.2 創(chuàng)建COM對象 39
2.4.3 枚舉COM對象 43
2.4.4 COM對象枚舉系統(tǒng)信息 46
2.5 域信息收集方法分析 47
2.5.1 Nmap的NSE腳本 47
2.5.2 利用PowerView收集域信息 48
2.6 域控制器信息收集方法分析 50
2.6.1 從個人計算機定位域控制器 50
2.6.2 基于NetBIOS收集域控制器信息 51
2.6.3 基于LDAP收集域控制器信息 53
2.7 內(nèi)網(wǎng)敏感數(shù)據(jù)發(fā)現(xiàn)方法分析 57
2.7.1 定位內(nèi)網(wǎng)資料、數(shù)據(jù)、文件 57
2.7.2 獲取人事組織結(jié)構(gòu)信息 57
2.7.3 枚舉核心業(yè)務機器及敏感信息 59
2.7.4 快速定位相關(guān)人員使用的計算機 59
2.7.5 獲取個人計算機操作系統(tǒng)相關(guān)信息 62
2.7.6 獲取個人計算機網(wǎng)絡配置相關(guān)信息 64
2.7.7 獲取遠程管理軟件保存的憑據(jù) 66
2.7.8 獲取個人計算機瀏覽器敏感信息 75
2.7.9 收集應用與文件形式的信息 78
2.7.10 破解密碼保護文件 80
2.7.11 發(fā)現(xiàn)內(nèi)網(wǎng)郵件賬戶 85
2.7.12 內(nèi)網(wǎng)敏感信息的防護方法 85
第3章 隱藏通信隧道技術(shù) 87
3.1 快速尋找可用于構(gòu)建出網(wǎng)通信隧道的計算機 87
3.1.1 可用于構(gòu)建出網(wǎng)通信隧道的協(xié)議 87
3.1.2 可用于構(gòu)建出網(wǎng)通信隧道的計算機 91
3.1.3 批量探測可以出網(wǎng)的計算機 92
3.2 常用隧道穿透技術(shù)分析 92
3.2.1 Netsh 93
3.2.2 frp 94
3.2.3 利用CertUtil下載 96
3.3 多級跳板技術(shù)分析 97
3.3.1 攻擊者直連內(nèi)網(wǎng)的后果 97
3.3.2 多級跳板技術(shù) 98
3.3.3 三級跳板技術(shù) 98
3.4 通信隧道非法使用的防范 99
第4章 權(quán)限提升漏洞分析及防御 101
4.1 Linux權(quán)限提升漏洞分析及防范 101
4.1.1 內(nèi)核漏洞提權(quán)分析 102
4.1.2 使用linux-exploit-suggester排查內(nèi)核漏洞 102
4.1.3 sudo提權(quán)漏洞分析 104
4.1.4 SUID提權(quán)漏洞分析 104
4.1.5 GTFOBins與權(quán)限提升 106
4.1.6 Linux權(quán)限提升漏洞的防范建議 107
4.2 利用MS14-068漏洞實現(xiàn)權(quán)限提升及防范 107
4.2.1 MS14-068漏洞說明 108
4.2.2 MS14-068漏洞利用條件 108
4.2.3 MS14-068漏洞利用方式 108
4.2.4 MS14-068漏洞的防范建議 111
4.3 GPP權(quán)限提升漏洞分析及防范 111
4.3.1 GPP基礎知識 111
4.3.2 GPP提權(quán)技術(shù)思路 115
4.3.3 GPP權(quán)限提升漏洞的防范建議 116
4.4 繞過UAC提權(quán)漏洞分析及防范 117
4.4.1 UAC簡介 117
4.4.2 使用白名單程序繞過UAC 118
4.4.3 使用COM組件繞過UAC 120
4.4.4 UACME的使用 121
4.4.5 繞過UAC提權(quán)漏洞的防范建議 121
4.5 令牌竊取提權(quán)漏洞分析及防范 122
4.5.1 令牌竊取模塊 122
4.5.2 pipePotato本地提權(quán)分析 123
4.5.3 令牌竊取提權(quán)漏洞的防范建議 124
4.6 SQL Server數(shù)據(jù)庫提權(quán)分析及防范 124
4.6.1 SQL Server數(shù)據(jù)庫的提權(quán)的相關(guān)概念 124
4.6.2 SQL Server提權(quán)分析 125
4.6.3 域環(huán)境中的MSSQL枚舉 127
4.6.4 域環(huán)境中的MSSQL認證 128
4.6.5 UNC路徑注入分析 129
4.6.6 哈希轉(zhuǎn)發(fā)分析 133
4.6.7 利用MSSQL模擬提權(quán)分析 135
4.6.8 利用Linked SQL Server提權(quán)分析 140
4.6.9 SQL Server數(shù)據(jù)庫提權(quán)漏洞的防范建議 146
4.7 DLL劫持提權(quán)分析及防范 146
4.7.1 DLL劫持原理 147
4.7.2 編寫測試DLL程序 147
4.7.3 手動挖掘DLL劫持漏洞 149
4.7.4 使用DLLHSC自動挖掘DLL劫持漏洞 150
4.7.5 DLL劫持漏洞的防范建議 151
第5章 域內(nèi)橫向移動分析及防御 153
5.1 Windows本地認證明文密碼和散列值的獲取 153
5.1.1 Windows本地密碼認證流程 153
5.1.2 通過轉(zhuǎn)儲lsass.exe獲取登錄密碼 154
5.1.3 通過SAM文件獲取用戶名和密碼散列值 159
5.1.4 破解密碼散列值 163
5.2 利用明文密碼遠程登錄其他域的主機 170
5.2.1 IPC遠程登錄概述 170
5.2.2 使用Windows自帶的命令獲取遠程主機的信息 172
5.2.3 使用計劃任務 173
5.3 通過哈希傳遞攻擊進行橫向移動 175
5.3.1 哈希傳遞攻擊概述 175
5.3.2 通過哈希傳遞攻擊進行橫向移動 175
5.3.3 哈希傳遞攻擊實驗 176
5.3.4 哈希傳遞攻擊的防范 178
5.4 在遠程計算機上執(zhí)行程序 179
5.4.1 實驗環(huán)境 179
5.4.2 使用at命令 181
5.4.3 使用schtasks命令 181
5.4.4 使用PsExec 182
5.4.5 使用wmiexec.vbs 182
5.4.6 使用DCOM 183
5.5 在遠程計算機上運行代碼 185
5.5.1 基于CMSTP運行代碼 185
5.5.2 基于Compiler運行代碼 188
5.5.3 基于Control運行代碼 191
5.5.4 基于csc運行代碼 193
5.5.5 基于資源管理器運行代碼 196
5.5.6 基于Forfiles運行代碼 197
5.5.7 基于MSBuild運行代碼 198
5.5.8 運行惡意代碼的檢測與防范方法 200
5.6 票據(jù)傳遞攻擊 201
5.6.1 通過MS14-068漏洞進行橫向移動 201
5.6.2 使用黃金票據(jù) 202
5.6.3 使用白銀票據(jù) 204
5.7 利用系統(tǒng)漏洞進行橫向移動 206
5.7.1 MS17-010漏洞 206
5.7.2 CVE-2020-17144漏洞 211
5.8 域內(nèi)橫向移動攻擊防范建議 215
5.8.1 通用安全措施 216
5.8.2 防止密碼被竊取 217
5.8.3 內(nèi)網(wǎng)安全流量檢測 218
第6章 域控制器安全 220
6.1 域控制器滲透測試流程 220
6.1.1 實驗環(huán)境 220
6.1.2 實驗網(wǎng)絡及設備部署和配置 221
6.1.3 內(nèi)網(wǎng)相關(guān)知識梳理 223
6.1.4 滲透測試思路 223
6.2 ZeroLogon漏洞分析 228
6.2.1 ZeroLogon漏洞概述 228
6.2.2 實驗環(huán)境 229
6.2.3 ZeroLogon漏洞利用過程分析 229
6.2.4 ZeroLogon漏洞防范建議 232
6.3 獲取域內(nèi)用戶名和密碼散列值 233
6.3.1 提取ntds.dit文件并導出用戶名和密碼散列值 233
6.3.2 利用DCSync獲取域內(nèi)所有用戶的密碼散列值 239
6.4 域控制器安全防范建議 240
6.4.1 物理環(huán)境安全 241
6.4.2 通信網(wǎng)絡安全 242
6.4.3 主機設備安全 244
6.4.4 應用數(shù)據(jù)安全 247
第7章 跨域攻擊分析及防御 249
7.1 跨森林攻擊 249
7.1.1 森林信任概述 249
7.1.2 跨森林枚舉 250
7.1.3 利用Extra SID進入其他森林 253
7.1.4 利用Linked SQL Server進入其他森林 257
7.1.5 跨森林Kerberoast攻擊 261
7.1.6 利用外部安全主體 262
7.1.7 利用ACL 263
7.2 單個森林漏洞利用 265
7.2.1 PetitPotam利用 266
7.2.2 ProxyNotShell利用 269
7.2.3 NotProxyShell利用 271
7.3 單個森林權(quán)限濫用 273
7.3.1 Backup Operators組濫用 273
7.3.2 LAPS濫用 275
7.3.3 域共享權(quán)限濫用 277
7.3.4 Exchange權(quán)限濫用 279
7.3.5 組策略對象權(quán)限濫用 282
7.4 跨域攻擊的防范 284
第8章 權(quán)限維持分析及防御 286
8.1 啟動項、系統(tǒng)服務后門分析及防范 286
8.1.1 注冊表啟動項后門分析 286
8.1.2 隱藏計劃任務 287
8.1.3 粘滯鍵后門分析 291
8.1.4 bitsadmin后門分析 292
8.1.5 映像劫持后門分析 293
8.1.6 PowerShell Profile 294
8.1.7 隱藏服務 297
8.1.8 登錄腳本 300
8.2 利用黃金票據(jù)或白銀票據(jù)實現(xiàn)權(quán)限維持及其防范 302
8.2.1 Kerberos認證協(xié)議原理概述 302
8.2.2 黃金票據(jù) 303
8.2.3 白銀票據(jù) 308
8.3 利用活動目錄證書服務實現(xiàn)權(quán)限維持及其防范 312
8.4 利用密碼轉(zhuǎn)儲實現(xiàn)權(quán)限維持及其防范 317
8.4.1 瀏覽器密碼轉(zhuǎn)儲分析 317
8.4.2 剪貼板記錄提取與鍵盤記錄獲取分析 319
8.4.3 Linux憑據(jù)轉(zhuǎn)儲分析 322
8.4.4 Windows密碼轉(zhuǎn)儲分析 323
8.4.5 NirSoft密碼轉(zhuǎn)儲平臺 325
8.5 常用Nishang腳本后門分析及防范 329
8.5.1 常用Nishang腳本 329
8.5.2 Nishang腳本后門防范 330
8.6 Linux權(quán)限維持分析及防范 331
8.6.1 通過SSH免密登錄實現(xiàn)權(quán)限維持 331
8.6.2 crontab計劃任務 333
8.6.3 軟鏈接權(quán)限維持分析 333
8.6.4 systemd服務后門分析 334
8.6.5 Linux rootkit 335
8.7 使用VC++開發(fā)后門程序 340
8.7.1 通過Socket編程實現(xiàn)控制端和被控制端的網(wǎng)絡連接 341
8.7.2 反彈端口的技術(shù)原理及編程實現(xiàn) 343
8.7.3 利用注冊表鍵Run實現(xiàn)自啟動 345
8.7.4 后門自刪除的技術(shù)實現(xiàn) 347
8.7.5 關(guān)機和重啟功能的技術(shù)實現(xiàn) 348
8.8 防御規(guī)避和反防御規(guī)避 349
8.8.1 訪問令牌操作 349
8.8.2 混淆文件或信息 350
8.8.3 反防御規(guī)避技術(shù) 350