ATT&CK中的进程注入三部曲
字数 1922 2025-08-18 11:39:04

ATT&CK中的进程注入技术详解

概述

进程注入是恶意软件常用的技术手段,主要目的是为了躲避杀毒软件的检测或进行提权操作。本文将详细解析Mitre ATT&CK矩阵中的三种典型进程注入手法:经典进程注入(DLL注入)、Process Hollowing和Process Doppelgänging。

第一曲:经典进程注入(DLL注入)

技术原理

这是最为经典和简单的进程注入手段,流程清晰明了:

  1. OpenProcess - 打开目标进程
  2. VirtualAllocEx - 在目标进程中分配内存空间
  3. WriteProcessMemory - 将恶意代码写入分配的内存
  4. CreateRemoteThread - 在目标进程中创建远程线程执行恶意代码

特点

  • 实现简单直接
  • 隐蔽性较差,容易被检测
  • 在内存中不伪装,容易被发现

第二曲:Process Hollowing(创建傀儡进程)

技术原理

这是一种较为古老但有效的手段,可以伪装为任意合法进程。实现流程如下:

  1. CreateProcess - 创建目标进程,传入CREATE_SUSPENDED使进程挂起
  2. NtQueryProcessInformation - 获取目标进程内存中映像文件的基地址(通过PEB块数据结构)
  3. NtUnmapViewOfSection - 清空目标进程的内存数据(section),传入进程句柄和映像文件基地址
  4. VirtualAllocEx - 申请新内存(起始地址为原映像文件基地址,大小为payload大小)
  5. WriteProcessMemory - 向内存写入payload
  6. 基址重定向 - 对写入内存的payload进行基址重定向
  7. GetThreadContext - 获取目标线程上下文,修改eax寄存器为正确代码入口点
  8. SetThreadContext - 设置入口点
  9. ResumeThread - 唤醒进程,执行payload

特点

  • 可以完美伪装为合法进程(如IE),包括图标、描述、数字签名等
  • 在内存中使用工具(如process hacker)查看时显示为合法进程
  • 相比经典注入隐蔽性大幅提高

检测思路

重点关注以下特殊步骤:

  • NtQueryProcessInformation
  • NtUnmapViewOfSection
    通过Hook这些关键函数可以有效检测

第三曲:Process Doppelgänging

技术原理

这是一种较新的注入技术,首次在2017年欧洲Black Hat大会上提出。它利用了Windows事务(TxF)特性:

  1. NtCreateTransaction - 创建TxF事务对象
  2. CreateFileTransacted - 在事务中打开合法可执行文件
  3. CreateFile/GetFileSizeEx/NtAllocateVirtualMemory/ReadFile - 打开恶意文件并分配内存空间
  4. WriteFile - 用恶意文件覆盖事务中的合法文件(此时磁盘文件未被真正修改)
  5. NtCreateSection - 创建当前事务的section
  6. NtRollbackTransaction - 回滚事务,恢复合法文件
  7. NtCreateProcessEx - 使用内存中的section创建进程对象
  8. NtQueryInformationProcess/RtlInitUnicodeString/RtlCreateProcessParametersEx - 获取入口点,创建进程参数块并写入内存
  9. NtCreateThreadEx - 更新PEB中的进程参数块,创建线程执行恶意代码

特点

  • 利用事务特性,恶意操作不会实际修改磁盘文件
  • 创建的进程拥有合法可执行文件的所有信息
  • 需要对目标文件有写权限
  • 在内存中查看时显示为合法程序

检测思路

Hook以下关键函数:

  • NtCreateThreadEx
  • NtCreateProcessEx
    通过监控这些有限的关键函数可以dump出最终payload

技术演变趋势

  1. 隐蔽性增强:从最初无隐蔽性到现在内存中完全伪装为合法程序
  2. 释放手段复杂化:从直接内存拷贝到利用系统特性(如TxF)隐蔽释放
  3. 执行阶段稳定:最终执行阶段的关键函数基本不变,仍是检测突破口

防御建议

  1. 实施函数Hook监控关键API调用
  2. 加强对进程创建和内存操作的监控
  3. 特别关注Nt系列API的异常调用
  4. 对事务相关操作保持警惕
  5. 建立完善的进程行为基线,检测异常行为

