目录
- 1. SafeSEH
- 2. DEP
- 3. PIE
- 4. NX
- 5. ASLR
- 6. SEHOP
- 7. GS
为应对各种各样的网络攻击,操作系统内部有很多底层的安全机制。而每一种安全机制,都对应了一定形式的网络攻击方法。
攻击队的能力是指掌握这些系统层安全机制的技术原理,能够发现程序或系统中安全机制的设计缺陷,并加以利用实施攻击的能力。
实战攻防演练中,最实用且最常用的系统层安全机制有以下7种:
1. SafeSEH
SafeSEH是Windows操作系统的一种安全机制,专门用于防止异常处理函数被篡改。
在程序调用异常处理函数之前,SafeSEH会对要调用的异常处理函数进行一系列的有效性校验。如果发现异常处理函数不可靠或存在安全风险,应立即终止异常处理函数的调用。
攻击者就常常需要伪造或篡改系统异常处理函数,使系统无法感知到异常的发生。
2. DEP
DEP(Data Execution Protection,数据执行保护)的作用是防止数据页内的数据被当作可执行代码执行,引发安全风险。
从计算机内存的角度看,对数据和代码的处理并没有明确区分,只不过在系统的调度下,CPU会对于不同内存区域中的不同数据进行不一样的计算而已。这就使得系统在处理某些经过攻击者精心构造的数据时,会误将其中的一部分“特殊数据”当作可执行代码执行,从而触发恶意命令的执行。而DEP机制设计的重要目的就是防止这种问题的发生。
3. PIE
PIE(Position-Independent Executable,地址无关可执行文件)与PIC(Position-Independent Code,地址无关代码)含义基本相同,是Linux或Android系统中动态链接库的一种实现技术。
4. NX
NX(No-eXecute,不可执行)是DEP技术中的一种,作用是防止溢出攻击中,溢出的数据被当作可执行代码执行。
NX的基本原理是将数据所在内存页标识为不可执行,当操作系统读到这段溢出数据时,就会抛出异常,而非执行恶意指令。
5. ASLR
ASLR(Address Space Layout Randomization,地址空间随机化)是一种操作系统用来抵御缓冲区溢出攻击的内存保护机制。这种技术使得系统上运行的进程的内存地址无法预测,使与这些进程有关的漏洞变得更加难以利用。
6. SEHOP
SEHOP是Structured Exception Handler OverwriteProtection的缩写,意为结构化异常处理覆盖保护。其中,结构化异常处理是指按照一定的控制结构或逻辑结构对程序进行异常处理的一种方法。
SEH攻击:
如果结构化异常处理链表上的某一个或多个节点被攻击者精心构造的数据所覆盖,就可能导致程序的执行流程被控制,这就是SEH攻击。
SEHOP就是Windows操作系统中针对这种攻击给出的一 种安全防护方案。
7. GS
GS意为缓冲区安全性检查,是Windows缓冲区的安全监测机制,用于防止缓冲区溢出攻击。
缓冲区溢出是指当计算机向缓冲区内填充数据位数时,填充的数据超过了缓冲区本身的容量,溢出的数据就会覆盖合法数据。理想的情况是:程序会检查数据长度,并且不允许输入超过缓冲区长度的字符。但是很多程序会假设数据长度总是与所分配的储存空间相匹配,这就埋下了缓冲区溢出隐患,即缓冲区溢出漏洞。
GS的作用就是通过对缓冲区数据进行各种校验,防止缓冲区溢出攻击的发生。