admin 管理员组

文章数量: 887053


2024年2月7日发(作者:compare破解版)

第37卷第2期2021年2月福建电脑Journal of Fujian ComputerVol. 37

No.2Feb. 2021软件漏洞分析课程建设探讨彭碧涛王常吉罗海蛟(广东外语外贸大学网络空间安全学院广州510006)摘要本文从《软件漏洞分析》课程的建设目标、设计思路、内容设置、实验环境建设和教学模式等多方面对课程建设进

行了探索,重点培养学生软件漏洞分析、漏洞利用和漏洞挖掘的能力。关键词软件安全;漏洞分析;漏洞利用;课程建设

中图法分类号 434

GD0I:10.16707/.2021.02.015PENG

Bitao,

WANG

Changji,

LUO

Haijiao(Department

of

Cyber

Security,

Guangdong

University

of

Foreign

Studies,

Guangzhou,

China, 510006)Discussion on the Construction of Software Vulnerability Analysis Course1引言软件漏洞是指存在于操作系统或应用程序中,

2软件漏洞分析课程体系设置2.1课程建设目标依照教育部网络空间安全专业的人才培养目

标,参考其他相关高校软件漏洞相关课程,建立了

本课程的建设目标:(1)掌握常见软件漏洞产生的

成因和基本原理,能够对常见软件漏洞进行分析。(2)掌握常见缓冲区溢出漏洞的利用方法,能够

利用经典的缓冲区溢出漏洞。(3)掌握操作系统对

软件漏洞的防范机制及对应的破解机制和方法。(4)掌握基本的漏洞挖掘机制和方法,能够运用

不同的方法对多个漏洞软件进行漏洞挖掘。(5)理

解软件漏洞发展的趋势,了解软件漏洞的前沿领

域。(6)培养学生脚踏实地、认真严谨的工作风格;

引导学生建立软件安全研究的正确价值观和职业

道德伦理,同时増强学生遵纪守法的法律意识。2.2课程设计思路在高校的教学中,学生具备扎实计算机相关的

理论基础,理解密码学、身份认证体系和可导致攻击者在未授权情况下获取或破坏系统数

据的安全缺陷[1]。随着软件规模不断扩大,软件的

开发、集成变得越来越复杂,新型应用软件数量急

剧増加,导致软件产品在推出时总会存在很多对系

统安全可靠运行构成严重威胁的软件漏洞[2];软件

运行与开发环境己从传统的静态封闭状态转变为

互联网环境下的动态开放状态,因此越来越多的软

件漏洞和缺陷被发现[3]。如何发现和减少产品中的

漏洞,提高软件产品的安全性,改善软件产品的质

量是当前的重要课题。《软件漏洞分析》课程正是

为了解决这一问题,培养软件安全人才而开设。通过《软件漏洞分析》课程建设,组建理论基

础扎实、科研能力强和工程实践水平高的师资团

队,构建培养学生软件漏洞分析、挖掘和利用基本

能力的教学体系。本文从课程建设的目标、设计思

路、内容设置、实验环境建设和教学模式与评价方

法等方面开展了研究和探索。PKI体系

结构,同时具有一定的网络攻防能力,但对于具体本文得到教育部产学研协同育人基金(No.2、No.2)、广东外语外贸大学2019年度教学改革重点项目基金、2014年度教改项

目基金(14025)资助。彭碧涛(通信作者),男,1978年生,主要研究领域为软件安全。E-mail:

pengbitao@处理。E-mail:

luohaiijao@。王常吉,男,1971

年生,主要研究领域为信息安全、密码学。E-mail: 201610007@。罗海蛟,男,1975年生,主要研究领域为网络安全、自然语言

2021 年福建电脑表1教学内容安排模块软件漏洞基

础知识知识点软件漏洞基本概念;课堂59的如何分析二进制文件中的漏洞,如何使用各种方

法来利用程序中的漏洞了解得不多;学生比较熟悉

使用各种现成的工具进行网络攻击和漏洞利用,但

对于背后的原理及更深一个层次的理解和实践比

较缺乏。因此需要系统学习软件漏洞的原理、监测、

实验1PE文件格式;必备

分析工具;软件分析实验。2分析和利用等方面的知识,来掌握软件漏洞的相关

