加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

如何保护您的应用程序免受堆喷射科技的影响

发布时间:2022-03-12 11:51:49 所属栏目:电商 来源:互联网
导读:为您的软件建立强大的安全性至关重要。恶意行为者不断使用各种类型的恶意软件和网络安全攻击来破坏所有平台上的应用程序。您需要了解最常见的攻击并找到缓解它们的方法。 本文不是关于堆溢出或堆利用的教程。在其中,我们探讨了允许攻击者利用应用程序中的漏
       为您的软件建立强大的安全性至关重要。恶意行为者不断使用各种类型的恶意软件和网络安全攻击来破坏所有平台上的应用程序。您需要了解最常见的攻击并找到缓解它们的方法。
 
      本文不是关于堆溢出或堆利用的教程。在其中,我们探讨了允许攻击者利用应用程序中的漏洞并执行恶意代码的堆喷射技术。我们定义什么是堆喷射,探索它的工作原理,并展示如何保护您的应用程序免受它的影响。
 
      什么是堆喷射技术,它是如何工作的?
      堆喷射是一种用于促进执行任意代码的漏洞利用技术。这个想法是在目标应用程序中的可预测地址上提供一个shellcode,以便使用漏洞执行这个 shellcode。该技术是由称为heap spray的漏洞利用源代码的一部分实现的。
 
       在实现动态内存管理器时,开发人员面临许多挑战,包括堆碎片。一个常见的解决方案是以固定大小的块分配内存。通常,堆管理器对块的大小以及分配这些块的一个或多个保留池有自己的偏好。堆喷射使目标进程连续地逐块分配所需内容的内存,依靠将 shellcode 放置在所需地址的分配之一(不检查任何条件)。
  
堆喷射攻击有两个主要阶段:
 
1.内存分配阶段。一些流连续分配大量具有相同内容的固定大小的内存块。
 
2.执行阶段。这些堆分配之一接收对进程内存的控制。
 
如您所见,堆喷射漏洞利用技术看起来像连续的垃圾邮件,形式为大小相同且内容相同的块。如果堆喷射攻击成功,控制权将传递给这些块之一。
 
为了执行这种攻击,恶意行为者需要有机会在目标进程中分配大量所需大小的内存,并用相同的内容填充这些分配。这个要求可能看起来过于大胆,但最常见的堆喷射攻击案例包括破坏Web 应用程序漏洞。任何支持脚本语言的应用程序(例如,带有 Visual Basic 的 Microsoft Office)都是堆喷射攻击的潜在受害者。
 
因此,在一个流的上下文中预期攻击是有意义的,因为脚本通常在单个流中执行。
 
但是,攻击者不仅可以使用脚本语言执行堆喷射攻击。其他方法包括将图像文件加载到进程中,并通过使用 HTML5 引入的技术以非常高的分配粒度喷射堆。
  
保护您的应用程序免受堆喷射执行的三个步骤是:
 
1.拦截NtAllocateVirtualMemory调用
 
2.在尝试分配可执行内存期间使其无法执行
 
3.注册结构化异常处理程序 (SEH) 以处理由于执行不可执行内存而发生的异常
 
现在让我们详细探讨每个步骤。
 
接收对内存的控制
我们既需要监控目标进程如何分配内存,又需要检测动态分配内存的执行情况。后者假设在堆喷射期间分配的内存具有执行权限。如果数据执行保护 ( DEP ) 处于活动状态(对于 x64,默认情况下始终处于活动状态)并且尝试执行没有执行权限分配的内存,则会生成异常访问冲突。
 
恶意 shellcode 可以预期在没有 DEP 的应用程序中执行(这不太可能),或者使用脚本引擎在默认情况下具有执行权限的堆中分配内存。
 
我们可以通过拦截可执行内存的分配并以分配它的漏洞无法察觉的方式使其不可执行来防止恶意代码的执行。因此,当漏洞利用认为喷射是安全的执行并尝试将控制权委托给喷射的堆时,将触发系统异常。然后,我们可以分析这个系统异常。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读