T1574.011: 服务注册表权限弱点

Stealth

摘要

攻击者可能通过劫持服务使用的注册表项来执行自己的恶意载荷。与服务相关的注册表键权限中的缺陷可能允许攻击者将最初指定的可执行文件重定向到他们控制的可执行文件,从而在服务启动时启动自己的代码。Windows 将本地服务配置信息存储在注册表 <code>HKLM\SYSTEM\CurrentControlSet\Services</code> 下。服务注册表键下存储的信息可以通过服务控制器、sc.exe、[PowerShell](https://attack.mitre.org/techniques/T1059/001) 或 [Reg](https://attack.mitre.org/software/S0075) 等工具进行操纵,以修改服务的执行参数。对注册表键的访问通过访问控制列表和用户权限进行控制。(Citation: Registry Key Security)(Citation: malware_hides_service) 如果用户和组的权限未正确设置,允许访问某个服务的注册表键,攻击者可能将该服务的 binPath/ImagePath 更改为指向他们控制下的不同可执行文件。当服务启动或重启时,攻击者控制的程序将执行,使攻击者能够建立持久化和/或权限提升到该服务被设置为执行的账户上下文(本地/域账户、SYSTEM、LocalService 或 NetworkService)。 攻击者还可能更改服务注册表树中的其他注册表键。例如,<code>FailureCommand</code> 键可能被更改,使得每当服务失败或被故意破坏时,服务都会在提升的上下文中执行。(Citation: Kansa Service related collectors)(Citation: Tweet Registry Perms Weakness) <code>Performance</code> 键包含驱动程序服务的性能 DLL 的名称以及该 DLL 中若干导出函数的名称。(Citation: microsoft_services_registry_tree) 如果 <code>Performance</code> 键尚不存在,并且攻击者控制的用户拥有 <code>Create Subkey</code> 权限,攻击者可以在服务的注册表树中创建 <code>Performance</code> 键以指向恶意 DLL。(Citation: insecure_reg_perms) 攻击者还可能添加 <code>Parameters</code> 键,它可以引用恶意驱动文件路径。此技术已被确定为一种滥用方法,通过在给定服务注册表配置的 <code>Parameters</code> 键中配置 DLL 文件路径来实现。通过放置并配置 <code>Parameters</code> 键以引用恶意 DLL,攻击者可以确保每当关联的服务或库被调用时其代码被持久加载。 例如,注册表路径 (Citation: MDSec) <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters</code>(Citation: hexacorn)(Citation: gendigital) 包含 <code>AutodiaDLL</code> 值,它指定要为自动拨号功能加载的 DLL。攻击者可以将 <code>AutodiaDLL</code> 设置为指向被劫持或恶意的 DLL: <code>"AutodialDLL"="c:\temp\foo.dll"</code> 这确保了持久性,因为它会导致每次调用 Winsock 2 库时都加载该 DLL(在此例中为 foo.dll)。

来源归属

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

平台

  • Windows

战术

Stealth

参考来源