NTLM本地认证

image.png

NTLM网络认证

image.png

kerberos总体认证流程

image.png

客户端向AS发送的请求 即AS-REQ

image.png

AS-REP

image.png

TGS-REQ

image.png

TGS-REP

image4.png

AP-REQ

image5.png

其中AS-REP 和 TGS-REQ 叫做 TGT (黄金票据)

TGS-REP 和 AP-REQ 叫做 ST (白银票据)

存在的安全问题

pass the hash:

由于 NTLM 认证过程中直接使用用户的 NTLM Hash 进行 Challenge-Response 计算,因此只要获取到在目标主机上具有有效权限的账户(如本地管理员或域管理员)的 NTLM Hash,就可以直接进行哈希传递攻击,无需还原明文密码

NET-NTLM hash relay:

  1. 诱导/劫持流量:攻击者通过 LLMNR/NBT-NS 欺骗(如 Responder)、Coerce(强制认证,如 PetitPotam、PrinterBug、dfscoerce)等手段,强制让受害者 A 向攻击者 B 发起 NTLM 认证。
  2. 中间人转发:攻击者将受害者 A 的 Type 1 请求转发给目标服务器 C。
  3. 透传 Challenge:目标服务器 C 生成 8 字节随机数 Challenge(Type 2)给攻击者 B,攻击者原封不动传给受害者 A。
  4. 透传 Response:受害者 A 用自己的密码 Hash 加密 Challenge 生成 Response(Type 3)发给攻击者 B,攻击者将其提交给目标 C。

获取权限:目标 C 认为攻击者就是受害者 A,鉴权通过,攻击者成功在 C 上建立高权会话。

NTLM 凭据窃取:

攻击者搭建一个需要凭证交互的服务器,诱使或者强迫目标访问攻击者ip。攻击者可以抓取目标的密码hash。即使是在kerberos环境下,因为协议降级的存在,也可以触发

kerberos认证存在的安全风险

  1. 域内用户名枚举: 在AS-REQ 阶段 如果可以访问88端口(kerberos),利用用户是否存在而导致的响应不同,进行枚举
  2. golden ticket:在AS-REP 阶段。TGT 的内容是用域内特定的 krbtgt 账户的 NTLM Hash(或 AES Key) 进行加密和签名的。如果攻击者已经掌控了域控并拿到了 krbtgt 的 Hash,就可以在本地自行构造任意用户(如伪造为 Administrator)、任意组权限(如 Domain Admins)的 TGT
  3. AS-REP Roasting
    正常账户(开启预认证,默认设置):
    客户端在发送 AS-REQ 请求时,必须先用自己的密码 Hash 加密一个当前时间戳提交给域控(这就是预认证)。域控校验时间戳正确后,才会返回 AS-REP 数据包。这样可以防止非授权人员随意索取包含密码加密信息的数据包。

易受攻击账户(禁用预认证):
如果某个域账户勾选了 Do not require Kerberos preauthentication(不需要 Kerberos 预身份验证),域控在收到针对该账户的 AS-REQ 请求时,完全不校验请求者的身份或密码,直接返回 AS-REP 响应。

在 AS-REP 响应包中,包含了一段用该账户自身的密码 Hash(NTLM Hash/AES Key)加密的 Encrypted Timestamp / Session Key 数据。攻击者只要拿到这个响应包,就可以在本地使用 Hashcat 或 John the Ripper 暴力破解这段密文。

  1. sliver ticket: 攻击者利用已获取的特定服务账户(Service Account,例如机器账户 COMPUTER$)的 NTLM Hash 或 AES Key,在本地自行伪造一张针对该服务的 ST(Service Ticket,服务票据 / TGS 票据)。

凭借这张伪造的白银票据,攻击者无需经过域控(DC),即可直接以任意用户(如高权的 Administrator)的身份访问目标机器上的特定服务(如 SMB、WMI、LDAP、MSSQL 等)。

  1. kerberoasting:首先理解SPN,域内机器用户或者运行了第三方服务的用户在域内的一个标识符。
    利用 Kerberos 协议 TGS(Ticket Granting Service,票据授予服务)阶段的设计特性,任何一个普通的域用户都可以向域控(DC)请求注册了 SPN(Service Principal Name,服务主体名称) 的服务账户的 ST(Service Ticket,服务票据)。

由于返回的 ST 票据是用该服务账户本身的密码 Hash 加密的,攻击者将其提取到本地后,可以在完全不与域控交互、不触发账号锁定的情况下,进行离线字典爆破,从而还原出服务账户的明文密码。

简单来说就是,可以获得绑定了SPN的用户的hash值。

基于kerberos 拓展协议的攻击

强校验PAC的情况下,导致伪造的ST无效

标签: none