
《攻防技术基础》复习资料-.docx
17页《漏洞利用与渗透测试基础》课程期末复习资料《漏洞利用与渗透测试基础》课程讲稿章节目录: 第一章 绪论第一节 病毒和木马第二节 软件漏洞及产生原因第三节 漏洞产业链第四节 渗透测试第五节 实验环境第二章 基础知识第一节 内存区域第二节 函数调用第三节 常见寄存器与栈帧第四节 汇编语言—寄存器及主要指令第五节 汇编语言—寻址方式第六节 函数调用汇编示例第七节 PE 文件第八节 虚拟内存第九节 OllyDBG 和 IDA第十节 OllyDBG 示例第三章 漏洞概念第一节 漏洞概念及特点第二节 漏洞分类第三节 漏洞库第四节 第一个漏洞第四章 常见漏洞第一节 缓冲区溢出漏洞-栈溢出第二节 缓冲区溢出漏洞-其他溢出第三节 格式化字符串漏洞第四节 整数溢出漏洞第五章 漏洞利用第一节 漏洞利用概念第二节 Shellcode 编写示例第三节 Shellcode 编写第四节 软件防护技术第五节 漏洞利用技术-地址利用技术第六节 漏洞利用技术-绕过 DEP 防护第六章 漏洞挖掘第一节 漏洞挖掘-源代码检测第二节 漏洞挖掘-可执行代码检测第三节 动态检测第四节 模糊测试实例第五节 自己动手写 Fuzzer第七章 渗透测试基础第一节 渗透测试过程第二节 Kali Linux 基础第三节 Metasploit 渗透测试框架第八章 渗透测试实践第一节 渗透实践—被动信息收集第二节 渗透实践—主动信息收集第三节 渗透实践—Nessus 扫描第四节 渗透实践—攻破 XP 系统第五节 渗透实践—后渗透攻击第九章 WEB 安全基础第一节 WEB 基础第二节 HTTP 会话管理第三节 WEB 编程环境第四节 JavaScript 实践第五节 PHP 语言第六节 HTTP 请求第七节 PHP 连接数据库第八节 Cookie 实战第九节 十大 WEB 安全威胁第十章第一节 文件上传漏洞第二节 SQL 注入漏洞第三节 SQLMAP第四节 跨站脚本一、客观部分:(单项选择、判断、填空)(一)、选择部分1、木马与病毒的重大区别是() A.木马会自我复制B.木马具有隐蔽性 C.木马不具感染性 D.木马通过网络传播★考核知识点: 病毒与木马的概念参见讲稿章节:1-1附 1.1(考核知识点解释):计算机病毒(Computer Virus),根据《中华人民共和国计算机信息系统安全保护条例》,病毒的明确定义是“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
病毒往往具有很强的感染性,一定的潜伏性,特定的触发性和很大的破坏性等,由于计算机所具有的这些特点与生物学上的病毒有相似之处,因此人们才将这种恶意程序代码称之为“计算机病毒”木马(Trojan Horse),是指那些表面上是有用的软件、实际目的却是危害计算机安全并导致严重破坏的计算机程序它是具有欺骗性的文件(宣称是良性的, 但事实上是恶意的),是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,也难以确定其具体位置;所谓非授权性是指一旦控制端与服务端连接后,控制端将窃取到服务端的很多操作权限,如修改文件、修改注册表、控制鼠标、键盘、窃取信息等等一旦中了木马,你的系统可能就会门户大开,毫无秘密可言木马与病毒的重大区别是木马不具传染性,它并不能像病毒那样复制自身, 也并不“刻意”地去感染其他文件,它主要通过将自身伪装起来,吸引用户下载执行特洛伊木马中包含能够在触发时导致数据丢失甚至被窃的恶意代码,要使特洛伊木马传播,必须在计算机上有效地启用这些程序,例如打开电子邮件附件或者将木马捆绑在软件中放到网络吸引人下载执行等。
2、漏洞也称为(),是计算机系统的硬件、软件、协议在系统设计、具体实现、系统配置或安全策略上存在的缺陷A. 机密性 B.不完整性C.可否认性D.脆弱性★考核知识点: 漏洞的概念参见讲稿章节:3-1附 3.1.1(考核知识点解释)漏洞也称为脆弱性(Vulnerability),是计算机系统的硬件、软件、协议在系统设计、具体实现、系统配置或安全策略上存在的缺陷这些缺陷一旦被发现并被恶意利用,就会使攻击者在未授权的情况下访问或破坏系统,从而影响计算机系统的正常运行甚至造成安全损害漏洞的定义包含了以下三个要素:首先,漏洞是计算机系统本身存在的缺陷; 其次,漏洞的存在和利用都有一定的环境要求;最后,漏洞的存在本身是没有危害的,只有被攻击者恶意利用,才能给计算机系统带来威胁和损失3、栈的存取采用()的策略A.先进先出B. 后进先出C.后进后出D.先进后出★考核知识点: 栈溢出的概念参见讲稿章节:4-1附 4.1.2(考核知识点解释)被调用的子函数中写入数据的长度,大于栈帧的基址到 esp 之间预留的保存局部变量的空间时,就会发生栈的溢出要写入数据的填充方向是从低地址向高地址增长,多余的数据就会越过栈帧的基址,覆盖基址以上的地址空间。
如果返回地址被覆盖,当覆盖后的地址是一个无效地址,则程序运行失败如果覆盖返回地址的是恶意程序的入口地址,则源程序将转向去执行恶意程序栈的存取采用先进后出的策略,程序用它来保存函数调用时的有关信息,如函数参数、返回地址,函数中的非静态局部变量存放在栈中栈溢出是缓冲区溢出中最简单的一种4、以下说法正确的是()A. Metasploit 项目最初由 HD Moore 在 2005 年夏季创立B. Metasploit v2 版本为 Metasploit 从一个渗透攻击框架性软件华丽变身为支持渗透测试全过程的软件平台打下坚实的基础C. 除了渗透攻击之外,Metasploit 在发展过程中逐渐增加对渗透测试全过程的支持,包括情报搜集、威胁建模、漏洞分析、后渗透攻击与报告生成D. Metasploit 版本都可以自动生成报告★考核知识点: 对 Metasploit 的认识参见讲稿章节:7-3附 7.3.1(考核知识点解释)Metasploit 是一个开源的渗透测试框架软件,也是一个逐步发展成熟的漏洞研究与渗透代码开发平台,此外也将成为支持整个渗透测试过程的安全技术集成开发与应用环境Metasploit 项目最初由 HD Moore 在 2003 年夏季创立,目标是成为渗透攻击研究与代码开发的一个开放资源。
2004 年 8 月,在拉斯维加斯举办的 BlackHat 全球黑客大会上,HD 与 Spoonm 携最新发布的 Metasploit v2.2 站上演讲台,他们的演讲题目是“Hacking Like in the Movies”(像在电影中演的那样进行渗透攻击)大厅中挤满了听众,过道中也站着不少人,人群都已经排到了走廊上两个屏幕上展现着令人激动的画面,左侧屏幕显示他们正在输入的 MSF 终端命令,而右侧屏幕展示一个正在被攻陷和控制的 Windows 系统在演讲与 Demo 过程中,全场掌声数次响起,听众被 Metasploit 的强大能力所折服,大家都拥有着一致的看法:“Metasploit 时代已经到来”Metasploit v3 版本为Metasploit 从一个渗透攻击框架性软件华丽变身为支持渗透测试全过程的软件平台打下坚实的基础而 2011 年 8 月,Metasploit v4.0的发布则是 Metasploit 在这一发展方向上吹响的冲锋号角v4.0 版本在渗透攻击、攻击载荷与辅助模块的数量规模上都有显著的扩展,此外还引入一种新的模块类型——后渗透攻击模块,以支持在渗透攻击成功后的后渗透攻击环节中进行敏感信息搜集、内网拓展等一系列的攻击测试。
除了渗透攻击之外,Metasploit 在发展过程中逐渐增加对渗透测试全过程的支持,包括情报搜集、威胁建模、漏洞分析、后渗透攻击与报告生成5、以下有关认证与授权的说法正确的是() A.认证和授权的功能相同B.授权是根据不同用户的凭证来确定用户的身份C.授权是通过认证后确定用户的权限有哪些D.一般来说,单因素认证的安全强度要高于多因素认证★考核知识点: 认证与授权的概念参见讲稿章节:9-9附 9.4(考核知识点解释)在安全领域中,认证( Authentication)和授权( Authorization)的功能不相同认证的目的在于确定“你是谁”,即根据不同用户的凭证来确定用户的身份,而授权的目的是确定“你可以干什么”,即通过认证后确定用户的权限有哪些最常见的身份认证方式就是通过用户名与密码进行登录认证就是验证凭证的过程,如果只有一个凭证被用于认证,则称为单因素认证;如果有两个或多个凭证被用于认证,则称为双因素认证或多因素认证一般来说,多因素认证的安全强度要高于单因素认证二)、判断部分1、堆空间是由低地址向高地址方向增长,而栈空间从高地址向低地址方向增长√)★考核知识点:堆、栈的概念参见讲稿章节:2-1附 2.1.2(考核知识点解释)栈(stack)是向低地址扩展的数据结构,是一块连续的内存的区域。
栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS 下,栈的默认大小是2M,如果申请的空间超过栈的剩余空间时,将提示溢出堆(heap)是向高地址扩展的数据结构,是不连续的内存区域,堆的大小受限于计算机的虚拟内存操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序;对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete 语句才能正确的释放本内存空间另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中1) 申请方式栈:由系统自动分配例如,声明一个局部变量 int b,系统自动在栈中为b 开辟空间堆:需要程序员自己申请,并指明大小,在c 中 malloc 函数,如p1 = (char*)malloc(10)2) 申请效率栈由系统自动分配,速度较快,但程序员是无法控制的堆是由程序员分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来方便3) 增长方向堆空间是由低地址向高地址方向增长,而栈空间从高地址向低地址方向增长。
2、符号溢出是使用另外的数据类型来存储整型数造成的★考核知识点:整数溢出的概念参见讲稿章节:4-4附 4.3(考核知识点解释)高级程序语言中,整数分为无符号数和有符号数两类,其中有符号负整数最高位为 1,正整数最高位为 0,无符号整数则无此限制常见的整数类型有 8 位、16 位、32 位以及 64 位等,对应的每种类型整数都包含一定的范围,当对整数进行加、乘等运算时,计算的结果如果大于该类型的整数所表示的范围时,就会发生整数溢出根据溢出原理的不同,整数溢出可以分为以下三类:(1)存储溢出存储溢出是使用另外的数据类型来存储整型数造成的例如,把一个大的变量放入一个小变量的存储区域,最终是只能保留小变量能够存储的位,其他的位都无法存储,以至于造成安全隐患2)运算溢出运算溢出是对整型变量进行运算时没有考虑到其边界范围,造成运算后的数值范围超出了其存储空间3)符号问题整型数可分为有符号整型数和无符号整型数两种在开发过程中,一般长度变量使用无符号整型数,然而如果程序员忽略了符号,在进行安全检。
