序
網絡空間安全已是世界各國關注的重要戰略問題,各國政府、學術界、產業界都投入了大量的資源來改善網絡空間安全狀況,發展網絡空間安全防護手段。為適應網絡技術和應用的快速發展,各種新的安全技術、安全產品、安全方案層出不窮。當前網絡繫統中,從不同層次、不同角度實現的安全產品已廣泛應用,但從近年來曝光的各類安全事件來看,各種攻擊手段仍然防不勝防。究其原因,軟件漏洞及其利用是攻擊成功的關鍵,也是繫統防御的難點。
“千丈之堤,以螻蟻之穴潰;百尺之室,以突隙之煙焚。”縱然我們有完美的安全模型和設計方案,但在這些方案的實現中,開發人員的疏忽或個別技術的缺陷都可能引入軟件漏洞,讓整個方案失效,甚至直接威脅整個繫統的安全。2010年,震網蠕蟲利用7個軟件漏洞成功突破了伊朗核電站的物理隔離網絡,造成嚴重破壞;2011年,攻擊者利用漏洞成功滲透進入了著名的安全公司RSA公司的內部網絡,並竊取了大量敏感信息;2015年,以擅長攻擊著稱的黑客團隊Hacking Team的內部網絡遭受攻擊,大量的漏洞利用代碼、內部研討資料等敏感數據洩露。這些案例都給我們敲響了警鐘,無論多麼安全的防護方案都有可能因為“小小的”軟件缺陷而被徹底突破。
近年來,各類安全事件的曝光讓人們越來越關注軟件的安全性問題。各類軟件漏洞挖掘的高手也成為業界的寵兒,但隨著軟件復雜性的增加以及漏洞和漏洞利用模式的變化,僅僅依賴於少量有個人天賦的高手已經遠遠不能滿足現實的需求。利用先進的技術方法來解決軟件安全問題,一直是學術界、產業界共同關注的焦點問題,也是當前的一大難點問題。
2016年,美國國防部組織的DARPA CGC比賽(Cyber
Grand Challenge)更是將軟件漏洞的自動化發掘、分析、利用、防御技術研究推向高潮,DARPA組織該比賽的初衷之一也是為了吸引更多的社會資源關注、參與該問題的技術研究工作。這次比賽吸引了眾多高校、科研機構和企業團隊的關注。終,來自卡耐基·梅隆大學的ForAllSecure團隊獲得。雖然CGC比賽中的場景設定與實際情況有很大差距,但這次比賽驗證了自動化攻防的技術可能性,代表了未來的技術發展方向。隨著未來軟件技術的發展和廣泛應用,軟件安全問題將越來越突出,因此,發展新的軟件安全技術是未來的主要發展方向。
我國是軟件產業大國,也是軟件應用大國。在軟件安全方面面臨的問〖1〗軟件安全分析與應用題尤為突出。究其原因,一方面是由於我國大量的軟件產品,尤其是操作繫統、數據庫等基礎軟件產品依賴於國外廠商,我們不得不面對軟件廠商不可信的現實問題;但更重要的是我們目前在軟件產品安全方面的審查能力仍很薄弱,缺乏有效的技術手段對軟件產品的安全問題實施監管。針對軟件安全問題,我國相關部門和機構做了大量的部署,取得了一繫列的成果和突破。在軟件安全檢測、軟件漏洞分析等方面形成了一繫列成果,大量成果也已經成功轉化,為提升我國網絡空間安全保障能力發揮了重要作用。
但軟件安全問題是典型的對抗性問題,面對我國軟件產業的快速發展,當前軟件安全技術和成果仍遠無法滿足現實的需求。高技術對抗需要高技術手段支撐,從2016年的DARPA CGC比賽可以看出,污點傳播分析、符號執行等以前主要在學術研究工作中采用的方法和技術已逐步可支撐一繫列軟件安全分析實踐工作,如何進一步推進相關方法和技術的實用化是當前學術界和工業界共同關注的焦點問題。
本書作者蘇璞睿研究員及其團隊十多年來一直從事軟件安全研究工作,曾主持了國家863計劃、國家自然科學基金、國家科技支撐計劃等一繫列國家重點任務的攻關工作,在軟件安全方面取得了一繫列技術突破,在動態污點傳播分析、惡意軟件分析與檢測、軟件漏洞分析與利用等方面有重大創新與積累,主持研制了惡意軟件分析檢測繫統、軟件漏洞分析繫統等多項成果,在軟件安全方面具有豐富的研究和實踐經驗。
本書由他和他的團隊根據多年的研究積累和實踐凝練而成,從基本概念、方法原理、重要工具繫統和關鍵應用場景等不同層面對目前國內外的軟件安全分析相關技術和方法進行了繫統的總結和梳理。本書兼顧了學術研究前沿技術方法和相關技術方法在工程實踐中的應用,既剖析了軟件安全分析中常用的動態污點分析、符號執行等基礎方法,也結合真實應用場景和實際案例,闡述了相關技術方法在軟件漏洞分析與利用、惡意軟件分析、協議逆向分析等多個具體問題中的應用。
本書是軟件安全分析方面一本難得的理論與實踐緊密結合的書籍,我願意把它推薦給從事軟件安全研究與實踐的科研人員、研究生和技術人員。
2017年9月於北京
前言
軟件的應用已經滲透到社會的方方面面,承載著重要的社會價值。軟件開發過程無法做到完美,軟件問題與漏洞難以避免,軟件也成為攻擊者的重要目標。當前曝光的各類網絡安全事件中,絕大部分都與軟件安全問題相關,軟件安全問題已成為關乎個人利益、社會穩定、國家安全的重要問題。
軟件安全問題中的軟件漏洞和惡意軟件是兩大經典問題,前者是由於軟件設計開發過程中的缺陷帶來的安全隱患,後者則是攻擊者有意設計的具有破壞性的軟件工具。軟件自身越來越復雜,規模越來越龐大,軟件漏洞模式、利用方式也越來越多樣化,這就對軟件漏洞的發現、分析與評估等工作帶來了一繫列的挑戰;而惡意軟件自身的技術也在不斷發展,出現了各種自我保護技術、隱蔽通信手段等,這也對惡意軟件的分析和處置提出了新的要求。無論是軟件漏洞分析還是惡意軟件分析,軟件自身的復雜性已經超越一般技術人員的分析能力和理解能力,復雜軟件的深度分析能力是軟件漏洞分析和惡意軟件分析共同面臨的瓶頸問題。
如何提高對復雜軟件的深度分析能力,並針對具體的應用場景,設計相關的分析、檢測方法,一直是軟件分析領域乃至信息安全領域關注的焦點問題。特別是考慮到很多軟件繫統無法獲得源代碼的現實,如何實現不依賴於源代碼的軟件深度分析是近年來的研究熱點。
面向軟件安全問題,本書總結了一繫列軟件分析基礎性方法,並重點介紹了軟件安全分析工作中的典型場景和相關技術手段。考慮到技術內容的完整性,書中也對當前常見的成熟工具(如反彙編工具、調試工具等)和相關基礎知識(如Intel指令集、操作繫統內核等)進行了簡單介紹。
本書的寫作主要由中國科學院軟件研究所可信計算與信息保障實驗室(TCA實驗室)的信息對抗與網絡保障團隊共同完成,本書的撰寫也是該團隊對相關技術方法和研究進展的總結。該團隊於2004年由馮登國研究員創建,後來由我組織。2004年底,團隊開始關注基於硬件虛擬化的惡意軟件分析;2005年底,組織開發了個基於開源繫統QEMU的惡意軟件分析繫統,當時命名為WooKon(取音“悟空”);2010年,面向惡意軟件檢測需求,在WooKon繫統的基礎上推出了基於硬件虛擬化的APT(Advanced Persistent Threat)攻擊檢測引擎,並在多個部門和機構成功應用,2017年我們根據新的需求與新的形勢又推出了金剛惡意軟件智能分析繫統;從2006年起,開始關注將動態污點分析應用於惡意軟件分析和漏洞分析的相關研究,〖1〗軟件安全分析與應用前言[3]〖3〗經過多年研發和逐步完善,2010年研制了套基於硬件虛擬化的動態污點分析繫統——AOTA繫統(ApplicationOriented Analysis System),並成功應用於漏洞利用自動生成研究;2013年構建了一個多樣性漏洞利用自動生成繫統——PolyAEG繫統。
我們的工作也得到了一繫列國家科技項目的支持。團隊在初建立的很長時間內沒有得到相關項目的支持,在此要感謝時任信息安全國家重點實驗室主任馮登國研究員的大力支持,保證了團隊研究工作的持續發展。2006年團隊的工作獲得了個國家863計劃項目“惡意代碼機理分析與特征提取技術研究”,此後得到了國家自然科學基金、國家科技支撐計劃、國家信息安全產業化專項等一繫列項目的支持,也在相關項目的支持下完成了從基礎方法、關鍵技術、原型繫統到成果轉化的科研過程。
軟件分析理論博大精深,軟件安全問題錯綜復雜,因作者能力和精力所限,難於對相關技術和方法進行全面、繫統的總結。因此,本書主要對使用較多的程序切片、污點分析、模糊測試、符號執行等方法進行了介紹,並對惡意軟件分析、協議逆向分析、軟件漏洞分析、Android應用安全性分析等方法和技術進行了總結。
團隊多位同事和同學參與了本書的寫作或給予了支持和幫助。第1章黃樺烽提供了一繫列案例素材;第2、3章由黃樺烽主要負責編寫;第4章由闫佳博士主要負責編寫;第5章由王衍豪博士主要負責編寫,賈相堃博士負責修改校對;第6章由聶楚江博士主要負責編寫;第7章由和亮博士主要負責編寫;第8章主要由應凌雲博士負責編寫,聶眉寧博士協助提供素材;第9章主要由楊軼博士負責編寫,闫佳博士協助修改校對;第10章由闫佳博士負責編寫,闫佳博士協助修改校對;第11章由應凌雲博士、谷雅聰博士、路曄綿博士及婧二霞共同完成。
本書的編寫得到了國家自然科學基金項目“安全協議實現的逆向分析與安全評估方法研究”(NSFC: 61572483)、“面向應用商店的移動智能終端惡意軟件檢測關鍵技術研究”(NSFC: 61502468)、“虛擬化混淆代碼逆向分析方法研究”(NSFC: 61502469)等項目的支持,在此表示感謝!
本書的編寫得到了馮登國研究員的指導和幫助,馮老師不僅對書稿內容的組織、編寫大綱等給予了指導,還審閱了全部書稿,提出了寶貴的修改意見。同時,本書終得以出版,與馮老師長期對我們團隊發展的支持是分不開的,在此對馮老師長期的支持和幫助表示衷心感謝!
多位專家、同行的真知灼見也對本書的形成提供了重要參考,在此一並表示感謝!另外,本書初稿曾作為中國科學院大學2016年春季課程講義,課上多位同學也對講義提出了寶貴的修改意見,在此一並表示感謝!
由於本書涉及內容較多,編寫時間倉促,書中難免存在疏漏和不足之處,懇請廣大讀者提出寶貴的意見和建議,以便我們不斷改進和完善本書的內容。
蘇璞睿
於中國科學院軟件研究所
2017年8月