需要新应用打开此exe文件_exe文件手机怎么打开_手机打开exe文件

Windows 操作系统在确定进程映像 FILE_OBJECT 的位置时存在不一致,这会影响非 EDR(端点检测和响应)端点安全解决方案(例如 Microsoft Defender Realtime Protection)检测恶意进程中加载​​的正确二进制文件的能力。 这种不一致导致 McAfee 开发了一种新的 Post-Exploitation 绕过技术,我们称之为 Process Reimaging。 这种技术相当于在 Miter 攻击防御规避类别中实施的 Process Hollowing 或 Process Doppelganging,但由于不需要代码注入,该过程更容易执行。 虽然这种绕过技术已经针对 Microsoft Windows 和当前版本的 Defender 进行了成功测试,但它可能适用于任何实现下面讨论的 API 的端点安全供应商或产品。

Windows 内核 ntoskrnl.exe 通过 NTDLL.dll API 发布功能以支持端点安全解决方案 (ESS) 服务和进程等用户模式组件。 K32GetProcessImageFileName 就是这样一种 API,它允许 ESS 验证进程属性以确定它是否包含恶意二进制文件以及是否可以信任它来调用其基础结构。 Windows 内核 API 返回陈旧且不一致的 FILE_OBJECT 路径,这允许攻击者绕过 Windows 操作系统进程属性验证。 我们开发了一个概念验证,通过隐藏进程 EXE 的物理位置来利用此 FILE_OBJECT 位置不一致。

此 PoC 允许我们保留一个恶意进程(后利用),Windows Defender 不会检测到该进程。

Windows Defender 无法检测到进程重新映像技术,除非它具有恶意文件的签名并在创建它之前扼杀磁盘上的进程,或者对可疑设备执行全面扫描以检测磁盘上的文件。 除了进程重映像和保护建议之外,本文还深入研究了用于进程属性验证和进程重映像攻击向量的逆向工程 Windows 内核 API。 注意,本文以SynAck勒索软件为例进行说明。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

防病毒扫描程序检测

当防病毒扫描程序在系统上处于活动状态时,它将通过检测包含恶意内容的运行代码以及在写入或加载恶意文件时检测恶意文件来防止感染。

加载图像的实际顺序如下:

1.FileCreate——打开文件,使其映射到内存中;

2.Section Create——文件映射到内存;

3.清理——关闭文件句柄,为PAGING_IO留下一个内核对象;

4. ImageLoad——文件已经加载;

5.CloseFile——文件关闭;

如果防病毒扫描程序在加载时处于活动状态,您可以使用上述任何步骤(1、2 和 4)来保护您的操作系统免受恶意代码的侵害。 如果加载映像时防病毒扫描程序未处于活动状态,或者它不包含加载文件的定义,则它可以查询操作系统以获取有关构成进程的文件的信息并扫描这些文件。 进程重新映像是一种绕过步骤 4 中的病毒扫描的机制需要新应用打开此exe文件,当病毒扫描程序错过启动进程或在加载时没有足够的病毒定义时非常有用。

目前,没有标准方法可以安全地识别与 Windows 上正在运行的进程关联的基础文件。 这是由于 Windows 无法从 NTDLL API 中检索到正确的图像文件路径,它可以绕过 Defender (MpMsEng.exe/MpEngine.dll),其中正在执行的文件是“可能不需要的程序”,例如 mimikatz.exe . 如果在 mimikatz 启动过程中启用了 Defender,则会在第 1 阶段或第 2 阶段进行检测。如果未启用 Defender,或者当前签名的文件无法识别正在启动的程序,则允许启动该文件。 在启用 Defender 或更新签名后,Defender 将使用 K32GetProcessImageFileName 来识别底层文件。 如果进程是使用我们的进程重映像技术创建的,则将不再检测到正在运行的恶意软件。 因此,任何正在运行的安全服务审计员将无法识别与正在运行的进程关联的文件。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

轻松绕过安全防御机制

Mitre ATT&CK 模型如下,其中包括攻击者使用的 Post-Exploitation 策略和技术。

exe文件手机怎么打开_手机打开exe文件_需要新应用打开此exe文件

斜切企业 ATT&CK

当今的大多数网络安全框架都是建立在防御之上的。 值得注意的是,近年来也出现了基于攻击面分析的网络安全框架,MITRE ATT&CK就是一个典型的例子。 它为攻击过程提出了更多的定义。 系统归纳成为一种简单易懂的模型和通用语言,这也让各个网络安全公司在讲解网络杀伤链时有一个统一的标准可循,企业也可以借助这个工具,更容易理解攻击者行为带来的安全风险。

一旦攻击者在端点上获得代码执行,他们将寻求在发起广泛感染之前获得持久性、特权升级和绕过防御的能力。 他们可以使用流程操纵技术实施绕过需要新应用打开此exe文件,使代码在受信任的流程中执行。 流程操纵技术已经存在了很长时间,并从流程注入演变为流程挖空和流程分叉,目的是模拟可信流程。 虽然 Mitre ATT&CK 和 Unprotect Project 也记录了其他工艺操作技术,但我们将重点关注工艺空心化和工艺双拼。 进程操纵技术利用 Windows 操作系统的合法功能来模拟受信任的进程可执行二进制文件,并且通常需要代码注入。

