无文件恶意软件攻击是一种完全在进程内存中工作的恶意代码执行技术。在无文件攻击中,不会将任何文件放入硬盘。由于硬盘上没有要检测的伪像,这些攻击可以轻松避开基于检测的网络安全解决方案,如下一代防病毒(NGAV)、终端保护平台(EPP)以及终端检测和响应(EDR、XDR、MDR)。
也称为内存攻击,无文件恶意软件攻击已经存在了十多年。最初,它们构成的威胁有限,因为它们很少见,并且可以在系统重新启动时删除。2014年,这种情况随着Poweliks的出现而改变,这是一种点击欺诈特洛伊木马,是第一款展示持久性功能的无文件恶意软件。今天,无文件技术是每个网络犯罪组织武器库的一部分,并对每个组织构成最危险的威胁之一。
基于脚本的恶意软件也被认为是一种无文件恶意软件,因为它不会在磁盘上丢弃任何可移植的可执行文件(PE)。然而,它并不是100%无文件的,因为它确实会丢弃基于脚本的解释文件,如JavaScript、HTA、VBA、PowerShell等。它是使用合法的Windows进程执行的,这使得它非常难以检测。
为什么 EDRS 无法检测到无文件恶意软件?
EDR 等基于检测的安全解决方案使用多种技术来查找和检测恶意活动。
静态分析用于检查文件和软件而不实际执行它们。 当它工作时,它可以实现更快的分析和更早的检测,而不会冒激活恶意代码和损坏系统的风险。 静态分析技术通常依赖于检查文件、代码或二进制文件来识别潜在威胁。 由于无文件恶意软件不使用传统文件,因此没有可分析的静态内容,这使得检测恶意软件的存在变得极其困难。
动态分析观察软件或文件在执行期间的行为,这通常使其在检测无文件恶意软件方面比静态分析更有效。 然而,动态分析在检测无文件恶意软件方面仍然存在挑战。 动态分析是资源密集型的,因此它通常在沙箱或虚拟机等受控环境中执行。 这会导致沙盒感知恶意软件和误导性的威胁分类为合法操作。 此外,动态分析旨在监控执行期间的行为。 如果分析工具没有专门监视与内存相关的活动,或者如果恶意软件采用复杂的技术来隐藏其在内存中的存在,那么直接在内存中运行的无文件恶意软件仍将逃避检测。 攻击者经常利用合法的工具和流程。 这使得动态分析很难区分这些工具执行的合法活动和恶意活动。
白名单(以前称为allowlisting)解决方案的自由应用确实有助于限制用户组对解释器等合法工具的执行。 但以限制组织的运营灵活性为代价。 此外,我们看到攻击者每周都会发明新模式以绕过白名单解决方案的明显模式。 那么,为什么脚本执行检测经常属于无文件恶意软件检测的挑战类别?
- 我们应该扫描 .txt 文件、.sct 文件、.xml 文件吗? 这些都可能是恶意脚本文件,那么我们在哪里停下来呢?
- 虽然我们清楚地了解可执行软件及其标准加载行为,但每种解释语言都有自己的结构和行为。 我们应该为每种类型的解释文件构建一个解析器/解释器吗? 任何人都可以决定一种新的解释性语言,那么我们在哪里停下来呢?
- 我们应该阻止任何可疑的字符串,甚至是报告中的评论吗?
这就是为什么一些安全供应商将静态扫描限制为特定类型的解释文件,并将动态检测限制为一组特定的软件解释器。 即便如此,由于易于使用的混淆选项,他们也很难扫描这些文件。
无文件技术的类型
无文件技术的恶意软件实施的一些流行技术包括:
Windows 注册表操作:代码通常由常规 Windows 进程直接从注册表编写和执行。 这有助于实现持久性、绕过白名单和规避静态分析等目标。
内存代码注入:当进程在系统上运行时,允许恶意软件仅存在于进程内存中。 恶意软件将自身分发并重新注入对正常 Windows 操作活动至关重要的合法进程,因此它无法列入白名单,甚至无法扫描。 安全供应商需要一个适当的理由来终止、阻止或隔离这样的进程,这使得这对黑客极具吸引力。 代码注入技术包括远程线程注入、APC、原子弹轰炸、进程挖空、本地 shellcode 注入、反射加载等。
基于脚本:如前所述,这不是 100% 无文件技术,但它会为检测解决方案带来类似的问题,并且是保持隐身性的首选方法。
Packers
打包是压缩可执行文件的合法方式。 本质上,它是内存中的自修改代码,可以改变进程的内存状态。 但是这种技术被许多恶意软件家族用于签名重新创建,更重要的是,用于动态检测规避。 通过重写现有的可执行文件并在解密和重新映射新功能后重新创建其代码,打包也可以用作代码注入方法。
基于文件和无文件的恶意软件都使用打包。 然而,引爆/解包过程是一个无文件过程。 恶意软件通常通过加密位置无关代码(shellcode/loader/decryptor)的功能和执行来隐藏其真正的 API 和功能。 这段代码并没有使用太多已声明的 API,通常会反射加载下一阶段的恶意库。 我们称这种技术为无文件技术,因为它运行纯粹在内存中创建的恶意代码,而无需写入磁盘。 许多已知的恶意软件大量使用打包和本地代码注入技术来逃避静态分析,包括 Emotet、Revil、Qakbot、IceID、Vidar 等。
WatchGuard (2021) 进行的研究表明,无文件攻击的发生率增长了 900% 以上。 去年,进程注入和 PowerShell 利用等无文件攻击技术是最常报告的 MITRE ATT&CK 技术之一。
这就是为什么无文件恶意软件攻击链的兴起是安全团队需要极其认真对待的事情。
无法检测到的威胁会延长驻留时间
所有类型的无文件恶意软件攻击都有一个共同点:它们极难被检测到。
随着无文件攻击在网络犯罪分子中越来越流行,安全团队检测危害所需的时间猛增。 从 2020 年到 2021 年,威胁的平均停留时间增加了 36%。导致勒索软件部署或数据泄露的攻击的平均停留时间现在约为 34 天。
许多无文件威胁可能会持续更长时间。Morphisec的事件响应团队发现,无文件恶意软件持续存在于远程终端中,等待几个月的横向移动机会才被检测到。
无漏洞恶意软件攻击造成更大破坏
根据波纳蒙研究所的一项研究,无文件攻击成功的可能性是其他攻击的十倍。因为它们更有可能成功,所以它们更具潜在的破坏性,因为攻击者有机会攻击受感染系统的更大部分。
2021年针对爱尔兰卫生服务主管(HSE)的袭击就是一个很好的例子。2021年3月18日,Conti勒索软件小组使用附加了恶意Excel宏的网络钓鱼电子邮件来渗透HSE网络中的一个终端。然后,使用钢笔测试工具Cobalt Strike的折衷版本,Conti特工在5月14日-8周后-部署勒索软件之前,在HSE的网络中横向移动。
这导致Conti泄露了700 GB的未加密数据,包括受保护的健康信息(PHI),并导致勒索软件感染数万个终端和服务器。CONTI关闭了为500多万人提供服务的整个医疗服务IT网络一周,造成了大规模中断。在Conti发布解密密钥后,HSE才解决了这个问题。
勒索软件集团使用了类似的攻击方法,关闭了整个哥斯达黎加政府,并勒索赎金。
像Cobalt Strike这样的无文件后门越来越容易使用。网络犯罪分子正在使用这种民族国家的致命战术来攻击包括中小企业在内的许多其他目标。
如何降低无文件恶意软件攻击风险
无文件恶意软件攻击大多无法检测到。它们经过精心设计,可以绕过NGAV、EPP和EDR/XDR/MDR等检测和响应网络安全工具。
随着无文件恶意软件攻击的持续增加,依赖基于检测的工具的组织面临的风险比他们想象的要大得多。组织要降低这种风险,需要使其网络环境不适合无文件威胁。
例如,重要的是分割网络并实施严格的访问控制,以便为无文件威胁利用的网络中的未经许可的数据流设置障碍。即,实施零信任战略。它还意味着部署预防性技术,如自动移动目标防御(AMTD),该技术可以关闭威胁在应用程序级别使用的攻击路径。
AMTD是一项创新技术,可以在不检测威胁的情况下阻止威胁。它随机改变运行时内存环境,以创建不可预测的攻击面,并将诱饵陷阱留在目标所在的位置。可信应用程序使用更改后的内存环境进行更新,而试图针对诱饵执行的任何代码都会触发该进程终止并捕获以进行取证分析。由于其确定性、预防性的方法,AMTD是唯一可靠地阻止无文件攻击和其他高级威胁(如供应链攻击和勒索软件)的技术之一。Gartner将AMTD称为“网络的未来”,并表示“自动移动目标防御是一种新兴的改变游戏规则的技术,旨在改善网络防御。通过将其添加到他们的产品组合中,产品领导者可以使他们的解决方案产品与众不同,并显著提高其他现有安全解决方案的有效性和价值。“