来自 CC防护 2021-02-08 14:18 的文章

服务器加防_如何_ddos弹性防护

服务器加防_如何_ddos弹性防护

最初为Windows发布的"天堂之门"技术允许恶意软件通过在32位进程中调用64位代码来规避端点安全产品,有效地绕过了用户模式挂钩。这项技术在Windows10+中通过控制流保护(CFG)得到了缓解。redcanary已经成功地在Linux上复制了这种技术的变体,我们的研究结果已经被整合到我们的Linux对手模拟开源框架Chain Reactor中。在下面的部分中,我们将把天堂之门技术作为入门,详细介绍这种技术在Linux上的变体,提供概念验证代码,并演示strace/ptrace是如何被愚弄的。重游天门寻窗端点安全产品通常通过用户模式API挂钩来检测Windows应用程序。例如,为了监视新启动的应用程序的文件活动,安全产品会将相关联的32位api挂入ntdll.dll,如CreateFile、OpenFile和WriteFile。然而,cc防御原理,Windows上的Windows(WoW64)允许用户出于兼容性的原因在64位系统上运行32位应用程序,这带来了一个小问题。在WoW64系统中,所有32位应用程序同时加载32位和64位ntdll.dll. 32位DLL有效地充当了包装器,直接插入64位DLL以执行实际的系统调用。因此,恶意软件可以通过直接利用64位API绕过32位API挂钩,绕过许多安全产品的用户模式组件。这项技术最初是由georgenicolaou在他的博客上记录的,后来通过CFG在windows10+中得到了缓解。Linux上的天堂之门我们能够为Linux重新创建这种技术的变体,有效地混淆了常见的跟踪工具。与Windows不同,32位Linux可执行文件不加载任何本机64位库。相反,Linux创建32位内核入口点,模拟32位内核的存在。相反,Windows只有64位内核入口点。安全产品的检测可能存在于以下几个位置之一:内核中基于ptrace的系统,高防服务器高防cdn,或者使用像audit这样的子系统。我们将介绍两个用例:调用32位系统调用项的64位应用程序调用64位系统调用项的32位应用程序下面将详细介绍这些内容,以及GitHub存储库中的概念证明(POC)和原始代码。规避64位安全检测64位应用程序可以直接调用标准的32位中断处理程序来转换到内核。但也存在一些警告,因为所有基于寄存器的参数必须不大于它们的32位对应参数,并且所有指针都必须指向较低的2GB虚拟内存。幸运的是,这些约束可以通过带有MAP_32BIT标志的mmap来满足:让我们通过一个使用32位socketcall接口的示例:在Linux4.3之前,32位应用程序对所有套接字操作使用单个入口点(socketcall)。第一个参数(call)指定要执行的操作(bind、connect等),第二个参数是操作预期参数的连续内存块。在本例中,我们将让socketcall执行recvfrom操作。功能定义:参数详细信息:三个立即数(sockfd、len、flags)一(一)一进一出(addrlen)指向结构的一个指针当使用天门技术时,立即值是最不复杂的,因为语义是通过值传递的。输入/输出指针更复杂,因为它们都需要指向较低的2GB虚拟内存。我们还需要确保通过mmap为套接字操作的参数(本例中为6)、接收缓冲区(由len指定)、src_addr和out for addrlen分配足够的内存。一旦参数被正确地布置好,防御cc是什么意思,我们就可以通过socketcall的系统调用号(102)调用socketcall的32位syscall入口点。概念证明:规避32位安全检测可以调用64位syscall接口,但需要设置特定的代码段选择器。目前,对于32位保护模式和64位长模式,代码段是本地描述符表(LDT)或全局描述符表(GDT)的索引,指向一个结构,防御无上限ddos,该结构定义了用户模式和内核模式的虚拟地址空间限制,以及定义的指令编码。代码段(CS)的索引值在Linux源代码存储库中的x86 architecture文件夹中定义。从上面我们可以看到:32位应用程序通过用户32 CS分配35(0x23)的值64位应用程序通过\uuU USER_CS分配值51(0x33)因此,我们需要将应用程序的CS从0x23转换为0x33,以便在没有非法指令异常的情况下执行64位syscall。我们可以通过使用远跳转来实现这一点,阿里云ddos防御安装,它允许我们指定段选择器和目标函数的虚拟地址。概念证明:影响很容易混淆用户模式仪器和工具。例如,在执行sysptce的过程中调用spect。在64位长模式下操作时,ptrace不区分32位和64位syscall入口点。因此,当我们使用天门技术时,strace错误地解码了syscalls:如上所示,strace的输出通知我们正在调用lgetxattr,而实际上它是mmap。目前还不清楚哪些Linux安全产品会受到这种技术的影响。在我们的研究之后,我们能找到的唯一的现有技术是一个GitHub主旨和"rqou"的POC代码受影响的安全产品类别可能包括:防病毒下一代防病毒(NGAV)端点检测与响应(EDR)端点保护平台(EPP)云工作负载保护平台(CWPP)沙箱和欺骗技术我们鼓励您探索作为客户还是作为供应商,您是否面临风险。POC代码在我们的GitHub中提供,并包含在链式反应器中。