一個新手試圖通過打開和關(guān)閉電源的方式修復(fù)損壞的 Lisp 機(jī)器。Knight 當(dāng)時看到了學(xué)生所作所為,嚴(yán)厲地說:“你不能只通過切斷電源來修理機(jī)器,但是不知道問題出在哪里!
Knight 關(guān)閉了機(jī)器,然后重新啟動。機(jī)器就正常工作了。
——AI Koan
在過去的半個世紀(jì)中,麻省理工學(xué)院(MIT)是在學(xué)習(xí)和創(chuàng)造方面具有深厚黑客文化底蘊(yùn)的地方之一,特別是它的人工智能實(shí)驗(yàn)室。麻省理工學(xué)院的黑客形成了一種獨(dú)特的語言文化,創(chuàng)造了一些特殊的術(shù)語和幽默感。前面引用的是一個 AI 公案,模仿自禪宗的公案,旨在激發(fā)心智,使人頓悟。順便提一下,上文中的 Knight 指的是麻省理工學(xué)院 AI 實(shí)驗(yàn)室備受尊敬的程序員 TomKnight。
本書旨在通過安全測試的鏡頭向讀者介紹 Kali Linux 的功能。這是為了幫助你更好的理解事物的運(yùn)作方式和工作原理。 Kali Linux 是一款面向安全的Linux 發(fā)行版軟件,因此最終受到那些因?yàn)榕d趣或職業(yè)需要而進(jìn)行安全測試或滲透測試的人們的歡迎。雖然它確實(shí)可以當(dāng)作通用的 Linux 發(fā)行版并用于取證和其他相關(guān)任務(wù),但它的設(shè)計考慮了安全性測試。因此,本書的大部分內(nèi)容將側(cè)重于使用 Kali 提供的工具。其他 Linux 發(fā)行版中的許多工具不一定很容易地獲得。雖然可以安裝這些工具,有時可以根據(jù)源代碼進(jìn)行編譯構(gòu)建,但是如果軟件包位于發(fā)行版的版本庫中,那么安裝會更容易。
本書概要
鑒于本書的目的是通過安全測試的角度介紹 Kali,將包含以下主題:
Kali Linux 入門
Linux 有著悠久的歷史,最早可以追溯到 20 世紀(jì) 60 年代的 UNIX。本章介紹了一些 UNIX 的背景知識,以便讀者更好地理解 Linux 中的工具是如何以它們自己的方式進(jìn)行運(yùn)作,以及如何有效地使用它們。我們還將介紹命令行,因?yàn)楸緯钠溆嗖糠謱?jīng)常用到它,同時還會介紹一些桌面系統(tǒng),以便為用戶提供更好的工作環(huán)境。如果你不熟悉 Linux,本章將有助于你更順暢地閱讀本書的其他章節(jié),以便我們開始深入介紹那些實(shí)用工具時,不會讓讀者感到不知所措。
網(wǎng)絡(luò)安全測試基礎(chǔ)
大家耳熟能詳?shù)暮芏喾⻊?wù)都是通過網(wǎng)絡(luò)獲取的。但是,連接到網(wǎng)絡(luò)的系統(tǒng)可能容易受到攻擊。為了更好地對網(wǎng)絡(luò)進(jìn)行測試,我們將介紹一些網(wǎng)絡(luò)協(xié)議工作原理的基礎(chǔ)知識。當(dāng)你深入了解安全測試時,會發(fā)現(xiàn)正在使用的協(xié)議是一項(xiàng)非常寶貴的資產(chǎn)。我們還將介紹可用于網(wǎng)絡(luò)堆棧和應(yīng)用程序壓力測試的工具。
偵察
在進(jìn)行安全測試或滲透測試時,一般的做法首先是對目標(biāo)進(jìn)行偵察。你可以使用很多開源工具來收集目標(biāo)的相關(guān)信息。這不僅有助于你的后續(xù)測試,還可以提供許多詳細(xì)信息,將它們和正在執(zhí)行測試的團(tuán)隊成員信息進(jìn)行共享。這可以幫助他們正確地判定系統(tǒng)到達(dá)外部世界的足跡。畢竟,關(guān)于組織及其成員的信息可以成為攻擊者的墊腳石。
尋找漏洞
對組織的攻擊通常來自其漏洞。我們將介紹能夠深入了解目標(biāo)組織中存在技術(shù)漏洞(非人為)的漏洞掃描器。這將為如何著手測試提供線索,因?yàn)榘踩珳y試的目的是為被測試的組織提供存在潛在漏洞和威脅的建議。識別漏洞將幫助你達(dá)到上述目的。
自動化漏洞利用
雖然 Metasploit 可能是執(zhí)行安全測試和滲透測試的基礎(chǔ),但是也可以使用其他工具。我們將介紹使用 Metasploit 的基礎(chǔ)知識,還會提及一些用于發(fā)現(xiàn)漏洞的工具,本書其他章節(jié)將會對它們進(jìn)行詳細(xì)介紹。
Metasploit 進(jìn)階
Metasploit 是一款復(fù)雜的軟件。熟練使用它可能需要很長時間。 Metasploit提供接近 2000 種漏洞利用,以及 500 多個有效載荷。當(dāng)你對它們排列組合時,將獲得與遠(yuǎn)程系統(tǒng)交互的數(shù)千種可能性。此外,你還可以創(chuàng)建自己的模塊。在介紹 Metasploit 時,我們將不會僅局限于闡述其用于常見漏洞的基礎(chǔ)知識。
無線安全測試
當(dāng)前每個人都擁有無線網(wǎng)絡(luò)。這就是手機(jī)和平板電腦等移動設(shè)備(更不用說大量的筆記本電腦)連接到企業(yè)網(wǎng)絡(luò)的方式。但是,并非所有無線網(wǎng)絡(luò)都采用了最佳設(shè)置。 Kali Linux 提供了可用于執(zhí)行無線安全測試的工具。其中包括掃描無線網(wǎng)絡(luò)、注入幀和密碼破解。
Web 應(yīng)用測試
大量的商業(yè)行為是通過 Web 界面完成的。此外,通過 Web 界面可以獲得許多敏感信息。企業(yè)需要關(guān)注他們的重要 Web 應(yīng)用的易受攻擊性。 Kali加載了可以幫助你對 Web 應(yīng)用進(jìn)行評估的工具。我們將介紹基于代理的測試,以及可用于自動化測試的其他工具。目的是幫助你更好地了解這些應(yīng)用程序?qū)δ阏跍y試的組織的安全狀況。
破解密碼
這并不是一項(xiàng)經(jīng)常性的需求,但你可能會被要求測試遠(yuǎn)程系統(tǒng)和本地密碼數(shù)據(jù)庫的復(fù)雜度,以及遠(yuǎn)程訪問的難度——破解密碼哈希(比如密碼文件),以及強(qiáng)制登錄遠(yuǎn)程服務(wù)(比如 SSH, VNC 和其他遠(yuǎn)程訪問協(xié)議)。
高級技術(shù)
你可以使用 Kali 工具庫中的所有工具進(jìn)行大量測試。但是在某些時候,現(xiàn)成的工具并不能滿足需要,所以你需要開發(fā)自己的工具。這可能包括創(chuàng)建自己的漏洞利用或編寫自己的工具。更好地理解漏洞利用的工作原理,以及開發(fā)自己的工具,將為你指明正確的方向。我們還將介紹如何對 Kali的一些工具進(jìn)行功能擴(kuò)展,以及流行腳本語言的基礎(chǔ)知識。
報告
在完成測試之后,最重要的事情是生成測試報告。 Kali 有很多工具可以幫助你在測試結(jié)束后生成報告。我們將介紹在測試過程中添加筆記的技巧,以及生成報告的一些策略。
讀者對象
雖然我希望本書的某些內(nèi)容可供大部分讀者閱讀,但本書的主要受眾是那些擁有一些 Linux 或 UNIX 經(jīng)驗(yàn),但是想了解 Kali 所有功能的人。本書也適合那些希望通過 Kali Linux 提供的工具來更好地處理安全測試的人。如果你已經(jīng)熟悉 Linux,那么可以直接跳過第 1 章。你也可能是使用某些常用工具完成Web 應(yīng)用程序測試的人員,但希望進(jìn)一步提高自己的水平。
道德忠告
對于道德這個詞,即使你對它已經(jīng)司空見慣,但是這里還是需要著重強(qiáng)調(diào)一下,因?yàn)樗苤匾0踩珳y試需要你獲得相應(yīng)的許可。在大多數(shù)地方,可能你做的某些事情都是非法的。在未經(jīng)許可的情況下探測遠(yuǎn)程系統(tǒng)會給你帶來很多麻煩。首先提及合法性往往會引起人們的注意。
道德的要求往往高于法律。獲得認(rèn)證的安全專業(yè)人士必須遵守與其道德操守相關(guān)的誓言。這里最重要的一點(diǎn)就是不濫用信息資源。 CISSP 認(rèn)證有一個與之相關(guān)的道德準(zhǔn)則,要求你同意不做任何非法或者不道德的事情。
對你無權(quán)測試的任何系統(tǒng)進(jìn)行測試不僅可能是非法的,而且根據(jù)我們的行業(yè)守則來說肯定是不道德的。僅知道目標(biāo)組織中的某些人并獲得他們的許可是不夠的。你必須獲得企業(yè)負(fù)責(zé)人或具有相應(yīng)責(zé)任級別人員的同意才能授予你該權(quán)限。最好以書面形式獲得許可。這可以確保雙方在同一層面達(dá)成共識。
預(yù)先確認(rèn)測試范圍也很重要。你正在測試的組織可能會限制你可以執(zhí)行的操作,可以觸摸的系統(tǒng)和網(wǎng)絡(luò),以及可以執(zhí)行測試的時間。以書面形式獲得所有這些。事先準(zhǔn)備好這些。它們是你避免牢獄之災(zāi)的強(qiáng)力保障。記下測試范圍,然后照章辦事。
當(dāng)然,交流!交流!交流!請幫自己一個忙。不要只是以書面形式獲得許可,然后無故消失,而客戶無法知道你在做什么。溝通和協(xié)作將為你正在測試的組織帶來良好的結(jié)果。這通常也是正確的做法。
在道德的界限內(nèi),盡情施展你的才華。
排版約定
本書使用的排版約定如下所示:
斜體(Italic)
表示新術(shù)語, URL, 電子郵件地址,文件和文件擴(kuò)展名。在段落中用于指代程序元素,比如變量名或函數(shù)名稱,數(shù)據(jù)庫,數(shù)據(jù)類型,環(huán)境變量,語句和關(guān)鍵字。
等寬字體(Constant width)
用于表示程序列表和代碼示例。
代碼示例
本書中的代碼可以幫助你完善工作。一般而言,本書中的源代碼,不需要得到我們的許可就可以應(yīng)用到你自己的程序或文檔中,除非你希望重新發(fā)布了這些代碼的副本。舉例來說,一個程序中用到本書中的若干代碼塊不需要許可授權(quán)。銷售或發(fā)布包含 O’Reilly 圖書中的代碼樣例的 CD-Rom 不需要授權(quán)許可。回答一個問題引用本書中的內(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”。
如果你覺得使用代碼樣例超出了上述許可范圍,請通過 permissions@oreilly.com 與我們?nèi)〉寐?lián)系。
O’Reilly 在線學(xué)習(xí)平臺(O’Reilly Online Learning)
近 40 年來, O’Reilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。
我們擁有獨(dú)一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會議和我們的在線學(xué)習(xí)平臺分享他們的知識和經(jīng)驗(yàn)。 O’Reilly 的在線學(xué)習(xí)平臺允許你按需訪問現(xiàn)場培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O’Reilly 和 200 多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請訪問 http://oreilly.com。
聯(lián)系我們
請將關(guān)于本書的意見和問題通過以下地址提供給出版商:
美國:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中國:
北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
我們?yōu)楸緯峁┝艘粋網(wǎng)頁,上面有勘誤表、示例和其他相關(guān)的信息,請訪問:http://bit.ly/learning-kali-linux。
有關(guān)本書的建議或者技術(shù)問題,請發(fā)郵件到 bookquestions@oreilly.com。
有關(guān)其他圖書、講座、會議、新聞的信息,請訪問我們的網(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 !