软件安全漏洞分析与发现  0839X6M05001H

学期:2020—2021学年(春)第二学期 | 课程属性:专业普及课 | 任课教师:苏璞睿,和亮,闫佳
授课时间: 星期三,第9、10、11 节
授课地点: 教一楼209
授课周次: 1、2、3、4、5、6、7、8、9、10、11、12、13
课程编号: 0839X6M05001H 课时: 40 学分: 2.00
课程属性: 专业普及课 主讲教师:苏璞睿,和亮,闫佳 助教:黄桦烽
英文名称: Discovery and Analysis of Software Vulnerability 召集人:

教学目的、要求

本课程为信息安全专业研究生的专业普及课。本课程讲授和讨论软件安全分析前沿研究领域的主要思想和关键技术。主要内容包括软件安全漏洞分析方法和软件安全漏洞利用方法应用两大部分,软件安全漏洞分析方法包括程序切片、污点传播、符号执行和模糊测试等,软件安全漏洞利用方法的应用包括软件漏洞ShellCode编写、操作系统防御机制突破、攻击链构造等。
       通过本课程的学习,希望学生能了解软件安全漏洞分析前沿研究领域,了解污点传播、符号执行等最新研究成果,掌握基本思想和关键技术,培养学生独立的软件安全漏洞分析和研究能力。

预修课程

C/C++编程、操作系统、汇编语言

教 材

《软件安全分析与应用》苏璞睿著.

主要内容

第一章 绪论

1.1 软件安全漏洞分析的目标和意义
1.2 软件安全漏洞分析方法概述
1.3 软件安全漏洞分析方法的应用

       综合阐述软件安全漏洞现状以及软件安全漏洞分析研究的重要意义,明确软件安全漏洞分析的目标,对软件安全漏洞分析方法和应用进行概要介绍。

第二章 软件安全漏洞分析基础知识

2.1 反汇编与汇编语言
2.2 程序基本结构与组成
2.3 操作系统基础知识
2.4 程序分析的图论基础(程序的数据流和控制流分析等基本分析方法介绍)
2.5 常用安全分析工具介绍

       明确软件安全漏洞分析的基本概念,由浅入深从代码反汇编、程序基本结构组成、操作系统原理等三个层面对软件安全漏洞分析的基础知识进行阐述,并重点对程序数据流、控制流和程序依赖图等基本概念进行讲解,此外,分门别类对典型的软件安全漏洞分析工具进行介绍。

实验设计:程序逆向
       要求学生能够综合利用各种典型的软件逆向分析技术和分析工具实现某软件程序的逆向分析,完成既定分析任务,需要独立完成并撰写实验报告。

第三章 程序切片

3.1 程序切片分析概述
3.2 切片基本原理和方法
3.3 程序切片的应用

       介绍程序切片的基本概念、意义和应用范畴,从静态切片、动态切片等典型方法入手介绍切片的基本原理和方法,并结合具体的案例讲解程序切片的典型应用。

第四章 污点传播

4.1 污点传播分析概述
4.2 污点传播分析的基本原理和方法
4.3 污点传播分析的应用

       介绍污点传播的基本概念、意义和应用范畴,从污点标记、污点追踪和污点误用检测等方面介绍污点传播分析的基本原理和方法,并结合具体的软件漏洞分析案例讲解污点传播的典型应用。

实验设计:污点分析工具使用和比较
       要求学生能够综合利用污点传播分析技术和各类污点传播分析工具对某给定的程序进行污点分析,并就不同污点分析工具的特点,以及不同污点标记方法、不同污点传播策略的优劣进行对比研究,要求学生独立完成并撰写实验报告。

第五章 模糊测试

5.1 模糊测试概述
5.2 模糊测试的基本原理和方法
5.3 分布式式模糊测试
5.4 精确模糊测试
5.5 模糊测试常用工具和案例

       介绍模糊测试的基本概念、意义和应用范畴,从测试数据生成、变异、反馈等方面介绍模糊测试的基本原理和方法,并结合具体的模糊测试工具和软件漏洞发掘案例讲解模糊测试的典型应用。

第六章 符号执行

6.1 符号执行概述
6.2 符号执行的基本原理
6.3 静态符号执行
6.4 动态符号执行
6.5 符号求解
6.6 符号执行常用工具和案例

       介绍符号执行的基本概念、意义和应用范畴,从静态符号执行、动态符号执行以及符号求解等方面介绍符号执行的基本原理和方法,并结合具体的符号执行工具和软件漏洞发掘案例讲解符号执行的典型应用。

第七章 网络协议逆向分析

7.1 网络协议逆向分析概述
7.2 网络协议消息格式逆向方法
7.3 网络协议状态机恢复方法
7.4 网络协议逆向典型案例分析

       介绍网络协议逆向的基本概念、意义和应用范畴,从网络协议消息格式逆向和网络协议状态机恢复等方面介绍网络协议逆向的基本原理和方法,并结合具体的程序分析工具和案例讲解网络协议逆向的典型应用。

第八章 软件漏洞发掘与分析

8.1软件漏洞发掘分析概述
8.2 软件漏洞挖掘
8.3 软件漏洞分析
8.4 软件漏洞发掘典型案例

       介绍软件漏洞发掘与分析的基本概念、意义和应用范畴,从软件漏洞的挖掘、机理分析和利用等方面介绍软件漏洞发掘的基本原理和方法,并对具体的软件漏洞发掘案例进行分析讲解。

第九章 典型软件漏洞分析

9.1 软件漏洞分析环境搭建
9.2 典型软件漏洞分类
9.3 不同类型典型漏洞分析

       介绍漏洞分析的基本概念、意义和应用范畴,从分析环境搭建,攻击过程分析、代码功能分析等方面介绍恶意代码分析的基本原理和方法,并对具体的漏洞攻击案例进行分析讲解。

实验设计:漏洞程序机理和成因分析
       要求学生能够综合利用污点传播分析技术和各类软件安全漏洞分析工具,依据某已公布漏洞的已公开资料进行漏洞机理和成因分析,需要独立完成并撰写实验报告。

第十章 典型软件漏洞利用方法

10.1典型操作系统防护方法
10.2 Shellcode编写方法
10.3 控制流转移控制方法
10.4 操作系统防护机制突破方法
10.5 攻击代码构造方法

       介绍软件漏洞利用代码生成的主要方法,包括Shellcode编写、攻击链构造、操作系统防护机制突破方法等,结合具体漏洞案例进行分析讲解。

实验设计:漏洞利用
       要求学生能够综合利用各类软件安全漏洞分析工具制作某程序的漏洞利用程序,需要独立完成并撰写实验报告。

参考文献

1.《软件漏洞分析技术》吴世忠著,科学出版社出版
2. 《程序切片技术及其应用》李必信著,科学出版社出版
3. 《安全技术大系:恶意代码分析实战》迈克尔?斯科尔斯基著,电子工业出版社出版
4. 《0day安全:软件漏洞分析技术(第2版)》王清著,电子工业出版社出版
5. 《Android软件安全与逆向分析》丰生强著,人民邮电出版社