Note
00 min
2025-3-28
这个命令是使用 Impacket 工具包中的 GetUserSPNs 脚本来查询并请求 Kerberos 服务票据(Service Tickets),具体作用如下:

命令分解:

  1. impacket-GetUserSPNs
    1. Impacket 工具中的一个脚本,用于查询 Active Directory 中注册了 SPN(Service Principal Name) 的用户账户(通常是服务账户)。
  1. request
    1. 自动请求这些 SPN 的 Kerberos TGS(服务票据),并以哈希格式(Hashcat/JtR 兼容格式)输出。这些哈希可用于离线破解(如 Kerberoasting 攻击)。
  1. dc-ip 10.10.132.146
    1. 指定域控制器(Domain Controller)的 IP 地址。
  1. oscp.exam/web_svc
      • oscp.exam:域名(Domain)。
      • web_svc:用于认证的服务账户用户名(需要提供密码或凭据)。

用途:

  1. Kerberoasting 攻击
    1. 通过查询 SPN 绑定到的用户账户(通常是权限较高的服务账户),并请求其 TGS 票据。这些票据使用用户密码加密,可被离线破解获取明文密码。
  1. 信息收集
    1. 列出域内所有注册了 SPN 的服务账户,帮助识别高价值目标(如 MSSQLHTTP 等服务的运行账户)。

输出示例:

成功运行后,你会看到:
  • 所有绑定 SPN 的用户账户列表。
  • 如果加了 request,会输出对应的 TGS 哈希(如 $krb5tgs$23$user$DOMAIN$SPN$hash...),可用于破解。

注意事项:

  1. 需要有效凭据
    1. 需要提供 web_svc 账户的密码(或通过其他方式如 Pass-the-Hash 认证)。
  1. 隐蔽性
    1. 这种行为会在域控日志中留下记录(如 Kerberos TGS Request 事件 ID 4769)。
  1. 合法授权
    1. 仅在授权测试中使用,未经许可使用可能违反法律。
这是渗透测试中常见的横向移动技巧,尤其在 OSCP 考试中可能会遇到类似场景。
这个命令会输出其他账户的 Kerberos TGS(服务票据)哈希,是因为它利用了 Kerberoasting 攻击技术,具体原理如下:

1. Kerberoasting 攻击原理

(1)SPN(Service Principal Name)的作用

在 Active Directory(AD)中,服务账户(如 MSSQLIISHTTP 等)会注册 SPN,以便客户端通过 Kerberos 协议认证并访问服务。
例如:
  • MSSQLSvc/sqlserver.oscp.exam:1433
  • HTTP/webserver.oscp.exam

(2)TGS(服务票据)的加密方式

当用户(如 web_svc)请求访问某个 SPN 绑定的服务时:
  1. 用户向域控(DC)请求 TGS(服务票据)
      • 域控会返回一个用 服务账户密码加密的 TGS 票据(因为 SPN 绑定到该账户)。
  1. TGS 票据可被离线破解
      • 由于 TGS 是用服务账户的密码加密的,攻击者可以尝试暴力破解或字典攻击来恢复明文密码。

2. 为什么 GetUserSPNs -request 能获取其他账户的哈希?

(1)命令执行流程

  • GetUserSPNs 首先查询 AD,找出所有注册了 SPN 的服务账户(如 sqladminiis_service 等)。
  • request 参数会让脚本自动为每个 SPN 请求 TGS 票据,并提取其加密部分(即 TGS-REP 哈希)。

(2)输出示例

假设 AD 中有以下 SPN 账户:
运行命令后,你会得到类似这样的哈希:
这些哈希可以交给 HashcatJohn the Ripper 进行破解:

3. 为什么能获取其他账户的哈希?

  • web_svc 只需要普通域用户权限
    • 在默认 AD 配置中,任何域用户 都可以查询 SPN 并请求 TGS 票据(即使他们没有访问服务的权限)。
  • TGS 票据是用服务账户密码加密的
    • 即使你是低权限用户(如 web_svc),也能请求高权限服务账户(如 sqladmin)的 TGS 哈希。

4. 防御措施

  • 强密码策略:确保服务账户使用长且复杂的密码(>25 字符)。
  • 启用 AES 加密:AES 加密的 TGS 比 RC4-HMAC 更难破解。
  • 限制 SPN 查询权限:通过 AD 组策略限制普通用户查询 SPN。
  • 监控 Kerberos 请求:检测异常的 TGS 请求(事件 ID 4769)。

总结

关键点
说明
攻击方式
Kerberoasting
依赖条件
任何域用户权限
获取的数据
服务账户的 TGS 哈希
利用方式
离线破解(Hashcat/JtR)
防御方法
强密码、AES 加密、限制 SPN 查询
这个命令之所以能获取其他账户的哈希,是因为 Kerberos 协议的设计允许任何域用户请求 SPN 绑定的服务票据,而票据的加密方式使得攻击者可以尝试破解。
上一篇
HB
下一篇
AZ-900