终端检测与响应:黑客是如何 进化 的(7)

);

复制代码


在 syscalls 执行之前,这些值中的每一个都需要以特定顺序存储在堆栈上的寄存器中。当应用程序调用 VirtualAlloc 时,只需要四个参数。

LPVOID VirtualAlloc(

    LPVOID lpAddress,

    SIZE_T dwSize,

    DWORD flAllocationType,

    DWORD flProtect

);

复制代码


这些值总是动态的,唯一静态的是 VirtualAlloc 的句柄。对于一个产品来说,读取每一个字节串来确定系统 Dll 之外是否存在 API 或 syscalls 也是非常困难的。



登录/注册后可看大图

Figure 17 Examples of Syscall Custom Assembly_2.png (99.75 KB, 下载次数: 0)

下载附件  

2021-8-20 11:24 上传

 



登录/注册后可看大图

Figure 18 Custom Assembly Location in Memory_2.png (101.86 KB, 下载次数: 0)

下载附件  

2021-8-20 11:25 上传

 

虽然这听起来很容易开发,但有很多小的依赖项,如果没有正确地开发到您的代码中,可能会导致内核崩溃。之前我们回顾了正常请求的执行流程以及 WinAPI 和 syscalls 如何与内核交互。在开发自己的 syscalls 和函数时,还需要为所有可能的响应代码和与这些值中的每一个相关联的十六进制值提供参考。当指令返回时,我们的代码需要知道如何解释响应; 显然,这些响应不会是 "ALL GOOD" 或这个值你造成了错误。这些通常是系统给出错误代码的十六进制值。



登录/注册后可看大图

Figure 19 Error Code Example_1.png (124.64 KB, 下载次数: 0)

下载附件  

2021-8-20 11:25 上传

 

虽然我们强调了攻击者可以用一些技术来规避 EDR 产品的预防和检测机制,但这并不意味着产品已经很完美了。EDR 产品仍然是对检测和预防网络威胁很重要的卓越产品。重点不应该是用其他东西替换这些产品,相反,应该关注如何改进这些产品,因为它们不会很快消失。

四、我们还能做什么

虽然我们只讨论了几种有效的技术,但仍有许多不同的方法可以实现相同目的。对于依赖 EDR 产品来帮助检测和预防网络威胁的组织来说,这似乎非常令人生畏。

一个艰难的事实是没有简单的解决办法,大部分补救措施只能靠这些产品的持续改进。第一个是落实防篡改传感器,它可以监视应用程序的行为,寻找进程内存变化的指标的特定特征,特别需要关注加载的系统 Dll。进程需要修改系统 Dll 的情况很少,因为它们仅用于与操作系统交互。这些传感器本质上是通过在创建初始进程并加载 Dll 后监视对系统 Dll 字节数据或权限的任何修改情况下来工作。

另一个更广泛的途径是摆脱依赖在用户模式下的 hooking,转向内核,这种方法有很多好处,因为内核是操作系统要加载的第一部分,因此,它可以定位和监视任何操纵用户模式钩子的尝试。无论是用于网络连接还是文件系统监控,大多数现代 EDR 产品已经在内核模式中具有某种功能。扩展这些光学器件不仅可以提供额外的遥测,还有助于防止攻击者进行任何篡改,因为修改内核模式资源需要某种特权访问。此外,诸如 PatchGuard 之类的机制可防止对内核中运行的资源进行任何修改。正如之前提到的,开发一个在内核空间运行的稳定产品确实需要付出更多的努力。

攻击者可以清除事件日志或欺骗命令行参数来混淆遥测数据,从而更难获得正确的信息。Windows 事件跟踪 (ETW) 使得这样做非常困难。ETW 提供了一种从用户和内核模式跟踪和记录事件的方法。ETW 主要在内核中运行,但它依赖于 ntdll.dll 中的 syscalls 提供的遥测数据。这些遥测数据被 ETW 用作数据点。ETW 的独特之处在于它不依赖于钩子,因为这些钩子都是 Windows 原生的,主要目的是将数据输入内核。这意味着永远不需要修改或 hook 这些 syscalls。相反,ETW 确定哪些数据是相关的,哪些不是。通过使用 ETW,产品可以根据来自用户模式钩子的数据进行相同的确定。

如何规避 ETW 的技术已公开,利用此技术进行的攻击不需要提升权限,这使得在现实世界中执行这些技术变得困难,因为攻击者的初始妥协点通常没有权限提升,主要为后利用目标。从主机捕获某种形式的 ETW 遥测可以为蓝队提供大量必要的数据,以对检测进行分类并了解威胁带来的风险。它还可以帮助事件响应人员了解攻击发生的方式和时间,从而为响应流程提供信息。

实施 EDR 很棒,但将它们作为针对网络攻击的单一检测来源可能会造成单点故障。此外,采用一套与 EDR 互补的综合安全控制措施可以非常有效地填补这些空白,以帮助预防和检测网络攻击。包括确保从所有终端设备收集事件日志,而不仅仅是关键系统或服务器,因此防御者能够将相关的攻击活动关联起来。这些事件可能不会清楚地表明绕过 EDR 攻击,但可以提供检测和预防攻击所需的其他有用的工件。

此外,基于网络的控制在检测恶意活动方面同样重要。包检查和 TLS 拦截可以检测网络上的恶意活动。即使攻击者能够绕过安全控制并不让日志记录事件,网络控制也可以检测出 C2 通道的出站连接。最后,应用程序白名单或其他限制应用程序执行的方法可能会阻碍攻击者绕过 EDR。

虽然这些都是帮助提高检测和预防能力的绝佳点,但事实仍然是,这在很大程度上是一场猫捉老鼠的游戏。攻击者总是会构建新的技术来逃避检测,而防御者则必须做出相应措施与之对抗。

 

EDR

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwpjz.html