知识体系;同时为了避免大偏的枯燥理论灌输,在

《软件漏洞分析》的教学中需要引入大量的实践环

节,开展多种教学形式,调动学生的积极性和探索

主动性,实现理论与实践的结合,能够对软件漏洞

有一个比较深入的认识。(1) 强化“理论”基础,同时做到有的放软件漏洞分析涉及汇编语言、操作系统、逆向分析、

计算机组成原理、计算机系统结构等多方面的内

容,同时包含不同的系统平台以及多种不同的软件

漏洞类型,因此在选择内容时候需要做到有的放

矢,有所取舍。本课程主要以Windows平台的软件

漏洞为研究对象,重点学习Windows平台下栈溢出

漏洞、堆溢出漏洞、整数溢出漏洞、格式化字符串

漏洞的原理、分析和利用,Windows系统的漏洞防

护机制的原理及对应破解方法;同时讲解Windows

平台下的双重释放漏洞、数组越界访问漏洞和内核

漏洞的原理;在对不同类型的漏洞进行分析时,突

出对应各类软件漏洞产生原理的理解。(2) 突出‘‘实践”导向,培养学生的实践手能力。在软件漏洞的学习上,注重对学生实践能

力的培养。对每一种漏洞的理论,本课程都通过生

灵活现的经典案例来加强理论的消化;从实际例子

出发,通过动手分析、利用每一个漏洞样本程序来

掌握理论知识。对于不同的漏洞类型,分别采用字

符串定位、栈回溯、污点追踪、条件断点分析、函

数定位、源码对比等方法来快速定位和分析漏洞,

分析不同的漏洞成因,制定检测、利用和防御方案。(3) 紧贴前沿领域,建立学生对新兴领洞的自主学习基础能力。结合当前的技术发展趋

势,课程对移动终端、云计算和物联网的漏洞软件

进行介绍,同时结合具体的漏洞案例进行简要分

析,帮助学生对最新的软件漏洞领域建立一个初步

的理解和认识,为进一步学习对应知识打下基础。2.3课程内容设置按照软件漏洞学习实践能力的规律,按照层次

递进的原则,将课程内容划分为9个大的模块。各

模块主要知识点和课时安排如表1所示,课时安排

为48个学时。栈溢出漏洞

原理与利用函数调用原理;栈溢出机制;栈溢出利用。21堆溢出漏洞

Windows堆管理;堆溢出机制;堆溢出利原理与利用21用。ShellcodeShellcode 概念;Shellcode 开发;Shellcode

优化;基于

Metasploit 开发

Shellcode。63其他内存攻 基于机构化异常处理的攻击;基于虚函数

击技术的攻击;Heap

Spray技术。33其。

他类型软 整数溢出漏洞;格式化字符串漏洞;双重

释放漏洞;数组越界访问漏洞。63件漏洞Windows 软栈保护机制及其突破;SafeSEH机制及其

突破;DEP机制及其突破;ASLR机制及 33件机制其突破;SEHOP机制及其突破。FTP服务器漏洞挖掘及其利用;SMTP服

漏洞挖掘务器漏洞挖掘及其利用;33文件类型漏洞挖掘及其利用。软件漏洞发 移动终端漏洞;云计算平台漏洞;物联网3展趋势漏洞。每个模块中,每个知识点的内容具体如下:

软件漏洞基础知识模块:软件漏洞基本概念主

要讲解什么是软件漏洞、软件漏洞产生的原因、软

件漏洞分析和利用的基本概念;文件格式主要讲

解PEPE文件的各个组成部分以及各种内存地址之间

动immunity的

转换;必Debugger备分析工Windbg具讲解PEViewIDAPro、OllydbgVMware

、、 和

等静态和动态分析工具软件;最后以一个具体的例

子来演示这些软件的应用。栈溢出漏洞原理与利用模块:函数调用原理讲

解函数调用过程中系统栈的变化和相关寄存器的

作用;栈溢出机制讲解为何存在栈溢出,以及其系

统栈的变化;栈溢出利用讲解当存在栈溢出漏洞

时,如何编写代码控制程序的流程。漏

堆溢出漏洞原理和利用模块:先讲解Windows

