Windows 服务安全深度解析与防护策略
1. Windows 服务 SID 基础
在 Windows 系统里,每个服务的进程令牌都包含 NT AUTHORITY\SERVICE SID(S - 1 - 5 - 6)。通过查看运行进程中是否存在此 SID,能快速判断该进程是服务还是普通应用程序。
从 Windows Vista 和 Windows Server 2008 开始,每个服务还能依据其名称分配特定的服务 SID。这意味着在不同系统中,同名服务会有相同的 SID。服务特定的 SID 能让服务直接被赋予对任何可安全保护对象的权限,还能以其他方式控制服务,例如在 Windows 防火墙和 IPsec 中开放端口。
若要查看任何服务的 SID,可使用 Sc.exe 命令搭配 showsid 命令行参数,语法如下:
sc.exe showsid [servicename]服务的 SID 是通过将服务的 Unicode 名称(全大写字母)经过 SHA - 1 哈希函数处理,再把哈希结果添加到 S - 1 - 5 - 80 - 得到的。例如,W32Time 服务的 SID 为:S - 1 - 5 - 80 - 4267341169 - 2882910712 - 659946508 - 2704364837 - 2204554466,该 SID 在所有 Windows Vista 和 Windows Server 2008 系统中都相同。
若要为服务添加特定 SID,必须在服务启动前进行,且服务运行时不能更改。使用服务特定 SID 时,它