T1055.001: 动态链接库注入

Stealth

摘要

攻击者可能将动态链接库(DLL)注入进程,以规避基于进程的防御,并可能提升权限。DLL 注入是一种在另一个活动进程的地址空间中执行任意代码的方法。 DLL 注入通常通过以下方式执行:先将 DLL 的路径写入目标进程的虚拟地址空间,然后通过调用新线程加载该 DLL。写入可以使用原生 Windows API 调用(如 <code>VirtualAllocEx</code> 和 <code>WriteProcessMemory</code>)完成,然后通过 <code>CreateRemoteThread</code> 调用(它调用负责加载 DLL 的 <code>LoadLibrary</code> API)。(Citation: Elastic Process Injection July 2017) 该方法的各种变体,如反射式 DLL 注入(将自映射 DLL 写入进程)和内存模块(写入进程时映射 DLL),克服了地址重定位问题以及调用执行所需的额外 API(因为这些方法通过手动执行 <code>LoadLibrary</code> 的功能在内存中加载并执行文件)。(Citation: Elastic HuntingNMemory June 2017)(Citation: Elastic Process Injection July 2017) 该方法的另一种变体,通常被称为「模块踩踏/重载」(Module Stomping/Overloading)或 DLL 镂空(DLL Hollowing),可用于在进程内隐藏注入的代码。该方法涉及将合法 DLL 加载到远程进程,然后手动覆盖模块的 <code>AddressOfEntryPoint</code>,再在目标进程中启动新线程。(Citation: Module Stomping for Shellcode Injection) 该变体允许攻击者通过可能以磁盘上的合法 DLL 文件作为其执行的后盾,来隐藏恶意注入代码。(Citation: Hiding Malicious Code with Module Stomping) 在另一个进程的上下文中运行代码可能允许访问该进程的内存、系统/网络资源,并可能获得提升的权限。通过 DLL 注入进行的执行也可能规避安全产品的检测,因为执行被掩盖在合法进程之下。

来源归属

来源:MITRE ATT&CK · 置信度:high

平台

  • Windows

战术

Stealth

参考来源