第 7 期2019 年 7 月 10 日
计算机教育
Computer Education
163
文章编号:1672-5913(2019)07-0163-05中图分类号:G2
网络攻防赛导向的软件安全课程创新性
与实践性建设
赵 磊,彭,刘 丹,王丽娜
(武汉大学 国家网络安全学院,湖北 武汉 430070)
摘 要:分析软件安全课程建设中面临的诸多挑战,借鉴网络攻防赛的优势,提出“以赛促教、以赛反哺课程内容”的软件安全课程创新性和实践性建设方法,介绍网络攻防赛导向的课程内容建设思路及建设方法,最后说明网络攻防赛导向的软件安全课程建设效果并进行分析。关键词:软件安全;网络空间安全;网络攻防赛
DOI:10.16512/j.cnki.jsjjy.2019.07.038
0引言
在2018年第十一届“中国大学教学论坛”中,教育部高等教育司吴岩指出,中国大学要建设高阶性、创新性和挑战度的金课[1],要求课程内容有前沿性和时代性,具有一定的挑战度,课程教学要做到知识、能力、素质的有机融合,培养学生解决复杂问题的综合能力和高级思维。
以高阶性、创新性和挑战度为建设目标,笔者结合多年来的教学和指导学生参加全国网络攻防赛的经历,以“以赛促教、以赛反哺课程内容”为主要思路,提出软件安全课程创新性和实践性建设方法。
以计算机和互联网为基础的信息系统是网络空间的基础组成部分,而软件是信息系统的灵魂。自“莫里斯蠕虫”以来,软件安全已有30多年的历史,一直是学术界和工业界的热点问题,以软件漏洞、恶意代码为代表的软件安全威胁一直占据全球网络安全威胁排行榜前3的位置。
受课程背景的影响,软件安全课程具有很强的创新性、实践性等需求,课程建设面临诸多挑战,主要包括以下几方面。
(1)从近年来曝光的各类安全事件来看,各种攻击手段防不胜防。究其原因,软件安全面临着“道高一尺,魔高一丈”的状态,新的安全技术不断出现。这就要求课程建设具有创新性,及时吸纳先进的研究成果,淘汰过时内容。
(2)软件安全的前序课程较多,与计算机体系结构、编译原理、汇编语言、操作系统等多门课程都密切相关,对学生的计算机系统能力有很高要求。这就要求课程内容应引导学生做到从计算机系统硬件到软件、从底层到应用层等的深入理解。
(3)作为一门实践性强、动手能力要求高的课程,软件安全课程内容不能局限于理论与方法,要能够贴合当前的产业发展和实战需求,培养学生的实践能力。
1软件安全课程创新性和实践性建设需
求分析
软件安全是网络空间安全相关专业的核心专业课程之一,旨在通过讲授软件执行机理、软件漏洞的成因、恶意代码的基本原理、软件逆向分析技术、安全测试等基础知识[2],培养学生逆向思维和系统安全防护能力,同时,结合软件安全配套实验,提高学生的动手实践能力,培养学生解决复杂问题的综合能力和高级思维。
基金项目:教育部“基础学科拔尖学生培养试验计划”2016 课题项目(201638)。
第一作者简介:赵磊,男,副教授,研究方向为软件及系统安全,leizhao@whu.edu.cn。
计算机教育
1
Computer Education
综上几个方面,软件安全课程内容复杂且关
2019
(1)创新性。网络攻防赛属于给定题目的竞技类赛事,每次比赛均会重新设计题目,不仅考查经典的基础理论和技术,还包含最新的学术论文和研究成果,具有创新性。
(2)前沿性。网络攻防赛题目通常由高校和企业专家设计,来自产业界的题目通常能够反映最实际的产业界需求,具有更高的前沿性。例如,以企业监控所得的网络流量为对象,可考查学生的安全分析和取证能力,而这些数据是高校很难获得的。
(3)实践性。网络攻防赛以模拟网络攻防实战为手段,重点考查学生利用专业知识解决实际问题的能力,强调动手和时间。
可以发现,网络攻防赛能够很好地提高信息安全及相关专业学生的动手及实战能力,弥补传统的课堂教学、课程实验等“重理论、弱技术”的缺陷,理应作为一种很好的促学促教手段,完善教学及课程建设。
联性强,课程内容及其配套实验的创新性和实践性建设对任课老师提出非常大的挑战。
2网络攻防赛及其优势分析
网络攻防赛源自于国际网络安全夺旗赛(简称为CTF比赛),以模拟网络攻防实战为手段培养网络安全技术人才,能够极大地提高信息安全及相关专业学生的动手及实战能力,弥补传统课堂教学、课程实验等“重理论、弱技术”的缺陷,在快速和持续提升学生专业兴趣和学生网络安全实战能力方面具有明显优势。
与其他信息安全技术比赛相比,网络攻防赛的最大特点是技术的实战性。就目前的比赛形式来看,比赛模式基本上分为两种:①在解题模式(jeopardy)的CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,与ACM编程竞赛、信息学奥赛等赛制类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛;②在攻防模式(attack with defense)中,参赛队伍在封闭的虚拟仿真环境下通过挖掘服务漏洞并攻击对手服务来得分,通过修补自身的服务漏洞进行防御以避免丢分,竞争激烈,具有很强的观赏性和高度透明性。同夺旗赛相比,攻防比赛额外考查系统防护能力,同时,不仅考查参赛队员的智力和技术,还考查团队之间的分工与合作。
网络攻防赛在国际上已经有了很多年历史,一直以来都被作为考查参赛队员动手能力和综合实战能力的重要方式,并且在创新性、前沿性、实践性等方面具有明显的优势,主要体现在以下几方面。
[3]
3网络攻防赛导向的课程内容建设思路
网络攻防赛所考查的能力比较全面,所设置的比赛题型大致分为以下5类(见表1):密码分析类、Web安全类、数字取证类、软件逆向分析类、漏洞挖掘及漏洞利用类,所考查的知识点分布在多门相关的专业课程中,涉及密码学、操作系统原理及安全、数据库原理及安全、网络安全、软件安全、信息隐藏等。
由表1可见,网络攻防赛定位于一种对学生信息安全综合能力的考查和拔高。考虑到网络攻防赛的优势,有高校已经把网络攻防赛作为主要内容开设网络攻防课程[4-5],然而,网络攻防课程内容可能会与其他相关课程内容重复。针对这
表1 网络攻防赛知识点所涉及的相关专业课程
网络攻防赛的题型
密码分析类Web安全类数字取证类软件逆向分析类软件漏洞挖掘及利用类
考查能力
主要涵盖口令破译、密码算法的脆弱性分析、密码应用等方面
知识点所涉及的专业课程
密码学
针对Web系统的渗透测试,Web系统中服务器、中间件、框架、
网络安全、数据库原理及安全
数据库等的脆弱性分析
以多媒体、网络流量等为分析对象,挖掘敏感信息或者取证攻击行为等
推理二进制程序的语义及算法实现、突破软件保护技术等挖掘二进制程序中的漏洞、诊断漏洞成因、编写漏洞利用代码
网络安全、信息隐藏软件安全
软件安全、操作系统原理及安全
第 7 期
教育与教学研究
165
一问题,“以赛促教、以赛反哺课程内容”的课程建设方法,以专业培养方案和课程教学大纲为核心,针对性地梳理网络攻防赛所考查的技术能力,凝练其背后的基础理论与知识,遴选具有创新性的知识点和相关实验素材,完善教学大纲,更新课程内容及配套实验。按照此方法,既能够吸收网络攻防赛在实践能力培养方面的优势,又能够更新课程内容,保持课程内容的创新性和时效性。
4网络攻防赛导向的软件安全课程建设
方法
笔者自2014年起主讲软件安全及其配套实验课程,自2015年起指导大学生参与全国网络攻防赛。结合自身教学经历和指导学生参加网络攻防赛的经验,以软件安全课程为对象,提出的“以赛促教、以赛反哺课程内容”的软件安全课程创新性和实践性建设方法如图1所示。
知识单元1课程内容及配套实验选拔优秀学生参与网络攻防赛,形成反馈课程大纲⋯⋯知识单元n梳理考查能力凝练创新性知识点鼓励往届学生参与教学作为教辅指导实验图1 “以赛促教、以赛反哺课程内容”的软件安全课程建设方法
首先,结合专业培养方案和教学大纲,以网络攻防赛为导向,优化课程内容和实验建设,培养学生实践能力;其次,基于课程考核及实验完成情况,选拔优秀学生参加比赛,并根据学生参赛经历形成反馈;最后,梳理网络攻防赛所考查的知识与能力,凝练创新点,更新课程内容和配套实验。课程建设方法按照“选拔优秀学生参加网络攻防赛”“赛后题型剖析”“知识点梳理”“更新教学内容”“鼓励学生做教辅参与教学”等步骤实现年度的软件安全课程内容迭代和更新。经过2015—2018年的探索,武汉大学软件安全课程建设共改造和吸收了来自网络攻防赛的9个知识点和相关实验,总的实验达到32学时,具体的更新知识点见表2。
结合武汉大学信息安全专业的培养方案和教学大纲,软件安全课程的知识点共包括8个单元。其中,知识单元1和2为本门课程基础性的前导课程单位。对比表1和表2可以发现,网络攻防赛中软件逆向分析、漏洞挖掘及漏洞利用两类题型考查的知识点和技术能力与软件安全课程的多个知识单元密切相关。
以表2中的JIT-ROP漏洞分析为例,该题目源自2015年上海市信息安全行业协会承办的ISG信息安全技能竞赛,题目所考查的知识点源自2013年发表在国际顶级学术会议IEEE Symposium on Security & Privacy的学术论文[6]。该论文提出了一种利用内存泄漏漏洞可同时绕过操作系统DEP保护和ASLR保护的漏洞利用方法,具有非常强的创新性。
在梳理题目背后的知识点后,对比分析之前的软件安全课程大纲,可以发现课程知识点中涵盖DEP保护和ASLR保护的原理,以及两者对缓冲区溢出漏洞的抑制作用。此学术论文提出了全新的漏洞利用方法,指出DEP保护和ASLR保护的不完善之处,对之前课程内容是一个很好的补充,因此将该学术论文提出的JIT-ROP漏洞分析方法更新到课程内容,同时将该赛题经过改造后吸收进课程实验,仅作为培养学生实践能力的素材,不作其他用途。
此次课程内容的更新,既能够吸收JIT-ROP漏洞分析的创新性优势,保持课程内容的前沿性和时效性,同时又让学生学习前沿技术并付诸实
计算机教育
166
Computer Education
表2 网络攻防赛导向的软件安全实验内容
主要知识单元
具体知识点及配套实验内容
分析PE/ELF可执行文件的结构与格式;利用readelf、objdump等工具解析给定的可执行文件;自行设计实现一个可执行文件解析工具逐步分解编译过程,分析预处理、编译、汇编、链接等各个编译阶段的输出结果;分析重定位、PLT/GOT工作方式
以Windows病毒为例,分析恶意代码传播机理;以反汇编、静态代码分析、动态代码调试等手段,分析给定实验程序的多个保护机制利用静态分析、动态调试等方法,识别恶意样本的函数入口,去除功能无关的花指令;利用工具去除常见的软件保护壳
定位程序内存在的格式化字符串漏洞;利用该漏洞,泄露特定内存地址的内容,重写特定内存地址的内存对象值
分析程序内存在的栈溢出漏洞;编写漏洞利用代码,获取系统shell分析程序存在的堆溢出漏洞;编写漏洞利用代码,泄露特定内存地址的内容,重写特定内存对象值
编写漏洞利用代码,绕过系统的DEP/ASLR防护,获取系统shell
2019
从网络攻防赛中吸收和改造的更新知识点及其实验
无无
Android平台App逆向分析软件自解密的逆向分析利用此漏洞泄露内存利用此漏洞重写关键数据
ROP实验DWORD漏洞分析FASTBIN漏洞分析JIT-ROP漏洞分析沙盒逃逸的漏洞分析
可执行文件的结构与格式程序的链接与执行机理恶意代码传播机理及软件逆向分析高级软件逆向分析格式化字符串漏洞分析栈溢出漏洞分析堆溢出漏洞分析高级漏洞利用实验
践,提高动手能力和实践水平,为此后的网络攻防赛奠定基础。
到了新的知识,学习能力得到了锻炼。这一整个过程中,虽然遇到了许多问题,但是在查找资料并解决问题之后,逐步对之前学过的很多概念有了更加清晰的理解,有很大的成就感”。
“我们逐渐融会理解了计算机系统、软件安全课程中所学的知识,它们不再是课本或PPT中难以理解的一句句话或一行行代码,而是一个软件中鲜活的一部分,这次实践仍然让我们收获颇丰”。
5教学效果
依据“以赛促教、以赛反哺课程内容”的课程建设方法,经过2015—2018年的探索,课程教学取得良好效果;同时,以课程实验成绩为基准选拔出优秀学生代表报名参加全国网络攻防比赛,也取得了不错的成绩。
5.1 课程反馈
根据课程结束后的课程评议,“课程难却收获颇丰”“既有理论,又能锻炼动手能力”等成为大部分学生的课程总结感想。现摘录学生对本门课程的代表性评议如下。
“课程任务重,从没有这么复杂的课,但是另一方面也督促自己思考,能在课上学到很多知识”。
“这学期实验课,一节课一个实验,一次实验虽然只安排了4学时,但基本上课上做不完,有的课下需要做好几天。不过是真的学到了东西”。
“全部的实验做下来让我重新理解了计算机系统结构、计算机组成原理、操作系统等基本原理,就应该有大量的实践”。
“这次软件安全实验让我深刻感受到自己学
5.2 网络攻防赛参赛情况及成绩
课程授课对象为三年级本科生。在课程结束后,优秀本科生会被推荐参加全国性质的网络攻防类竞赛,其中代表性的比赛有“XCTF全国大学生网络安全能力联赛”“全国大学生信息安全竞赛——实践能力赛”等。每年级的参赛人数一般在6~20人。
得益于课程内容的前沿性和实践性,武汉大学学生代表队在过去的几年里一直保持较高水平,获得了优异成绩,所获奖项见表3。
6结语
在“深入学习贯彻全国教育大会精神,全面振兴本科教育”的时代背景下,高等学校课程建设面临着前沿性、创新性、挑战性等新需求。我们结合多年来在课程建设和专业竞赛指导方面
第 7 期
教育与教学研究
表3 武汉大学学生代表队的获奖成绩
比赛名次
比赛规模
共吸引个国家与地区的1 770支队伍近4 000名选手参赛
共吸引国内外659支队伍参赛400多支队伍(包含企业与高校)来自全国200多个高校的队伍
167
成绩
国际排名第9,国内排名第3,获全国一等奖
国内排名第3,获全国一等奖全国第10名,二等奖全国第9名,二等奖
2015年XCTF联赛(北京站)2015年XCTF联赛(北京站)2016年强网杯网络攻防赛
2016年全国大学生信息安全竞赛——实践能力赛
2017年全国大学生信息安全竞赛——实践能力赛
2016年全国大学生信息安全竞赛——实践能力赛
来自全国200多个高校的队伍全国第5名,二等奖
来自全国200多个高校的队伍全国第10名,二等奖
的经验,提出“以赛促教、以赛反哺课程内容”的课程建设方法。按照此方法,软件安全课程创新性与实践性建设取得了良好的教学效果,既吸收了网络攻防赛在实践能力培养方面的优势,又更新了课程内容,保持课程内容的创新性和
参考文献:
时效性。在下一步的工作中,我们将结合密码学、网络安全等专业课程内容,继续开展以网络攻防赛为导向的课程建设,以此增强其他专业课程的创新性与实践性,进一步提高学生的实践动手能力。
[1] 吴岩. 建设中国“金课”[J]. 中国大学教学, 2018(12): 4-9.
[2] 教育部高等学校信息安全专业教学指导委员会. 高等学校信息安全专业指导性专业规范[M]. 北京: 清华大学出版社, 2014:
1-158.
[3] 魏为民, 杨朔, 酆华, 等. 结合CTF竞赛模式的信息安全课堂教学 [J]. 计算机教育, 2017(6): 23-27.[4] 贾忠田, 刘悦, 张波. 网络攻防课程建设经验探讨[J]. 计算机教育, 2019(3): 12-15.
[5] 彭光彬, 张永志. 互联网+时代民办高职网络攻防技术课程实践教学体系设计与实施[J]. 计算机教育, 2019(3): 137-141.
[6] Snow K Z, Monrose F, Davi L, et al. Just-in-time code reuse: On the effectiveness of fine-grained address space layout
randomization[C]//2013 IEEE Symposium on Security and Privacy. Washington D C: IEEE Computer Society, 2013: 574-588.
(编辑:宋文婷)