譯 者 序
在網絡安全的世界里,需求、場景、時機,往往瞬息萬變。一個今天還能打遍天下的0day漏洞,可能明天就會被全網緊急修復;一套一小時前還在線的業(yè)務系統(tǒng),可能下一秒就被藍隊拔了網線。在這種爭分奪秒的場景下,Python這樣的語言堪稱“最好的伙伴”。
Python簡單、快捷,效率驚人,寫一行代碼就能直接看到結果。它擁有非;钴S的開發(fā)者社區(qū)和豐富的第三方生態(tài),用幾行代碼就能跨平臺實現各種復雜功能。它的動態(tài)類型設計雖然在構建大型項目時會導致你寫出很爛的代碼,但是在攻防場景中卻會給你美好順滑的編程體驗——寫百十來行的攻擊代碼就罷,今天打完這一場,明天這些代碼就進垃圾桶,管它參數類型是str還是int呢?
對于暢銷書《Python黑帽子:黑客與滲透測試編程之道》的再版,兩位作者投入了很大的精力,將書中的示例代碼進行了全方位的升級,除了引入的Python 3新語法、新框架之外,你能明顯地感受到示例代碼的質量有了很大提升。前一版中的示例代碼看起來像是為了應付需求而隨手寫的小腳本,而這一版中的示例代碼則更像是正經的教學代碼或開源項目代碼。
本書討論的話題都非;A,但也都相當實用,適合有一定Python基礎、初學信息安全的同學閱讀。親手實現書里的示例能使你感受到快樂和成就感,但是,如果你想備戰(zhàn)CTF拿名次的話,不推薦選擇這本書作為參考,因為其定位更偏向于拓展視野和培養(yǎng)興趣,內容跟CTF的比賽范圍幾乎沒什么重疊。建議“賽棍們”還是好好刷題,專心學習“賽棍”專用讀物。
由于水平有限,翻譯中難免出現一些錯漏和表達不準確的地方,歡迎讀者批評指正。
——Gh0u1L5 騰訊玄武實驗室研究員
2021年7月于北京
中文版推薦序一
20年前,我剛開始研究網絡安全的時候,社區(qū)里最流行的腳本語言是Perl。當時,一個Exploit如果不是用C寫的,八成就是用Perl寫的,沒人聽說過Python。
那時候Python已經誕生近10年了。其實Python幾乎和Perl一樣古老。Perl的第一個版本是1987年發(fā)布的,而Python的發(fā)布時間只比它晚了4年。
但20年后的今天,網絡安全社區(qū)里已經幾乎看不到Perl的影子,人人都在用Python。
一種編程語言的興衰,固然和其自身有關,但也和技術環(huán)境的變化有關,還有一點運氣在里面。無論如何,一旦天平開始向一邊傾斜,就會產生很大的勢能。因為編程語言不僅是人和計算機對話的語言,也是編程者之間溝通的語言。語言的力量是巨大的,可以讓我們建起巴別塔。所以技術生態(tài)一旦成熟,就會具有強大的生命力。
今天,Python已經成為網絡安全社區(qū)里最重要的語言之一,而且地位非常穩(wěn)固。無論是研究Web、操作系統(tǒng)、網絡協(xié)議,還是硬件或者無線,都可以在社區(qū)里找到現成的模塊和代碼樣例。不僅如此,甚至Python自身都已經成為網絡攻擊的目標——出現了向PyPI倉庫投毒的攻擊方式。
很多講編程的書多少都會有些枯燥,但《Python黑帽子:黑客與滲透測試編程之道》(第2版)這本書完全不會。因為它其實并不是在談Python語言本身,而是以Python作為線索在講網絡安全攻防。也正因為是以Python作為線索的,所以閱讀這本書不僅可以學到攻防知識,還能學到怎么用Python去實現。
我還記得7年前《Python黑帽子:黑客與滲透測試編程之道》的第1版發(fā)行后,很快就在網絡安全社區(qū)里流行起來。除了初學者們將其看作必備的入門書籍,一些已經工作了很多年的老家伙也會讀。因為即使書中的網絡安全知識對我們來說已經并不陌生,但知道如何以Python為工具去運用這些知識,可以幫助我們更高效地完成工作,也能使我們更順暢地和社區(qū)成員交流。
——tombkeeper
中文版推薦序二
本書讀起來很順暢,覆蓋了黑客或滲透工程師常用的很多技巧。其特點是,剖析技巧的本質,然后用Python 的內置模塊或優(yōu)秀的第三方模塊來實現。
Python 是一門非?岬闹髁髡Z言,擁有優(yōu)美的編碼風格、頑強的社區(qū)與海量優(yōu)質的模塊,如果看到一段代碼寫得很好,我們會說:“Pythonic!”這本書用Python 來實現滲透測試中用到的各類技巧與工具,讓人不得不說一句:“Pythonic!”
可以看出作者有豐富的滲透測試經驗與Python 編程經驗,感謝作者能把自己的經驗如此清晰地分享出來,也感謝出版社能將這本書引入國內。
這本書的發(fā)行,會讓更多人投身Python 黑客領域,不再是只會使用他人工具的“腳本小子”,在必要時刻,也能用Python 打造屬于自己的漏洞利用工具。
關于Python有句流傳甚廣的話:“人生苦短,快學Python”。是的,人生苦短,如果你立志成為一名真正的黑客,Python 值得你掌握,這本書是一個非常好的切入點。
——余弦 知道創(chuàng)宇技術副總裁
中文版推薦序三
在日常工作中,Python已經成為我最常用的語言,其代碼簡潔、高效,同時擁有強大、豐富的第三方庫,往往起到事半功倍的效果,極大提高了我的工作效率。
在滲透測試過程中,收集目標的信息、對漏洞進行模糊測試、利用漏洞、提升權限、部署后門等,對滲透測試人員來說都是重復繁雜的工作。幸運的是,這些基本上都可以利用Python來實現自動化、工具化。在這本《Python黑帽子:黑客與滲透測試編程之道》(第2版)中,作者通過滲透實戰(zhàn),從多個維度向讀者闡述了Python如何被用在黑客和滲透測試的各個領域。相信本書能夠給那些想要利用Python來提升自身水平的讀者帶來收獲。
從Python開始,培養(yǎng)和鍛煉自己的黑客思維。本書值得擁有!
——張瑞冬(Only_Guest)無糖信息CEO
中文版推薦序四
曾經去高校宣講,被問得最多的問題就是,如何成為一名黑客。而成為一名黑客高手,是我們這批從事安全技術的人的夢想。
那么,如何成為高手呢?兩個秘訣:持之以恒和動手實踐。
記得剛剛接觸計算機時,機緣巧合之下我買了本安全技術雜志月刊,但是由于水平所限,里面的技術文章一篇都看不懂。不過我每期都買來看,大約持續(xù)了半年,慢慢地發(fā)現自己能夠看懂了,后來甚至還可以在雜志上發(fā)表文章、發(fā)布黑客工具。就這樣堅持著,我終于走進了安全行業(yè)。
“紙上得來終覺淺,絕知此事要躬行”,成為黑客高手的另一個秘訣就是要多實踐。實踐就一定會涉及開發(fā)自己的工具或者優(yōu)化別人的代碼,所以我們必須精通一門甚至多門腳本語言。Python就是這樣一門強大的腳本語言,很多知名的黑客工具、安全系統(tǒng)框架都是用Python開發(fā)的。比如,大名鼎鼎的滲透測試框架Metasploit、功能強大的fuzz 框架Sulley、交互式數據包處理程序Scapy 都是用Python 開發(fā)的,基于這些框架,我們可以擴展出自己的工具(多學一些總是好的,在這里也不必爭論是Python 好還是Perl 好這樣的問題)。
就我個人的經驗來看,與實踐結合是快速學習相關能力的路徑。這本書就從實戰(zhàn)出發(fā),基于實際攻防場景講解代碼思路,能夠讓讀者快速了解和上手Python,進行黑客攻防實戰(zhàn),所以特別推薦給大家。
知易行難,大家在讀書的同時不要忘記實踐:先搞懂原理,再根據實際需求寫出一個強大的Python 工具。
——胡珀(lake2)騰訊安全中心副總監(jiān)??
中文版推薦序五
幾乎所有網絡安全經典工具,包括調試器、滲透工具、取證工具、報文分析等都支持使用Python語言編寫功能插件。不會編寫程序的黑客是一個假黑客,最多是一個頂級的工具小子;而最適合網絡安全的編程語言,莫過于Python,可以說不會用Python編程的滲透測試工程師是沒有前途的。其實,知道創(chuàng)宇公司從2007年成立之時,就要求除了前端使用JavaScript和少量例外,全公司只允許使用Python語言。這門語言簡單易學,各種第三方功能包十分豐富且強大。這本書的編程知識涉及網絡安全的方方面,從漏洞的POC到網絡通信,從攻擊取證到數據報文分析,非常全面,十分實用,是網絡安全從業(yè)者不可多得的一本好書。鄙人不敢藏私,力薦給大家。
——楊冀龍 知道創(chuàng)宇 CTO
中文版推薦序六
Python 是網絡安全領域的編程利器,在分秒必爭的CTF 賽場中擁有統(tǒng)治地位,在學術型白帽研究團隊和業(yè)界安全研究團隊中也已經成為主流編程語言。本書作者在其暢銷書《Python 灰帽子:黑客與逆向工程師的Python 編程之道》之后,再次強力推出姊妹篇《Python 黑帽子:黑客與滲透測試編程之道》,以其在網絡安全領域,特別是漏洞研究與滲透測試方向上浸淫十數年的經驗,獻上又一本經典的Python 黑客養(yǎng)成手冊。我非常高興地看到譯者以精準的翻譯、專業(yè)的表達將本書內容原汁原味地奉獻給國內的讀者。
——諸葛建偉 清華大學副研究員/藍蓮花戰(zhàn)隊聯(lián)合創(chuàng)始人及領隊/XCTF 聯(lián)賽聯(lián)合發(fā)起人及執(zhí)行組織者
中文版推薦序七
我們一直認為,一個合格的安全從業(yè)者必須有自己動手編寫工具和代碼的意愿與能力。在這個安全攻防和業(yè)務一樣日趨大數據化、對抗激烈化又隱蔽化的年代,攻防雙方都必須有快速實現或驗證自己想法的能力。選擇并學習使用一個好的工具會起到事半功倍的效果。
Python則是目前特別適合這種需求的語言。平緩的學習曲線、膠水語言的靈活性和豐富的支持庫使其天然成為攻防雙方均可使用及快速迭代的利器,幾乎可以覆蓋安全測試的方方面面。求學時,我使用Scapy(本書中有詳細的介紹)和PyQt 庫編寫了Wifi 嗅探工具WifiMonster;在我參加的CTF 比賽中,基本上所有的漏洞利用工具都是用基于Python 的pwntools 和zio 庫編寫的;在Keen,我們的很多fuzzer 和靜態(tài)分析器也都是用Python 編寫的。
但令人遺憾的是,目前國內的高校很少有將Python 及其在安全領域方面的應用列入計算機和信息安全專業(yè)培養(yǎng)計劃的,市面上也缺乏相關圖書供從業(yè)人員學習。本書填補了這個空白:作者從逆向和漏洞分析挖掘的角度編寫了《Python 灰帽子:黑客與逆向工程師的Python 編程之道》后,又從滲透測試和嗅探、取證的角度編寫了這本書,介紹Python 在這些方面的應用和相關庫的使用。本書譯者在安全領域有豐富經驗,能保證翻譯質量。
相信讀者會從本書中受益良多。
——何淇丹(a.k.a Flanker) Keen Team 高級研究員
中文版推薦序八
接觸信息安全之前,Python就已經是我的常用語言了,它能滿足我日常工作的所有需求。因為對Python 已經有一定了解,接觸信息安全以后,借助這一利器,我在信息安全領域的探索進行得很順利。
老牌大黑客查理·米勒說的沒錯,腳本小子和職業(yè)黑客的區(qū)別是黑客會多編寫自己的工具而少用別人開發(fā)的工具。從事Web 滲透測試相關工作以及參加CTF競賽的時候,我基本上都是用自己寫的Python 腳本來實現目的的:掃描及收集目標的信息,測試大量已知漏洞是否存在,自動發(fā)現SQL 注入、XSS 攻擊點,對攻擊進行抓取、截獲和重放,在比賽中大量部署后門進行控制等。
Python 中有大量第三方庫,可以讓你從無關的工作中脫身,專心實現自己所需要的功能(有時你甚至會發(fā)現有人已經很好地實現了你所需要的功能),不被雜亂的事務所困擾。在Web 滲透測試這種重視效率的工作中,用Python快速地把自己的需求轉換成能運行的程序,實在是令人興奮的一件事。
作者在本書中所給出的大量樣例和技巧,足以讓那些想利用Python 迅速提高Web 滲透測試水平的人得到很大的幫助。但請記住,一定要動手實踐。
只有動手實踐,才能真正體會到本書的精華所在。
Hacking the planet by Python!
——陳宇森 北京長亭科技有限公司聯(lián)合創(chuàng)始人/藍蓮花戰(zhàn)隊核心成員/BlackHat 2015 講者
推薦序
從我為轟動一時的《Python黑帽子:黑客與滲透測試編程之道》(第1版)作序以來,已經過去6年了。這些年,世界變了不少,但有一件事始終沒變:我每天還是要寫一大堆Python代碼。在計算機安全領域,為了應付各式各樣的任務,你每天仍要跟用各種語言編寫的工具打交道,比如用C語言寫的內核漏洞利用程序,用JavaScript寫的JavaScript fuzzer,或是用Rust之類的“花哨”語言寫的代理。然而,Python依然是這個圈子里的“得力干將”。在我看來,它仍是最易上手的編程語言,有數不勝數的第三方庫;如果需要快速編寫代碼完成復雜任務,輕松地化繁為簡,那么Python是最佳選擇。有大量的安全工具和漏洞利用程序仍然是用Python編寫的,比如CANVAS這樣的漏洞利用框架,以及Sulley這樣經典的fuzzer。
在《Python黑帽子:黑客與滲透測試編程之道》(第1版)發(fā)行之前,我就已經用Python寫過許多fuzzer和漏洞利用程序(攻擊代碼),攻擊過的目標包括Mac OS上的Safari瀏覽器、蘋果手機、安卓手機,甚至還有游戲《第二人生》(你可能需要上網搜一搜這個游戲)。
我還跟Chris Valasek一起寫過一段挺特別的攻擊代碼,它能夠遠程感染包括2014款Jeep切諾基在內的多款車型。這段攻擊代碼當然也是用Python寫的(基于dbus-python模塊)。我們開發(fā)了大量工具,能夠在感染車輛之后遠程控制它的方向盤、剎車和油門。上述這些工具,也全部是用Python開發(fā)的。從某種意義上,你甚至可以說是Python害菲亞特克萊斯勒公司召回了140萬輛汽車。
如果你喜歡做一些“修修補補”類的信息安全小項目,那么Python是一門非常值得學習的語言,因為Python中有大量的逆向工程框架、漏洞利用框架供你使用。現在,只要那幫Metasploit開發(fā)者能恢復神智,棄Ruby投Python,我們的開發(fā)者社區(qū)就能迎來統(tǒng)一。
此次對這本經典書的升級,Justin和Tim把書里的所有代碼都更新到Python 3版本。就個人而言,我是個想要死守Python 2的老頑固,但是當所有第三方庫都升級到Python 3時,我也得去接受它。這個新版很好地覆蓋了大量知識點,它們都是摩拳擦掌的年輕黑客們入門必備的知識,從如何收發(fā)網絡數據包,到網絡應用審計/攻擊所需的各項技能,應有盡有。
總之,《Python黑帽子:黑客與滲透測試編程之道》(第2版)是一本由從業(yè)多年的專家精心撰寫的好書,無私分享了他們一路走來學到的許多訣竅。也許它不會讓你馬上變成像我一樣的絕世高手,但它絕對能夠讓你走上一條正確的道路。
記住,腳本小子和職業(yè)黑客之間最大的區(qū)別,就是前者只會用別人寫的工具;而后者,能創(chuàng)造自己想要的一切。
——Charlie Miller
前言
Python黑客、Python程序員,隨便你怎么稱呼我們。Justin大部分的時間都在做滲透測試,這項工作要求快速開發(fā)出各種Python工具,并以最終成果為導向,不一定兼顧美觀、性能,甚至穩(wěn)定性之類的細節(jié)。而Tim的口頭禪則是“先讓代碼能用,然后使其易懂、高效”。如果你的代碼寫得簡潔漂亮,不僅能方便別人讀懂,你自己隔了幾個月再看也會很輕松。通過閱讀本書,你將了解我們的編程風格:我們以實現各種又快又臟的巧妙方案為最終目標,而編寫干凈易懂的代碼是我們抵達這個目標的手段。希望這種編程哲學和風格也能對你有所幫助。
自《Python黑帽子:黑客與滲透測試編程之道》(第1版)問世以來,Python世界發(fā)生了不小的變化。Python 2于2020年1月被停止維護,Python 3成為目前編程與教學的推薦環(huán)境。因此,在本書中我們將所有代碼遷移到Python 3,并用上了最新的包與第三方庫。我們還用了一些Python 3.6和Python 3以上的版本才引入的語法,比如Unicode字符串、上下文管理器、f-string等。最后,我們還在本書中增補了一些編碼和網絡編程的知識點,比如上下文管理器的用法、BPF語法,以及ctypes和struct庫的比較等。
在閱讀本書的過程中,你會發(fā)現每個知識點都沒有講太深,這是我們有意為之的。我們希望教你一些基礎知識,再加一點簡單的技巧,為你進入黑客開發(fā)領域打下基礎。與此同時,我們在本書里塞了不少拓展閱讀材料、有趣的想法和課后作業(yè),以此來啟發(fā)你找到自己的方向。我們鼓勵你去實踐這些想法,也歡迎你分享“造輪子”的體驗。
像所有技術圖書一樣,本書會帶給不同水平的讀者相當不同的體驗。有的人可能只需要翻看自己急需的內容,而有的人則需要從頭到尾讀完全書。如果你是一名初級至中級水平的Python程序員,建議你按章節(jié)順序通讀本書,這個過程能讓你學到不少東西。
作為開場,我們將在第2章介紹網絡方面的基礎知識,在第3章仔細講原始socket,在第4章介紹如何使用Scapy開發(fā)有趣的網絡工具。之后我們將討論如何攻擊Web應用。在第5章我們會先教你編寫一些典型的Web黑客工具,然后在第6章用鼎鼎大名的Burp Suite來編寫一些攻擊插件。再接下來,我們花大量的篇幅討論木馬,從第7章的基于GitHub服務的C&C通信,一直講到第10章的Windows提權技術。在最后一章我們學習Volatility內存取證庫,它既能幫你理解防守方是如何思考的,又能讓你明白如何以子之矛,攻子之盾。
我們會盡可能地讓書中的代碼樣例及解釋說明文字保持簡明扼要的風格。如果你剛剛開始接觸Python,建議你動手敲書里的每一行代碼,好好鍛煉一下寫代碼的手感。書中的所有源代碼都可以在鏈接1所指的頁面 上找到。
現在,讓我們出發(fā)吧!