服务控制管理器(SCM)负责启动和停止Windows环境中的服务,包括设备驱动程序和启动应用程序。Microsoft 在 Windows 2000 及更高版本中引入了安全描述符定义语言 (SDDL),以便以更易读的格式提供安全描述符的文本表示。在 Windows 2000 之前,安全描述符表示为十六进制字节。与其他 Windows 对象一样,服务控制管理器的权限由自由访问控制列表 (DACL) 管理,DACL 也由 SDDL 表示。
在红队操作期间,如果已实现提升的访问权限,则可以通过 SDDL 修改服务控制管理器的权限,以便向“Everyone”组授予对服务控制管理器的权限。此操作可以用作持久性的一种形式,因为任何用户都可以在环境中创建一个服务,该服务将在每次计算机启动时以系统级别权限执行任意命令或有效负载。该技术由Grzegorz Tworek发现并在 Twitter 上分享。
执行以下命令将快速检索服务控制管理器实用程序的 SDDL 权限。
sc sdshow scmanager
PowerShell 还可用于枚举所有用户组的 SDDL 权限并将其转换为可读格式。
$SD = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Schedule\Security\
$sddl = ([wmiclass]”Win32_SecurityDescriptorHelper”).BinarySDToSDDL($SD.Security).Sddl
$SecurityDescriptor = ConvertFrom-SddlString -Sddl $sddl
$SecurityDescriptor.DiscretionaryAcl
通过 PowerShell 枚举权限
sc sdshow scmanager showrights
具有标准级别访问权限的用户无法在 Windows 环境中创建服务。此权限仅属于高级用户,例如本地管理员。但是,修改服务控制管理器的安全描述符权限也可能允许任何用户创建将在 SYSTEM 帐户上下文下运行的服务。使用安全描述符定义语言,可以通过执行以下命令来修改这些权限:
sc.exe sdset scmanager D:(A;;KA;;;WD)
下表显示了上述命令中 SDDL 首字母缩略词的含义。
服务配置实用程序可用于创建新服务。“ binPath ”参数可以存储服务启动后将执行的任意有效负载。需要注意的是,由于服务控制管理器的权限发生了变化,非提升用户也可以在windows环境上创建新的服务。如果蓝队删除了恶意服务,权限仍将保留,允许标准用户继续创建新服务以保持持久性。
sc create pentestlab displayName= "pentestlab" binPath= "C:\temp\pentestlab.exe" start= auto
新服务将出现在 Windows 服务列表中。
当系统再次启动时,该服务将自动启动,并且有效负载将以系统级别权限执行。
服务控制管理器 – Meterpreter
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里