前言:想要寫出一篇引人入勝的文章?我們特意為您整理了談軟件漏洞分析課程建設范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:本文從《軟件漏洞分析》課程的建設目標、設計思路、內容設置、實驗環境建設和教學模式等多方面對課程建設進行了探索,重點培養學生軟件漏洞分析、漏洞利用和漏洞挖掘的能力。
關鍵詞:軟件安全;漏洞分析;漏洞利用;課程建設
1引言
軟件漏洞是指存在于操作系統或應用程序中,可導致攻擊者在未授權情況下獲取或破壞系統數據的安全缺陷[1]。隨著軟件規模不斷擴大,軟件的開發、集成變得越來越復雜,新型應用軟件數量急劇增加,導致軟件產品在推出時總會存在很多對系統安全可靠運行構成嚴重威脅的軟件漏洞[2];軟件運行與開發環境已從傳統的靜態封閉狀態轉變為互聯網環境下的動態開放狀態,因此越來越多的軟件漏洞和缺陷被發現[3]。如何發現和減少產品中的漏洞,提高軟件產品的安全性,改善軟件產品的質量是當前的重要課題?!盾浖┒捶治觥氛n程正是為了解決這一問題,培養軟件安全人才而開設。通過《軟件漏洞分析》課程建設,組建理論基礎扎實、科研能力強和工程實踐水平高的師資團隊,構建培養學生軟件漏洞分析、挖掘和利用基本能力的教學體系。本文從課程建設的目標、設計思路、內容設置、實驗環境建設和教學模式與評價方法等方面開展了研究和探索。
2軟件漏洞分析課程體系設置
2.1課程建設目標
依照教育部網絡空間安全專業的人才培養目標,參考其他相關高校軟件漏洞相關課程,建立了本課程的建設目標:(1)掌握常見軟件漏洞產生的成因和基本原理,能夠對常見軟件漏洞進行分析。(2)掌握常見緩沖區溢出漏洞的利用方法,能夠利用經典的緩沖區溢出漏洞。(3)掌握操作系統對軟件漏洞的防范機制及對應的破解機制和方法。(4)掌握基本的漏洞挖掘機制和方法,能夠運用不同的方法對多個漏洞軟件進行漏洞挖掘。(5)理解軟件漏洞發展的趨勢,了解軟件漏洞的前沿領域。(6)培養學生腳踏實地、認真嚴謹的工作風格;引導學生建立軟件安全研究的正確價值觀和職業道德倫理,同時增強學生遵紀守法的法律意識。
2.2課程設計思路
在高校的教學中,學生具備扎實計算機相關的理論基礎,理解密碼學、身份認證體系和PKI體系結構,同時具有一定的網絡攻防能力,但對于具體的如何分析二進制文件中的漏洞,如何使用各種方法來利用程序中的漏洞了解得不多;學生比較熟悉使用各種現成的工具進行網絡攻擊和漏洞利用,但對于背后的原理及更深一個層次的理解和實踐比較缺乏。因此需要系統學習軟件漏洞的原理、監測、分析和利用等方面的知識,來掌握軟件漏洞的相關知識體系;同時為了避免大偏的枯燥理論灌輸,在《軟件漏洞分析》的教學中需要引入大量的實踐環節,開展多種教學形式,調動學生的積極性和探索主動性,實現理論與實踐的結合,能夠對軟件漏洞有一個比較深入的認識。(1)強化“理論”基礎,同時做到有的放矢。軟件漏洞分析涉及匯編語言、操作系統、逆向分析、計算機組成原理、計算機系統結構等多方面的內容,同時包含不同的系統平臺以及多種不同的軟件漏洞類型,因此在選擇內容時候需要做到有的放矢,有所取舍。本課程主要以Windows平臺的軟件漏洞為研究對象,重點學習Windows平臺下棧溢出漏洞、堆溢出漏洞、整數溢出漏洞、格式化字符串漏洞的原理、分析和利用,Windows系統的漏洞防護機制的原理及對應破解方法;同時講解Windows平臺下的雙重釋放漏洞、數組越界訪問漏洞和內核漏洞的原理;在對不同類型的漏洞進行分析時,突出對應各類軟件漏洞產生原理的理解。(2)突出“實踐”導向,培養學生的實踐動手能力。在軟件漏洞的學習上,注重對學生實踐能力的培養。對每一種漏洞的理論,本課程都通過生靈活現的經典案例來加強理論的消化;從實際例子出發,通過動手分析、利用每一個漏洞樣本程序來掌握理論知識。對于不同的漏洞類型,分別采用字符串定位、棧回溯、污點追蹤、條件斷點分析、函數定位、源碼對比等方法來快速定位和分析漏洞,分析不同的漏洞成因,制定檢測、利用和防御方案。(3)緊貼前沿領域,建立學生對新興領域漏洞的自主學習基礎能力。結合當前的技術發展趨勢,課程對移動終端、云計算和物聯網的漏洞軟件進行介紹,同時結合具體的漏洞案例進行簡要分析,幫助學生對最新的軟件漏洞領域建立一個初步的理解和認識,為進一步學習對應知識打下基礎。
2.3課程內容設置
按照軟件漏洞學習實踐能力的規律,按照層次遞進的原則,將課程內容劃分為9個大的模塊。各模塊主要知識點和課時安排如表1所示,課時安排為48個學時。每個模塊中,每個知識點的內容具體如下:軟件漏洞基礎知識模塊:軟件漏洞基本概念主要講解什么是軟件漏洞、軟件漏洞產生的原因、軟件漏洞分析和利用的基本概念;PE文件格式主要講解PE文件的各個組成部分以及各種內存地址之間的轉換;必備分析工具講解PEView、Ollydbg、immunityDebugger、Windbg、IDAPro和VMware等靜態和動態分析工具軟件;最后以一個具體的例子來演示這些軟件的應用。棧溢出漏洞原理與利用模塊:函數調用原理講解函數調用過程中系統棧的變化和相關寄存器的作用;棧溢出機制講解為何存在棧溢出,以及其系統棧的變化;棧溢出利用講解當存在棧溢出漏洞時,如何編寫代碼控制程序的流程。堆溢出漏洞原理和利用模塊:先講解Windows堆管理的數據結構和策略,以及堆的分配、釋放、合并等操作;然后學習堆鏈表拆卸中可能出現的問題,以具體例子調試和體會堆溢出的利用和攻擊。ShellCode模塊:Shellcode概念部分解釋其處于軟件漏洞中的哪一個環節,以及其要解決的問題;Shellcode開發講解如何開發基本的shellcode程序,如何利用跳板開發shellcode,以及如何開發通用平臺的shellcode;Shellcode優化講解如何對shellcode進行編碼和解碼,如何盡量開發占用小空間的shellcode;基于MetaSploit的Shellcode講解通用測試平臺下shellcode的開發、和使用。其他內存攻擊技術模塊:基于結構化異常處理的攻擊講解Windows的異常處理機制,以及如何在棧和堆溢出漏洞下利用異常處理機制進行攻擊;基于虛函數的攻擊講解如何利用軟件類中的虛函數實現漏洞攻擊;Heapspray技術講解如何利用堆噴射技術實現系統攻擊,同時會結合棧和堆溢出漏洞利用技術。其他類型軟件漏洞模塊:基于條件記錄斷點的漏洞分析方法學習整數溢出漏洞的原理和利用;基于輸出消息定位漏洞的方法學習格式化字符串漏洞的原理和利用;基于?;厮莺脱a丁比較的方法學習雙重釋放漏洞的原理和利用;基于源代碼對比與跟蹤的方法學習數組越界漏洞。根據不同漏洞的特點,介紹多種不同的漏洞分析方法和利用方法[4-5]。Windows安全機制模塊:講解Windows采用的各種安全機制的實現原理,包括GS、SafeSEH、DEP、ASLR和SEHOP機制;針對每一種安全機制,介紹多種突破限制的方法,及如何利用這些漏洞。漏洞挖掘模塊:基于存在漏洞的FTP、SMTP服務器,介紹fuzz技術如何挖掘在這些服務器中的漏洞;同時基于已有的漏洞多媒體播放軟件,學習fuzz方式下如何挖掘文件類型漏洞。在挖掘漏洞的基礎上,掌握如何快速定位、分析和利用漏洞。
2.4漏洞分析實驗環境建設
漏洞分析實驗環境是整個教學中重要的部分。由于市面上沒有合適的Windows平臺下漏洞分析實驗平臺,因此根據課程的教學內容,基于VMwareWorkstationPlayer虛擬機搭建了課程的實驗平臺。在虛擬機中根據實驗環境需要,動態地導入對應的Windows操作系統,構建相應的模擬仿真實驗環境。
2.5教學模式探討
(1)案例教學法,激發學生學習興趣。該課程理論性和實踐性都很強,如果只是單純的理論講解,很容易陷入一知半解的境地,需要實踐才能對講授的理論有清晰和深刻的理解和體會。因此在教學過程中,每一章的每一個知識點的學習都通過案例進行演示來加深對知識的掌握程度。知識點的學習分為四個階段:理論講解、實踐演示、學生實踐操作和課后作業,階段之間是層級遞進的關系。首先教師講解知識點的理論,以及涉及到的工具軟件;然后教師通過具體的例子,一步一步地演示理論內容;接著通過實驗,讓學生自己動手操作實現一遍對應的例子來體會知識點;最后布置對應的課后作業,要求學生對不同的例子進行分析,通過舉一反三,加深對知識點的理解和掌握。(2)翻轉教學法,培養學生探索精神。在教學中,講解完某一種類型的漏洞知識點后,教師提供一個具體類型的CVE編號,讓學生自己組隊,從網上收集資料,分析該漏洞的成因、機理、利用方式和修復機制;在下一次課堂上,挑選兩個隊上臺講解作業結果,分享他們的心得,其他學生在臺下提問及交流。通過這種翻轉教學法,調用學生的學習積極主動性,培養自由探索和鉆研的精神。(3)靈活的考核方式,培養學生的創新能力??己酥饕綍r成績和期末大作業成績,其中平時成績60%,期末成績40%。平時成績主要由平時出勤、課堂表現、課后作業完成情況、分組案例講解等四部分構成。其中平時出勤占10%,課堂表現占10%,主要考核上課學習態度和課堂回答問題的情況;課后作業完成情況占20%,分組案例講解占20%,這兩部分主要考核學生對于知識點的掌握程度,以及課后的參與度。期末考試成績以大作業的形式開展,要求學生完成一份有一定難度的大作業,題目自選,可以是對已知漏洞的分析、利用和修復報告,也可以是對Web和二進制軟件的漏洞挖掘實踐,根據完成報告的難度給定分數。同時對于參加網絡信息安全競賽的同學,比賽的獲獎成績也可以作為期末大作業來提交。
3總結
本文構建了軟件漏洞分析課程體系,在講解漏洞相關基本理論的基礎上,緊緊圍繞實踐進行教學組織。通過案例教學、翻轉課堂和靈活的考核方式來培養學生的軟件漏洞分析實踐創新能力。
參考文獻
[1]黃燁烽,王嘉捷,楊軼.有限資源條件下的軟件漏洞自動挖掘與利用.計算機研究與發展,2019,56(11):2299-2314
[2]曹曉梅,朱楓,沙樂天.“軟件漏洞分析與防范”課程建設.軟件導刊,2018,3(17):217-220
[3]傅建明,彭國軍,嚴飛.軟件安全課程教學方法探究.軟件導刊,2020,19(2):226-229
[4]王清,張東輝,周浩,等.0day安全:軟件漏洞分析技術.第2版.北京:電子工業出版社,2011
[5]林椏泉.漏洞戰爭.北京:電子工業出版社,2016
作者:彭碧濤 王常吉 羅海蛟 單位:廣東外語外貿大學網絡空間安全學院