mscoree.dll(mscoree.dll实现dll劫持)

前沿拓展:


在这篇帖子中,我讨论了COOP,一种学术界提出的最新的代码重用攻击,并演示怎样使用它攻击现代执行流完整性的实现,例如微软CFG。总而言之,COOP相当容易使用,尤其是当把payload分割成更小的chains时。把各个vfgadgets拼接在一起和汇编ROP gadgets并没有什么不同。也许最耗时的部分就是在目的进程空间中找到并标记各种候选vfgadgets。

微软的Control Flow Guard被认为是一个粗粒度的CFI实现,因此更容易受到这里所述的函数重用攻击的影响。相比之下,细粒度的CFI解决方案能够考虑到给定的间接调用的元素,例如预期的VTable类型,验证参数数量,甚至参数类型。权衡两种方法的关键是性能,因为在CFI中引入复杂的策略可能会显著地增加开销。尽管因为应用程序会因为使用forward-edge和backward-edge CFI而变得难以攻破,防御最新的代码重用攻击仍然是很重要的。

为了抵消CFG的一些局限性,微软似乎专注于多样化的预防措施,例如在CFG和Arbitrary Code Guard中通过导出表supression保护关键call gates,比如VirtualProtect。然而,这篇帖子的一个关键点挑战是用户空间设计和执行防御。正如我们几前前在EMET中看到的那样,研究人员通过重用EMET本身的代码解除了EMET的防御。此外,正如2015黑帽大会里演示的那样,我们同样利用驻留在用户空间的关键CFG函数指针来改变CFG的行为。

相比之下,Endgame的HA-CFI解决方案完全由内核和硬件实现,即使容易受到函数重用攻击,但由于特权分离,使其更难篡改。在本系列的每二部分,我将使用我们自己的HA-CFI和正在进行的研究来对COOP进行讨论,以演示我们的检测逻辑如何应对最新的代码重用攻击。

本文由 看雪翻译小组 梦野间 翻译

拓展知识:

原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/77214.html