堆管理的数据结构和策略,以及堆的分配、释放、

合并等操作;然后学习堆链表拆卸中可能出现的问

题,以具体例子调试和体会堆溢出的利用和攻击。ShellCode模块:Shellcode概念部分解释其处

于软件漏洞中的哪一个环节,以及其要解决的问

题;Shellcode开发讲解如何开发基本的shellcode

程序,如何利用跳板开发shellcode,以及如何开发

通shellcode用平台的shellcode;

Shellcode优化讲解如何对

进行编码和解码,如何尽量开发占用小空

间的

shellcode;基于

MetaSploit 的

Shellcode 讲解通矢域

60彭碧涛等:软件漏洞分析课程建设探讨第2期用测试平台下shellcode的开发、发布和使用。其他内存攻击技术模块:基于结构化异常处理

的攻击讲解Windows的异常处理机制,以及如何在

栈和堆溢出漏洞下利用异常处理机制进行攻击;基

于虚函数的攻击讲解如何利用软件类中的虚函数

实现漏洞攻击;Heap

spray技术讲解如何利用堆喷

射技术实现系统攻击,同时会结合栈和堆溢出漏洞

利用技术。其他类型软件漏洞模块:基于条件记录断点的

漏洞分析方法学习整数溢出漏洞的原理和利用;基

于输出消息定位漏洞的方法学习格式化字符串漏

洞的原理和利用;基于栈回溯和补丁比较的方法学

习双重释放漏洞的原理和利用;基于源代码对比与

跟踪的方法学习数组越界漏洞。根据不同漏洞的特

点,介Windows绍多种不同的漏洞分析方法和利用方法[4-5]。安全机制模块:讲解Windows米用的

各DEP种安ASLR全机制的实现原理,包括GS、SafeSEH、

、和SEHOP机制;针对每一种安全机制,

介绍多种突破限制的方法,及如何利用这些漏洞。漏洞挖掘模块:基于存在漏洞的FTP、SMTP

服务器,介绍fuzz技术如何挖掘在这些服务器中的

fuzz漏洞;同时基于己有的漏洞多媒体播放软件,学习

方式下如何挖掘文件类型漏洞。在挖掘漏洞的

基础上,掌握如何快速定位、分析和利用漏洞。2.4漏洞分析实验环境建设漏洞分析实验环境是整个教学中重要的部分。

由于市面上没有合适的Windows平台下漏洞分析

Workstation实验平台,因此根据课程的教学内容,基于VMware

Player虚拟机搭建了课程的实验平台。

Windows在虚拟机中根据实验环境需要,动态地导入对应的

操作系统,构建相应的模拟仿真实验环境。2.5教学模式探讨(1)案例教学法,激发学生学习兴趣。该课

程理论性和实践性都很强,如果只是单纯的理论讲

解,很容易陷入一知半解的境地,需要实践才能对

讲授的理论有清晰和深刻的理解和体会。因此在教

学过程中,每一章的每一个知识点的学习都通过案

例进行演示来加深对知识的掌握程度。知识点的学

习分为四个阶段:理论讲解、实践演示、学生实践

操作和课后作业,阶段之间是层级递进的关系。首

先教师讲解知识点的理论,以及涉及到的工具软

件;然后教师通过具体的例子,一步一步地演示理

论内容;接着通过实验,让学生自己动手操作实现一遍对应的例子来体会知识点;最后布置对应的课

后作业,要求学生对不同的例子进行分析,通过举

一反三,加深对知识点的理解和掌握。(2) 翻转教学法,培养学生探索精神。在教

学中,讲解完某一种类型的漏洞知识点后,教师提

供一个具体类型的CVE编号,让学生自己组队,

从网上收集资料,分析该漏洞的成因、机理、利用

方式和修复机制;在下一次课堂上,挑选两个队上

台讲解作业结果,分享他们的心得,其他学生在台

下提问及交流。通过这种翻转教学法,调用学生的

学习积极主动性,培养自由探索和钻研的精神。(3) 灵活的考核方式,培养学生的创新能力。

考核主要包含平时成绩和期末大作业成绩,其中平

时成绩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


本文标签: 漏洞 软件 分析 利用 学生