當我走進位於南邁阿密海灘的Ace五金商店,拿著螺絲刀沿著通道走時,我經常感到頭暈。妳會看到近50種不同規格的螺絲刀整齊有序地陳列在貨架上。每種規格的螺絲刀都與相鄰的螺絲刀有微小但非常重要的區別。我不是壹個合格的修理工,所以我不能準確地說出每把螺絲刀的理想使用情況,但我相信類似的情況也可以應用於我們的安全工具軟件。特別是當您正在對Web類型或其他高度定制的應用程序進行安全審計時,您會發現每個審計任務都需要壹個特殊的“螺絲刀”來解決問題。要知道,能夠及時拼湊出SQL API函數hooks等壹些安全小工具,已經不止壹次拯救了Immunity的工作團隊。當然,這些工具不僅適用於安全審計任務。壹旦您可以使用hook函數攔截SQL API,您就可以輕松地編寫壹個工具來實時檢測可疑的異常SQL查詢,並及時向您的客戶公司提供修復計劃,以抵禦頑固黑客的攻擊。
眾所周知,讓妳的每個安全研究人員真正成為團隊的壹部分是壹件棘手的事情。無論面臨什麽樣的問題,許多安全研究人員都充滿了從零開始的熱情,試圖完全重寫他們需要的工具庫。例如,Immunity發現了壹個SSL守護程序的安全漏洞,接下來很可能發生的事情是,您突然發現您的壹名安全研究人員實際上正在嘗試從頭開始編寫SSL客戶端。他們對此的通常解釋是“我能找到的所有SSL庫都很醜。”
妳需要盡力避免這種情況。事實上,現有的SSL庫並不難看——它只是沒有按照安全研究人員的特殊偏好風格進行設計。我們真正需要做的是深入分析大量現有代碼,快速找出問題,並根據自己的需求進行修改。這是及時構建可用的SSL庫並使用它開發仍處於保鮮期的漏洞利用程序的關鍵。為此,您需要讓您的安全研究人員像壹個真正的團隊壹樣工作。壹個掌握了Python的安全研究人員擁有壹個強大的武器,也許就像那些掌握了Ruby的人壹樣。然而,Python的真正不同之處在於,當Python狂熱分子壹起工作時,他們將像高速奔跑的超級個體壹樣強大。就像妳廚房裏的螞蟻大軍壹樣,當它們的數量足夠形成壹只大魷魚時,殺死它們將比殺死壹只魷魚困難得多。這是本書試圖告訴妳的事實。
妳可能已經為妳想做的事情找到了壹些工具。您可能會問:“我已經有壹個附帶調試器的Visual Studio了,為什麽還要編寫供我自己使用的調試器呢?”或者“WinDbg沒有插件接口嗎?”答案是肯定的。WinDbg確實提供了插件接口,妳可以通過這些API慢慢拼湊出壹些有用的東西。直到有壹天,妳可能會說:“見鬼,如果我能與WinDbg的5000名用戶建立聯系,這樣我們就可以交換我們的調試結果,那該多好啊。”如果您從壹開始就選擇Python,您可以通過編寫大約100行代碼來構建壹個XML-RPC客戶端和服務器,然後整個團隊可以同步工作並使每個人都能及時享受他人的成就和信息。
黑客攻擊絕不等同於逆向工程——妳的目標不是恢復整個應用程序的源代碼。妳的目標是比系統開發人員更深入地了解軟件系統。壹旦妳能做到這壹點,無論目標以什麽形式出現,妳最終都會成功地穿透它並獲得壹個熱門的利用機會。這也意味著妳需要成為可視化、遠程同步、圖論、線性方程求解、靜態分析技術等諸多方面的專家。因此,Immunity決定在Python平臺上對所有這些進行標準化,這樣壹旦我們編寫了壹個圖論算法,它將在我們所有的工具中通用。
在第6章中,Justin向您展示了如何使用鉤子竊取在Firefox瀏覽器中輸入的用戶名和密碼。這正是惡意軟件作者所做的事情-從之前的壹些相關報告中可以看出,惡意軟件作者通常使用壹些更高級的語言來編寫此類程序。但是,您也可以使用Python在15分鐘內編寫壹個示例程序,向您的開發人員展示他們對其產品的安全假設是無效的。壹些軟件公司現在花了很多錢來保護軟件的內部數據,因為他們聲稱有安全問題。事實上,他們所做的往往只是為了實現壹些版權保護和數字版權管理機制。
這正是本書試圖教給妳的:快速創建安全工具的能力。妳應該能夠利用這種能力為自己或整個團隊帶來成功。這就是安全工具開發的未來:快速實現、快速修改和快速互聯。我想,到最後,妳留下的唯壹問題可能是:“完成了嗎?”
Dave Aitel,Immunine的創始人兼首席技術官
2009年2月,美國佛羅裏達州邁阿密海灘。
謝謝妳
我想借此機會感謝我的家人在我寫這本書的過程中給予我的理解和支持。感謝我的四個可愛的孩子:艾米麗、卡特、科恩和布雷迪,他們給了我父親壹個完成這本書的理由。我非常高興有妳。我還想說謝謝我的姐姐和哥哥們在這個過程中給予我的鼓勵。妳們都經歷過寫書的嚴謹和艱辛。有妳們這些對技術作品的出版有同感的人真的很有益-我愛妳。我還想告訴我爸爸,妳的幽默感幫助我度過了那些無法繼續寫作的日子——我愛妳,爸爸,不要停止讓妳周圍的人笑。
多虧了許多優秀的安全研究人員的幫助,這本書逐漸成長起來:傑瑞德·德莫特、佩德拉姆·阿米尼、科迪·皮爾斯、托馬斯·海勒(傳說中不可戰勝的蟒蛇俠)和查理·米勒——我欠妳們大家壹個大大的感謝。至於豁免小組,毫無疑問,妳們壹直慷慨地支持我寫這本書。在妳們的幫助下,我不僅成長為壹名Python小子,還成為了壹名真正的開發人員和安全技術研究人員。尼科和達米花了額外的時間幫我解決了這個問題,他們非常感激。我的技術編輯戴夫·艾特爾壹直在推動本書的完成,並確保本書的邏輯性和可讀性。我想在這裏表達我的感激之情。對於另壹個戴夫,戴夫·法隆,非常感謝妳為我審閱這本書。讓我哭笑不得的錯誤,在CanSecWest會議上拯救筆記本電腦的英雄行為,以及妳作為巫師的神奇網絡知識給我留下了深刻的印象。
最後,總是在最後感謝的人是Nostarch出版團隊。泰勒和我經歷了這本書的整個出版過程(相信我,泰勒將是妳見過的最有耐心的人),比爾給了我鼓勵的聲音,還有可愛的咖啡杯和Perl備忘單。梅根在本書創作結束時為我省了很多麻煩,還有其他在幕後工作以出版本書的團隊成員——謝謝妳們!。我感謝妳為我所做的壹切。現在這個感謝演講的長度幾乎和格萊美的獲獎感言壹樣長。最後,我想再次感謝所有幫助過我的朋友,但我可能忘了提壹句——妳知道妳對這本書意味著什麽。
賈斯汀·塞茨