一個(gè)新手試圖通過打開和關(guān)閉電源的方式修復(fù)損壞的 Lisp 機(jī)器。Knight 當(dāng)時(shí)看到了學(xué)生所作所為,嚴(yán)厲地說:“你不能只通過切斷電源來修理機(jī)器,但是不知道問題出在哪里!
Knight 關(guān)閉了機(jī)器,然后重新啟動(dòng)。機(jī)器就正常工作了。
——AI Koan
在過去的半個(gè)世紀(jì)中,麻省理工學(xué)院(MIT)是在學(xué)習(xí)和創(chuàng)造方面具有深厚黑客文化底蘊(yùn)的地方之一,特別是它的人工智能實(shí)驗(yàn)室。麻省理工學(xué)院的黑客形成了一種獨(dú)特的語言文化,創(chuàng)造了一些特殊的術(shù)語和幽默感。前面引用的是一個(gè) AI 公案,模仿自禪宗的公案,旨在激發(fā)心智,使人頓悟。順便提一下,上文中的 Knight 指的是麻省理工學(xué)院 AI 實(shí)驗(yàn)室備受尊敬的程序員 TomKnight。
本書旨在通過安全測(cè)試的鏡頭向讀者介紹 Kali Linux 的功能。這是為了幫助你更好的理解事物的運(yùn)作方式和工作原理。 Kali Linux 是一款面向安全的Linux 發(fā)行版軟件,因此最終受到那些因?yàn)榕d趣或職業(yè)需要而進(jìn)行安全測(cè)試或滲透測(cè)試的人們的歡迎。雖然它確實(shí)可以當(dāng)作通用的 Linux 發(fā)行版并用于取證和其他相關(guān)任務(wù),但它的設(shè)計(jì)考慮了安全性測(cè)試。因此,本書的大部分內(nèi)容將側(cè)重于使用 Kali 提供的工具。其他 Linux 發(fā)行版中的許多工具不一定很容易地獲得。雖然可以安裝這些工具,有時(shí)可以根據(jù)源代碼進(jìn)行編譯構(gòu)建,但是如果軟件包位于發(fā)行版的版本庫(kù)中,那么安裝會(huì)更容易。
本書概要
鑒于本書的目的是通過安全測(cè)試的角度介紹 Kali,將包含以下主題:
Kali Linux 入門
Linux 有著悠久的歷史,最早可以追溯到 20 世紀(jì) 60 年代的 UNIX。本章介紹了一些 UNIX 的背景知識(shí),以便讀者更好地理解 Linux 中的工具是如何以它們自己的方式進(jìn)行運(yùn)作,以及如何有效地使用它們。我們還將介紹命令行,因?yàn)楸緯钠溆嗖糠謱?huì)經(jīng)常用到它,同時(shí)還會(huì)介紹一些桌面系統(tǒng),以便為用戶提供更好的工作環(huán)境。如果你不熟悉 Linux,本章將有助于你更順暢地閱讀本書的其他章節(jié),以便我們開始深入介紹那些實(shí)用工具時(shí),不會(huì)讓讀者感到不知所措。
網(wǎng)絡(luò)安全測(cè)試基礎(chǔ)
大家耳熟能詳?shù)暮芏喾⻊?wù)都是通過網(wǎng)絡(luò)獲取的。但是,連接到網(wǎng)絡(luò)的系統(tǒng)可能容易受到攻擊。為了更好地對(duì)網(wǎng)絡(luò)進(jìn)行測(cè)試,我們將介紹一些網(wǎng)絡(luò)協(xié)議工作原理的基礎(chǔ)知識(shí)。當(dāng)你深入了解安全測(cè)試時(shí),會(huì)發(fā)現(xiàn)正在使用的協(xié)議是一項(xiàng)非常寶貴的資產(chǎn)。我們還將介紹可用于網(wǎng)絡(luò)堆棧和應(yīng)用程序壓力測(cè)試的工具。
偵察
在進(jìn)行安全測(cè)試或滲透測(cè)試時(shí),一般的做法首先是對(duì)目標(biāo)進(jìn)行偵察。你可以使用很多開源工具來收集目標(biāo)的相關(guān)信息。這不僅有助于你的后續(xù)測(cè)試,還可以提供許多詳細(xì)信息,將它們和正在執(zhí)行測(cè)試的團(tuán)隊(duì)成員信息進(jìn)行共享。這可以幫助他們正確地判定系統(tǒng)到達(dá)外部世界的足跡。畢竟,關(guān)于組織及其成員的信息可以成為攻擊者的墊腳石。
尋找漏洞
對(duì)組織的攻擊通常來自其漏洞。我們將介紹能夠深入了解目標(biāo)組織中存在技術(shù)漏洞(非人為)的漏洞掃描器。這將為如何著手測(cè)試提供線索,因?yàn)榘踩珳y(cè)試的目的是為被測(cè)試的組織提供存在潛在漏洞和威脅的建議。識(shí)別漏洞將幫助你達(dá)到上述目的。
自動(dòng)化漏洞利用
雖然 Metasploit 可能是執(zhí)行安全測(cè)試和滲透測(cè)試的基礎(chǔ),但是也可以使用其他工具。我們將介紹使用 Metasploit 的基礎(chǔ)知識(shí),還會(huì)提及一些用于發(fā)現(xiàn)漏洞的工具,本書其他章節(jié)將會(huì)對(duì)它們進(jìn)行詳細(xì)介紹。
Metasploit 進(jìn)階
Metasploit 是一款復(fù)雜的軟件。熟練使用它可能需要很長(zhǎng)時(shí)間。 Metasploit提供接近 2000 種漏洞利用,以及 500 多個(gè)有效載荷。當(dāng)你對(duì)它們排列組合時(shí),將獲得與遠(yuǎn)程系統(tǒng)交互的數(shù)千種可能性。此外,你還可以創(chuàng)建自己的模塊。在介紹 Metasploit 時(shí),我們將不會(huì)僅局限于闡述其用于常見漏洞的基礎(chǔ)知識(shí)。
無線安全測(cè)試
當(dāng)前每個(gè)人都擁有無線網(wǎng)絡(luò)。這就是手機(jī)和平板電腦等移動(dòng)設(shè)備(更不用說大量的筆記本電腦)連接到企業(yè)網(wǎng)絡(luò)的方式。但是,并非所有無線網(wǎng)絡(luò)都采用了最佳設(shè)置。 Kali Linux 提供了可用于執(zhí)行無線安全測(cè)試的工具。其中包括掃描無線網(wǎng)絡(luò)、注入幀和密碼破解。
Web 應(yīng)用測(cè)試
大量的商業(yè)行為是通過 Web 界面完成的。此外,通過 Web 界面可以獲得許多敏感信息。企業(yè)需要關(guān)注他們的重要 Web 應(yīng)用的易受攻擊性。 Kali加載了可以幫助你對(duì) Web 應(yīng)用進(jìn)行評(píng)估的工具。我們將介紹基于代理的測(cè)試,以及可用于自動(dòng)化測(cè)試的其他工具。目的是幫助你更好地了解這些應(yīng)用程序?qū)δ阏跍y(cè)試的組織的安全狀況。
破解密碼
這并不是一項(xiàng)經(jīng)常性的需求,但你可能會(huì)被要求測(cè)試遠(yuǎn)程系統(tǒng)和本地密碼數(shù)據(jù)庫(kù)的復(fù)雜度,以及遠(yuǎn)程訪問的難度——破解密碼哈希(比如密碼文件),以及強(qiáng)制登錄遠(yuǎn)程服務(wù)(比如 SSH, VNC 和其他遠(yuǎn)程訪問協(xié)議)。
高級(jí)技術(shù)
你可以使用 Kali 工具庫(kù)中的所有工具進(jìn)行大量測(cè)試。但是在某些時(shí)候,現(xiàn)成的工具并不能滿足需要,所以你需要開發(fā)自己的工具。這可能包括創(chuàng)建自己的漏洞利用或編寫自己的工具。更好地理解漏洞利用的工作原理,以及開發(fā)自己的工具,將為你指明正確的方向。我們還將介紹如何對(duì) Kali的一些工具進(jìn)行功能擴(kuò)展,以及流行腳本語言的基礎(chǔ)知識(shí)。
報(bào)告
在完成測(cè)試之后,最重要的事情是生成測(cè)試報(bào)告。 Kali 有很多工具可以幫助你在測(cè)試結(jié)束后生成報(bào)告。我們將介紹在測(cè)試過程中添加筆記的技巧,以及生成報(bào)告的一些策略。
讀者對(duì)象
雖然我希望本書的某些內(nèi)容可供大部分讀者閱讀,但本書的主要受眾是那些擁有一些 Linux 或 UNIX 經(jīng)驗(yàn),但是想了解 Kali 所有功能的人。本書也適合那些希望通過 Kali Linux 提供的工具來更好地處理安全測(cè)試的人。如果你已經(jīng)熟悉 Linux,那么可以直接跳過第 1 章。你也可能是使用某些常用工具完成Web 應(yīng)用程序測(cè)試的人員,但希望進(jìn)一步提高自己的水平。
道德忠告
對(duì)于道德這個(gè)詞,即使你對(duì)它已經(jīng)司空見慣,但是這里還是需要著重強(qiáng)調(diào)一下,因?yàn)樗苤匾。安全測(cè)試需要你獲得相應(yīng)的許可。在大多數(shù)地方,可能你做的某些事情都是非法的。在未經(jīng)許可的情況下探測(cè)遠(yuǎn)程系統(tǒng)會(huì)給你帶來很多麻煩。首先提及合法性往往會(huì)引起人們的注意。
道德的要求往往高于法律。獲得認(rèn)證的安全專業(yè)人士必須遵守與其道德操守相關(guān)的誓言。這里最重要的一點(diǎn)就是不濫用信息資源。 CISSP 認(rèn)證有一個(gè)與之相關(guān)的道德準(zhǔn)則,要求你同意不做任何非法或者不道德的事情。
對(duì)你無權(quán)測(cè)試的任何系統(tǒng)進(jìn)行測(cè)試不僅可能是非法的,而且根據(jù)我們的行業(yè)守則來說肯定是不道德的。僅知道目標(biāo)組織中的某些人并獲得他們的許可是不夠的。你必須獲得企業(yè)負(fù)責(zé)人或具有相應(yīng)責(zé)任級(jí)別人員的同意才能授予你該權(quán)限。最好以書面形式獲得許可。這可以確保雙方在同一層面達(dá)成共識(shí)。
預(yù)先確認(rèn)測(cè)試范圍也很重要。你正在測(cè)試的組織可能會(huì)限制你可以執(zhí)行的操作,可以觸摸的系統(tǒng)和網(wǎng)絡(luò),以及可以執(zhí)行測(cè)試的時(shí)間。以書面形式獲得所有這些。事先準(zhǔn)備好這些。它們是你避免牢獄之災(zāi)的強(qiáng)力保障。記下測(cè)試范圍,然后照章辦事。
當(dāng)然,交流!交流!交流!請(qǐng)幫自己一個(gè)忙。不要只是以書面形式獲得許可,然后無故消失,而客戶無法知道你在做什么。溝通和協(xié)作將為你正在測(cè)試的組織帶來良好的結(jié)果。這通常也是正確的做法。
在道德的界限內(nèi),盡情施展你的才華。
排版約定
本書使用的排版約定如下所示:
斜體(Italic)
表示新術(shù)語, URL, 電子郵件地址,文件和文件擴(kuò)展名。在段落中用于指代程序元素,比如變量名或函數(shù)名稱,數(shù)據(jù)庫(kù),數(shù)據(jù)類型,環(huán)境變量,語句和關(guān)鍵字。
等寬字體(Constant width)
用于表示程序列表和代碼示例。
代碼示例
本書中的代碼可以幫助你完善工作。一般而言,本書中的源代碼,不需要得到我們的許可就可以應(yīng)用到你自己的程序或文檔中,除非你希望重新發(fā)布了這些代碼的副本。舉例來說,一個(gè)程序中用到本書中的若干代碼塊不需要許可授權(quán)。銷售或發(fā)布包含 O’Reilly 圖書中的代碼樣例的 CD-Rom 不需要授權(quán)許可;卮鹨粋(gè)問題引用本書中的內(nèi)容或代碼不需要授權(quán)許可。在你的產(chǎn)品文檔中加入大量的本書代碼樣例需要授權(quán)許可。
我們建議,但非強(qiáng)制要求標(biāo)明出處。出處通常包括標(biāo)題,作者,出版社和ISBN。比如:“Learning Kali Linux by Ric Messier (O’Reilly). Copyright2018 Ric Messier, 978-1-492-02869-7”。
如果你覺得使用代碼樣例超出了上述許可范圍,請(qǐng)通過 permissions@oreilly.com 與我們?nèi)〉寐?lián)系。
O’Reilly 在線學(xué)習(xí)平臺(tái)(O’Reilly Online Learning)
近 40 年來, O’Reilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識(shí)和卓越見解,來幫助眾多公司取得成功。
我們擁有獨(dú)一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會(huì)議和我們的在線學(xué)習(xí)平臺(tái)分享他們的知識(shí)和經(jīng)驗(yàn)。 O’Reilly 的在線學(xué)習(xí)平臺(tái)允許你按需訪問現(xiàn)場(chǎng)培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O’Reilly 和 200 多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請(qǐng)?jiān)L問 http://oreilly.com。
聯(lián)系我們
請(qǐng)將關(guān)于本書的意見和問題通過以下地址提供給出版商:
美國(guó):
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中國(guó):
北京市西城區(qū)西直門南大街2號(hào)成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
我們?yōu)楸緯峁┝艘粋(gè)網(wǎng)頁,上面有勘誤表、示例和其他相關(guān)的信息,請(qǐng)?jiān)L問:http://bit.ly/learning-kali-linux。
有關(guān)本書的建議或者技術(shù)問題,請(qǐng)發(fā)郵件到 bookquestions@oreilly.com。
有關(guān)其他圖書、講座、會(huì)議、新聞的信息,請(qǐng)?jiān)L問我們的網(wǎng)站: http://www.oreilly.com。
我們的 Facebook: http://facebook.com/oreilly。
我們的 Twitter: http://twitter.com/oreillymedia。
我們的 YouTube: http://www.youtube.com/oreillymedia。
致謝
特別感謝 Courtney Allen,他是 O’Reilly 出版社的優(yōu)秀聯(lián)絡(luò)員。還要感謝我的編輯 Virginia Wilson,當(dāng)然還有我的技術(shù)審稿人幫助改進(jìn)了這本書——Brandon Noble, Kathleen Hyde,尤其是 Megan Daudelin !
目錄
前言 1
第 1 章 Kali Linux 入門 9
Linux 的由來 9
關(guān)于 Linux11
單內(nèi)核與微內(nèi)核 12
Kali Linux 的獲取和安裝 14
桌面環(huán)境 17
GNOME 桌面 18
通過桌面管理器登錄 21
Xfce 桌面 22
Cinnamon 和 MATE 23
命令行 25
管理文件和目錄 26
Linux 文件系統(tǒng)結(jié)構(gòu) 28
進(jìn)程管理 31
手冊(cè)頁 32
信號(hào) 34
其他實(shí)用程序 35
用戶管理 36
服務(wù)管理 37
軟件包管理 39
日志管理 43
小結(jié) 46
實(shí)用資源 47
第 2 章 網(wǎng)絡(luò)安全測(cè)試基礎(chǔ) 48
安全測(cè)試 49
網(wǎng)絡(luò)安全測(cè)試 51
監(jiān)控 51
網(wǎng)絡(luò)層 53
壓力測(cè)試 56
拒絕服務(wù)工具 64
加密測(cè)試 69
捕獲數(shù)據(jù)包 74
tcpdump 75
BFP 77
Wireshark 79
病毒攻擊 83
ARP 欺騙 84
DNS 欺騙 87
小結(jié) 88
實(shí)用資源 89
第 3 章 偵察 90
什么是偵察? 91
運(yùn)營(yíng)安全( OPSEC) 91
開源智能工具 92
Google 與黑客攻擊 94
自動(dòng)化信息抓取 97
Recon-NG101
Maltego 104
DNS 偵察和 whois109
DNS 偵察 109
區(qū)域互聯(lián)網(wǎng)注冊(cè)服務(wù)商114
被動(dòng)偵察 117
端口掃描 119
TCP 掃描120
UDP 掃描 121
Nmap 端口掃描 121
高速掃描 125
服務(wù)掃描 128
手工交互 130
小結(jié)132
實(shí)用資源 132
第 4 章 尋找漏洞 134
什么是漏洞135
漏洞類型 136
緩沖區(qū)溢出136
競(jìng)爭(zhēng)條件 138
輸入驗(yàn)證 139
訪問控制 140
本地漏洞 140
使用 lynis 進(jìn)行本地檢查141
OpenVAS 本地掃描143
Root Kit146
遠(yuǎn)程漏洞 147
OpenVAS 入門 149
創(chuàng)建掃描 151
OpenVAS 報(bào)告 155
網(wǎng)絡(luò)設(shè)備漏洞159
審查設(shè)備 160
數(shù)據(jù)庫(kù)漏洞163
識(shí)別新的漏洞 164
小結(jié) 167
實(shí)用資源 168
第 5 章 自動(dòng)化漏洞利用 169
什么是漏洞利用? 170
思科攻擊 170
管理協(xié)議 172
其他設(shè)備 173
漏洞利用數(shù)據(jù)庫(kù) 175
Metasploit 178
Metasploit 入門 179
Metasploit 模塊應(yīng)用180
導(dǎo)入數(shù)據(jù) 182
漏洞利用系統(tǒng)187
Armitage 189
社交工程 192
小結(jié) 195
實(shí)用資源 195
第 6 章 Metasploit 進(jìn)階 197
掃描目標(biāo) 198
端口掃描 198
SMB 掃描202
漏洞掃描 204
對(duì)目標(biāo)進(jìn)行漏洞利用205
Meterpreter 應(yīng)用208
Meterpreter 基礎(chǔ)209
用戶信息 209
操作進(jìn)程 213
權(quán)限升級(jí) 216
轉(zhuǎn)向其他網(wǎng)絡(luò) 220
維護(hù)訪問權(quán)限223
小結(jié)227
實(shí)用資源 228
第 7 章 無線安全測(cè)試 229
無線應(yīng)用的范圍 229
80211230
藍(lán)牙協(xié)議 231
Zigbee 協(xié)議 232
WiFi 攻擊和測(cè)試工具233
80211 協(xié)議的術(shù)語和功能233
識(shí)別網(wǎng)絡(luò) 235
WPS 攻擊 238
自動(dòng)化多個(gè)測(cè)試 240
注入攻擊 242
WiFi 密碼破解244
besside-ng244
coWPAtty 246
Aircrack-ng247
Fern 250
流氓 AP 252
托管接入點(diǎn)252
網(wǎng)絡(luò)釣魚攻擊254
無線蜜罐 258
藍(lán)牙測(cè)試 259
掃描260
服務(wù)識(shí)別 262
其他藍(lán)牙測(cè)試265
Zigbee 測(cè)試 267
小結(jié)267
實(shí)用資源 268
第 8 章 Web 應(yīng)用測(cè)試 269
Web 架構(gòu) 269
防火墻 271
負(fù)載均衡器271
Web 服務(wù)器 272
應(yīng)用程序服務(wù)器 273
數(shù)據(jù)庫(kù)服務(wù)器274
基于 Web 的攻擊 274
SQL 注入275
XML 實(shí)體注入 276
命令注入 278
跨站腳本 279
跨站請(qǐng)求偽造281
會(huì)話劫持 282
使用代理 284
Burp Suite285
Zed 攻擊代理 289
WebScarab295
Paros 代理 296
Proxystrike 298
自動(dòng)化 Web 攻擊 299
Recon 299
Vega302
nikto 304
Dirbuster 和 Gobuster 306
基于 Java 的應(yīng)用程序服務(wù)器 308
基于 SQL 的攻擊309
高級(jí)應(yīng)用 313
小結(jié) 316
實(shí)用資源 316
第 9 章 破解密碼 317
密碼存儲(chǔ) 317
生日悖論 318
安全賬戶管理器( SAM) 319
PAM 和 Crypt 320
獲取密碼 322
本地破解 325
密碼破解中的數(shù)學(xué) 326
John the Ripper327
彩虹表330
HashCat 336
遠(yuǎn)程破解 338
Hydra339
Patator 340
基于 Web 的攻擊 342
小結(jié)346
實(shí)用資源 346
第 10 章 高級(jí)技術(shù) 347
編程基礎(chǔ) 348
編譯性語言349
解釋性語言352
中間語言 353
編譯和構(gòu)建356
編程錯(cuò)誤 357
緩沖區(qū)溢出358
堆棧保護(hù) 360
堆溢出361
返回 libc 362
編寫 Nmap 模塊 363
擴(kuò)展 Metasploit367
反匯編與逆向工程371
調(diào)試371
反匯編 376
跟蹤程序 378
其他文件類型380
保持訪問和善后 381
Metasploit 與善后381
維持訪問 383
小結(jié) 384
實(shí)用資源 385
第 11 章 報(bào)告 386
確定威脅發(fā)生的可能性和嚴(yán)重程度 387
編寫報(bào)告 389
受眾389
執(zhí)行摘要 390
方法論 392
測(cè)試結(jié)果 392
記筆記 394
文本編輯器394
基于 GUI 的編輯器 396
筆記397
捕獲數(shù)據(jù) 398
組織數(shù)據(jù) 400
Dradis Framework 401
CaseFile403
小結(jié) 406
實(shí)用資源 406
作者介紹 409
封面介紹 409