WEB开发网
开发学院网络安全安全技术 覆盖SEH攻击的末日-SEHOPP 阅读

覆盖SEH攻击的末日-SEHOPP

 2009-02-04 13:53:20 来源:WEB开发网   
核心提示: 异常注册记录被覆盖后,必须提出一个异常,覆盖SEH攻击的末日-SEHOPP(2),这样异常调度器才能够处理它,这可以通过几种方式来实现,这些使SafeSEH保护方法不是那么有吸引力,本文将不再讨论有关SafeSEH方法的具体问题,例如通过用伪造地址来覆盖位于栈上的返回地址以造成访问异常,当

异常注册记录被覆盖后,必须提出一个异常,这样异常调度器才能够处理它。这可以通过几种方式来实现,例如通过用伪造地址来覆盖位于栈上的返回地址以造成访问异常。当出现异常时,异常调度器将为该thread例举出异常注册记录并呼叫与每条记录相关的异常处理器。通过破坏这些异常注册记录的下一记录指示器和异常处理器函数指针,异常调度器将执行受损的异常处理器函数指针规定的任意地址的代码。

在很多情况下,攻击者会选择覆盖异常处理器函数指针,并且使用包含类似pop reg, pop reg, ret指示的地址来覆盖。这使攻击者能够通过把控制权转移给EstablisherFrame(当呼叫异常处理器时异常调度器作为第二个参数通过),以有效执行任意代码。这样做能够成功是因为EstablisherFrame 参数持有攻击者控制的异常注册记录的地址。攻击者同时结合使用heap spray技术与SEH覆盖技术来有效执行任意代码。下图展示的是SEH覆盖技术的原理图:

覆盖SEH攻击的末日-SEHOPP

缓解技术:SEHOP

通常有两种方法可以对付SEH覆盖技术,第一种方法是,对编译版本的代码作出更改使可执行文件包含元数据,而该平台则可以利用这些元数据适当地缓解覆盖技术造成的破坏。微软公司采取了这种方法,并且在Visual Studio 2003中加入了这种缓解技术,这种缓解技术采用了新的链接器形式,即/SAFESEH。但是,由于需要重建可执行程序,并且不能完全处理所有情况(特别是当异常处理器位于图像文件的外面时),这些使SafeSEH保护方法不是那么有吸引力。本文将不再讨论有关SafeSEH方法的具体问题,可以在MSDN(http://msdn.microsoft.com/en-us/library/9a89h429(VS.80).aspx)上找到更多详细内容。

Tags:覆盖 SEH 攻击

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接