《攻防技术基础》复习资料- 下载本文

两个屏幕上展现着令人激动的画面,左侧屏幕显示他们正在输入的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)符号问题

整型数可分为有符号整型数和无符号整型数两种。在开发过程中,一般长度变量使用无符号整型数,然而如果程序员忽略了符号,在进行安全检查判断的时候就可能出现问题。

3、主动信息收集也就是说不会与目标服务器做直接的交互、在不被目标系统察觉的情况下,通过搜索引擎、社交媒体等方式对目标外围的信息进行收集。(×) ★考核知识点:主动信息收集的概念 参见讲稿章节:8-2

附8.1.1 - 8.1.2(考核知识点解释)

信息收集又分为被动信息收集和主动信息收集。很多人不重视信息收集这一环节,其实信息收集对于渗透来说是非常重要的一步,收集的信息越详细对以后渗透测试的影响越大,毫不夸张的说,信息的收集决定着渗透的成功与否。

主动信息收集和被动信息收集相反,主动收集会与目标系统有直接的交互,从而得到目标系统相关的一些情报信息。

被动信息收集也就是说不会与目标服务器做直接的交互、在不被目标系统察觉的情况下,通过搜索引擎、社交媒体等方式对目标外围的信息进行收集,例如:网站的whois信息、DNS信息、管理员以及工作人员的个人信息等等。

(三)、填空部分

1、Win32系统提供两个特殊的寄存器 和 用于标识位于系统栈顶端的栈帧。

★考核知识点:常见的寄存器与栈桢 参见讲稿章节:2-3

附2.1.4:(考核知识点解释)

寄存器(register)是中央处理器CPU的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。我们常常看到32位CPU、64位CPU这样的名称,其实指的就是寄存器的大小。32位CPU的寄存器大小就是4个字节。

CPU本身只负责运算,不负责储存数据。数据一般都储存在内存之中,CPU要用的时候就去内存读写数据。但是,CPU的运算速度远高于内存的读写速度,为了避免被拖慢,CPU都自带一级缓存和二级缓存。基本上,CPU缓存可以看作是读写速度较快的内存。但是,CPU缓存还是不够快,另外数据在缓存里面的地址是不固定的,CPU每次读写都要寻址也会拖慢速度。因此,除了缓存之外,CPU使用寄存器来储存最常用的数据。也就是说,那些最频繁读写的数据(比如循环变量),都会放在寄存器里面,CPU优先读写寄存器,再由寄存器跟内存交换数据。

每一个函数独占自己的栈帧空间。当前正在运行的函数的栈帧总是在栈顶。Win32系统提供两个特殊的寄存器用于标识位于系统栈顶端的栈帧:

(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指

针,该指针永远指向系统栈最上面一个栈帧的栈顶。

(2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指

针,该指针永远指向系统栈最上面一个栈帧的底部。

2、ROP的全称为Return-oriented programming( ),是一种新型的基于 的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。 ★考核知识点:ROP的概念 参见讲稿章节:5-6

附5.3.2:(考核知识点解释)

ROP的全称为Return-oriented programming(返回导向编程),是一种新型

的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。ROP允许我们绕过DEP和ALSR,但不能绕开GS缓冲区溢出的检测防护技术。

ROP基本的思想是借助已经存在的代码块(也叫配件),这些配件来自程序已经加载的模块。我们可以在已加载的模块中找到一些以retn结尾的配件,把这些配件的地址布置在堆栈上, 当控制EIP并返回时候, 程序就会跳去执行这些小配件, 而这些小配件是在别的模块代码段, 不受DEP的影响。

换言之,ROP允许攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。

对于ROP技术,可以总结为如下三点:

[1].ROP通过ROP链(retn)实现有序汇编指令的执行。 [2].ROP链由一个个ROP小配件(相当于一个小节点)组成。 [3].ROP小配件由“目的执行指令+retn指令组成”。 3、目前常用的静态安全检测技术

包括 、 、 、 、 等。 ★考核知识点:常见的静态检测技术 参见讲稿章节:6-1

附6.1.1:(考核知识点解释)

由于源代码中的变量赋值明确,程序流程清晰,逻辑关系明了,采用静态安全检测技术更容易深入进行数据流的分析,并且可以全面地考虑执行路径的信息,能够更有效的发现漏洞。因此,静态安全检测技术是软件源代码的主要安全检测技术。

静态安全分析技术检测源代码安全缺陷和漏洞的主要优势是不需要构建代码运行环境,分析效率高,资源消耗低。虽然都存在较高的误报率,但仍然在很大程度上减少了人工分析的工作量。目前常用的静态安全检测技术包括词法分析、数据流分析、污点传播、符号执行、模型检查、定理证明等。

4、 是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息。 ★考核知识点:Hook的概念 参见讲稿章节:6-2