Jon Erickson:hacking——the Art Of Exploitation@2008 (第2版)
《駭客:攻擊的藝術,第二版》主要論點詳盡解釋
《駭客:攻擊的藝術,第二版》(Hacking: The Art of Exploitation, 2nd Edition)由 Jon Erickson 所著,是一本深入探討駭客技術核心原理的暢銷書。本書旨在向廣大讀者,包括那些不具備深厚程式設計背景的人,揭示駭客的藝術與科學。它強調理解攻擊的底層機制,而非僅僅教授如何使用現有的攻擊工具(exploits)。書中的主要論點圍繞著一個核心概念:駭客行為本質上是一種創造性的問題解決方式,它要求對電腦系統有深入的技術理解,並能夠以非傳統的方式利用系統規則或程式設計中的疏忽。
本書從一個獨特的角度切入,首先介紹 C 程式設計的基礎知識。作者認為,理解駭客攻擊的原理,特別是記憶體相關的漏洞,需要對程式碼如何編譯、如何在記憶體中執行有基本的認識。因此,書中從駭客的視角講解 C 語言,涵蓋變數、資料型別、控制結構、函數、指標、字串等基礎概念,並進一步深入到記憶體分段(stack, heap, data, bss, text)、位元組順序(endianness)以及程式如何與作業系統互動(例如系統呼叫)。這種由淺入深、從高階語言到低階機器碼的講解方式,為讀者建立了理解複雜攻擊技術所必需的技術基石。
建立起程式設計和電腦架構的基礎後,本書的核心部分轉向探討各種實際的駭客攻擊技術。作者詳細解釋了這些技術的運作原理,而不是提供即用的攻擊代碼。其中一個關鍵論點是,許多嚴重的安全漏洞源於程式設計中的常見錯誤或疏忽。本書重點講解了幾種主要的攻擊類型:
-
緩衝區溢位(Buffer Overflows):本書深入剖析了緩衝區溢位漏洞的工作原理,特別是堆疊式緩衝區溢位。它解釋了程式如何透過向一個固定大小的緩衝區寫入過多資料,導致相鄰的記憶體區域(如堆疊上的其他變數、儲存的基底指標或返回地址)被覆寫。透過控制返回地址,攻擊者可以劫持程式的執行流程,使其跳轉到攻擊者控制的代碼區域,實現任意代碼執行。書中也探討了堆(heap)和 BSS 段上的緩衝區溢位及其潛在的利用方式,儘管這些利用技術通常更複雜且受到系統記憶體管理機制的限制。
-
格式化字串漏洞(Format String Vulnerabilities):這類漏洞源於程式設計師在處理使用者提供的輸入時,將其直接作為格式化輸出函數(如
printf)的格式化字串使用。本書詳細解釋了格式化字串參數(如%d、%x、%s、%n)的工作方式,特別是%n參數能夠向指定的記憶體地址寫入數據的特性。透過精心構造包含格式化參數的輸入字串,攻擊者可以利用堆疊上格式化函數的參數處理機制,讀取或寫入任意記憶體地址。這種能力可以被用來修改程式的關鍵數據(例如在認證檢查中修改標誌位)或覆寫儲存程式執行流程控制的記憶體區域(如函數指標、.dtors段或全局偏移表 GOT),從而劫持程式執行流程。 -
網路攻擊技術(Network Attack Techniques):本書不僅限於單個程式的漏洞利用,還涵蓋了網路層面的攻擊。作者講解了網路通訊的基礎,包括 OSI 模型、Socket 編程以及 TCP/IP 協議的細節(如序列號、ACK 號和 TCP 標誌)。在此基礎上,書中探討了如何進行網路嗅探(sniffing)來監聽封包,以及如何進行主動嗅探(如 ARP 欺騙)來在交換式網絡中劫持或重定向流量。此外,還包括拒絕服務(DoS)攻擊的原理(如 SYN Flood、Ping of Death 等)以及 TCP/IP 會話劫持技術。這些技術利用了網絡協議本身的特性或實現上的不足,來達到監聽、修改或阻斷通訊的目的。
-
密碼學攻擊(Cryptographic Attacks):書中也涵蓋了應用密碼學中的一些攻擊方法。介紹了對稱加密(如 DES、AES)和非對稱加密(如 RSA)的基礎原理,以及它們在混合加密系統(如 SSL、SSH)中的應用。進一步探討了針對這些系統的攻擊,例如基於生日悖論和 RC4 弱 IV 的 WEP 無線加密破解(FMS 攻擊),以及如何利用 ARP 欺騙進行 SSH 中間人攻擊來繞過加密保護,嗅探敏感信息(如密碼)。本書還探討了離線密碼破解技術(如字典攻擊、暴力破解)以及利用時間/空間權衡(time/space trade-off)技術(如彩虹表原理)來加速密碼破解的方法。
本書的一個重要論點是,防禦措施與攻擊技術是相互促進、共同演化的。駭客開發新的攻擊方法,安全專家則創建相應的防禦機制來抵禦這些攻擊。書中介紹了一些常見的防禦措施,例如非執行堆疊(non-executable stack)和地址空間佈局隨機化(ASLR),以及駭客如何開發技術來繞過這些防禦(例如 Return-to-libc 攻擊和利用固定地址的跳板指令)。這種攻防之間的循環,推動著資訊安全領域的持續發展和進步。
為了讓讀者能夠親自動手實踐和深入理解這些概念,本書附帶了一個可啟動的 LiveCD。這個 LiveCD 提供了一個預配置的 Linux 環境,其中包含了書中所有的源代碼和必要的工具(如編譯器、除錯器、網路工具)。讀者無需修改自己現有的作業系統,就可以在這個環境中跟隨書中的例子進行編程、除錯、分析漏洞和執行攻擊。這種實踐性的方法強化了書本知識,並鼓勵讀者進行實驗、修改現有的攻擊技術甚至創造新的方法。
總而言之,《駭客:攻擊的藝術,第二版》的核心論點是:真正的駭客技能來源於對電腦系統底層原理的深刻理解和創造性思維。本書透過從程式設計基礎到複雜攻擊原理的全面講解,並結合實際的動手實踐,為讀者提供了一幅關於駭客世界及其技術基礎的完整圖景。它不僅教授已知的攻擊方法,更重要的是培養讀者分析和理解漏洞本質的能力,使他們能夠適應不斷變化的安全環境,並參與到攻防的持續演化中。這種對技術原理的強調,使本書超越了一般的工具使用手冊,成為一本真正探討駭客藝術的經典之作。
comments
comments for this post are closed