1. 程式人生 > >為什麼會有緩衝區溢位攻擊專欄

為什麼會有緩衝區溢位攻擊專欄

已有一段時間沒有寫部落格,今天開啟部落格收到網友的私信,問我是否從事與安全相關的工作,以及對從事安全工作有什麼好的建議。今晚想借這個機會記錄下我寫此專欄的緣由。

2014年整整一年,我成為部門的安全工程師,負責Linux系統的安全設計和加固工作,使產品滿足公司、客戶的安全要求。在此之前對安全沒有任何經驗,只有網路協議以及Linux開發的經驗,因此這一年的工作遇到很多困難,這些困難有技術上的,也有管理上的。

這一年,對Linux安全機制從零,一步步瞭解OpenSSH,PAM,SELinux,Capabilities等安全機制。識別Linux系統應該提供哪些安全機制,在不同的業務場景下應如何選用,做系統層面的分析和評估。

在公司內部經常和業務部門做安全要求的溝通,很多軟體開發人員對安全瞭解不深,設計方案時沒有從安全形度考慮特性的安全性是否符合公司的要求。特別在做漏洞分析時,談到場景是否涉及時,很多人只從業務角度分析是否涉及,而不是攻擊的角度判斷業務場景能否被攻擊。甚至很多開發人員武斷認為,只要嵌入式裝置關閉乙太網口和串品,就永遠不會受到攻擊。

在負責安全的日子,也接觸到公司各級安全專家,瞭解到很多安全理念,黑客攻擊案例,以及一些實用的攻擊方法。

於是,如何說服那些開發人員讓他們知道,只要軟體存在安全缺陷或者漏洞,就有攻擊的可能,一直困擾著我。根據我瞭解,有黑客專門買某些公司產品做逆向分析,找出漏洞,在行業內建立影響力。同時,我對一切深奧的行為充滿好奇,如果能瞭解黑客是如何攻擊的,對我來說那絕對是很大的誘惑。機緣巧合,在一次專家的技術分享中,提到緩衝區溢位攻擊方法有ret2libc, ret2plt, ROP等方法,竟然吊起了我的興趣。

其實到這個時間節點上,為期一年的安全工程師已滿期,安全工作得部門的認可。其實正向的安全防範,對我來說,沒有多大的興趣,一年的工作已將身心搞得很累,卸下安全工作,對我來說是一種放輕,讓我有充足的時間投入的Linux的設計工作中,再度與方案、程式碼親密接觸。但緩衝區溢位攻擊方法卻在一旁默默等著我。

2015年伊始,我找到了一本關於緩衝區溢位最傳統攻擊方法的圖書,它花了大筆墨介紹如何編寫ShellCode。但沒有介紹有安全防範機制下的ret2libc, ret2plt, ROP等攻擊方法。於是在網上搜索各種資料,最容理解的是ret2libc。當遇到ret2plt時,我感覺整個世界一片黑暗,根本無法理解這個攻擊方法。按資料上介紹的步驟一步步操作,發現怎麼也不成功,直到最後將整個原理搞懂後,才發現原來的一切障礙都不是困難。

春節前一段時間比較輕鬆,我在想,能否將我理解的緩衝區攻擊方法寫成部落格,與大家分享。於是趁熱打鐵,一週內就寫好了幾篇。但從ret2libc開始,每個攻擊方法就越來越難。直到老大決定讓我到部門大講壇講點東西時,才想起可以講一個緩衝區攻擊方法,這樣就把ret2libc、ret2plt和ROP原理全部搞懂。9月初終於上了大講壇,由於不具備安全的整個知識體系,講起來比較枯躁,只能在一個小圈子引起共鳴。

本文系列專欄,今晚才將最後的ROP補上,分享給大家。

本人不擅長文字表達,對攻擊方法沒有整體認識,這些攻擊方法也是現學現賣,沒有自成體系統,因此在描述上比較直白,很少參雜些歷史和發展方面的史料,還請各位將就一下。

這個專欄就到此打住了嗎? 我覺得還是可以寫的,往下可以會寫一下漏洞的攻擊方法,而不只限於緩衝區攻擊。

歡迎大家續繼關注,謝謝!