AD域开启RC4-HMAC加密

AD域开启RC4-HMAC加密

01 前言

在做 <攻击者使用 KRBTGT 帐户密码哈希值伪造 Kerberos TGT 票据(Golden Ticket)> Use Case BAS测试时,使用Mimikatz伪造黄金凭据触发EventCode 4769安全事件,其中的TicketEncryptionType​=0x12​,0x12​为AES256-HMAC-SHA1​加密模式。

不符合SPL语句中的过滤条件,故此需要开启RC4-HMAC​认证模式

安全场景SPL语句

1
2
index=idx_os_windows EventCode=4769 ServiceName="*$" (TicketOptions=0x40810000 OR TicketOptions=0x40800000 OR TicketOptions=0x40810010) TicketEncryptionType=0x17 
| stats count min(_time) as firstTime max(_time) as lastTime by dest, service, service_id, TicketEncryptionType, TicketOptions

02 介绍

在Windows事件代码4769(请求Kerberos服务票据)中,字段 TicketEncryptionType​ 表示Kerberos票据使用的加密算法类型。当该字段值为 0x17​ 时,其含义如下:


TicketEncryptionType = 0x17的解释

  • 加密算法类型0x17​ 对应 RC4-HMAC(基于RC4的哈希消息认证码加密)。

  • 协议细节:这是Kerberos协议中一种较旧的加密类型,使用RC4​流加密算法和HMAC​完整性验证。

  • 安全背景

    • RC4-HMAC已被视为不安全的加密算法,微软自Windows 7/Server 2008 R2起默认禁用该算法。
    • 若在较新系统中出现0x17​,可能是由于兼容性配置或服务账户强制使用旧加密类型。

为何会出现 0x17加密类型?

  1. 服务账户配置:某些服务账户可能显式配置为仅支持RC4-HMAC(例如旧版应用程序兼容性)。
  2. 域策略允许旧加密:域控制器可能启用了RC4​支持(通过组策略 Network security: Configure encryption types allowed for Kerberos​)。
  3. 客户端不支持新算法:请求票据的客户端可能未启用AES等更安全的加密类型。

扩展:常见Kerberos加密类型代码

十六进制值 加密类型 安全性
0x1 DES-CBC-CRC 已淘汰
0x3 DES-CBC-MD5 已淘汰
0x11 AES128-HMAC-SHA1 安全(推荐)
0x12 AES256-HMAC-SHA1 安全(推荐)
0x17 RC4-HMAC 不安全
0x18 RC4-HMAC-EXP 不安全

03 更改步骤

在Windows操作系统中,RC4-HMAC是一种已被视为不安全的Kerberos加密类型,微软默认已禁用该算法(自Windows 7/Server 2008 R2起)。但出于兼容性需求(如旧版应用程序或设备依赖),可能需要临时启用它。以下是配置方法及注意事项:

步骤 1:通过组策略允许RC4-HMAC加密

  1. 打开组策略管理编辑器

    • Win + R​,输入 gpedit.msc​(本地策略)或通过域控制器管理工具配置域组策略。

    • 路径:

      Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options

  2. 配置允许的Kerberos加密类型

    • 找到策略项:
      Network security: Configure encryption types allowed for Kerberos
    • 双击打开,勾选 RC4_HMAC_MD5​,并确保其他更安全的加密类型(如AES)未被禁用。
  3. 应用组策略

    • 在域控制器上运行 gpupdate /force​ 强制刷新策略,客户端设备需重启或等待策略自动生效。

步骤 2:配置服务账户以支持RC4-HMAC

如果某个服务账户(Service Account)需要强制使用RC4加密,需更新其Kerberos加密类型:

  1. 使用PowerShell修改服务账户属性

    1
    Set-ADServiceAccount -Identity "YourServiceAccount" -KerberosEncryptionType RC4, AES128, AES256
    • 此处需保留RC4​选项,确保兼容性。
  2. 验证服务主体的加密类型

    1
    Get-ADServiceAccount -Identity "YourServiceAccount" -Properties KerberosEncryptionType
    • 输出应包含 RC4_HMAC​。

步骤 3:修改注册表(可选)

在某些情况下,需直接修改注册表以启用RC4:

  1. 定位注册表路径

    • 打开注册表编辑器(regedit​),导航至:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
  2. 创建或修改DWORD值

    • 新建或编辑键值:
      SupportedEncryptionTypes
    • 设置数值为 0x7FFFFFFF​(允许所有加密类型)或 0x17​(仅允许RC4)。
      注意:十六进制值需根据实际需求调整(​*参考加密类型代码*​ )。
  3. 重启系统生效


验证配置是否生效

  1. 检查Kerberos票据加密类型

    • 使用 klist​ 命令查看当前会话的加密类型:

      1
      klist
    • 查找输出中的 Ticket Encryption Type: 0x17​(即RC4-HMAC)。

  2. 监控事件日志

    • 查看事件ID 4769​(Kerberos服务票据请求),确认 TicketEncryptionType​ 字段是否为 0x17​。

⚠️ 重要安全警告

  1. RC4-HMAC的风险

    • RC4存在已知漏洞(如Bar Mitzvah攻击),易被破解导致凭据泄露。
    • 微软已建议禁用RC4(参考:KB2868726)。
  2. 临时使用建议

    • 仅在内网隔离环境或旧设备无法升级时临时启用。
    • 完成后立即禁用RC4,恢复为AES(AES128/AES256)。

替代方案(推荐)

若需兼容旧系统,建议逐步迁移至更安全的加密方式:

  1. 升级操作系统/应用程序:确保所有设备支持AES。

  2. 强制禁用RC4

    1
    2
    # 禁用RC4(域控制器)
    Set-ADAccountControl -Identity "YourServiceAccount" -KerberosEncryptionType AES256, AES128
  3. 使用组策略彻底禁用RC4
    Network security: Configure encryption types allowed for Kerberos​ 中取消勾选 RC4_HMAC_MD5​。


通过上述步骤,可临时启用RC4-HMAC加密,但请务必权衡安全风险。如需长期使用,建议彻底淘汰依赖RC4的旧系统。


AD域开启RC4-HMAC加密
https://hesc.info/post/rc4hmac-encryption-is-enabled-in-ad-domain-1hjblb.html
作者
需要哈气的纸飞机
发布于
2025年5月29日
许可协议