《網(wǎng)絡(luò)滲透測試的藝術(shù)》對典型內(nèi)部網(wǎng)絡(luò)滲透測試(Internal Network Penetration Test,INPT)進(jìn)行了完整介紹。本書循序漸進(jìn)地介紹了進(jìn)行網(wǎng)絡(luò)滲透測試的方法,作者曾用這個方法為各種規(guī)模的公司進(jìn)行了數(shù)百次INPT。這本書并不是理論和思想的概念介紹,而更像是一本手冊,可以指導(dǎo)經(jīng)驗很少或沒有經(jīng)驗的讀者來完成整個INPT工作。
誰應(yīng)該讀這本書
本書主要為潛在的滲透測試人員及相關(guān)技術(shù)人員,即從事網(wǎng)絡(luò)系統(tǒng)、應(yīng)用程序和基礎(chǔ)設(shè)施的設(shè)計、開發(fā)或?qū)崿F(xiàn)工作的人員而編寫。
本書的結(jié)構(gòu)框架:內(nèi)容導(dǎo)讀
本書共分為四個階段,每一階段都與進(jìn)行典型INPT 四個階段中的一個階段相關(guān)聯(lián)。本書應(yīng)按照順序進(jìn)行閱讀,因為INPT 工作流的每個階段都建立在前一階段輸出的基礎(chǔ)上。
第1階段解釋INPT 的信息收集,該階段會讓你詳細(xì)理解目標(biāo)的攻擊面:
第2章介紹發(fā)現(xiàn)指定IP地址范圍內(nèi)網(wǎng)絡(luò)主機(jī)的過程。
第3章說明如何進(jìn)一步列舉在前一章中發(fā)現(xiàn)的主機(jī)上監(jiān)聽的網(wǎng)絡(luò)服務(wù)。
第4章涵蓋在網(wǎng)絡(luò)服務(wù)中識別身份驗證、配置和修補(bǔ)漏洞的幾種技術(shù)。
第2階段為集中滲透階段,你的目標(biāo)是通過使用前一階段識別的安全弱點(diǎn)或漏洞,獲得對受破壞的目標(biāo)未經(jīng)授權(quán)的訪問:
第5章展示如何攻擊多個易受攻擊的 Web應(yīng)用程序,特別是Jenkins和 ApacheTomcat。
第6章描述如何攻擊和滲透易受攻擊的數(shù)據(jù)庫服務(wù)器,并從非交互式 Shell中檢索敏感文件。
第7章探索如何利用 Microsoft安全更新的缺失和使用開源的 Metasploit meter- preter攻擊載荷。
第3階段是后漏洞利用和權(quán)限提升階段,這是攻擊者在攻擊易受攻擊的目標(biāo)后需要做的事情。本階段介紹三個主要概念維護(hù)可靠的重新訪問權(quán)、獲取憑證以及橫向移動到近可訪問的(二級)系統(tǒng):
第8章涵蓋基于 Windows系統(tǒng)的后漏洞利用。
第9章討論針對 Linux/UNIX目標(biāo)的各種后漏洞利用技術(shù)。
第10章介紹提升域管理員權(quán)限的過程和從 Windows域控制器中安全提取王冠的過程。
第4階段包括INPT 的清理和文檔部分:
第11章展示如何返回并從任務(wù)測試活動中刪除不必要的、潛在有害的工件。
第12章討論對于滲透測試,一個穩(wěn)定的可交付成果是由哪8個部分組成的。
有經(jīng)驗的滲透測試人員可能更喜歡跳轉(zhuǎn)到他們感興趣的特定部分進(jìn)行閱讀,例如Linux/UNIX后滲透測試或攻擊易受攻擊的數(shù)據(jù)庫服務(wù)器。但是,如果你是網(wǎng)絡(luò)滲透測試新手,則更應(yīng)從頭到尾依次閱讀這些章節(jié)。
關(guān)于代碼
本書包含大量的命令行輸出,包括編號清單和正常文本。在這兩種情況下,源代碼都采用固定寬度字體格式,以將其與普通文本分開。
本書示例代碼可從 Manning網(wǎng)站https://www.manning.com/books/the-art-of-network-penetration-testing下 載,也 可 從 GitHub網(wǎng)站https://github.com/R3dy/capsulecorp-pentest下載。
livebook論壇
購買《網(wǎng)絡(luò)滲透測試的藝術(shù)》這本書后,可以免費(fèi)訪問 Manning出版物運(yùn)營的私人網(wǎng)絡(luò)論壇,在論壇里你可以對該書發(fā)表評論、詢問技術(shù)問題并從作者和其他用戶那里獲得幫 助。論 壇 網(wǎng) 址:https://livebook.manning.com/#!/book/the-art-of-network-penetration-testing/discussion;也可以在https://livebook.manning.com/#!/dis-cussion上了解更多關(guān)于 Manning論壇和行為準(zhǔn)則的信息。
我叫 Royce Davis,是一名職業(yè)黑客、紅方人員、滲透測試人員、進(jìn)攻安全員我們在這個行業(yè)有很多名稱。在過去的十幾年里,我一直在為各行各業(yè)的客戶提供專業(yè)的對抗模擬服務(wù),這些客戶幾乎遍及你能夠想到的任何一個行業(yè)。在這段時間內(nèi),我一直非常清楚哪些服務(wù)公司對雇用專業(yè)黑客管理公司感興趣。當(dāng)然,我所說的服務(wù)是指內(nèi)部網(wǎng)絡(luò)滲透測試(Internal Network Penetration Test,INPT)。
INPT 是一項復(fù)雜的企業(yè)工作,用幾句話概括來說,就是攻擊者通過使用大量非常可信的技術(shù)設(shè)法獲得進(jìn)入公司辦公室的物理入口,不過這些技術(shù)并不在本書討論的范圍之內(nèi)。攻擊是如何進(jìn)行的呢? 攻擊者只配備了一臺裝有黑客工具的筆記本電腦,而且對公司的網(wǎng)絡(luò)基礎(chǔ)設(shè)施一無所知,因此他需要盡可能地滲透到公司的企業(yè)環(huán)境中。攻擊的目標(biāo)因工作與公司的不同而有所不同。不過,通常情況下,攻擊者獲得對網(wǎng)絡(luò)完全控制的全局控制場景大多是進(jìn)行INPT 的主要目標(biāo)。在我的職業(yè)生涯中,我為數(shù)百家公司做過數(shù)百次這樣的工作,這些公司包括只有一個IT 人員的小型企業(yè),也包括在各大洲都設(shè)有辦事處的《財富》十強(qiáng)企業(yè)集團(tuán)。
在工作中,讓我驚訝的是,無論這家公司規(guī)模或行業(yè)類別如何,從內(nèi)部接管公司網(wǎng)絡(luò)都是一個非常簡單的過程。不管目標(biāo)是南達(dá)科他州的銀行、加利福尼亞州的電子游戲公司、新加坡的化工廠,還是倫敦的客戶服務(wù)中心,所有網(wǎng)絡(luò)配置的方法大多有相似之處。雖然,各個組織之間的個人技術(shù)、硬件和應(yīng)用程序完全不同,但是應(yīng)用案例相同。
企業(yè)員工使用設(shè)備訪問集中式服務(wù)器,這些服務(wù)器承載著內(nèi)部文檔和應(yīng)用程序,員工使用憑證處理請求、交易、票據(jù)和信息等工作,終幫助運(yùn)營公司并為公司賺取利潤。作為攻擊者,無論我的目標(biāo)是什么,是識別網(wǎng)絡(luò)主機(jī)、列舉網(wǎng)絡(luò)主機(jī)的監(jiān)聽服務(wù)(它們的攻擊面),還是發(fā)現(xiàn)在這些系統(tǒng)的身份驗證、配置和補(bǔ)丁機(jī)制中的安全漏洞,我使用的方法都不會隨著工作內(nèi)容的改變而改變。
經(jīng)歷多年的INPT 工作之后,我決定記錄下執(zhí)行INPT 的方法,并提供一整套可操作的指導(dǎo)方針,讓那些剛剛接觸滲透測試的人可以循序漸進(jìn)地進(jìn)行適當(dāng)?shù)臐B透測試。我個人認(rèn)為,這樣的資料市面上還沒有,或者至少在我寫這本書的時候還不存在。
現(xiàn)在有許多專業(yè)培訓(xùn)機(jī)構(gòu)和認(rèn)證項目可以為學(xué)生提供各種各樣有價值的INPT 技巧。我曾經(jīng)雇用、培訓(xùn)過許多這樣的學(xué)生,但即使經(jīng)歷嚴(yán)格、權(quán)威的培訓(xùn),許多學(xué)生仍然不知道如何進(jìn)行滲透測試。也就是說,我不能對他們說:好,下星期一你可以去為客戶工作了,這是工作要求。因為我如果這樣做了,學(xué)生們就只會呆呆地看著我。
這本書給你的承諾很簡單:如果有人給你任務(wù),需要你針對具有成百上千計算機(jī)網(wǎng)絡(luò)滲透測試的藝術(shù)系統(tǒng)的真實網(wǎng)絡(luò)執(zhí)行滲透測試,而工作范圍多少都與典型INPT 的事例(后邊會講)一致,那么,即使你從未做過滲透測試,按照本書展示的步驟,也能夠完成任務(wù)的需求。
如果你是一名黑客,讀本書純粹是出于對這個主題的興趣,那么肯定會問這樣的問題:無線攻擊怎么辦?你怎么不介紹反病毒旁路?緩沖區(qū)、溢出區(qū)在哪里?等問題。然而,我想告訴你的是,在對抗模擬服務(wù)的專業(yè)領(lǐng)域中,公司雇用個人來執(zhí)行任務(wù)時,這種聽起來讓人興奮的、無約束限制的方法很少會被使用。
這是一本從開始到結(jié)束完整指導(dǎo)進(jìn)行INPT 的手冊。在這本書中,包含了所有職業(yè)滲透測試領(lǐng)域中常見的任務(wù)類型。
當(dāng)你讀完本書并完成實驗練習(xí)后,將會擁有一項技能很多公司為具有該技能的初級員工支付六位數(shù)的薪水。我個人認(rèn)為,這一領(lǐng)域的其他主題涵蓋的范圍太廣,所以每個主題只能用一章來描述。在本書中,你將高度專注于單一的任務(wù):接管企業(yè)網(wǎng)絡(luò)。我希望你已經(jīng)準(zhǔn)備好,因為你將學(xué)到很多東西。我認(rèn)為,當(dāng)你讀到后一章末尾時,你會驚訝于自己的能力。祝好運(yùn)!
Royce Davis
第1章 網(wǎng)絡(luò)滲透測試 1
1.1 企業(yè)數(shù)據(jù)泄露 2
1.2 黑客如何侵入2
1.2.1 防御者角色 2
1.2.2 攻擊者角色 3
1.3 對抗攻擊模擬:滲透測試 3
1.4 何時滲透測試無效 5
1.4.1 容易實現(xiàn)的目標(biāo) 5
1.4.2 公司什么時候真正需要滲透測試 6
1.5 執(zhí)行網(wǎng)絡(luò)滲透測試 6
1.5.1 第1階段:信息收集 7
1.5.2 第2階段:集中滲透 8
1.5.3 第3階段:漏洞利用和權(quán)限提升9
1.5.4 第4階段:文檔 10
1.6 設(shè)置實驗室環(huán)境 11
1.7 構(gòu)建自己的虛擬滲透測試平臺11
1.7.1 從 Linux開始 11
1.7.2 Ubuntu項目 12
1.7.3 為什么不使用滲透測試發(fā)行版 12
1.8 總 結(jié) 13
第1階段 信息收集
第2章 發(fā)現(xiàn)網(wǎng)絡(luò)主機(jī) 17
2.1 了解工作范圍 19
2.1.1 黑盒、白盒和灰盒測試范圍 19
2.1.2 Capsulecorp 20
2.1.3 設(shè)置 CapsulecorpPentest環(huán)境21
2.2 互聯(lián)網(wǎng)控制消息協(xié)議 21
2.2.1 使用ping命令 22
2.2.2 使用bashpingsweep掃描網(wǎng)絡(luò)范圍 24
2.2.3 使用ping命令的限制 26
2.3 使用 Nmap發(fā)現(xiàn)主機(jī) 26
2.3.1 主要輸出格式 28
2.3.2 使用遠(yuǎn)程管理接口端口29
2.3.3 提高 Nmap掃描性能 31
2.4 其他主機(jī)發(fā)現(xiàn)方法 32
2.4.1 DNS暴力破解 32
2.4.2 數(shù)據(jù)包捕獲和分析33
2.4.3 尋找子網(wǎng) 33
2.5 總 結(jié) 35
第3章 發(fā)現(xiàn)網(wǎng)絡(luò)服務(wù) 36
3.1 從攻擊者的角度了解網(wǎng)絡(luò)服務(wù) 36
3.1.1 了解網(wǎng)絡(luò)服務(wù)通信 38
3.1.2 識別監(jiān)聽網(wǎng)絡(luò)服務(wù) 39
3.1.3 網(wǎng)絡(luò)服務(wù)橫幅 39
3.2 使用 Nmap端口掃描 40
3.2.1 常用端口 41
3.2.2 掃描所有的65536個TCP端口 44
3.2.3 對 NSE腳本輸出進(jìn)行分類 45
3.3 用 Ruby解析 XML輸出 49
3.4 總 結(jié) 56
第4章 發(fā)現(xiàn)網(wǎng)絡(luò)漏洞 57
4.1 了解漏洞發(fā)現(xiàn) 58
4.2 發(fā)現(xiàn)補(bǔ)丁漏洞 59
4.3 發(fā)現(xiàn)身份驗證漏洞 62
4.3.1 創(chuàng)建一個客戶專用的密碼列表 63
4.3.2 暴力破解本地 Windows賬戶密碼 65
4.3.3 暴力破解 MSSQL和 MySQL數(shù)據(jù)庫密碼 67
4.3.4 暴力破解 VNC密碼 70
4.4 發(fā)現(xiàn)配置漏洞 72
4.4.1 設(shè)置 Webshot 73
4.4.2 分析 Webshot的輸出 74
4.4.3 手動猜測 Web服務(wù)器密碼 76
4.4.4 準(zhǔn)備集中滲透 78
4.5 總 結(jié) 78
第2階段 集中滲透
第5章 攻擊易受攻擊的 Web服務(wù) 81
5.1 理解第2階段:集中滲透 82
5.1.1 部署后門 WebShell 82
5.1.2 訪問遠(yuǎn)程管理服務(wù) 83
5.1.3 利用缺少的軟件補(bǔ)丁 83
5.2 獲得一個初步立足點(diǎn) 83
5.3 破壞一個易受攻擊的 Tomcat服務(wù)器 84
5.3.1 創(chuàng)建一個惡意的 WAR文件 85
5.3.2 部署 WAR文件 86
5.3.3 從瀏覽器訪問 WebShell 87
5.4 交互式Shell與非交互式Shell的對比88
5.5 提升到交互式Shell 89
5.5.1 備份sethc.exe 90
5.5.2 使用cacls.exe修改文件ACL 91
5.5.3 通過 RDP啟動粘滯鍵 92
5.6 破壞易受攻擊的Jenkins服務(wù)器 93
5.7 總 結(jié) 95
第6章 攻擊易受攻擊的數(shù)據(jù)庫服務(wù) 96
6.1 破壞 Microsoft SQL服務(wù)器 96
6.1.1 MSSQL存儲過程 98
6.1.2 使用 Metasploit枚舉 MSSQL服務(wù)器 98
6.1.3 啟用xp_cmdshell 100
6.1.4 使用xp_cmdshell運(yùn)行操作系統(tǒng)命令 102
6.2 竊取 Windows賬戶哈希密碼104
6.2.1 使用reg.exe復(fù)制注冊表hive105
6.2.2 下載注冊表 hive副本 107
6.3 使用creddump提取哈希密碼 109
6.4 總 結(jié) 111
第7章 攻擊未打補(bǔ)丁的服務(wù) 112
7.1 理解軟件漏洞利用 113
7.2 理解典型的漏洞利用生命周期 113
7.3 使用 Metasploit破壞 MS17-010 114
7.3.1 驗證缺少補(bǔ)丁 115
7.3.2 使用 ms17_010_psexecexploit模塊 117
7.4 MeterpreterShell負(fù)載 118
7.5 關(guān)于公共漏洞利用數(shù)據(jù)庫的注意事項 124
7.6 總 結(jié) 126
第3階段 后漏洞利用和權(quán)限提升
第8章 Windows后漏洞利用 129
8.1 基本的后漏洞利用目標(biāo) 129
8.1.1 維護(hù)可靠的重新訪問權(quán) 130
8.1.2 獲取憑證 130
8.1.3 橫向移動 130
8.2 使用 Meterpreter維護(hù)可靠的重新訪問權(quán) 131
8.3 使用 Mimikatz獲取憑證 134
8.4 獲取域緩存憑證 136
8.4.1 使用 MeterpreterPost模塊 137
8.4.2 使用JohntheRipper破解緩存憑證 138
8.4.3 與JohntheRipper一起使用字典文件 140
8.5 從文件系統(tǒng)中獲取憑證 141
8.6 使用哈希傳遞攻擊進(jìn)行橫向移動 143
8.6.1 使用 Metasploitsmb_login模塊 144
8.6.2 使用 CrackMapExec進(jìn)行哈希傳遞攻擊 146
8.7 總 結(jié) 148
第9章 Linux或 UNIX后漏洞利用 149
9.1 使用定時命令維護(hù)可靠的重新訪問權(quán) 150
9.1.1 創(chuàng)建SSH 密鑰對 151
9.1.2 啟用公鑰身份驗證 152
9.1.3 通過SSH 建立隧道 154
9.1.4 使用定時任務(wù)自動建立SSH 隧道 156
9.2 獲取憑證 157
9.2.1 從bash歷史記錄中獲取憑證 158
9.2.2 獲取哈希密碼 159
9.3 使用SUID二進(jìn)制文件提升權(quán)限 160
9.3.1 使用find命令查找SUID二進(jìn)制文件 161
9.3.2 在/etc/passwd中插入一個新用戶 163
9.4 傳遞SSH 密鑰 165
9.4.1 從受破壞的主機(jī)中竊取密鑰 165
9.4.2 使用 Metasploit掃描多個目標(biāo) 166
9.5 總 結(jié) 168
第10章 控制整個網(wǎng)絡(luò) 169
10.1 識別域管理員用戶賬號 171
10.1.1 使用net命令查詢活動目錄組171
10.1.2 查找已登錄的域管理員用戶 172
10.2 獲得域管理員權(quán)限 173
10.2.1 使用Incognito模擬登錄的用戶 175
10.2.2 使用 Mimikatz獲取明文憑證 176
10.3 ntds.dit文件和王國之鑰 177
10.3.1 繞過 VSS的限制 178
10.3.2 使用secretsdump.py提取所有哈希值 182
10.4 總 結(jié) 183
第4階段 INPT的清理和文檔
第11章 后期清理 187
11.1 終止活動的Shell連接 188
11.2 禁用本地用戶賬戶 189
11.3 從文件系統(tǒng)中刪除殘留文件190
11.3.1 刪除 Windows注冊表hive的副本 191
11.3.2 刪除SSH 密鑰對 191
11.3.3 刪除ntds.dit文件的副本 192
11.4 反轉(zhuǎn)配置更改 193
5網(wǎng)絡(luò)滲透測試的藝術(shù)
11.4.1 禁用 MSSQL存儲過程 193
11.4.2 禁用匿名文件共享 194
11.4.3 刪除定時任務(wù)條目 195
11.5 關(guān)閉后門 196
11.5.1 從 ApacheTomcat中取消部署 WAR文件 196
11.5.2 關(guān)閉粘滯鍵后門 197
11.5.3 卸載持久的 Meterpreter回調(diào) 198
11.6 總 結(jié) 199
第12章 撰寫一個穩(wěn)定的滲透測試可交付成果 200
12.1 穩(wěn)定的滲透測試可交付成果的8個部分 200
12.2 執(zhí)行摘要 202
12.3 工作方法 202
12.4 攻擊敘述 203
12.5 技術(shù)觀察 203
12.6 附 錄 206
12.6.1 嚴(yán)重程度定義 206
12.6.2 主機(jī)和服務(wù) 207
12.6.3 工具列表 207
12.6.4 其他參考文獻(xiàn) 208
12.7 收尾工作 208
12.8 現(xiàn)在怎么辦 209
12.9 總 結(jié) 210
附錄 A 構(gòu)建一個虛擬的滲透測試平臺 211
A.1 創(chuàng)建 Ubuntu虛擬機(jī) 211
A.2 其他操作系統(tǒng)依賴項 212
A.2.1 使用apt管理 Ubuntu包 212
A.2.2 安裝 CrackMapExec 213
A.2.3 自定義終端界面外觀 213
A.3 安裝 Nmap 213
A.3.1 NSE:Nmap腳本引擎 214
A.3.2 操作系統(tǒng)依賴項 215
A.3.3 從源代碼編譯和安裝 216
A.3.4 探索文檔 217
A.4 Ruby腳本語言 218
A.4.1 安裝 Ruby版本管理器 218
A.4.2 編寫必需的 Helloworld示例 219
A.5 Metasploit框架 222
A.5.1 操作系統(tǒng)依賴項 222
A.5.2 必要的 Rubygem 223
A.5.3 為 Metasploit安裝 PostgreSQL 224
A.5.4 瀏覽 msfconsole 226
附錄 B Linux基本命令 230
B.1 CLI命令 230
B.1.1 $cat 230
B.1.2 $cut 231
B.1.3 $grep 232
B.1.4 $sort和 wc 233
B.2 tmux … 234
B.2.1 使用tmux命令 235
B.2.2 保存tmux會話 235
附錄 C 創(chuàng)建 CapsulecorpPentest實驗室網(wǎng)絡(luò) 237
C.1 硬件和軟件要求 238
C.2 創(chuàng)建 Windows主服務(wù)器 240
C.2.1 Goku.capsulecorp.local 240
C.2.2 Gohan.capsulecorp.local 241
C.2.3 Vegeta.capsulecorp.local 241
C.2.4 Trunks.capsulecorp.local 241
C.2.5 Nappa.capsulecorp.local和 Tien.capsulecorp.local 242
C.2.6 Yamcha.capsulecorp.local和 Krillin.capsulecorp.local 242
C.3 創(chuàng)建 Linux服務(wù)器 242
附錄 D Capsulecorp內(nèi)部網(wǎng)絡(luò)滲透測試報告 243
D.1 執(zhí)行摘要 243
D.1.1 工作范圍 243
D.1.2 觀察總結(jié) 243
D.2 工作方法 244
7網(wǎng)絡(luò)滲透測試的藝術(shù)
D.2.1 信息收集 244
D.2.2 集中滲透 244
D.2.3 后漏洞利用和權(quán)限提升 244
D.2.4 文檔和清理 245
D.3 攻擊敘述 245
D.4 技術(shù)觀察 245
D.5 附錄1:嚴(yán)重程度定義 249
D.5.1 關(guān) 鍵 249
D.5.2 高 級 249
D.5.3 中 級 249
D.5.4 低 級 250
D.6 附錄2:主機(jī)和服務(wù) 250
D.7 附錄3:工具列表 254
D.8 附錄4:其他參考文獻(xiàn) 255
附錄 E 練習(xí)答案 256