通过深入理解这些进程注入技术的原理和实现细节,安全团队可以更有针对性地构建防御体系,有效检测和防范此类攻击。

ATT&CK中的进程注入技术详解 概述 进程注入是恶意软件常用的技术手段,主要目的是为了躲避杀毒软件的检测或进行提权操作。本文将详细解析Mitre ATT&CK矩阵中的三种典型进程注入手法:经典进程注入(DLL注入)、Process Hollowing和Process Doppelgänging。 第一曲:经典进程注入(DLL注入) 技术原理 这是最为经典和简单的进程注入手段,流程清晰明了: OpenProcess - 打开目标进程 VirtualAllocEx - 在目标进程中分配内存空间 WriteProcessMemory - 将恶意代码写入分配的内存 CreateRemoteThread - 在目标进程中创建远程线程执行恶意代码 特点 实现简单直接 隐蔽性较差,容易被检测 在内存中不伪装,容易被发现 第二曲:Process Hollowing(创建傀儡进程) 技术原理 这是一种较为古老但有效的手段,可以伪装为任意合法进程。实现流程如下: CreateProcess - 创建目标进程,传入 CREATE_SUSPENDED 使进程挂起 NtQueryProcessInformation - 获取目标进程内存中映像文件的基地址(通过PEB块数据结构) NtUnmapViewOfSection - 清空目标进程的内存数据(section),传入进程句柄和映像文件基地址 VirtualAllocEx - 申请新内存(起始地址为原映像文件基地址,大小为payload大小) WriteProcessMemory - 向内存写入payload 基址重定向 - 对写入内存的payload进行基址重定向 GetThreadContext - 获取目标线程上下文,修改eax寄存器为正确代码入口点 SetThreadContext - 设置入口点 ResumeThread - 唤醒进程,执行payload 特点 可以完美伪装为合法进程(如IE),包括图标、描述、数字签名等 在内存中使用工具(如process hacker)查看时显示为合法进程 相比经典注入隐蔽性大幅提高 检测思路 重点关注以下特殊步骤: NtQueryProcessInformation NtUnmapViewOfSection 通过Hook这些关键函数可以有效检测 第三曲:Process Doppelgänging 技术原理 这是一种较新的注入技术,首次在2017年欧洲Black Hat大会上提出。它利用了Windows事务(TxF)特性: NtCreateTransaction - 创建TxF事务对象 CreateFileTransacted - 在事务中打开合法可执行文件 CreateFile/GetFileSizeEx/NtAllocateVirtualMemory/ReadFile - 打开恶意文件并分配内存空间 WriteFile - 用恶意文件覆盖事务中的合法文件(此时磁盘文件未被真正修改) NtCreateSection - 创建当前事务的section NtRollbackTransaction - 回滚事务,恢复合法文件 NtCreateProcessEx - 使用内存中的section创建进程对象 NtQueryInformationProcess/RtlInitUnicodeString/RtlCreateProcessParametersEx - 获取入口点,创建进程参数块并写入内存 NtCreateThreadEx - 更新PEB中的进程参数块,创建线程执行恶意代码 特点 利用事务特性,恶意操作不会实际修改磁盘文件 创建的进程拥有合法可执行文件的所有信息 需要对目标文件有写权限 在内存中查看时显示为合法程序 检测思路 Hook以下关键函数: NtCreateThreadEx NtCreateProcessEx 通过监控这些有限的关键函数可以dump出最终payload 技术演变趋势 隐蔽性增强 :从最初无隐蔽性到现在内存中完全伪装为合法程序 释放手段复杂化 :从直接内存拷贝到利用系统特性(如TxF)隐蔽释放 执行阶段稳定 :最终执行阶段的关键函数基本不变,仍是检测突破口 防御建议 实施函数Hook监控关键API调用 加强对进程创建和内存操作的监控 特别关注Nt系列API的异常调用 对事务相关操作保持警惕 建立完善的进程行为基线,检测异常行为 通过深入理解这些进程注入技术的原理和实现细节,安全团队可以更有针对性地构建防御体系,有效检测和防范此类攻击。