虹科分享 | 移动目标防御 | 为什么要关心内存中的攻击?

尽管在网络安全方面的投资不断增加,但网络犯罪仍在激增。每天的攻击都会使医疗保健提供瘫痪,并扰乱金融/保险服务公司、制造公司、律师事务所和软件公司,以至于有关闭的风险。这在很大程度上是因为攻击一直在变化,而防御没有变化。如今的恶意软件越来越多地在内存中执行运行时攻击。

根据微软的数据,微软产品中70%的漏洞是内存安全问题。PurpleSec发现,2022年,内存崩溃是最常见的零日攻击类型,占攻击的67.55%。对于依赖基于检测的解决方案来应对这些类型的攻击的防御者来说,这是一个大问题。

不久前,几乎所有的恶意软件都依赖于可执行文件。威胁参与者在受害者环境中的磁盘上安装了恶意软件。该恶意软件将通过函数调用、系统事件或消息与受感染的计算机交互或与命令和控制(C2)服务器通信。

传统网络安全在一定程度上运作良好

但是,无论是在服务器上还是在受攻击的终端上,该恶意软件都会留下其存在的证据。防御者可以依靠端点保护平台(EPP)、端点检测和响应(EDR/XDR)和防病毒(AV)等工具来发现恶意软件部署的迹象。发现这些攻击模式和特征是网络安全技术演变的目的——在威胁造成真正破坏之前检测和隔离威胁。

但随着攻击链现在进入内存,它们在要检测的特征或要分析的行为模式方面提供的东西很少。传统的恶意软件攻击并没有消失。只是更多的威胁在运行时以设备内存为目标,而传统的防御者对此的可见性有限。

内存中攻击可以安装有关联的文件,也可以没有关联的文件,并在最终用户启动和关闭应用程序之间的空间中工作。像Emotet、Jupyter、Cobalt Strike和供应链攻击这样的运行时攻击可以在受害者的环境中移动。

 这些威胁通常不会在设备磁盘上留下可识别的印记。这些威胁的证据最终可能会在基于签名的解决方案上显示为警报。这包括安全信息和事件管理(SIEM)或安全协调、自动化和响应(SOAR)解决方案。但到那时,后卫们通常已经来不及做任何事情了。

隐蔽而强大的应用程序运行时攻击为勒索软件部署和数据外泄奠定了基础。

内存中的威胁无处不在

作为无文件恶意软件的一项功能,完整的内存中攻击链在2010年代中期开始出现。臭名昭著的Angler漏洞工具包以其独特的混淆而闻名,它授权网络犯罪分子每月收取费用来利用网络浏览器漏洞。

仅在2015年,网络犯罪分子就利用Angler从受害者那里窃取和勒索了3400万美元

近年来,在内存方面的泄露激增。威胁参与者使用Cobalt Strike等工具从设备内存恶意加载通信信标。Cobalt Strike是一种合法的五层攻击解决方案。2019至2020年间,使用Cobalt Strike的网络攻击增加了161%。它通常被Conti使用,Conti是目前运营中最成功的勒索软件集团,在2021年获得了1.8亿美元的收入

为了逃避传统的以签名和行为为重点的安全解决方案,威胁参与者现在创建针对运行时内存中的恶意软件,并劫持合法进程。Picus实验室的2021年红色报告将20多万个恶意软件文件映射到MITRE ATT&CK框架。

“他们发现,去年最流行的五种攻击方式中,有三种是在内存中发生的。”

内存泄露现在是攻击链的典型特征,就像2021年爱尔兰国家医疗服务体系被入侵之前那样。

无法在运行时扫描设备内存

在应用程序运行时期间,设备内存中发生的情况对防御者来说大多是不可见的。若要了解原因,请考虑解决方案如何在有人使用应用程序时尝试扫描应用程序。 

解决方案必须 1) 在应用程序的生命周期内多次扫描设备内存,同时 2) 侦听正确的触发操作,以及 3) 查找恶意模式以捕获正在进行的攻击。做这三件事的最大障碍是规模。在典型应用程序的运行时环境中,可能有 4GB 的虚拟内存。不可能足够频繁地扫描如此大量的数据,至少不会减慢应用程序的速度,以至于无法使用。因此,内存扫描程序只能查看特定的内存区域、特定的时间线触发器和非常具体的参数——所有这些都假设内存状态是稳定和一致的。 

在范围如此有限的情况下,在最好的情况下,专注于内存扫描的解决方案可能会占用3%到4%的应用程序内存。但威胁越来越多地使用多态来混淆他们的存在,甚至在内存中也是如此。这意味着在如此小的设备内存样本中捕获恶意活动将是奇迹。使这一问题雪上加霜的是,攻击现在绕过或篡改了大多数解决方案用来发现正在进行的攻击的挂钩。

毫不奇怪,远程访问特洛伊木马程序(RAT)、信息窃取程序和加载程序现在使用应用程序内存来隐藏更长时间。攻击者在网络中停留的平均时间约为11天。对于老鼠和信息窃取等高级威胁,这个数字更接近45天。

Windows和Linux应用程序都是目标

在内存中,泄露不是一种单一类型的威胁。相反,这是导致广泛后果的攻击链的一个特征。例如,勒索软件不一定与内存运行时攻击相关联。但要部署勒索软件,威胁参与者通常必须渗透网络并提升权限。这些过程往往在运行时在内存中发生。

网络安全的标准方法是检测正在进行的攻击或被破坏后的攻击。这使每种类型的组织和 IT 资产都面临“隐形”运行时攻击的风险。Morphisec的事件响应团队已经看到内存中入侵被用于从金融机构的服务器到医院的端点以及介于两者之间的所有情况。 

这些威胁不仅针对 Windows 服务器和设备上的内存进程,它们还针对Linux。去年,由威胁行为者创建的恶意版本的Cobalt Strike专门用于Linux服务器。在金融等行业,Linux被用来为虚拟化平台和网络服务器提供动力,攻击激增。攻击通常会破坏内存中的业务关键型服务器,从而为信息盗窃和数据加密奠定基础。 

防止内存中运行时攻击

内存中运行时攻击是一些最先进的破坏性攻击。他们不仅针对企业,现在还把整个政府都扣为人质。因此,防御者必须专注于在运行时阻止对应用程序内存的威胁。只专注于检测是不好的;内存中和无文件的恶意软件实际上是不可见的。传统的安全技术在受保护资产周围竖起一堵墙,并依赖于检测恶意活动,无法阻止多态和动态威胁。

相反,应通过安全层确保有效的深度防御,从而首先防止内存受损。这就是移动目标防御(MTD)技术的作用。MTD 通过在运行时变形(随机化)应用程序内存、API 和其他操作系统资源,创建即使是高级威胁也无法穿透的动态攻击面。实际上,它不断地移动房屋的门,同时将假门留在原处,从而捕获恶意软件以进行取证分析。即使威胁行为者能找到通往建筑物的门,当他们返回时,它也不会在那里。因此,他们不能在同一端点上重用攻击,更不用说在其他端点上了。 

MTD 技术不是在攻击发生后检测到攻击,而是先发制人地阻止攻击,而无需签名或可识别的行为。而且它不会影响系统性能、生成误报警报或需要增加员工人数才能运行。