T1055.001: 动态链接库注入
摘要
攻击者可能将动态链接库(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
参考来源
- https://attack.mitre.org/techniques/T1055/001
- https://blog.f-secure.com/hiding-malicious-code-with-module-stomping/
- https://www.endgame.com/blog/technical-blog/hunting-memory
- https://www.endgame.com/blog/technical-blog/ten-process-injection-techniques-technical-survey-common-and-trending-process
- https://www.ired.team/offensive-security/code-injection-process-injection/modulestomping-dll-hollowing-shellcode-injection