当前位置: 首页 > 科技观察

一种新的欺骗防御方法:rMTD

时间:2023-03-16 15:51:50 科技观察

如果正在运行的操作系统和应用程序存在漏洞,攻击者很有可能找到利用它的方法。修复漏洞的唯一可靠方法是从库中修复问题。但是,在安全补丁发布之前,系统仍然存在被攻破的风险。许多人不得不接受这种情况。不过,可能会有一个转折点:旋转移动目标防御技术(rotationalMovingTargetDefense,rMTD)。rMTD是让现有漏洞难以被利用的想法。这个概念可以使用多种不同的技术来实现:它可以是静态的,在应用程序编译时植入,也称为“编译时应用程序自我保护(CASP)”;它还可以在运行时实现动态使用,称为“运行时应用程序自我保护(RASP)”。CASP和RASP并不相互排斥,可以结合在一起。CASP在编译时修改应用程序生成的汇编代码,以确保不会有两个程序集生成完全相同的汇编指令集。攻击者通常将他们的攻击基于从生成的静态编译中获得的已知程序集布局。一旦他们建立了攻击,他们就会瞄准系统中具有相同二进制文件的位置。他们会利用应用程序或操作系统的静态编译特性来劫持系统。如果要打个比方,那就像是小偷得到了你保险箱的复制品,并有足够的时间来研究如何破解它。唯一的区别是黑客比保险箱更容易获得软件副本,并且漏洞是已知的并已发布。有了CASP保护,同样的保险箱(即应用程序)在掩码(二进制布局)下看起来会有所不同。RASP在应用程序运行时创建无序状态。每次运行应用程序时,二进制布局都会动态变化。攻击者无法再猜测应用程序的堆栈布局或函数和库的地址。类比是在高速公路上行驶时切换引擎并重置内部组件。CASP和RASP会通过一系列的技术来实现,以下是一些总结:CASP技术1.汇编代码修改用完全不同但逻辑一致的指令组替换库中原有的汇编指令组。ABI(ApplicationBinaryInterface,应用程序二进制接口)是与程序库进行函数调用的接口。对汇编指令的更改不会影响ABI。应用程序和二进制文件之间的接口保持不变。攻击者检查汇编指令组的布局,然后计划攻击。他们的工具允许他们检查编译后的代码和生成的汇编指令以查找代码错误(例如缓冲区溢出、缓冲区反向溢出、整数溢出、双重释放调用等)。一旦发现漏洞,攻击者可以根据二进制文件的汇编布局修改附近的汇编指令。通过修改攻击者不知道的汇编代码,可以使攻击无效,因为二进制文件的汇编布局被修改了。2.随机化每个库中每个函数的起始地址。每个库或模块都显示了应用程序可以调用的函数。默认情况下,每个函数的起始地址在编译时是固定的。攻击者可以检查编译后的二进制文件的内容并轻松获取每个函数的地址,而无需检查源代码。然后在攻击中使用此信息。当堆栈被劫持时,攻击代码可以指定攻击者要调用的库中的地址,从而打开一个shell。3.数据结构保护二进制文件中数据结构的内存布局在编译时会随机化,数据字段会实时动态加密,防止被改写或读取。数据结构通常包含缓冲区,例如字符串缓冲区或数组缓冲区。这些都会成为缓冲区溢出攻击的目标。为了能够通过数据结构中定义的缓冲区劫持堆栈,攻击者必须在数据结构中找到缓冲区的位置。通过在编译时随机化数据结构布局,攻击者不再可能在数据结构中定位缓冲区位置。RASP技术1.随机化动态库的地址在运行时,库的地址会被随机化。所有对图书馆的引用都将更新以显示新地址。这种方法将使攻击者在劫持进程时更难从应用程序内部调用外部库。2.随机化动态函数地址库中定义的每个函数的地址在编译时被赋予一个静态地址。除了库的地址随机化外,每个函数的地址在应用程序调用时在执行状态下也会发生变化。3.动态堆栈金丝雀与易于绕过的具有固定随机值的静态堆栈金丝雀相比,动态堆栈金丝雀可以随时间动态随机化。通过动态随机化堆栈金丝雀,攻击者没有足够的时间在它改变之前猜测它的值。4、影子栈影子栈是指编译时产生的栈的副本,??但影子栈中不存放返回地址。返回地址在影子堆栈中加密,因此攻击者无法修改。在应用程序从栈中读取返回地址跳转到上一个执行状态之前,返回地址被加密并与影子栈中的值进行比较。如果两者匹配,则执行将跳转到返回地址指向的下一条指令;如果两者不匹配,可能是地址被攻击者修改了,那么就会出现应用失败,导致应用崩溃,然后记录事件。5.PLTPLT(ProcedureLinkageTable,程序链接表)是一种查找其他程序库中函数的查找表。外部库的函数地址是在进程执行过程中随机存储在PLT中的,而不是静态的。这可以防止攻击者调用已知库中的函数来生成终端。例如,攻击者可以通过发现PLT中的strcpy()函数并调用来实现攻击;但是如果动态改变外部库中定义的函数的位置,攻击者就无法通过发现外部函数的地址来实现return0to-PLT攻击。rMTD可能是下一代防止0day攻击的前线能力,它可以使计算机和系统更能抵抗攻击者。随着技术的成熟并在行业中得到更广泛的应用,它可能会像防病毒软件一样普及。安全评估阶段越早,最终的安全效果就越明显。在应用程序和系统的代码层面嵌入安全能力,可以进一步推进安全防线,从而拓宽防御深度,提高攻击者的攻击难度。近两年,国内的RASP产品逐渐发展起来,因为RASP产品更适合运行时的应用保护,是传统网站应用保护的新武器;而CASP需要在开发初期就投入使用。无论是市场的信任度,还是技术的稳定性,都需要一段时间来提升。不过,rMTD确实是未来发展安全值得关注的一个方向。