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

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

数据来源:ATT&CK Matrices

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

术语表: /attack/glossary

应用 Shimming

创建 Microsoft Windows 应用程序兼容性基础架构/框架 (Application Shim) 是为了在操作系统代码库随时间变化的同时保持软件的向后兼容性。 例如,应用程序 shimming 特性允许开发人员将补丁应用于为 Windows XP 创建的应用程序(不需要重新编写代码),这样它就可以兼容 Windows 10。 在框架中,创建 shims 作为程序(或更具体地说,导入地址表)和 Windows 操作系统之间的缓冲区。 在执行程序时,将引用 shim 缓存来确定程序是否需要使用 shim 数据库 (.sdb)。 如果需要,shim 数据库使用 Hooking 根据需要重定向代码,以便与 OS 通信。 当前由默认 Windows 安装程序 (sdbin.exe) 安装的所有 shim 的列表保存在: - %WINDIR%\AppPatch\sysmain.sdb - hklm\software\microsoft\windows nt\currentversion\appcompatflags\installedsdb 自定义数据库存储在:

  • %WINDIR%\AppPatch\custom & %WINDIR%\AppPatch\AppPatch64\Custom
  • hklm\software\microsoft\windows nt\currentversion\appcompatflags\custom

为了保证 shim 的安全,Windows 将它们设为在用户模式下运行,这样它们就无法修改内核,您必须具有管理员权限才能安装 shim 。 但是,某些 shim 可以用来绕过用户帐户控制 (UAC) (RedirectEXE)、将 DLL 注入进程 (InjectDLL)、禁用数据执行保护 (DisableNX) 和结构异常处理 (DisableSEH) 以及截获内存地址 (GetProcAddress)。 与 hook 类似,使用这些 shim 可能允许攻击者执行一些恶意行为,如提升权限、安装后门、禁用如 Windows Defender 的防御等。

缓解

目前还没有很多方法可以缓解应用程序 shimming 的影响。 不建议禁用 Shim 引擎,因为 Windows 的互操作性依赖于 shim,而且这样做可能使软件可能变得不稳定或无法工作。 Microsoft 发布了一个可选的补丁更新 - KB3045645 - 它将删除 sdbinst.exe 中的“auto-elevate”标志。 这将防止使用应用程序 shimming 绕过 UAC。 将 UAC 设置更改为“始终通知”将在请求 UAC 提升时给用户提供更多可见性,但是,由于 UAC 不停的中断,此选项在用户中不受欢迎。

检测

有一些公共工具可以检测目前可用的 shim: - Shim-Process-Scanner - 检查每个正在运行的进程的内存是否有任何 Shim 标志 - Shim-Detector-Lite -检测自定义 shim 数据库的安装
- Shim-Guard 监视注册表查找任何 shim 安装信息 - ShimScanner——在内存中找到活动的 shim 的取证工具 - ShimCacheMem——从内存中获取 shim 缓存的 Volatility 插件(注:只在重启后缓存 shim) 监视 sdbinst.exe 和命令行参数的进程执行,以查找应用程序填充程序滥用的迹象。