ESS将信任机制(inherent trust)内置到Windows操作系统中,实现数字签名验证、进程属性验证等功能。 正如 Spectre Ops 所展示的,ESS 对 Windows 操作系统的信任可能会被数字签名验证破坏。

同样,进程重映射破坏了 ESS 对 Windows 操作系统中进程属性验证的信任。

当一个进程被 ESS 信任时,它被认为不包含恶意代码,也可以被信任调用 ESS 可信基础设施。

McAfee 高级威胁研究 (ATR) 团队的分析师使用 Mitre ATT&CK 框架来分析与攻击技术相关的活动,例如绕过防御技术。 此分析可帮助组织了解攻击者的行为和演变,以便他们可以评估自己的 McAfee ATR 根据威胁分析创建和共享 Yara 规则。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

进程运行技术(以SynAck勒索病毒为例)

McAfee 在 2018 年分析了 SynAck 勒索软件,发现它使用 Process Doppelganging 和 Process Hollowing 作为其备用绕过技术。 我们使用此恶意软件来解释 Process Doppelganging 和 Process Hollowing 技术,以便将它们与基于真实世界观察的过程重新成像进行比较。

Process Manipulation 防御规避不断发展,Process Doppelganging 于 2017 年公开发布,以提升 ESS 保护和检测能力。 由于进程操纵技术经常利用 Windows 操作系统的合法功能,如果防病毒扫描程序在进程启动之前未被阻止,则很难防御。

工艺镂空

当进程在挂起状态下创建并且其内存在未映射时被恶意代码替换时,就会发生 Process Hollowing。 恶意代码的执行隐藏在合法进程之下,可能会绕过防御和检测分析。

需要新应用打开此exe文件_手机打开exe文件_exe文件手机怎么打开

SynAck 勒索软件使用 Process Hollowing 绕过安全检测

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

过程二重身

Process Doppelgänging 替换合法进程的内存,允许恶意代码绕过防御和检测,同时保持隐藏。 使用 Windows Transactional NTFS (TxF) 的 Process Doppelgänging 也避免了使用高度监控的 API 函数,例如 NtUnmapViewOfSection、VirtualProtectEx 和 SetThreadContext。

手机打开exe文件_exe文件手机怎么打开_需要新应用打开此exe文件

SynAck 勒索软件使用 Process Doppelganging 绕过安全检测

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

过程再成像的武器化过程

这允许攻击者绕过 Windows 操作系统进程属性验证,因为 Windows 内核 API 返回过时且不一致的 FILE_OBJECT 路径。 这允许攻击者通过隐藏进程 EXE 的物理位置来持久化恶意进程(开发后)。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

SynAck 勒索软件使用进程重映像绕过安全检测

NtQueryInformationProcess 从内核中的 EPROCESS 结构字段中检索所有进程信息,而 NtQueryVirtualMemory 从 EPROCESS 结构中的虚拟地址描述符 (VAD) 字段中检索信息。

EPROCESS 结构包含以下字段/偏移量的文件名和路径信息(见下图):

+ 0x3b8 SectionObject(文件名和路径);

+ 0x448 ImageFilePointer*(文件名和路径);

+ 0x450 ImageFileName(文件名);

+ 0x468 SeAuditProcessCreationInfo(文件名和路径);

注意:此字段仅出现在 Windows 10 中。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

代码复杂性 IDA 图显示 NTDLL 中的 NtQueryInformationProcess 文件名 API

内核 API NtQueryInformationProcess 通过以下 kernelbase/NTDLL API 使用:

· K32GetModuleFileNameEx;

· K32GetProcessImageFileName;

· QueryFullProcessImageImageFileName;

VAD 为进程中所有映射的图像保留一个指向 FILE_OBJECT 的指针,其中包含文件名和文件路径(见下图)。

内核 API NtQueryVirtualMemory 通过以下 kernelbase/NTDLL API 使用:

· 获取映射文件名

手机打开exe文件_exe文件手机怎么打开_需要新应用打开此exe文件

代码复杂性 IDA 图显示 NTDLL 中的 NtQueryVirtualMemory 文件名 API

当进程创建后修改FILE_OBJECT文件路径时,Windows无法更新上述任何内核结构字段。 对于上述某些字段,Windows 在文件名更改时更新 FILE_OBJECT。

VAD 反映在创建进程后加载的图像的任何文件名更改,但不反映文件路径的任何重命名。

EPROCESS 字段也无法反映进程文件路径的任何重命名,只有 ImageFilePointer 字段反映文件名更改。

因此,NtQueryInformationProcess 和 NtQueryVirtualMemory 导出的 API 在被 ESS 或其他应用程序调用时会返回错误的进程映像文件信息(见下表)。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

攻击发生的先决条件

进程重新映像发生在后开发阶段,此时攻击者已获得对目标系统的访问权限。 这与 Mitre ATT&CK 框架的 Defense Bypass 类别中的 Process Hollowing 或 Process Doppelganging 技术相同。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

