一文读懂进程重镜像技术(附检测方案)

本文详细介绍了进程重镜像攻击的原理及检测方法。攻击者利用Windows操作系统在确定进程镜像FILE对象位置时的不一致性,隐藏恶意二进制文件,绕过系统验证。攻击分为三个阶段:二进制文件写入、未检测到的二进制加载和恶意二进制的重镜像。检测方法涉及对API调用的监控,特别是LoadLibrary和CreateProcess。通过Sysmon事件ID 1(进程创建)和ID 7(镜像加载)的关联分析,以及文件创建事件的关联,可以有效检测此类攻击。文章提供了SparkSQL查询示例和数据集,鼓励读者自行分析。
摘要由CSDN通过智能技术生成

背景

大约三个月前,一种新的攻击技术出现在安全社区,名为「进程重镜像」。 这项技术是由 McAfee 安全团队在一篇标题为“进程重镜像和终端安全解决方案绕过”的博文中发布的,在这种攻击技术发布的几天后,我的一个同事也是朋友—— Dwight ——拿出了概念验证代码(PoC),演示了这种技术,可以在他的 GitHub 上找到。 虽然这项技术还没有映射到 MITRE ATT&CK 中,但我相信它属于防御躲避战术。

尽管我写这篇博客文章的目的是展示用于检测这种攻击的方法,奇热但是它假设你已经读过 McAfee 安全团队发布的博客文章并且看过 Dwight 的概念验证代码。 这次攻击的简要概要如下:

进程重镜像是一种攻击技术,它利用了 Windows 操作系统在确定进程镜像 FILE 对象位置过程中的不一致性。 这意味着攻击者可以删除磁盘上的二进制文件,并通过将其初始执行完整文件路径替换为受信任的二进制文件来隐藏该文件的物理位置。 这反过来允许攻击者绕过 Windows 操作系统进程属性验证,将自己隐藏在他们选择的进程镜像的上下文中。

这种攻击包括三个阶段:

· 将二进制文件写入到磁盘ーー这里假设攻击者可以将二进制文件写入到磁盘。

· 未检测到的二进制加载。这将是进程创建后加载的原始镜像

· 恶意二进制文件被“重镜像”到一个攻击者希望以某种方式出现的已知的好的二进制文件。 这是可以实现的,因为重命名镜像时,虚拟地址描述符(VAD)不更新。 因此,当应用程序查询时,这会返回错误的进程镜像文件信息。

这使对手有机会防御性地规避分析人员和事件响应者的检测工作。 组织往往没有收集到“正确”的数据。 通常,数据是非结构化的、无必要的,并且缺乏得出结论所需的实质性细节。 如果没有高质量的数据,组织可能会对在其环境中运行的技术视而不见。 此外,由于过于依赖 EDR 产品的基本配置(例如,Windows Defender 等) ,你将检测的细节提供给第三方,而第三方可能使用或不使用正确的函数调用来检测这种恶意行为(例如 GetMappedFileName 可以正确检测这种重镜像攻击)。 基于这些因素,这种攻击允许对手成功逃避侦测。 要了解更多关于这种攻击的内容和信息,请查看关于这个主题的原始博客文章中的 “技术探秘” 部分。

注意: GetMappedFileName 是应用程序用于查询进程信息的 API。 它检查所请求的地址是否在指定进程地址空间中的内存映射文件内。 如果地址在内存映射文件内,它将返回内存映射文件的名称。 这个 API 需要 PROCESS_QUERY_INFORMATION 和 PROCESS_VM_READ 访问权限。 任何时候当某个句柄具有了访问权限 PROCESS_QUERY_INFORMATION,它也就被授予了 PROCES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值