1
课程详述
COURSE SPECIFICATION
以下课程信息可能根据实际授课需要或在课程检讨之后产生变动。如对课程有任何疑问,请联
系授课教师。
The course information as follows may be subject to change, either during the session because of unforeseen
circumstances, or following review of the course at the end of the session. Queries about the course should be
directed to the course instructor.
1.
课程名称 Course Title
计算机安全 Computer Security
2.
授课院系
Originating Department
计算机科学与工程系 Department of Computer Science and Engineering
3.
课程编号
Course Code
CS315
4.
课程学分 Credit Value
3
5.
课程类别
Course Type
专业选修课 Major Elective Courses
6.
授课学期
Semester
秋季 Fall
7.
授课语言
Teaching Language
中英双语 English & Chinese
8.
他授课教师)
Instructor(s), Affiliation&
Contact
For team teaching, please list
all instructors
张锋巍,副教授,计算机科学与工程系,fengwei@wayne.edu
Fengwei Zhang, Associate Professor, Department of Computer Science and
Engineering, fengwei@wayne.edu
9.
/
方式
Tutor/TA(s), Contact
10.
选课人数限额(不填)
Maximum Enrolment
Optional
50
授课方式
Delivery Method
习题/辅导/讨论
Tutorials
实验/实习
Lab/Practical
其它(请具体注明)
OtherPlease specify
总学时
Total
11.
学时数
Credit Hours
32
64
2
12.
先修课程、其它学习要求
Pre-requisites or Other
Academic Requirements
CS205 C/C++程序设计 C/C++ Programming Design
13.
后续课程、其它学习规划
Courses for which this course
is a pre-requisite
None
14.
其它要求修读本课程的学系
Cross-listing Dept.
Not applicable for other departments beside CS.
教学大纲及教学日历 SYLLABUS
15.
教学目标 Course Objectives
本课程主要介绍计算机安全的基本原理,以及常见的攻击手段和防御机制。为了更好的加深对真实世界网络攻击的理解,
本课程为学生提供一个可以动手测试的实时软件和网络系统环境。本课程将同时教授攻击手段和防御机制,这样让学生理
解现实生活中攻防对抗本课程教授的容主要包的攻击手段(如:缓冲出、dirty COW 字符串、跨站
本攻击、返回导向编程),黑客基础(例如:扫描和侦察),防御机制(例如:入侵检测系统、防火墙)。本课程将通过
高强度的实验,以及使用真实世界的恶意软件,漏洞利用,防御等来训练学生。
This course aims help students to learn the principles of computer security and understand how various security attacks
and countermeasures work. It provides hands-on experience in playing with security software and network systems in a
live laboratory environment, with the purpose of understating real-world threats. The course will take both offensive and
defense methods to help student explore security tools and attacks in practice. It will focus on attacks (e.g., buffer
overflow, dirty COW, format-string, XSS, and return oriented programming), hacking fundamentals (e.g., scanning and
reconnaissance), defenses (e.g., intrusion detection systems and firewalls). Students are expected to finish intensive lab
assignments that use real-world malware, exploits, and defenses.
16.
预达学习成果 Learning Outcomes
本课程将提供真实世界攻防的深度体验。在课程完成时,学生于应该获得以下技能:
理解真实世界中的安全漏洞,攻击利用,以及防御体系。
具有网络和系统安全试验的动手经历。
学习到计算机安全的基本知识,现实安全问题,以及对应的解决方案。
This course offers an in-depth experience of real-world threats and defence. Upon successful completion of this class,
the student will gain experience in:
Understanding on real-world security vulnerabilities, exploits and defence.
Having hands-on labs in network and system security experiments.
Learning knowledge of practical security problems and their solutions.
17.
课程内容及教学日历 (如授课语言以英文为主,则课程内容介绍可以用英文;如团队教学或模块教学,教学日历须注明
主讲人)
Course Contents (in Parts/Chapters/Sections/Weeks. Please notify name of instructor for course section(s), if
this is a team teaching or module course.)
3
第一周:课程介绍 & 网络数据包截获
课程综述介绍
实验虚拟机镜像,Kali Linux – 渗透测试的 Linux 版本
计算机网络简要介绍
网络数据抓包工具以及网络协议分析工具
[Lab 1]网络数据包截获分析和 Wireshark 软件应用:这个实验主要学习抓包工具像 Wireshark,包括它的安装,怎么
截获网络数据包,以及怎么分析篡改网络数据包。
第二周:网络扫描和侦察
介绍渗透分析的第一步
怎么找到目标电脑以及对应的计算机服务
Nmap: 开源网络安全扫描工具
OpenVAS: 开源漏洞分析平台
NESSUS: 漏洞检测扫描工具
[Lab 2]网络扫描和侦察:这个实验主要学习怎么样应用网络安全扫描工具去侦测目标机器的信息,以及怎么样得到可
以利用的漏洞。
Lab 1 截止提交
第三周:渗透测试
介绍渗透测试的历史
Metasploit 平台项目
Armitage: 基于 Metasploit 的网络空间攻击管理系统
[Lab 3] Metasploit 平台:这个实验主要是用 Metasploit 平台,远程的攻击并且控制一台设定的服务器。
Lab 2 截止提交
第四周:安全编程 & 缓冲溢出
C 语言基础知识
程序内存分部
Unix 调试器:gdb 介绍
堆栈攻击
[Lab 4] 缓冲溢出以及防御(第一部分):这个实验主要是交学生什么是缓冲溢出以及其它的内存漏洞攻击。实验目标
是查看一个先前定义好的程序,然后看怎么样才能够利用缓冲溢出漏洞,拿到 Shell
Lab 3 截止提交
第五周:学期、团队项目建议讨论
对于提交的项目建议想法提供反馈意见
确定学期项目队伍和主题
[Lab 5] 缓冲溢出以及防御(第二部分):这个实验主要是交学生什么是缓冲溢出以及其它的内存漏洞攻击。实验目标
是查看一个先前定义好的程序,然后看怎么样才能够利用缓冲溢出漏洞,拿到 Shell
第六周:逆向工程和反逆向
4
逆向工程概念介绍
安卓编程介绍
安卓字节码,Dalvik 执行文件格式(DEX
Smali/baksmali: DEX 的编译和反编译器
[Lab 6] 安卓应用重打包和反逆向:本实验将用安卓应用,交学生怎么样是逆向工程和反逆向。首先,学生会要求写一
个安卓应用。然后,学生要通过逆向工程往安卓应用中间添加恶意代码。最后,他们将用反逆向工具去保护这个安卓
应用。
Lab 4 & 5 截止提交
第七周:物联网安全以及隐私
物联网环境下的安全
Zephyr: 物联网环境下的实时操作系统
Brillo: 谷歌物联网操作系统
Contiki: 物联网环境下的开源操作系统
[Lab 7] 物联网环境下的操作系统安全:本实验将用 Zephyr 操作系统作为例子,然后学习物联网操作系统安全。其
中,我们将利用一个缓冲溢出漏洞,攻击 Zephyr 操作系统。
Lab 6 截止提交
第八周:无线网络攻击和防御
无线网络安全的挑战
路由器,热点
中间人攻击
WPA/WPA2 协议的秘钥获取
[Lab 8] 无线网络攻击和防御:本实验会帮助学生学习无线网络的攻击手段,以及对应的防御机制。
Lab 7 截止提交
第九周:防火墙&入侵检测系统(IDS
防火墙,入侵检测系统,入侵防御系统概念
基于特征 vs. 基于行为
IDS 系统的评估标准:误报率,准确率,漏报率,等等
[Lab 9] 防火墙和入侵检测系统:通过这个时间,学生会学习到 Snort 入侵检测系统。Snort 是一个基于特征的检测系
统,学生用这个系统对网络的异常行为进行检测分析。
Lab 8 截止提交
第十周:Dirty COW 攻击
竞争条件漏洞介绍
Linux 内核下面的 Copy-on-write 操作
[Lab 10] Dirt COW 攻击:本实验的目标是让学生理解 Dirty COW 攻击,理解竞争条件漏洞攻击,最后学生会利用
Dirt COW 攻击的竞争条件漏洞,获得 root 权限。
Lab 9 截止提交
5
第十一周:安全编程 & 格式化字符串漏洞
字符串漏洞介绍
理解程序栈的结构和分布
代码注入,恶意代码,回调 Shell
[Lab 11] 格式化字符串漏洞:这个实验会提供给学生一个具有格式化字符串漏洞的程序。学生需要找到这个漏洞,并
成功的利用这个漏洞。
Lab 10 截止提交
第十二周:Web 安全
跨站点请求伪造攻击(CSRF
跨站脚本攻击(XSS
SQL 注入攻击
[Lab 12] 跨站点请求伪造攻击:在这个实验中,学生会利用 CSRF 攻击一个社交网路上面的应用。这个开源的社交网
络叫做 Elgg,它其实有对应的防御机制。对于这个实验,我们将关闭这个防御机制。
Lab 11 截止提交
第十三周:Return-to-libc 和返回导向编程
不可执行栈空间
攻击不需要代码注入和可执行的栈空间
返回导向编程概念,以及怎么找到 ROP gadgets
[Lab 13] Return-to-libc 攻击:在这个实验中,学生会得到一个具有缓冲溢出漏洞的程序。根据这个漏洞,学生要利用
它和 return-to-libc 的概念,获得 root 权限。
Lab 12 截止提交
第十四周:Return-to-libc 和返回导向编程(继续)
不可执行栈空间
攻击不需要代码注入和可执行的栈空间
返回导向编程概念,以及怎么找到 ROP gadgets
[Lab 13] Return-to-libc 攻击(继续):在这个实验中,学生会得到一个具有缓冲溢出漏洞的程序。根据这个漏洞,学
生要利用它和 return-to-libc 的概念,获得 root 权限。
第十五周:课程实验总结
[Lab 15] 学期/团队报告 1
Lab 13&14 截止提交
第十六周:学期/团队报告 2
[Lab 15] 学期/团队报告 3
Week 1. Course Overview & Packet Sniffing