进程重新映像攻击向量

FILE_OBJECT 文件路径更改

只需重命名执行进程的文件路径,Windows 操作系统就会为所有 API 返回错误的图像位置信息(见下图)。 这会在测试时影响所有 Windows 操作系统版本。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

FILE_OBJECT 文件路径改变,文件路径改变影响所有Windows操作系统版本

FILE_OBJECT 文件名更改

文件名更改 >= Windows 10

简单地重命名正在执行的进程的文件名会导致 Windows 操作系统为 K32GetProcessImageFileName API 返回不正确的图像信息(见下图),这仅被确认会影响 Windows 10。

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

FILE_OBJECT 文件名更改:文件名更改影响 Windows >= Windows 10

根据下图,由于偏移量 448 处的新 EPROCESS 字段 ImageFilePointer,GetModuleFileNameEx 和 QueryFullProcessImageImageFileName 将获得正确的文件名更改。那里的指令 (mov r12, [rbx+448h]) 将偏移量 448 中的 ImageFilePointer 引用到 EPROCESS 结构中。

NtQueryInformationProcess (Windows 10):Windows 10 RS1 x64 ntoskrnl 版本 10.0.14393.0

文件名更改 < Windows 10

简单地重命名正在执行的进程的文件名会导致 Windows 操作系统为 K32GetProcessImageFileName、GetModuleFileNameEx 和 QueryFullProcessImageImageFileName API 返回不正确的图像信息(见下图),这已被确认会影响 Windows 7 和 Windows 8。

手机打开exe文件_需要新应用打开此exe文件_exe文件手机怎么打开

FILE_OBJECT 文件名更改:文件名更改影响 Windows

根据下图,GetModuleFileNameEx 和 QueryFullProcessImageImageFileName 将得到错误的文件名(PsReferenceProcessFilePointer 引用 EPROCESS 偏移量 0x3b8 SectionObject)。

NtQueryInformationProcess(Windows 7 和 8):Windows 7 SP1 x64 ntoskrnl 版本 6.1.7601.17514

exe文件手机怎么打开_需要新应用打开此exe文件_手机打开exe文件

LoadLibrary FILE_OBJECT 重用

LoadLibrary FILE_OBJECT 重用基于以下事实:当在 EXE 或 DLL 上的 LoadLibrary 和 FreeLibrary 之后调用 LoadLibrary 或 CreateProcess 时,进程将重用内存中来自先前 LoadLibrary 的现有图像 FILE_OBJECT。

顺序如下:

1.LoadLibrary(路径文件名);

2. FreeLibrary(路径文件名);

3、LoadLibrary(改名为pathfilename)或CreateProcess(改名为pathfilename);

这会导致 Windows 在上面第 3 步中的进程中创建一个 VAD 条目,它会重用仍在进程内存中的 FILE_OBJECT,它是在上面第 1 步中创建的。 由于 VAD 现在为磁盘上的文件提供了错误的文件路径信息,因此 GetMappedFileName API 将返回磁盘上关联图像的错误位置。

要成功绕过检测,需要满足以下先决条件:

LoadLibrary 或 CreateProcess 必须使用磁盘上与初始 LoadLibrary 完全相同的文件;

必须重命名文件路径(将同一文件拖放到新创建的路径中将不起作用);

使用 LoadLibrary FILE_OBJECT 重用攻击向量,可以通过以下两种方式使用进程重映像技术;

1.LoadLibrary方法(见下图):

ESS或应用程序调用GetMappedFileName API获取内存映射图像文件时,进程重映射会导致Windows操作系统返回错误路径,测试时影响所有Windows操作系统版本。

手机打开exe文件_需要新应用打开此exe文件_exe文件手机怎么打开

LoadLibrary FILE_OBJECT重用(LoadLibrary),使用LoadLibrary的进程重镜像技术影响所有Windows OS版本

2、CreateProcess(见下图):

当ESS或应用程序调用GetMappedFileName API获取进程镜像文件时,进程重镜像会导致Windows操作系统返回错误的路径,影响所有Windows操作系统版本同时进行测试。

exe文件手机怎么打开_手机打开exe文件_需要新应用打开此exe文件

LoadLibrary FILE_OBJECT 重用 (CreateProcess):使用 CreateProcess 的进程重新映像技术影响所有 Windows 操作系统版本

工艺操作技术对比:

需要新应用打开此exe文件_exe文件手机怎么打开_手机打开exe文件

Windows Defender 进程重映像文件路径旁路进程

该视频演示了如何将零日恶意软件(例如 Mimikatz PUP)放入磁盘并作为恶意进程“phase1.exe”执行。 使用进程重新映像文件路径攻击向量,我们证明即使使用磁盘上的恶意软件签名更新 Defender,它也不会检测到正在运行的恶意进程。 因此,对于非 EDR ESS,例如 Defender 实时保护,恶意进程可以驻留在 Windows 设备上,直到它重新启动或设备在签名更新后接收到完整扫描。 (视频地址:)

exe文件手机怎么打开_手机打开exe文件_需要新应用打开此exe文件