Windows服务是一种在后台运行的计算机程序,它在概念上类似于Unix守护进程。
每个Windows服务都将其可执行文件的路径存储在称为BINARY_PATH_NAME
的变量中。当启动服务时,会检查此变量并执行其下设置的.exe
文件。
前提条件:Windows服务必须启用第3点权限,并且当前用户有启动或停止服务权限,否则必须等待系统重启才能执行恶意攻击载荷。
SERVICE_ALL_ACCESS
或SERVICE_CHANGE_CONFIG
是否已启用(这些权限允许用户修改服务配置和 bin 路径)使用 PowerUp脚本查找错误配置,枚举机器服务寻找打开了 binpath 的服务。
<#返回当前用户可以写入服务的路径或其配置的服务#>
powershell -ep bypass
.\powerup.ps
Get-ModifiableServiceFile
找到了一个名为“daclsvc”的服务,为避免工具误报,可使用Accesschk工具再次检查此服务以确认它确实设置了SERVICE_ALL_ACCESS
或SERVICE_CHANGE_CONFIG
权限。
不难看出,有启动 (service_start)权限 、停止权限,也有权更改服务“daclsvc”的可执行文件路径的权限
进一步查看一下该服务以何种权限运行
注意:大多数情况下,Windows会以 SYSTEM 或管理员权限运行所有服务
以本地系统权限运行
利用这个错误配置,可以使用sc
或service control
(默认安装)来更改此服务的可执行文件路径
可将其设置为反弹shell的可执行文件路径。再次使用sc
查询以检查设置的新路径是否正确
配置无误后,使用net
(默认安装)启动此服务即可获得 SYSTEM 权限的shell
服务已运行
可执行文件是包含可以由操作系统执行的机器码指令构成的文件,可以是特定于平台的,也可以是跨平台
前提条件:服务的 .exe(二进制文件)权限是可写的或启用FILE_ALL_ACCESS
权限以及启动/停止服务的权限
.exe
(二进制文件)是否可写.exe
并以 SYSTEM 权限运行上面写入的任何内容使用 winPEAS 来枚举所有可执行文件权限配置错误的服务。
在 winpeas 探测结果中,我们可以看到filepermsvc
服务的原始 .exe
为任意用户设置了AllAccess
权限。简单来说就是“系统上的所有用户都可以对该文件进行任何操作(r、w、x)”,再次使用accesschk
工具确认,这些自动化工具在加固的系统运行时可能触发告警
利用错误配置,只需修改脚本,或者在这里用恶意文件覆盖原始的 .exe
最后只需启动服务即可
注意:即使服务以localSystem
权限运行,我们也有启动和停止服务的权限