如今每天都能发现超过55万个新的恶意软件样本,企业如何避免系统漏洞暴露在这些网络威胁中成为了工作中的重中之重。尽管如此,许多人仍然让自己暴露在了风险之中。
0day攻击的漏洞利用让人比较头疼,因为软件供应商也没有漏洞补丁。谷歌的一项研究显示,2020年有24个零日漏洞遭攻击者利用。同时,至少80%的攻击利用了三年前报告披露的漏洞。
许多软件漏洞以复杂的方式隐藏,如果企业依赖普通的网络安全解决方案,则很难检测到它们。有效检测漏洞利用需要深入的系统知识和对所有应用程序的持续监控,包括漏洞利用预防功能的先进的下一代网络保护解决方案。
漏洞利用防护原理
虽然每天都会出现成百上千的新恶意软件样本,但犯罪分子只能使用少数技术来利用软件漏洞,而且其中大部分都与某种类型的随机存取存储器 (RAM) 操作有关。通常,犯罪分子会将一些漏洞利用技术和恶意软件分发连接在一起。这意味着企业的网络安全解决方案必须能够检测并防护多种多样的漏洞利用技术。
本文总结了五种常见漏洞利用技术,为企业系统和数据安全防护提供参考。
1. 返回导向编程保护
数据执行保护 (DEP)是一种系统级内存保护功能,从Windows XP开始就内置于 Windows 操作系统中。它使系统能够将一页或多页内存标记为不可执行。从一开始,犯罪分子就尝试绕过DEP,并且他们已经使用不同的技术成功地绕过了一段时间,其中一种技术就是返回导向编程 (ROP)。
网络犯罪分子使用ROP链(来自现有合法代码部分的一小段)来构建工作代码。这些小段代码是通过返回指令调用的,在某些时候,犯罪分子会调用WinAPI函数。应用程序的堆栈是一个包含内存地址位置(返回地址)列表的内存区域。如果WinAPI函数没有用call指令调用,则堆栈上的返回地址将是错误的。
当系统找不到呼叫指令时,更为有效的网络保护解决方案将终止ROP攻击。
2. 内存操作
犯罪分子通过在返回导向编程攻击中链接ROP小工具,使用堆栈透视来绕过DEP等保护措施。通过堆栈旋转,攻击可以从真实堆栈转向新的虚假堆栈,该堆栈是攻击者可以控制的缓冲区,例如堆,可以从堆控制未来的程序执行流程。
虽然Windows提供导出地址过滤 (EAF),但下一代网络安全解决方案可以提供访问过滤器,防止通过代码读取Windows可执行文件 (PE) 标头和导出/导入表,使用特殊保护标志来保护内存区域。访问过滤器还应支持许可名单,以便根据需要调整启发式方案。
3. 代码注入保护
网络犯罪分子擅长利用以下几种代码注入技术开展攻击。
(1) 进程镂空是其中一种,其中受信任的应用程序(例如explorer.exe或svchost.exe)以挂起状态加载到系统上,充当恶意代码的容器。由于一个镂空进程是在挂起状态下创建的,它的内存被取消映射并被恶意代码替换。恶意代码的执行在合法进程下被掩盖,通常会绕过普通的安全产品的防御和检测分析。
(2) 另一种称为反射动态链接库 (DLL) 加载的技术,加载DLL时发生在内存而非磁盘。Windows没有支持此功能的LoadLibrary函数,因此如果用户怀疑遭恶意使用,可以检查并阻止它。
(3) Early Bird代码注入技术利用了程序在计算机上执行时发生的应用程序线程处理过程。在许多安全产品放置hook之前,它会在线程初始化的早期阶段加载恶意代码。这允许恶意软件在不被检测到的情况下执行其恶意操作。Windows的早期启动反恶意软件 (ELAM) 技术可用于帮助检测和防止采用这种方法的攻击。
(4) 异步过程调用 (APC)是一种Windows功能,可以将线程从其常规执行路径转移并引导它执行其他操作。APC最重要的一点是,当它被调度时,它是针对特定线程的。攻击者可以注入该调用并使用它来运行恶意代码。
因此,先进的下一代网络安全解决方案可以在暂停模式下检测进程中的注入,这会清空原始内存并阻止受影响的进程。
4. 提权保护
Windows中的进程有一个所谓的安全标识符 (SID)。SID是可变长度的唯一值,用于标识安全主体(例如安全组)。
当父进程创建子进程时,子进程继承SID。这需要在应用程序加载期间进行检查,因为用户可从中发现恶意活动。在流程执行期,SID不能被更改。对于敏感功能,漏洞利用防护软件也会检查SID在执行过程中是否保持不变。
例如,如果攻击者想要将CreateProcessWithToken函数与来自另一个进程的安全令牌(可能被预先窃取)一起使用,则将提取SID并根据当前进程进行检查。如果没有匹配项,它将发出警报并阻止该进程。
5. 防御规避保护
许多先进的下一代网络安全解决方案在敏感的API函数上设置hook,以在允许内核提供请求服务之前进行拦截和执行检查,例如防病毒扫描。犯罪分子可以充分利用这一功能“监控敏感功能”,通过以偏移量调用不受监控、非敏感的函数(故意解决重要的内核服务),以逃避安全软件的检测。因此,先进的下一代网络安全解决方案可以防止攻击者通过未受保护的API函数访问敏感的内核函数。
漏洞利用防护是一种防护作用较小的技术和启发式方法,但它们是任何多层安全计划的关键部分——尤其是针对0day漏洞的复杂网络攻击。无论是最近发现的漏洞利用还是现有的、未修补的漏洞,只需一次攻击即可导致灾难性的数据丢失并可能摧毁用户业务。