域渗透
01-本地认证
02-本地密码抓取
03-网络认证
04-域基础知识
05-域环境部署
06-域认证
07-域密码抓取
08-横向移动
09-凭证传递
10-票据
11-委派
-
+
09-凭证传递
浏览
1
# 一、PTH ## PTH概述 PTH(pass the hash),中文称之为哈希传递攻击,在NTLM和Kerberos认证中,都需要使用用户的NTLM-Hash值进行加密认证,所以知道了对方用户的NTLM-Hash值之后就可以进行认证。 PTH 的本质是:攻击者拿到用户的 NT hash 后,不破解明文密码,直接用它完成 NTLM 认证,从而冒充该用户。 在域环境中,用户登录计算机时一般使用的都是域账户,大量计算机在安装时会使用相同的本地管理员账户和密码。 如果计算机的本地管理员账户和密码也是相同的,攻击者也可以使用哈希传递攻击这种方法,登录内网中其他计算机。 ## 利用条件 这些用户才可以进行哈希传递: - 域管理员 administrator - 普通域管理员(admin domain组中的用户) - 普通域用户 - 本地管理员 administrator - 本地普通管理员 - 本地普通用户 域账号与本地账号: - 本地账户:认证在目标本机 SAM 完成,通常不依赖域控。 - 域账户:NTLM 认证通常需要域控可达,否则可能失败。 ## 不同场景 ### 本地账户 权限划分:administrator 超级管理员、abc 本地管理员、test 普通用户。 超级管理员 hash值传递: | 机器型号 | 账户名 | 结果 | | ------------------- | ------------- | ---- | | Windows server 2003 | administrator | 成功 | | Windows server 2008 | administrator | 成功 | | Windows server 2012 | administrator | 成功 | | Windows server 2016 | administrator | 成功 | | Windows 10 | administrator | 成功 | 普通管理员 hash值传递: | 机器型号 | 账户名 | 结果 | | ------------------- | ------ | ---- | | Windows server 2003 | abc | 成功 | | Windows server 2008 | abc | 失败 | | Windows server 2012 | abc | 失败 | | Windows server 2016 | abc | 失败 | | Windows 10 | abc | 失败 | 普通用户 hash值传递: | 机器型号 | 账户名 | 结果 | | ------------------- | ------ | ---- | | Windows server 2003 | test | 失败 | | Windows server 2008 | test | 失败 | | Windows server 2012 | test | 失败 | | Windows server 2016 | test | 失败 | | Windows 10 | test | 失败 | 本地账号进行哈希传递总结: - administrator账户可以进行PTH传递,本地普通管理员只可以在Windows server 2003 、XP中进行PTH传递,本地普通用户不可以进行PTH传递。 ### 域环境 权限划分:administrator 域内超级管理员、abcsec 域普通管理员组、test 域内普通用户组。 域超级管理员 hash值传递: | 机器型号 | 账户名 | 结果 | | ------------------- | ----------------- | ---- | | Windows server 2003 | abc\administrator | 成功 | | Windows server 2008 | abc\administrator | 成功 | | Windows server 2012 | abc\administrator | 成功 | | Windows server 2016 | abc\administrator | 成功 | | Windows 10 | abc\administrator | 成功 | 域普通管理员 hash值传递: | 机器型号 | 账户名 | 结果 | | ------------------- | ---------- | ---- | | Windows server 2003 | abc\abcsec | 成功 | | Windows server 2008 | abc\abcsec | 成功 | | Windows server 2012 | abc\abcsec | 成功 | | Windows server 2016 | abc\abcsec | 成功 | | Windows 10 | abc\abcsec | 成功 | 域普通用户 hash值传递 | 机器型号 | 账户名 | 结果 | | ------------------- | -------- | ---- | | Windows server 2003 | abc\test | 失败 | | Windows server 2008 | abc\test | 失败 | | Windows server 2012 | abc\test | 失败 | | Windows server 2016 | abc\test | 失败 | | Windows 10 | abc\test | 失败 | 域环境下,账号进行哈希传递总结: - 域内administrator和普通管理员可以进行PTH传递,域内普通用户不可以进行PTH传递(默认)。 ## 攻击流程 - 攻击者通过钓鱼、漏洞、弱口令等方式拿下 PC1,获取管理员或者 SYSTEM 权限; - 攻击者在PC1上读取凭据,拿到目标账号 NT Hash(域管理员,曾经登录过 PC01,LSASS 内存缓存了该账号 NT Hash); - 注入哈希,创建带伪造凭据的新登录会话; - 攻击者在 PTH 会话窗口访问 PC2 的 SMB 共享 \\\\PC2\C$,触发 NTLM 质询应答流程; - 认证成功后,攻击者可以在当前 PTH 会话中,进行相关操作。 ## 哈希传递 ```bash #1.win08成员服务器,对DC进行哈希传递 #2.在win08成员服务器中,以管理员身份运行mimikatz工具,获取到NTLM哈希值 log lsadump::dcsync /domain:abc.com /all /csv #3.管理员身份运行mimikatz,进行哈希传递 privilege::debug sekurlsa::pth /user:用户名 /domain:域名或者IP /ntlm:ntlm-hash sekurlsa::pth /user:administrator /domain:dc.abc.com /ntlm:b6fedcbb1ab4f59dd213d03eb992b759 ``` 获取hash值:  Hash传递:  # 二、PTK ## 概述 PTK 全称 Pass-the-Key,密钥传递,属于Kerberos 协议的身份冒充攻击。 域用户密码会生成多套 Kerberos 加密密钥,保存在 AD 中: - RC4-HMAC:密钥 = 用户 NT Hash(老算法,很多企业域已经禁用 RC4) - AES128-CTS-HMAC-SHA1-96 - AES256-CTS-HMAC-SHA1-96(现代域环境默认优先使用 AES256) 拿下主机后读取 LSASS 内存,sekurlsa::ekeys 提取,拿到 AES/RC4 密钥。 Kerberos 预认证 AS_REQ 阶段:客户端需要用用户密钥加密时间戳(Authenticator),KDC 用 AD 内存储的对应密钥解密校验;校验通过,下发 TGT。 PTK 攻击:只要攻击者持有正确的 RC4/AES 密钥,就可以伪造预认证,向 KDC 拿到合法 TGT,不需要明文密码。 ## 攻击流程 场景:已经攻陷域内服务器 PC1,dump 内存拿到域管理员账号的 AES256 密钥;域环境禁用 NTLM,PTH 无法使用。 1. 攻击者提取目标账号的 Kerberos AES 密钥 2. 攻击者使用工具构造 Kerberos AS-REQ 请求,使用窃取到的 AES 密钥,发送给域控 KDC 3. KDC 校验密钥,校验成功,下发合法 TGT 票据给攻击者 4. TGT 注入到攻击者当前会话 5. 攻击者使用 TGT 向 KDC 请求目标主机(PC2)的服务票据 ST 6. 使用 ST,通过 Kerberos 认证访问 PC2,完成横向移动 ## 密钥传递 ```bash #1.使用mimikatz工具获取aes key值,使用aes256_hmac privilege::debug log sekurlsa::ekeys #2.通过getTGT生成TGT,生成.ccache文件 getTGT.exe 域名/用户名 -aesKey key值 getTGT.exe abc.com/administrator -aesKey f429b683a68f5442ccdc95af3fd45386775d241bc8375ff08eb30be11a61f586 #3.使用mimikatz工具将TGT注入到内存中 Kerberos::ptc 票据名字 #4.访问域控默认共享磁盘 ```  # 三、PTT ## 概述 PTT(Pass-the-Ticket), 票据传递。 窃取已经生成好的 Kerberos 票据(TGT/ST),直接导入自己的会话复用,不需要密码、不需要 NT Hash、不需要 AES 密钥,直接拿着现成票据去访问资源。 PTK:拿密钥,主动找 KDC 申请新 TGT; PTT:拿已经存在的 TGT,不再向 KDC 申请 TGT,直接复用。 对于Kerberos协议而言,有两种票据: 1. TGT 票据授予票据:向 KDC 的 TGS 服务申请服务票据 ST 的通行证,存在用户内存凭据缓存里; 2. ST 服务票据:访问特定服务(PC02 的 CIFS、WMI 等)的票据。 PTT 最常用的是传递 TGT,拿到 TGT 就可以按需向 KDC 申请任意目标的 ST。 ## 攻击流程 一、攻击者拿下 PC01,获取本地管理员 / SYSTEM 权限,具备读取 LSASS 内存的权限。 二、使用工具读取 LSASS 里 Kerberos 票据缓存,导出目标账号 DomainAdmin 的TGT(kirbi 格式) 三、将导出的 kirbi 格式 TGT,注入到攻击者当前进程的 Kerberos 会话缓存;注入成功后,当前进程的身份就等效于 DomainAdmin。 需要注意的是:注入 TGT 这个阶段不需要访问域控,只是把票据写入本地会话缓存 四、使用 TGT 向 KDC 申请目标服务票据 ST: - 客户端使用注入进去的 TGT,向 KDC 的 TGS 服务发送请求,申请访问 PC02 的 CIFS 服务 ST; - KDC 校验 TGT 合法性,确认有效,下发 ST; - 客户端携带 ST,发送给 PC02; - PC02 校验 ST,认证通过。 ## 获取方式 - 域账户明文密码 - 域账户的NTLM-HASH - 域账号的AES(KDC如果支持AES加密算法类型) - 直接伪造 - 系统漏洞 - 系统本身就存在票据(mimikatz工具命令 Sekurlsa::tickets /export 可导出票据) ## 生成票据 ```bash #1.使用明文账户名与密码获取TGT getTGT.exe abc.com/administrator:a1b2c3.. #2.直接打开mimiktaz,加载票据 kerberos::ptc administrator.ccache ``` 使用明文密码获取TGT:  加载票据:  新生成cmd会话框,查看票据并且访问域控的共享磁盘: 
毛林
2026年11月15日 18:30
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~