ATT&CK-CN V1.01 Last Update: 2019-11 [返回索引页]

译者: 林妙倩(清华大学网络研究院网络空间安全实习生)、戴亦仑(赛宁网安) 原创翻译作品,如果需要转载请取得翻译作者同意。

数据来源:ATT&CK Matrices

原文: https://attack.mitre.org/techniques/T1129

术语表: /attack/glossary

通过模块加载执行

可以指示 Windows 模块加载程序从任意本地路径和任意通用命名规则 (UNC) 网络路径加载 DLL。 这个功能保留在 NTDLL.dll 中,是 Windows 本机 API 的一部分,通过 Win32 API 的 CreateProcess()、LoadLibrary() 等函数调用的。

模块加载器可以加载 DLL: - 通过指定在 IMPORT 目录中的(绝对或相对)DLL 路径名; - 通过 EXPORT 转发到另一个 DLL,指定(绝对或相对)路径名(但没有扩展名); - 通过 NTFS 联结或符号链接 program.exe.local 与包含 IMPORT 或转发的 EXPORTs 的目录中指定的 DLL 的绝对或相对路径名; - 通过嵌入或外部的“application manifest”。 文件名是指 IMPORT 目录中的条目或转发的 EXPORT。 攻击者可以利用此功能在系统上执行任意代码。

缓解

直接减少模块加载和与模块加载相关的 API 调用可能会产生意想不到的副作用,比如阻止合法软件正常运行。 应该将重点放在防止攻击者工具在活动链中更早地运行以及识别并关联后续恶意行为,以确定其是否由恶意活动的导致。

检测

监控 DLL 模块的加载可能会产生大量数据,除非在特定的情况下收集,否则这些数据可能无法直接用于防御,因为正常使用 Windows 模块加载函数很常见,难以与恶意行为区分开来。 合法软件一般只需要加载例程,绑定的 DLL 模块或 Windows 系统 DLL,因此加载非已知的模块可能是可疑的。 将 DLL 模块加载限制在%SystemRoot%和%ProgramFiles%目录,可以防止来自不安全路径的模块加载。 使用 API 监视将与模块加载有关的行为的其他事件和写入磁盘的可疑 DLL 的关联,为事件提供额外的上下文,有助于确定是否是由于恶意行为。