思路分享:windows权限维持场景中如何隐藏服务信息
字数 1403 2025-08-20 18:18:40

Windows权限维持中隐藏服务信息的技术详解

1. 技术背景

在红蓝对抗中,攻击者经常需要在目标Windows系统上建立持久化后门。常规的服务创建方法容易被安全检测工具发现,因此需要更隐蔽的技术来隐藏服务信息。

2. 传统方法的局限性

常见的服务伪装方法包括:

  • 使用可信的服务名称(如伪装成杀毒软件服务)
  • 修改服务显示名称

但这些方法存在明显缺陷:

  • 宽松的安全检查可能忽略,但严格检查仍会发现
  • 服务信息仍然可以通过常规工具查询到

3. SDDL服务隐藏技术

Windows服务支持使用安全描述符定义语言(SDDL)来控制服务权限。通过修改服务的SDDL语法,可以实现完全隐藏服务的目的。

3.1 SDDL基本概念

SDDL使用DACL和SACL组件中的ACE字符串来声明或控制权限。ACE字符串格式如下:

ace_type;ace_flags;rights;object_guid;inherit_object_guid;account_sid;(resource_attribute)

关键组件说明:

成员 含义
ace_type 标识ACE类型(A=允许,D=拒绝)
ace_flags 标识ACE标志
rights 标识由ACE控制的访问权限
object_guid 对象类型GUID
inherit_object_guid 继承对象类型GUID
account_sid 目标用户/组的SID
resource_attribute 可选值

3.2 关键ACE权限说明

在服务隐藏场景中,主要使用以下权限控制:

权限代码 对应权限
DC SERVICE_CHANGE_CONFIG (更改服务配置)
LC SERVICE_QUERY_STATUS (查询服务状态)
WP SERVICE_STOP (停止服务)
DT SERVICE_PAUSE_CONTINUE (暂停和继续服务)
SD DELETE (删除服务)

3.3 隐藏服务的SDDL配置

实现服务隐藏的SDDL配置示例:

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)

这个配置:

  1. 拒绝(D)交互式用户(IU)、系统用户(SU)和管理员组(BA)查询、修改、停止、删除服务的权限
  2. 保留(A)必要的默认权限
  3. 系统(S)部分设置审计规则

4. 实施步骤

4.1 隐藏服务

使用sc.exe工具修改服务的SDDL:

sc.exe sdset 服务名 "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)"

4.2 验证隐藏效果

隐藏后,以下命令都无法查询到服务信息:

Get-Service -Name 服务名
Get-Service | Select-Object Name | Select-String -Pattern '服务名'
Get-WmiObject Win32_Service | Select-String -Pattern '服务名'
sc.exe query | Select-String -Pattern '服务名'

4.3 检测隐藏服务的方法

虽然服务被隐藏,但可以通过尝试停止服务来检测是否存在:

  • 不存在的服务:返回InvalidOperationException
  • 存在但隐藏的服务:返回ServiceCommandException(访问被拒绝)

4.4 恢复服务可见性

使用以下命令恢复服务可见性:

sc.exe sdset 服务名 "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

5. 技术特点

  1. 持久性:系统重启后隐藏效果仍然保持
  2. 全面隐藏:所有常规服务查询工具都无法发现
  3. 权限维持:服务仍能正常运行并保持权限

6. 防御建议

  1. 监控sc.exe对服务SDDL的修改操作
  2. 定期使用低级别API检查服务列表,与常规工具结果对比
  3. 对尝试停止不存在的服务的行为进行监控
  4. 限制非管理员用户修改服务配置的权限

7. 参考资源

  1. Microsoft SDDL文档
  2. Windows服务安全描述符
  3. ACE字符串格式说明
Windows权限维持中隐藏服务信息的技术详解 1. 技术背景 在红蓝对抗中,攻击者经常需要在目标Windows系统上建立持久化后门。常规的服务创建方法容易被安全检测工具发现,因此需要更隐蔽的技术来隐藏服务信息。 2. 传统方法的局限性 常见的服务伪装方法包括: 使用可信的服务名称(如伪装成杀毒软件服务) 修改服务显示名称 但这些方法存在明显缺陷: 宽松的安全检查可能忽略,但严格检查仍会发现 服务信息仍然可以通过常规工具查询到 3. SDDL服务隐藏技术 Windows服务支持使用安全描述符定义语言(SDDL)来控制服务权限。通过修改服务的SDDL语法,可以实现完全隐藏服务的目的。 3.1 SDDL基本概念 SDDL使用DACL和SACL组件中的ACE字符串来声明或控制权限。ACE字符串格式如下: 关键组件说明: | 成员 | 含义 | |------|------| | ace_ type | 标识ACE类型(A=允许,D=拒绝) | | ace_ flags | 标识ACE标志 | | rights | 标识由ACE控制的访问权限 | | object_ guid | 对象类型GUID | | inherit_ object_ guid | 继承对象类型GUID | | account_ sid | 目标用户/组的SID | | resource_ attribute | 可选值 | 3.2 关键ACE权限说明 在服务隐藏场景中,主要使用以下权限控制: | 权限代码 | 对应权限 | |---------|---------| | DC | SERVICE_ CHANGE_ CONFIG (更改服务配置) | | LC | SERVICE_ QUERY_ STATUS (查询服务状态) | | WP | SERVICE_ STOP (停止服务) | | DT | SERVICE_ PAUSE_ CONTINUE (暂停和继续服务) | | SD | DELETE (删除服务) | 3.3 隐藏服务的SDDL配置 实现服务隐藏的SDDL配置示例: 这个配置: 拒绝(D)交互式用户(IU)、系统用户(SU)和管理员组(BA)查询、修改、停止、删除服务的权限 保留(A)必要的默认权限 系统(S)部分设置审计规则 4. 实施步骤 4.1 隐藏服务 使用sc.exe工具修改服务的SDDL: 4.2 验证隐藏效果 隐藏后,以下命令都无法查询到服务信息: 4.3 检测隐藏服务的方法 虽然服务被隐藏,但可以通过尝试停止服务来检测是否存在: 不存在的服务:返回 InvalidOperationException 存在但隐藏的服务:返回 ServiceCommandException (访问被拒绝) 4.4 恢复服务可见性 使用以下命令恢复服务可见性: 5. 技术特点 持久性 :系统重启后隐藏效果仍然保持 全面隐藏 :所有常规服务查询工具都无法发现 权限维持 :服务仍能正常运行并保持权限 6. 防御建议 监控sc.exe对服务SDDL的修改操作 定期使用低级别API检查服务列表,与常规工具结果对比 对尝试停止不存在的服务的行为进行监控 限制非管理员用户修改服务配置的权限 7. 参考资源 Microsoft SDDL文档 Windows服务安全描述符 ACE字符串格式说明