本書不僅詳細(xì)闡釋了Linux操作系統(tǒng)的基礎(chǔ)知識(shí),包括文件系統(tǒng)、終端命令操作、文本操作、網(wǎng)絡(luò)操作、軟件管理、權(quán)限管理、服務(wù)管理、環(huán)境變量管理等,還擴(kuò)展講解了一些基礎(chǔ)的bash和Python腳本編程技術(shù),以及其他控制Linux系統(tǒng)環(huán)境所需的工具和技術(shù),同時(shí)還提供了大量實(shí)踐指導(dǎo)和練習(xí)。
如果你在黑客防御、網(wǎng)絡(luò)安全和滲透測(cè)試的有趣旅程上剛剛起步,那么本書會(huì)是一個(gè)不錯(cuò)的開始。利用Kali Linux系統(tǒng)(一款高級(jí)滲透測(cè)試Linux發(fā)行版),你將學(xué)到使用Linux操作系統(tǒng)的基礎(chǔ)知識(shí),并獲取控制Linux系統(tǒng)環(huán)境所需的工具和技術(shù)。
前 言
黑客攻防是21世紀(jì)網(wǎng)絡(luò)安全面臨的重要挑戰(zhàn)之一。近年來,新聞報(bào)道的很多事件似乎也都在證明這件事情,例如網(wǎng)絡(luò)罪犯竊取大量錢財(cái)、勒索蠕蟲病毒肆虐、敵對(duì)勢(shì)力互相影響選舉結(jié)果、交戰(zhàn)雙方互相破解彼此的工具等。這些大都是黑客的“杰作”,而它們對(duì)日益數(shù)字化的世界所造成的影響才剛剛被察覺。
我接觸或者共事過的網(wǎng)絡(luò)安全人員可能有數(shù)萬名,涉及Null-Byte網(wǎng)絡(luò)社區(qū)以及政府的幾乎每一個(gè)部門。通過這些經(jīng)歷我了解到,很多有遠(yuǎn)大抱負(fù)的網(wǎng)絡(luò)安全人員對(duì)于Linux系統(tǒng)都毫無經(jīng)驗(yàn)或了解甚少,而這種經(jīng)驗(yàn)上的欠缺正是他們成為安全專家所面臨的主要障礙。幾乎所有“最好”的黑客工具都是在Linux系統(tǒng)中編寫的,因此一些基本的Linux系統(tǒng)操作技能是成為專業(yè)網(wǎng)絡(luò)安全人員的條件。我編寫本書的目的正是幫助那些有遠(yuǎn)大抱負(fù)的網(wǎng)絡(luò)安全人員克服這一障礙。
黑客攻防是IT行業(yè)內(nèi)非常高深的領(lǐng)域。正因如此,從事網(wǎng)絡(luò)安全工作需要對(duì)IT概念和技術(shù)有廣泛而深入的理解,Linux系統(tǒng)正是其中最基本的一項(xiàng)。如果你想從事網(wǎng)絡(luò)安全方面的工作,那么我強(qiáng)烈建議你在使用和理解Linux系統(tǒng)方面投入一定的時(shí)間和精力。
本書并不是針對(duì)資深網(wǎng)絡(luò)安全人員或經(jīng)驗(yàn)豐富的Linux系統(tǒng)管理人員而編寫的。相反,本書的目標(biāo)讀者是那些在黑客攻防、信息安全和滲透測(cè)試領(lǐng)域剛剛起步的人。同時(shí),本書不會(huì)對(duì)Linux系統(tǒng)或黑客攻防進(jìn)行完整論述,而只是進(jìn)行入門級(jí)介紹。本書從Linux系統(tǒng)的基本內(nèi)容開始,擴(kuò)展講解了一些基本的bash和Python腳本編程技術(shù)。在適當(dāng)?shù)牡胤,我?huì)嘗試通過一些網(wǎng)絡(luò)攻防實(shí)例來介紹Linux系統(tǒng)原理。
這里,我們將回顧一下信息安全領(lǐng)域白帽黑客行為的發(fā)展歷程,并且詳細(xì)介紹安裝虛擬機(jī)的流程,以便讀者能夠在不卸載當(dāng)前操作系統(tǒng)的情況下,在自己的系統(tǒng)上安裝Kali Linux系統(tǒng)。
本書內(nèi)容
在本書的前半部分,你將熟悉Linux系統(tǒng)的基本概念。
第1章將引領(lǐng)你熟悉文件系統(tǒng)和終端,并介紹一些基本命令。第2章將為你展示如何通過文本操作來對(duì)軟件及文件進(jìn)行查找、檢查和修改。
第3章將介紹如何管理網(wǎng)絡(luò),包括網(wǎng)絡(luò)掃描、查看連接信息以及隱藏網(wǎng)絡(luò)和DNS
信息。
第4章將介紹如何添加、移除和更新軟件,以及如何簡(jiǎn)化系統(tǒng)。在第5章中,你將學(xué)習(xí)如何通過文件和目錄權(quán)限操作來控制訪問,以及一些用來實(shí)現(xiàn)權(quán)限提升的技術(shù)。
第6章將介紹如何管理進(jìn)程,包括啟用和停止進(jìn)程,以及分配資源來實(shí)現(xiàn)更高的控制權(quán)限。在第7章中,你將學(xué)習(xí)如何管理環(huán)境變量來實(shí)現(xiàn)最佳性能、便捷性乃至隱匿性,包括查找和過濾變量,更改PATH變量,以及創(chuàng)建新環(huán)境變量。
第8章將介紹bash腳本編程,這對(duì)于任何認(rèn)真鉆研的網(wǎng)絡(luò)安全人員來說都是一項(xiàng)重要的技能。你將學(xué)習(xí)bash的基本內(nèi)容,并創(chuàng)建一個(gè)腳本,用來對(duì)稍后將要進(jìn)行滲透測(cè)試的目標(biāo)端口進(jìn)行掃描。
第9章和第10章將介紹一些的文件系統(tǒng)管理技能,教你如何對(duì)文件進(jìn)行壓縮和存檔以保持系統(tǒng)潔凈,如何復(fù)制整個(gè)存儲(chǔ)設(shè)備,以及如何獲取文件和已連接磁盤的相關(guān)信息。
本書后半部分將深入介紹黑客攻防的相關(guān)主題,從而針對(duì)相應(yīng)的攻擊進(jìn)行有效的防御。在第11章中,你將了解黑客會(huì)如何利用和操控日志系統(tǒng)來獲取目標(biāo)活動(dòng)信息,并且掩蓋行蹤。第12章將介紹三個(gè)核心Linux系統(tǒng)服務(wù):Apache 網(wǎng)絡(luò)服務(wù)器、OpenSSH和MySQL。你將學(xué)習(xí)創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù)器、構(gòu)建一個(gè)樹莓派偵察設(shè)備,并且學(xué)習(xí)數(shù)據(jù)庫及其漏洞等相關(guān)內(nèi)容。第13章將展示如何通過代理服務(wù)器、Tor網(wǎng)絡(luò)、VPN連接和加密電子郵件來實(shí)現(xiàn)安全和匿名。
第14章將介紹無線網(wǎng)絡(luò)的相關(guān)內(nèi)容。你將學(xué)習(xí)基本的網(wǎng)絡(luò)命令,之后將了解黑客會(huì)如何破解Wi-Fi接入點(diǎn),如何探測(cè)并連接藍(lán)牙信號(hào),從而有效遏制這類攻擊。
第15章將從內(nèi)核工作原理以及黑客會(huì)如何利用Linux系統(tǒng)驅(qū)動(dòng)的視角來深入剖析Linux系統(tǒng)本身。在第16章中,你將學(xué)習(xí)的調(diào)度技能,以實(shí)現(xiàn)腳本自動(dòng)化。
第17章將講解Python語言的核心概念,進(jìn)而引導(dǎo)你學(xué)習(xí)如何編寫兩款網(wǎng)絡(luò)安全工具:一個(gè)用于監(jiān)控TCP/IP連接的掃描器和一個(gè)簡(jiǎn)單的口令破解器。
白帽黑客行為介紹
隨著近年來信息安全行業(yè)的發(fā)展,白帽黑客行為呈現(xiàn)急劇增長(zhǎng)的趨勢(shì)。白帽黑客行為是指以發(fā)現(xiàn)脆弱性和改善安全性為目的而嘗試對(duì)系統(tǒng)進(jìn)行滲透測(cè)試的行為。
滲透測(cè)試
隨著組織的安全意識(shí)越來越強(qiáng),以及安全漏洞所導(dǎo)致的后果的嚴(yán)重性呈指數(shù)級(jí)增長(zhǎng),很多大型組織都開始考慮將安全服務(wù)承包出去。這些關(guān)鍵的安全服務(wù)之一就是滲透測(cè)試。從本質(zhì)上來說,滲透測(cè)試就是以揭露一家公司網(wǎng)絡(luò)和系統(tǒng)的漏洞為目的而進(jìn)行的一次受委托的合法攻擊。
一般來說,組織會(huì)先通過漏洞評(píng)估來發(fā)現(xiàn)其網(wǎng)絡(luò)、操作系統(tǒng)和服務(wù)中的潛在漏洞。這里強(qiáng)調(diào)“潛在”,是因?yàn)檫@種漏洞掃描結(jié)果中會(huì)包含大量的誤報(bào)(即所謂的漏洞實(shí)際并不存在)。而滲透測(cè)試人員的任務(wù)就是嘗試對(duì)這些漏洞進(jìn)行攻擊或滲透測(cè)試。只有這樣,組織才能知道漏洞是否真實(shí)存在,然后投入時(shí)間和金錢來修復(fù)真正的漏洞。
譯者序
前言
第1章 基礎(chǔ)入門 1
1.1 術(shù)語和概念介紹 1
1.2 Kali系統(tǒng)概覽 2
1.2.1 終端 3
1.2.2 Linux文件系統(tǒng) 4
1.3 Linux系統(tǒng)基本命令 5
1.3.1 利用pwd命令查看當(dāng)前位置 5
1.3.2 利用whoami命令查看當(dāng)前登錄
用戶 5
1.3.3 在Linux文件系統(tǒng)中進(jìn)行定位
導(dǎo)覽 6
1.3.4 獲取幫助 7
1.3.5 利用man命令查閱參考手冊(cè)頁面 8
1.4 查找 9
1.4.1 利用locate命令進(jìn)行搜索 9
1.4.2 利用whereis命令查找二進(jìn)制
程序 9
1.4.3 利用which命令在PATH變量中
查找二進(jìn)制程序 9
1.4.4 利用find命令執(zhí)行更強(qiáng)大的
搜索 10
1.4.5 利用grep命令進(jìn)行過濾 11
1.5 文件與目錄修改 12
1.5.1 創(chuàng)建文件 12
1.5.2 創(chuàng)建目錄 14
1.5.3 復(fù)制文件 14
1.5.4 重命名文件 14
1.5.5 刪除文件 15
1.5.6 刪除目錄 15
1.6 總結(jié) 15
第2章 文本操作 17
2.1 查看文件 17
2.1.1 獲取文件頭部?jī)?nèi)容 18
2.1.2 抓取文件尾部信息 18
2.1.3 標(biāo)注行號(hào) 19
2.2 利用grep命令進(jìn)行文本過濾 20
2.3 利用sed命令進(jìn)行查找和替換 21
2.4 利用more和less命令查看文件 22
2.4.1 利用more命令控制顯示 22
2.4.2 利用less命令顯示和過濾 23
2.5 總結(jié) 24
第3章 網(wǎng)絡(luò)分析與管理 25
3.1 利用ifconfig命令分析網(wǎng)絡(luò) 25
3.2 利用iwconfig命令檢查無線網(wǎng)絡(luò)
設(shè)備 26
3.3 更改網(wǎng)絡(luò)信息 27
3.3.1 改變IP地址 27
3.3.2 改變網(wǎng)絡(luò)掩碼和廣播地址 27
3.3.3 偽造MAC地址 28
3.3.4 從DHCP服務(wù)器分配新IP地址 28
3.4 操控域名系統(tǒng) 29
3.4.1 利用dig命令測(cè)試DNS 29
3.4.2 改變DNS服務(wù)器 30
3.4.3 映射自身IP地址 31
3.5 總結(jié) 32
第4章 軟件添加與刪除 34
4.1 利用apt處理軟件 34
4.1.1 搜索軟件包 34
4.1.2 添加軟件 35
4.1.3 刪除軟件 35
4.1.4 更新軟件包 37
4.1.5 升級(jí)軟件包 37
4.2 向sources.list文件中添加軟件倉(cāng)庫 38
4.3 使用基于GUI的安裝器 39
4.4 利用git安裝軟件 41
4.5 總結(jié) 41
第5章 文件與目錄權(quán)限控制 43
5.1 不同用戶類型 43
5.2 賦予權(quán)限 43
5.2.1 賦予單獨(dú)一個(gè)用戶所有權(quán) 44
5.2.2 賦予一個(gè)群組所有權(quán) 44
5.3 查看權(quán)限 45
5.4 更改權(quán)限 46
5.4.1 利用八進(jìn)制記數(shù)法更改權(quán)限 46
5.4.2 利用UGO方法更改權(quán)限 48
5.4.3 為一個(gè)新工具賦予根執(zhí)行權(quán)限 48
5.5 利用掩碼方法設(shè)置更為安全的默認(rèn)
權(quán)限 49
5.6 特殊權(quán)限 50
5.6.1 利用SUID賦予臨時(shí)根權(quán)限 50
5.6.2 利用SGID賦予根用戶群組權(quán)限 51
5.6.3 過時(shí)的黏滯位 51
5.6.4 特殊權(quán)限和權(quán)限提升 51
5.7 總結(jié) 53
第6章 進(jìn)程管理 54
6.1 查看進(jìn)程 54
6.1.1 通過進(jìn)程名稱進(jìn)行過濾 55
6.1.2 利用top命令找到占用資源最多的
進(jìn)程 56
6.2 管理進(jìn)程 57
6.2.1 利用nice命令修改進(jìn)程優(yōu)先級(jí) 57
6.2.2 “殺死”進(jìn)程 59
6.2.3 后臺(tái)運(yùn)行進(jìn)程 60
6.2.4 將進(jìn)程移至前臺(tái)運(yùn)行 60
6.3 調(diào)度進(jìn)程 61
6.4 總結(jié) 62
第7章 用戶環(huán)境變量管理 63
7.1 查看和修改環(huán)境變量 63
7.1.1 查看所有環(huán)境變量 64
7.1.2 查找特定變量 64
7.1.3 修改一個(gè)會(huì)話的變量值 65
7.1.4 永久修改變量值 65
7.2 修改shell提示符 66
7.3 修改PATH變量 67
7.3.1 向PATH變量中添加路徑 67
7.3.2 替換PATH變量的方式 68
7.4 創(chuàng)建一個(gè)用戶定義的變量 69
7.5 總結(jié) 69
第8章 bash腳本編程 71
8.1 bash速成 71
8.2 第一個(gè)腳本程序:"Hello,
Hackers-Arise!" 72
8.2.1 設(shè)置執(zhí)行權(quán)限 73
8.2.2 運(yùn)行HelloHackersArise 73
8.2.3 利用變量和用戶輸入來添加功能 74
8.3 你的第一個(gè)腳本:掃描開放端口 75
8.3.1 任務(wù)目標(biāo) 76
8.3.2 一個(gè)簡(jiǎn)單的掃描器 76
8.3.3 改進(jìn)MySQL掃描器 77
8.4 常見的內(nèi)建bash命令 79
8.5 總結(jié) 80
第9章 壓縮存檔 81
9.1 什么是壓縮 81
9.2 歸檔文件 82
9.3 壓縮文件 83
9.3.1 利用gzip進(jìn)行壓縮 84
9.3.2 利用bzip2進(jìn)行壓縮 84
9.3.3 利用compress命令進(jìn)行壓縮 85
9.4 創(chuàng)建存儲(chǔ)設(shè)備的逐位或物理副本 85
9.5 總結(jié) 86
第10章 文件系統(tǒng)與存儲(chǔ)設(shè)備管理 88
10.1 設(shè)備目錄/dev 88
10.1.1 Linux系統(tǒng)如何表示存儲(chǔ)設(shè)備 89
10.1.2 驅(qū)動(dòng)器分區(qū) 90
10.1.3 字符設(shè)備和塊設(shè)備 91