關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
Go黑帽子 滲透測(cè)試編程之道 學(xué)習(xí)內(nèi)容: 如何開(kāi)發(fā)用于你自己安全項(xiàng)目的高性能工具。 如何創(chuàng)建與遠(yuǎn)程API交互的可用工具。 如何抓取任意HTML數(shù)據(jù)。 如何使用Go的標(biāo)準(zhǔn)包net/http構(gòu)建HTTP服務(wù)器。 如何編寫(xiě)自己的DNS服務(wù)器和代理。 如何使用DNS隧道建立一個(gè)C2通道以突破限制性網(wǎng)絡(luò)。 如何創(chuàng)建漏洞模糊器(fuzzer)以發(fā)現(xiàn)應(yīng)用程序的安全漏洞。 如何使用插件和擴(kuò)展使產(chǎn)品可以面向未來(lái)。 如何構(gòu)建RC2對(duì)稱(chēng)密鑰暴力破解工具。 如何在(PNG)圖像中植入數(shù)據(jù)。 準(zhǔn)備好擴(kuò)展你的安全工具庫(kù)了嗎? 那我們出發(fā)(Go)吧! 《Go黑帽子 滲透測(cè)試編程之道》探索了Go的陰暗面,Go是一種因?yàn)楹?jiǎn)單、高效和可靠而受到黑客推崇的流行編程語(yǔ)言。本書(shū)從安全從業(yè)者和黑客的角度出發(fā),提供了一系列實(shí)用的策略,以幫助你使用Go的功能來(lái)測(cè)試系統(tǒng)、構(gòu)建和自動(dòng)化工具以滿(mǎn)足你的需求,并提高你的進(jìn)攻性安全技能。 前 言大約6 年來(lái),我們3 個(gè)人領(lǐng)導(dǎo)了北美專(zhuān)用滲透測(cè)試咨詢(xún)。作為首席顧問(wèn),我們代表客戶(hù)執(zhí)行了項(xiàng)目的相關(guān)技術(shù)工作,包括網(wǎng)絡(luò)滲透測(cè)試;我們還率先開(kāi)發(fā)出了更好的工具、流程和方法。在某些時(shí)候,我們采用Go 作為我們的主要開(kāi)發(fā)語(yǔ)言之一。 Go 提供了很好的語(yǔ)言特性,在性能、安全性和易用性之間取得了平衡。我們?cè)陂_(kāi)發(fā)工具時(shí)將其作為我們的默認(rèn)語(yǔ)言。終,我們心甘情愿地成為這種語(yǔ)言的倡導(dǎo)者,將其推薦給我們?cè)诎踩袠I(yè)的其他同事。這是因?yàn)槲覀冇X(jué)得Go 這種優(yōu)秀的語(yǔ)言應(yīng)該進(jìn)入更多人的視野。 在本書(shū)中,我們將帶你從安全從業(yè)人員和黑客的角度出發(fā),全面了解Go 編程語(yǔ)言。 與其他黑客類(lèi)圖書(shū)不同的是,我們將不僅向你展示如何自動(dòng)化第三方或商業(yè)工具(盡管我們會(huì)稍微討論一下),而且將深入探討各種具有實(shí)用價(jià)值的主題,這些主題涉及對(duì)于對(duì)抗有用的特定問(wèn)題、協(xié)議或策略。此外,還將介紹TCP、HTTP 和DNS 協(xié)議,以及與Metasploit和Shodan 交互、搜索文件系統(tǒng)和數(shù)據(jù)庫(kù)、從其他語(yǔ)言到Go 的漏洞移植、編寫(xiě)SMB 客戶(hù)端的核心函數(shù)、攻擊Windows、交叉編譯二進(jìn)制文件、加密相關(guān)的內(nèi)容、調(diào)用C 庫(kù)、與Windows API 交互等。 本書(shū)的適用對(duì)象 本書(shū)適用于所有想要學(xué)習(xí)如何使用Go 開(kāi)發(fā)自己的黑客工具的人。在我們的整個(gè)職業(yè)生涯中,尤其是作為顧問(wèn),我們一直提倡將編程作為滲透測(cè)試人員和安全從業(yè)人員必須具備的基本技能。特別值得一提的是,編碼能力可以增強(qiáng)你對(duì)軟件工作原理及其會(huì)遭到怎樣的攻擊的理解。此外,如果你已經(jīng)是軟件程序員,則將會(huì)對(duì)他們?cè)诒Wo(hù)軟件方面面臨的挑戰(zhàn)有更全面的了解,因而可以更好地利用個(gè)人經(jīng)驗(yàn)來(lái)提出破解方法,消除誤報(bào)并找出隱蔽的漏洞。編寫(xiě)代碼通常會(huì)迫使你與第三方庫(kù)以及各種應(yīng)用程序棧和框架進(jìn)行 交互。對(duì)很多人(包括我們)來(lái)說(shuō),親自操作和不斷修改才能使個(gè)人得到的發(fā)展。 為充分利用本書(shū),我們鼓勵(lì)你復(fù)制本書(shū)的官方代碼庫(kù),這樣你就擁有了我們將要討論的所有示例(請(qǐng)通過(guò)https://github.com/blackhat-go/bhg/查找和下載)。 本書(shū)的不同之處 本書(shū)不是一般意義上的Go 編程介紹,而是關(guān)于使用Go 開(kāi)發(fā)安全工具的介紹。我們首先是黑客,然后才是程序員。我們中沒(méi)有一個(gè)人曾經(jīng)是軟件工程師。因此,作為黑客,我們更看重功能性而不是優(yōu)雅性。在很多情況下,我們都選擇像黑客一樣編寫(xiě)代碼,而忽略了軟件設(shè)計(jì)的一些習(xí)慣用法或?qū)嵺`。對(duì)于顧問(wèn)來(lái)說(shuō),時(shí)間就是金錢(qián),而開(kāi)發(fā)的代碼越簡(jiǎn)單,用時(shí)就越少。因此,在功能性與優(yōu)雅性之間,我們選擇了前者。當(dāng)你需要快速創(chuàng)建一個(gè)問(wèn)題的解決方案時(shí),樣式風(fēng)格則是次要的。 這必然會(huì)激怒Go 純粹主義者,他們可能會(huì)在推特上對(duì)我們說(shuō),你們沒(méi)有優(yōu)雅地處理所有的錯(cuò)誤情況,你們的示例可以被優(yōu)化,或者有更好的構(gòu)造或方法來(lái)產(chǎn)生期望的結(jié)果。大多數(shù)情況下,我們并不關(guān)心教給你的是不是好的、雅的或者百分之百理想的解決方案,當(dāng)然前提是這樣做不會(huì)對(duì)終結(jié)果造成什么影響。盡管我們將簡(jiǎn)要介紹語(yǔ)言語(yǔ)法,但這樣做純粹是為了構(gòu)建我們可以奠定的基線(xiàn)基礎(chǔ)。事實(shí)上,我們這里想要教會(huì)你的不是如何用Go 優(yōu)雅地進(jìn)行編程,而是如何使用Go 開(kāi)發(fā)黑客工具。 為什么要使用Go 進(jìn)行黑客攻擊 在Go 問(wèn)世之前,你可能會(huì)使用某種動(dòng)態(tài)類(lèi)型語(yǔ)言(如Python、Ruby 或PHP)。這里你優(yōu)先考慮的是其易用性,而很少會(huì)考慮其性能和安全性。另外,你還可以選擇某種靜態(tài)類(lèi)型語(yǔ)言(例如C 或C ),這類(lèi)語(yǔ)言以高性能和安全見(jiàn)長(zhǎng),但易用性不太好。Go 擺脫了其主要祖先C 的許多缺點(diǎn),使開(kāi)發(fā)更具人性化。同時(shí),它是一種靜態(tài)類(lèi)型語(yǔ)言,在編譯時(shí)會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤,從而極大地保障了代碼在實(shí)際運(yùn)行過(guò)程中的安全。與解釋型語(yǔ)言相比,它的性能更好,且在設(shè)計(jì)時(shí)考慮了多核計(jì)算,讓并發(fā)編程成為小兒科。 Go 的以上優(yōu)點(diǎn)并沒(méi)有讓它得到安全從業(yè)者的垂青。然而,該語(yǔ)言的許多功能卻給黑客和攻擊者帶來(lái)了福音。
Go 將許多關(guān)鍵函數(shù)和庫(kù)作為語(yǔ)言標(biāo)準(zhǔn)打包的一部分,從而減少了正確設(shè)置開(kāi)發(fā)環(huán)境或調(diào)用函數(shù)所需的工作量。
為什么你可能不喜歡Go 同時(shí),我們也認(rèn)識(shí)到Go 并不能完美地解決所有問(wèn)題。以下是該語(yǔ)言的一些缺點(diǎn)。
章節(jié)內(nèi)容概覽 本書(shū)的第1 章概述了Go 的基本語(yǔ)法和原理。接下來(lái),我們開(kāi)始探索可用于工具開(kāi)發(fā)的示例,包括各種常見(jiàn)的網(wǎng)絡(luò)協(xié)議,例如HTTP、DNS 和SMB。然后,我們深入研究滲透測(cè)試人員遇到的各種手段和問(wèn)題,解決包括數(shù)據(jù)竊取、數(shù)據(jù)包嗅探和漏洞利用開(kāi)發(fā)在內(nèi)的主題。后,我們簡(jiǎn)短討論了如何創(chuàng)建動(dòng)態(tài)的、可插入的工具,并且深入研究加密技術(shù)以及如何攻擊Microsoft Windows 和實(shí)現(xiàn)隱寫(xiě)術(shù)。 許多情況下,你都有機(jī)會(huì)擴(kuò)展我們展示給你的工具以實(shí)現(xiàn)特定目的。盡管我們始終提供可靠的示例,但我們的真正目的是為你提供知識(shí)和基礎(chǔ),而你則可以此為基礎(chǔ)來(lái)擴(kuò)展或重新開(kāi)發(fā)示例以實(shí)現(xiàn)你的目標(biāo)。授之以魚(yú),不如授之以漁這就是我們的追求。 在繼續(xù)閱讀本書(shū)接下來(lái)的內(nèi)容之前,請(qǐng)務(wù)必牢記這一點(diǎn):我們(作者和出版商)創(chuàng)作的內(nèi)容僅供合法使用。我們不會(huì)為你選擇實(shí)施的邪惡或非法行為承擔(dān)任何責(zé)任。這里的所有內(nèi)容僅用于教育目的;未經(jīng)授權(quán),請(qǐng)勿對(duì)系統(tǒng)或應(yīng)用程序進(jìn)行任何形式的滲透測(cè)試。 以下是對(duì)每一章內(nèi)容的概述。 第1 章:Go 語(yǔ)言基礎(chǔ) 該章介紹Go 編程語(yǔ)言的基礎(chǔ)知識(shí),以幫助你理解本書(shū)中的概念。這包括對(duì)Go 的基本語(yǔ)法和習(xí)慣用法的簡(jiǎn)要介紹。除此之外,我們還將討論Go 生態(tài)系統(tǒng),包括支持工具、IDE、依賴(lài)管理等。對(duì)編程語(yǔ)言不熟悉的讀者可以在學(xué)習(xí)了Go 的一些基本知識(shí)后,更好地理解、實(shí)現(xiàn)和擴(kuò)展后續(xù)章節(jié)中的示例。 第2 章:TCP、掃描器和代理 該章介紹Go 的基本概念、并發(fā)基礎(chǔ)和模式、輸入/輸出(I/O)以及如何通過(guò)實(shí)際TCP應(yīng)用程序使用接口。我們將首先引導(dǎo)你創(chuàng)建一個(gè)簡(jiǎn)單的TCP 端口掃描器,它使用解析的命令行選項(xiàng)掃描列表中的端口。這能讓你直觀地感受到Go 代碼相較其他語(yǔ)言的簡(jiǎn)單性,并且有助于你理解基本類(lèi)型、用戶(hù)輸入和錯(cuò)誤處理。接下來(lái),我們將討論如何通過(guò)引入并發(fā)功能來(lái)提高此端口掃描器的效率和速度。然后,我們將通過(guò)構(gòu)建一個(gè)TCP 代理(一個(gè)端口轉(zhuǎn)發(fā)器)引入I/O 的相關(guān)知識(shí):從基本示例開(kāi)始,通過(guò)改進(jìn)代碼創(chuàng)建一種更可靠的解決方案。后,我們將在Go 中重新創(chuàng)建Netcat 的安全巨洞功能,教你如何在操作stdin 和stdout 以及通過(guò)TCP 重定向它們時(shí)運(yùn)行操作系統(tǒng)命令。 第3 章:HTTP 客戶(hù)端以及與工具的遠(yuǎn)程交互 HTTP 客戶(hù)端是與現(xiàn)代Web 服務(wù)器架構(gòu)交互的關(guān)鍵組件。該章將向你展示如何創(chuàng)建執(zhí)行各種常見(jiàn)Web 交互所需的HTTP 客戶(hù)端。你將使用多種格式與Shodan 和Metasploit進(jìn)行交互。此外,我們還將演示如何使用搜索引擎,以及使用它們來(lái)獲取和解析文檔元數(shù)據(jù),以便提取對(duì)組織分析活動(dòng)有用的信息。 第4 章:HTTP 服務(wù)器、路由和中間件 該章介紹創(chuàng)建HTTP 服務(wù)器所需的概念和約定。我們將討論常見(jiàn)的路由、中間件和模板樣式,利用這些知識(shí)創(chuàng)建憑證收割服務(wù)器和鍵盤(pán)記錄器。后,我們將演示如何通過(guò)構(gòu)建反向HTTP 代理來(lái)復(fù)用C2 連接。 第5 章:DNS 利用 該章將介紹DNS 的基本概念。首先,將執(zhí)行客戶(hù)端操作,包括如何查找特定的域記錄。然后將向你展示如何編寫(xiě)一個(gè)自定義的DNS 服務(wù)器和DNS 代理,這兩個(gè)都對(duì)C2操作很有用。 第6 章:與SMB 和NTLM 交互 我們將探索SMB 和NTLM 協(xié)議并以此為基礎(chǔ)討論在Go 中的協(xié)議實(shí)現(xiàn)。我們將使用SMB 協(xié)議的部分實(shí)現(xiàn)討論數(shù)據(jù)的編組和解組、自定義字段標(biāo)簽的使用等。此外,我們還將討論并演示如何使用SMB 協(xié)議的部分實(shí)現(xiàn)檢索SMB 簽名策略以及進(jìn)行密碼猜測(cè)攻擊。 第7 章:濫用數(shù)據(jù)庫(kù)和文件系統(tǒng) 掠奪數(shù)據(jù)是對(duì)抗測(cè)試的一個(gè)關(guān)鍵方面。數(shù)據(jù)存在于眾多資源(包括數(shù)據(jù)庫(kù)和文件系統(tǒng))中。該章介紹了在各種常見(jiàn)的SQL 和NoSQL 平臺(tái)上進(jìn)行連接和與數(shù)據(jù)庫(kù)交互的基本方法。你將學(xué)習(xí)連接到SQL 數(shù)據(jù)庫(kù)和運(yùn)行查詢(xún)的基本知識(shí)。我們將向你展示如何在數(shù)據(jù)庫(kù)和表中搜索敏感信息,這是在后滲透階段使用的一種常見(jiàn)技術(shù)。我們還將演示如何遍歷文件系統(tǒng)和檢查文件中的敏感信息。 第8 章:原始數(shù)據(jù)包處理 我們將向你展示如何使用基于libpcap 的gopacket 庫(kù)來(lái)嗅探和處理網(wǎng)絡(luò)數(shù)據(jù)包。你將學(xué)習(xí)如何識(shí)別可用的網(wǎng)絡(luò)設(shè)備、如何使用數(shù)據(jù)包過(guò)濾器以及如何處理這些數(shù)據(jù)包。然后我們將開(kāi)發(fā)一個(gè)端口掃描程序,它可以通過(guò)各種保護(hù)機(jī)制(包括syn-flood 和syn-cookies)可靠地進(jìn)行掃描,但這些機(jī)制會(huì)導(dǎo)致正常的端口掃描出現(xiàn)過(guò)多的誤報(bào)。 第9 章:編寫(xiě)和移植利用代碼 該章幾乎只關(guān)注漏洞利用。首先創(chuàng)建一個(gè)模糊器來(lái)發(fā)現(xiàn)不同類(lèi)型的漏洞。該章的后半部分將討論如何從其他語(yǔ)言移植現(xiàn)有的漏洞利用到Go 中。要討論的內(nèi)容包括如何移植Java 反序列化利用和臟牛(Dirty COW)提權(quán)利用。我們將在該章結(jié)束時(shí)討論如何創(chuàng)建和轉(zhuǎn)換shellcode 以便用在Go 程序中。 第10 章:Go 插件和可擴(kuò)展工具 我們將介紹兩種不同的創(chuàng)建可擴(kuò)展工具的方法。Go 1.8 版中引入的種方法是使用Go 的本地插件機(jī)制。我們將討論這種方法的用例并討論另外一種利用Lua 創(chuàng)建可擴(kuò)展工具的方法。我們將演示一些實(shí)例,以闡釋如何選擇合適的方法來(lái)執(zhí)行一個(gè)常見(jiàn)的安全任務(wù)。 第11 章:針對(duì)密碼學(xué)的攻擊和實(shí)現(xiàn) 該章將介紹有關(guān)如何使用Go 進(jìn)行對(duì)稱(chēng)和非對(duì)稱(chēng)加密的基本知識(shí),使得你能夠通過(guò)標(biāo)準(zhǔn)Go 包來(lái)使用和理解加密技術(shù)。Go 是少數(shù)幾種不使用第三方庫(kù)進(jìn)行加密而是在語(yǔ)言中使用本地實(shí)現(xiàn)的語(yǔ)言之一。這使得代碼易于導(dǎo)航、修改和理解。 我們將通過(guò)檢查常見(jiàn)用例和創(chuàng)建工具來(lái)探索標(biāo)準(zhǔn)庫(kù)。該章將向你展示如何執(zhí)行散列、消息驗(yàn)證和加密。后,我們將演示如何對(duì)RC2 加密密文進(jìn)行暴力破解。 第12 章:Windows 系統(tǒng)交互與分析 在有關(guān)攻擊Windows 的討論中,我們將演示與Windows 本地API 交互的方法,探索syscall 包以執(zhí)行進(jìn)程注入,并且學(xué)習(xí)如何構(gòu)建可移植可執(zhí)行(Portable Executable,PE)二進(jìn)制解析器。該章后將討論如何通過(guò)Go 的C 互操作機(jī)制調(diào)用本地C 庫(kù)。 第13 章:使用隱寫(xiě)術(shù)隱藏?cái)?shù)據(jù) 隱寫(xiě)術(shù)是將信息或文件隱藏在另一個(gè)文件中。該章介紹隱寫(xiě)術(shù)的一種變體:在PNG圖像文件的內(nèi)容中隱藏任意數(shù)據(jù)。這些技術(shù)對(duì)于過(guò)濾信息、創(chuàng)建混淆的C2 消息以及繞過(guò)檢測(cè)或預(yù)防性的控制非常有用。 第14 章:構(gòu)建一個(gè)C2 遠(yuǎn)控木馬 后一章將討論Go 語(yǔ)言中C2 植入程序和服務(wù)器的實(shí)際實(shí)現(xiàn)。我們將利用前面章節(jié)所學(xué)的知識(shí)來(lái)構(gòu)建C2 通道。C2 客戶(hù)機(jī)/服務(wù)器實(shí)現(xiàn)由于其定制性質(zhì),將規(guī)避基于簽名的安全控制,并且試圖繞過(guò)啟發(fā)式和基于網(wǎng)絡(luò)的出口控制。 Tom Steele、Chris Patten和Dan Kottmann分享了他們30多年的滲透測(cè)試和進(jìn)攻性俺安全經(jīng)驗(yàn),并舉辦了多次Go培訓(xùn)和開(kāi)發(fā)課程(有關(guān)詳細(xì)信息,請(qǐng)參閱書(shū)中內(nèi)容)。 第1 章 Go 語(yǔ)言基礎(chǔ)1 1.1 設(shè)置開(kāi)發(fā)環(huán)境 1 1.1.1 下載和安裝Go 1 1.1.2 設(shè)置GOROOT 以定義二進(jìn)制文件的位置 2 1.1.3 設(shè)置GOPATH 以確定Go工作區(qū)的位置 2 1.1.4 選擇一個(gè)集成開(kāi)發(fā)環(huán)境 3 1.1.5 常用的Go 工具命令 6 1.2 理解Go 的語(yǔ)法 9 1.2.1 數(shù)據(jù)類(lèi)型10 1.2.2 控制結(jié)構(gòu)13 1.2.3 并發(fā)15 1.2.4 錯(cuò)誤處理17 1.2.5 處理結(jié)構(gòu)化數(shù)據(jù)18 1.3 小結(jié)19 第2 章 TCP、掃描器和代理 21 2.1 理解TCP 的握手機(jī)制21 2.2 通過(guò)端口轉(zhuǎn)發(fā)繞過(guò)防火墻22 2.3 編寫(xiě)一個(gè)TCP 掃描器23 2.3.1 測(cè)試端口可用性23 2.3.2 執(zhí)行非并發(fā)掃描24 2.3.3 執(zhí)行并發(fā)掃描26 2.4 構(gòu)造TCP 代理31 2.4.1 使用io.Reader 和io.Writer 32 2.4.2 創(chuàng)建回顯服務(wù)器 35 2.4.3 通過(guò)創(chuàng)建帶緩沖的監(jiān)聽(tīng)器來(lái)改進(jìn)代碼 37 2.4.4 代理一個(gè)TCP 客戶(hù)端 39 2.4.5 復(fù)現(xiàn)Netcat 命令執(zhí)行 41 2.5 小結(jié) 44 第3 章 HTTP 客戶(hù)端以及與工具的遠(yuǎn)程交互 45 3.1 Go 的HTTP 基礎(chǔ)知識(shí) 45 3.1.1 調(diào)用HTTP API 46 3.1.2 生成一個(gè)請(qǐng)求 47 3.1.3 使用結(jié)構(gòu)化響應(yīng)解析 48 3.2 構(gòu)建與Shodan 交互的HTTP 客戶(hù)端 51 3.2.1 回顧構(gòu)建API 客戶(hù)端的步驟 51 3.2.2 設(shè)計(jì)項(xiàng)目結(jié)構(gòu) 52 3.2.3 清理API 調(diào)用 52 3.2.4 查詢(xún)Shodan 訂閱情況 53 3.2.5 創(chuàng)建一個(gè)客戶(hù)端 58 3.3 與Metasploit 交互 59 3.3.1 配置環(huán)境 59 3.3.2 定義目標(biāo) 61 3.3.3 獲取有效令牌 62 3.3.4 定義請(qǐng)求和響應(yīng)方法 63 3.3.5 創(chuàng)建配置結(jié)構(gòu)體和RPC方法64 3.3.6 執(zhí)行遠(yuǎn)程調(diào)用65 3.3.7 創(chuàng)建實(shí)用程序67 3.4 使用Bing Scraping 解析文檔元數(shù)據(jù)69 3.4.1 配置環(huán)境和規(guī)劃69 3.4.2 定義元數(shù)據(jù)包71 3.4.3 把數(shù)據(jù)映射到結(jié)構(gòu)體72 3.4.4 使用Bing 搜索和接收文件.73 3.5 小結(jié)77 第4 章 HTTP 服務(wù)器、路由和中間件79 4.1 HTTP 服務(wù)器基礎(chǔ)79 4.1.1 構(gòu)建一個(gè)簡(jiǎn)單的服務(wù)器80 4.1.2 構(gòu)建一個(gè)簡(jiǎn)單的路由器81 4.1.3 構(gòu)建簡(jiǎn)單的中間件82 4.1.4 使用gorilla/mux 包進(jìn)行路由84 4.1.5 使用negroni 包構(gòu)建中間件.85 4.1.6 使用negroni 包添加身份驗(yàn)證88 4.1.7 使用模板生成HTML 響應(yīng).90 4.2 憑證收割92 4.3 使用WebSocket API 實(shí)現(xiàn)按鍵記錄.96 4.4 多路命令與控制100 4.5 小結(jié).104 第5 章 DNS 利用 105 5.1 編寫(xiě)DNS 客戶(hù)端105 5.1.1 檢索A 記錄106 5.1.2 使用Msg 結(jié)構(gòu)體處理應(yīng)答.107 5.1.3 枚舉子域.109 5.1.4 查詢(xún)A 記錄和CNAME記錄110 5.1.5 工人函數(shù)113 5.1.6 使用bufio 包創(chuàng)建一個(gè)文本掃描器.114 5.1.7 收集和顯示結(jié)果.115 5.2 編寫(xiě)DNS 服務(wù)器120 5.2.1 實(shí)驗(yàn)環(huán)境搭建和服務(wù)器介紹120 5.2.2 創(chuàng)建DNS 服務(wù)器和代理123 5.3 小結(jié).132 第6 章 與SMB 和NTLM 交互.133 6.1 SMB 包133 6.2 理解SMB .134 6.2.1 理解SMB 安全令牌135 6.2.2 創(chuàng)建一個(gè)SMB 會(huì)話(huà)135 6.2.3 使用結(jié)構(gòu)域的混合編碼.136 6.2.4 了解元數(shù)據(jù)和引用字段.139 6.2.5 理解SMB 實(shí)現(xiàn).140 6.3 使用SMB 包猜測(cè)密碼147 6.4 通過(guò)pass-the-hash 技術(shù)重用密碼.149 6.5 恢復(fù)NTLM 密碼.151 6.5.1 計(jì)算散列值151 6.5.2 恢復(fù)NTLM 散列值152 6.6 小結(jié).153 第7 章 濫用數(shù)據(jù)庫(kù)和文件系統(tǒng).155 7.1 使用Docker 設(shè)置數(shù)據(jù)庫(kù)156 7.1.1 安裝MongoDB 數(shù)據(jù)庫(kù)并寫(xiě)入數(shù)據(jù).156 7.1.2 安裝PostgreSQL 和MySQL數(shù)據(jù)庫(kù)并寫(xiě)入數(shù)據(jù).158 7.1.3 安裝Microsoft SQL Server數(shù)據(jù)庫(kù)并寫(xiě)入數(shù)據(jù).159 7.2 在Go 中連接和查詢(xún)數(shù)據(jù)庫(kù) 160 7.2.1 查詢(xún)MongoDB 數(shù)據(jù)庫(kù) 160 7.2.2 查詢(xún)SQL 數(shù)據(jù)庫(kù) 162 7.3 構(gòu)建數(shù)據(jù)庫(kù)礦工 163 7.3.1 實(shí)現(xiàn)一個(gè)MongoDB數(shù)據(jù)庫(kù)礦工 166 7.3.2 實(shí)現(xiàn)一個(gè)MySQL數(shù)據(jù)庫(kù)礦工 169 7.4 掠奪文件系統(tǒng) 172 7.5 小結(jié) 174 第8 章 原始數(shù)據(jù)包處理 175 8.1 配置環(huán)境 175 8.2 使用pcap 子包識(shí)別設(shè)備 176 8.3 實(shí)時(shí)捕獲和結(jié)果過(guò)濾 177 8.4 嗅探和顯示明文用戶(hù)憑證 180 8.5 通過(guò)SYN 泛洪保護(hù)進(jìn)行端口掃描 182 8.5.1 檢查T(mén)CP 標(biāo)志位 183 8.5.2 構(gòu)建BPF 過(guò)濾器 183 8.5.3 編寫(xiě)端口掃描器 184 8.6 小結(jié) 187 第9 章 編寫(xiě)和移植利用代碼 189 9.1 創(chuàng)建一個(gè)模糊測(cè)試器 189 9.1.1 緩沖區(qū)溢出模糊測(cè)試 190 9.1.2 SQL 注入模糊測(cè)試 193 9.2 將漏洞利用移植到Go 198 9.2.1 從Python 移植漏洞利用 199 9.2.2 從C 移植漏洞利用 202 9.3 在Go 中構(gòu)建shellcode 215 9.3.1 C 轉(zhuǎn)換 216 9.3.2 十六進(jìn)制轉(zhuǎn)換 216 9.3.3 num 轉(zhuǎn)換 217 9.3.4 raw 轉(zhuǎn)換 217 9.3.5 Base64 編碼 218 9.3.6 一個(gè)關(guān)于匯編的注意事項(xiàng).219 9.4 小結(jié).219 第10 章 Go 插件和可擴(kuò)展工具221 10.1 使用Go 的原生插件系統(tǒng)222 10.1.1 創(chuàng)建主程序.223 10.1.2 構(gòu)建一個(gè)密碼猜測(cè)插件226 10.1.3 運(yùn)行掃描器.228 10.2 基于Lua 構(gòu)建插件.229 10.2.1 創(chuàng)建head() HTTP 函數(shù)230 10.2.2 創(chuàng)建函數(shù)get() 231 10.2.3 向Lua VM 注冊(cè)函數(shù).233 10.2.4 編寫(xiě)函數(shù)main().233 10.2.5 創(chuàng)建插件腳本.234 10.2.6 測(cè)試Lua 插件.235 10.3 小結(jié)236 第11 章 針對(duì)密碼學(xué)的攻擊和實(shí)現(xiàn).237 11.1 回顧基本密碼學(xué)概念.237 11.2 理解標(biāo)準(zhǔn)的Crypto 庫(kù).238 11.3 探索散列.239 11.3.1 破解MD5 和SHA-512散列值.239 11.3.2 實(shí)現(xiàn)bcrypt241 11.4 驗(yàn)證消息.243 11.5 加密數(shù)據(jù).245 11.5.1 對(duì)稱(chēng)密鑰加密.245 11.5.2 非對(duì)稱(chēng)加密.248 11.6 暴力破解RC2.255 11.6.1 準(zhǔn)備工作.256 11.6.2 生產(chǎn)工作.258 11.6.3 執(zhí)行工作和解密數(shù)據(jù).260 11.6.4 編寫(xiě)函數(shù)main() .261 11.6.5 運(yùn)行程序.263 11.7 小結(jié).264 第12 章 Windows 系統(tǒng)交互與分析 265 12.1 Windows API 的函數(shù)OpenProcess()265 12.2 unsafe.Pointer 和uintptr類(lèi)型268 12.3 使用syscall 包執(zhí)行進(jìn)程注入270 12.3.1 定義Windows DLL并給變量賦值272 12.3.2 使用OpenProcess Windows API 獲取進(jìn)程令牌.273 12.3.3 使用VirtualAllocEx Windows API 操作內(nèi)存.276 12.3.4 使用WriteProcessMemory Windows API 寫(xiě)入內(nèi)存.276 12.3.5 使用GetProcessAddress Windows API 查找LoadLibraryA .277 12.3.6 使用CreateRemoteThread Windows API 執(zhí)行惡意DLL.278 12.3.7 使用WaitforSingleObject Windows API 驗(yàn)證注入.279 12.3.8 使用VirtualFreeEx Windows API 進(jìn)行清理.280 12.3.9 附加練習(xí).281 12.4 可移植的可執(zhí)行文件281 12.4.1 理解PE 文件格式282 12.4.2 編寫(xiě)一個(gè)PE 解析器282 12.4.3 附加練習(xí).293 12.5 在Go 中使用C293 12.5.1 安裝C Windows 工具鏈293 12.5.2 使用C 和Windows API創(chuàng)建一個(gè)消息框294 12.5.3 在C 程序中嵌入Go代碼.295 12.6 小結(jié).297 第13 章 使用隱寫(xiě)術(shù)隱藏?cái)?shù)據(jù).299 13.1 探索PNG 格式.299 13.1.1 文件頭.300 13.1.2 塊序列.300 13.2 讀取圖像字節(jié)數(shù)據(jù).301 13.2.1 讀取頭數(shù)據(jù).302 13.2.2 讀取塊序列.303 13.3 寫(xiě)入圖像字節(jié)數(shù)據(jù)以植入載荷.306 13.3.1 查找塊偏移量.306 13.3.2 使用方法ProcessImage()寫(xiě)入字節(jié).306 13.4 使用XOR 編碼和解碼圖像字節(jié)數(shù)據(jù).311 13.5 小結(jié).316 13.6 附加練習(xí).316 第14 章 構(gòu)建一個(gè)C2 遠(yuǎn)控木馬.319 14.1 入門(mén).319 14.1.1 安裝用于定義gRPC API的Protocol Buffers .320 14.1.2 創(chuàng)建項(xiàng)目工作區(qū).320 14.2 定義和構(gòu)建gRPC API 321 14.3 創(chuàng)建服務(wù)器323 14.3.1 實(shí)現(xiàn)協(xié)議接口.323 14.3.2 編寫(xiě)函數(shù)main() .325 14.4 創(chuàng)建客戶(hù)端植入程序.327 14.5 構(gòu)建管理組件.329 14.6 運(yùn)行RAT330 14.7 改進(jìn)RAT330 14.7.1 加密通信.331 14.7.2 處理連接中斷.331 14.7.3 注冊(cè)植入程序 331 14.7.4 添加數(shù)據(jù)庫(kù)持久 332 14.7.5 支持多個(gè)植入程序 332 14.7.6 添加植入程序功能 332 14.7.7 鏈接操作系統(tǒng)命令 333 14.7.8 增強(qiáng)植入程序的真實(shí)性并實(shí)踐良好的運(yùn)營(yíng)安全333 14.7.9 添加ASCII Art .333 14.8 小結(jié)334
你還可能感興趣
我要評(píng)論
|