覆盖SEH攻击的末日-SEHOPP
2009-02-04 13:53:20 来源:WEB开发网微软公司的安全研究中心的职责之一,就是研究深度防御技术以让攻击者很难发掘利用软件漏洞,这些技术通常被成为exploit mitigations,并且通过/GS、DEP(Data Execution Prevention,数据执行保护)以及ASLR(Address Space Layout Randomization,地址空间随机加载)等保护功能的形式交付给用户。在Windows Server 2008和Windows Vista SP1中,微软公司加入了新的解决漏洞发掘问题的平台,也就是SEHOP(Structured Exception Handler Overwrite Protection,结构化异常处理覆盖保护)。本文将探讨这个新功能将如何解决SHE问题以提高系统安全性。
漏洞发掘技术:SEH覆盖
SEHOP保护的目的在于阻止攻击者利用SEH(结构化异常处理)覆盖技术发动攻击,2003年9月NGS Software公司的David Litchfield 发表的研究论文中阐述了这种SEH覆盖技术,随后SEH覆盖技术成为攻击者使用的标准工具。最新版本的Metasploit框架中约有20%的漏洞发掘利用的是SEH覆盖技术,另外该技术同样经常被用于发掘浏览器漏洞。
从较高角度来看,SEH覆盖技术使用软件漏洞并通过滥用Windows提供的32位异常调度设备执行任意代码。从功能角度来看,SEH覆盖技术通常使用基于堆栈缓冲区溢出来覆盖存储在thread的栈上的异常注册记录的。另外,提供一点背景知识,异常注册记录通常由两部分组成:下一记录指针和异常处理器函数指针。下一记录指示器用于连接例外注册记录到单一链接列表的下一条注册记录,该列表列出的是注册的异常处理器。当异常发生时,windows异常调度器会呼叫异常处理器函数指针。异常注册记录的定义如下:
typedefstruct_EXCEPTION_REGISTRATION_RECORD
{
struct_EXCEPTION_REGISTRATION_RECORD*Next;
PEXCEPTION_ROUTINEHandler;
}EXCEPTION_REGISTRATION_RECORD,*PEXCEPTION_REGISTRATION_RECORD;
赞助商链接